Skip to content
Snippets Groups Projects
Commit 0176dcf5 authored by Daniel Firth's avatar Daniel Firth
Browse files

Merge branch 'gen-ci' into 'master'

ci: generate from dhall

See merge request horizon/horizon-platform!9
parents 789c60f7 6ee8ed6f
Branches
Tags
No related merge requests found
let Prelude =
env:DHALL_PRELUDE
? https://raw.githubusercontent.com/dhall-lang/dhall-lang/v20.1.0/Prelude/package.dhall
sha256:26b0ef498663d269e4dc6a82b0ee289ec565d683ef4c00d0ebdd25333a5a3c98
let HsSrc =
< FromHackage : { name : Text, version : Text }
| FromGit :
{ url : Text, revision : Optional Text, subdir : Optional Text }
>
let Modifiers =
{ Type = { doJailbreak : Bool, doCheck : Bool }
, default = { doJailbreak = True, doCheck = False }
}
let Attr = λ(a : Type) → { mapKey : Text, mapValue : a }
let HsPkg = {source : HsSrc, modifiers : Modifiers.Type }
let Attr
: ∀(x : Type) → Type
= λ(x : Type) → { mapKey : Text, mapValue : x }
let Step = { script : List Text }
let toStep
: ∀(id : Text) → ∀(prefix : Text) → ∀(x : Text) → Attr Step
= λ(id : Text) →
λ(prefix : Text) →
λ(x : Text) →
{ mapKey = id
, mapValue.script = [ "nix build -L .#${prefix}.${x}" ]
}
let input = Prelude.Map.keys Text HsPkg ./manifest.dhall
let packages =
Prelude.List.map
(Text)
(Attr Step)
( λ(x : Text) →
toStep "Package ${x}" "packages.x86_64-linux" x
)
(input : List Text)
in packages
...@@ -4,7 +4,7 @@ stages: ...@@ -4,7 +4,7 @@ stages:
generate-flake-ci: generate-flake-ci:
stage: generate stage: generate
script: nix run "git+https://gitlab.homotopic.tech/haskell/flake-to-gitlab-ci" > flake-ci.yml script: nix run ".#horizon-gen-gitlab-ci" > flake-ci.yml
artifacts: artifacts:
paths: paths:
- flake-ci.yml - flake-ci.yml
......
...@@ -19,6 +19,7 @@ ...@@ -19,6 +19,7 @@
&& v.type == "derivation" && v.type == "derivation"
&& v.meta.broken == false) && v.meta.broken == false)
hp; hp;
horizon-gen-gitlab-ci = pkgs.writers.writeBashBin "gen-gitlab-ci" "${pkgs.dhall-json}/bin/dhall-to-yaml --file .gitlab-ci.dhall";
in in
{ {
apps = { apps = {
...@@ -26,6 +27,10 @@ ...@@ -26,6 +27,10 @@
type = "app"; type = "app";
program = "${hp.horizon-gen-nix}/bin/horizon-gen-nix"; program = "${hp.horizon-gen-nix}/bin/horizon-gen-nix";
}; };
horizon-gen-gitlab-ci = {
type = "app";
program = "${horizon-gen-gitlab-ci}/bin/gen-gitlab-ci";
};
}; };
checks = { checks = {
dhall-format = lint-utils.outputs.linters.x86_64-linux.dhall-format ./.; dhall-format = lint-utils.outputs.linters.x86_64-linux.dhall-format ./.;
......
...@@ -101,7 +101,11 @@ in [ callHackage "Cabal" "3.8.1.0" ...@@ -101,7 +101,11 @@ in [ callHackage "Cabal" "3.8.1.0"
, callHackage "co-log-core" "0.3.1.0" , callHackage "co-log-core" "0.3.1.0"
, callHackage "comonad" "5.0.8" , callHackage "comonad" "5.0.8"
, callHackage "compact" "0.2.0.0" , callHackage "compact" "0.2.0.0"
, callHackage "compactable" "0.2.0.0" , callCabal2nix
"compactable"
"https://gitlab.com/fresheyeball/Compactable"
(Some "f63927b1e438c267f0d12f36e5b3735cfaebeeb4")
(None Text)
, callHackage "composite-base" "0.8.1.0" , callHackage "composite-base" "0.8.1.0"
, callHackage "composite-cassava" "0.0.3.1" , callHackage "composite-cassava" "0.0.3.1"
, callHackage "composite-dhall" "0.1.0.1" , callHackage "composite-dhall" "0.1.0.1"
...@@ -247,7 +251,7 @@ in [ callHackage "Cabal" "3.8.1.0" ...@@ -247,7 +251,7 @@ in [ callHackage "Cabal" "3.8.1.0"
, callCabal2nix , callCabal2nix
"polysemy-plugin" "polysemy-plugin"
"https://github.com/locallycompact/polysemy" "https://github.com/locallycompact/polysemy"
(Some "5942a398ef02bbbe94bedd68f8628390ed223107") (Some "bd944ca000c1ca69602d4723e3859af431b9d0c4")
(Some "polysemy-plugin") (Some "polysemy-plugin")
, callHackage "polysemy-several" "0.1.1.0" , callHackage "polysemy-several" "0.1.1.0"
, callHackage "polysemy-time" "0.5.1.0" , callHackage "polysemy-time" "0.5.1.0"
...@@ -297,9 +301,15 @@ in [ callHackage "Cabal" "3.8.1.0" ...@@ -297,9 +301,15 @@ in [ callHackage "Cabal" "3.8.1.0"
"https://github.com/TeofilC/servant" "https://github.com/TeofilC/servant"
(Some "76fc90a51f915230bbe1e0d1dbe9727fcdc7a0fc") (Some "76fc90a51f915230bbe1e0d1dbe9727fcdc7a0fc")
(Some "servant-foreign") (Some "servant-foreign")
, callHackage "servant-lucid" "0.9.0.5" , callHackage "servant-lucid" "0.9.0.5"
, callHackage "servant-multipart" "0.12.1" , callHackage "servant-multipart" "0.12.1"
, callHackage "servant-multipart-api" "0.12.1" , callHackage "servant-multipart-api" "0.12.1"
, callCabal2nix
"servant-server"
"https://github.com/TeofilC/servant"
(Some "76fc90a51f915230bbe1e0d1dbe9727fcdc7a0fc")
(Some "servant-server")
, callHackage "shake" "0.19.6" , callHackage "shake" "0.19.6"
, callHackage "shelly" "1.10.0" , callHackage "shelly" "1.10.0"
, callHackage "singleton-bool" "0.1.6" , callHackage "singleton-bool" "0.1.6"
......
...@@ -371,6 +371,8 @@ final: prev: with pkgs.haskell.lib; { ...@@ -371,6 +371,8 @@ final: prev: with pkgs.haskell.lib; {
servant-multipart-api = prev.callPackage (./pkgs/servant-multipart-api.nix) { }; servant-multipart-api = prev.callPackage (./pkgs/servant-multipart-api.nix) { };
servant-server = prev.callPackage (./pkgs/servant-server.nix) { };
shake = prev.callPackage (./pkgs/shake.nix) { }; shake = prev.callPackage (./pkgs/shake.nix) { };
shelly = prev.callPackage (./pkgs/shelly.nix) { }; shelly = prev.callPackage (./pkgs/shelly.nix) { };
......
{ mkDerivation { mkDerivation, aeson, base, base-compat, bifunctors, containers
, aeson , contravariant, data-default-class, deepseq, fetchgit, hashable
, base , keys, lens, lib, QuickCheck, semigroupoids, sydtest
, base-compat , sydtest-discover, these, transformers, transformers-compat
, bifunctors , unordered-containers, vector, vector-instances
, containers
, contravariant
, data-default-class
, deepseq
, genvalidity
, genvalidity-sydtest
, hashable
, keys
, lens
, lib
, QuickCheck
, semigroupoids
, sydtest
, sydtest-discover
, these
, transformers
, transformers-compat
, unordered-containers
, vector
, vector-instances
}: }:
mkDerivation { mkDerivation {
pname = "compactable"; pname = "compactable";
version = "0.2.0.0"; version = "0.2.0.1";
sha256 = "871c6e5a6d0b9a27624a3393a0b048358cf9289b8e35535bb11c469f56cdec59"; src = fetchgit {
url = "https://gitlab.com/fresheyeball/Compactable";
sha256 = "19nqdzaj8x5bnj1h7qng659c3cs9dm4s54bvgvvkgjqq6hs04hjr";
rev = "f63927b1e438c267f0d12f36e5b3735cfaebeeb4";
fetchSubmodules = true;
};
libraryHaskellDepends = [ libraryHaskellDepends = [
aeson aeson base base-compat bifunctors containers contravariant
base data-default-class deepseq hashable keys lens QuickCheck
base-compat semigroupoids these transformers transformers-compat
bifunctors unordered-containers vector vector-instances
containers
contravariant
data-default-class
deepseq
hashable
keys
lens
QuickCheck
semigroupoids
these
transformers
transformers-compat
unordered-containers
vector
vector-instances
]; ];
testHaskellDepends = [ testHaskellDepends = [
base base containers QuickCheck sydtest sydtest-discover these vector
containers
genvalidity
genvalidity-sydtest
QuickCheck
sydtest
sydtest-discover
these
vector
]; ];
doHaddock = false; doHaddock = false;
jailbreak = true; jailbreak = true;
...@@ -66,4 +28,4 @@ mkDerivation { ...@@ -66,4 +28,4 @@ mkDerivation {
hyperlinkSource = false; hyperlinkSource = false;
description = "A typeclass for structures which can be catMaybed, filtered, and partitioned"; description = "A typeclass for structures which can be catMaybed, filtered, and partitioned";
license = lib.licenses.bsd3; license = lib.licenses.bsd3;
} }
\ No newline at end of file
{ mkDerivation { mkDerivation, base, Cabal, cabal-doctest, containers, doctest
, base , fetchgit, ghc, ghc-tcplugins-extra, hspec, hspec-discover
, Cabal , inspection-testing, lib, polysemy, should-not-typecheck, syb
, cabal-doctest
, containers
, doctest
, fetchgit
, ghc
, ghc-tcplugins-extra
, hspec
, hspec-discover
, inspection-testing
, lib
, polysemy
, should-not-typecheck
, syb
, transformers , transformers
}: }:
mkDerivation { mkDerivation {
pname = "polysemy-plugin"; pname = "polysemy-plugin";
version = "0.4.0.0"; version = "0.4.3.1";
src = fetchgit { src = fetchgit {
url = "https://github.com/locallycompact/polysemy"; url = "https://github.com/locallycompact/polysemy";
sha256 = "0g75az24xc0694hakmkfwxmwd6bm79v48j42yjibiixy14dj1d5g"; sha256 = "1sy2jmwcg9aw4a6rji36djhkxhxnh50pqhaa3jhjfv2dsw652bcz";
rev = "5942a398ef02bbbe94bedd68f8628390ed223107"; rev = "bd944ca000c1ca69602d4723e3859af431b9d0c4";
fetchSubmodules = true; fetchSubmodules = true;
}; };
postUnpack = "sourceRoot+=/polysemy-plugin/; echo source root reset to $sourceRoot"; postUnpack = "sourceRoot+=/polysemy-plugin/; echo source root reset to $sourceRoot";
setupHaskellDepends = [ base Cabal cabal-doctest ]; setupHaskellDepends = [ base Cabal cabal-doctest ];
libraryHaskellDepends = [ libraryHaskellDepends = [
base base containers ghc ghc-tcplugins-extra polysemy syb transformers
containers
ghc
ghc-tcplugins-extra
polysemy
syb
transformers
]; ];
testHaskellDepends = [ testHaskellDepends = [
base base containers doctest ghc ghc-tcplugins-extra hspec
containers inspection-testing polysemy should-not-typecheck syb transformers
doctest
ghc
ghc-tcplugins-extra
hspec
inspection-testing
polysemy
should-not-typecheck
syb
transformers
]; ];
testToolDepends = [ hspec-discover ]; testToolDepends = [ hspec-discover ];
doHaddock = false; doHaddock = false;
...@@ -57,4 +29,4 @@ mkDerivation { ...@@ -57,4 +29,4 @@ mkDerivation {
homepage = "https://github.com/polysemy-research/polysemy#readme"; homepage = "https://github.com/polysemy-research/polysemy#readme";
description = "Disambiguate obvious uses of effects"; description = "Disambiguate obvious uses of effects";
license = lib.licenses.bsd3; license = lib.licenses.bsd3;
} }
\ No newline at end of file
{ mkDerivation, aeson, base, base-compat, base64-bytestring
, bytestring, constraints, containers, directory, exceptions
, fetchgit, filepath, hspec, hspec-discover, hspec-wai
, http-api-data, http-media, http-types, lib, monad-control, mtl
, network, network-uri, QuickCheck, resourcet, safe, servant
, should-not-typecheck, sop-core, string-conversions, tagged
, temporary, text, transformers, transformers-base
, transformers-compat, wai, wai-app-static, wai-extra, warp, word8
}:
mkDerivation {
pname = "servant-server";
version = "0.19.1";
src = fetchgit {
url = "https://github.com/TeofilC/servant";
sha256 = "0f6vkm44p93ln63plk4vfavadcgxjiqr8xncxrjqzp2mcql6qdmh";
rev = "76fc90a51f915230bbe1e0d1dbe9727fcdc7a0fc";
fetchSubmodules = true;
};
postUnpack = "sourceRoot+=/servant-server/; echo source root reset to $sourceRoot";
isLibrary = true;
isExecutable = true;
libraryHaskellDepends = [
base base-compat base64-bytestring bytestring constraints
containers exceptions filepath http-api-data http-media http-types
monad-control mtl network network-uri resourcet servant sop-core
string-conversions tagged text transformers transformers-base wai
wai-app-static word8
];
executableHaskellDepends = [
aeson base base-compat servant text wai warp
];
testHaskellDepends = [
aeson base base-compat base64-bytestring bytestring directory hspec
hspec-wai http-types mtl QuickCheck resourcet safe servant
should-not-typecheck sop-core string-conversions temporary text
transformers transformers-compat wai wai-extra
];
testToolDepends = [ hspec-discover ];
doHaddock = false;
jailbreak = true;
doCheck = false;
hyperlinkSource = false;
homepage = "http://docs.servant.dev/";
description = "A family of combinators for defining webservices APIs and serving them";
license = lib.licenses.bsd3;
mainProgram = "greet";
}
\ No newline at end of file
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment