diff options
Diffstat (limited to 'release.nix')
-rw-r--r-- | release.nix | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/release.nix b/release.nix new file mode 100644 index 0000000..d96b579 --- /dev/null +++ b/release.nix | |||
@@ -0,0 +1,40 @@ | |||
1 | let | ||
2 | haskellNixSrc = builtins.fetchTarball "https://github.com/input-output-hk/haskell.nix/archive/1c2c9cd47f267aacf5472477a9827b18cfe5252a.tar.gz"; | ||
3 | haskellNix = import haskellNixSrc {}; | ||
4 | pkgs = import haskellNix.sources.nixpkgs-unstable haskellNix.nixpkgsArgs; | ||
5 | nixBundleLib = import ./release-bundle.nix { inherit pkgs; }; | ||
6 | projectName = "edi-parser"; | ||
7 | selfPackagesNames = map (v: "${projectName}-${v}") [ "core" "scaffolder" "specification" ]; | ||
8 | project = pkgs.haskell-nix.project' { | ||
9 | src = pkgs.haskell-nix.haskellLib.cleanGit { | ||
10 | name = projectName; | ||
11 | src = ./.; | ||
12 | }; | ||
13 | }; | ||
14 | selfPackages = pkgs.lib.genAttrs selfPackagesNames (n: project.hsPkgs.${n}); | ||
15 | extractComponent = type: pkgs.haskell-nix.haskellLib.collectComponents' type selfPackages; | ||
16 | mapRecursive = action: pkgs.lib.mapAttrsRecursiveCond (as: !(as ? "type" && as.type == "derivation")) | ||
17 | (n: v: if builtins.isBool v then v else action n v); | ||
18 | |||
19 | extractDocumentation = mapRecursive (n: v: v.haddock.doc) (extractComponent "library"); | ||
20 | toEnv = derivations: pkgs.buildEnv { | ||
21 | name = "project-env"; | ||
22 | ignoreCollisions = true; | ||
23 | paths = pkgs.lib.collect pkgs.lib.isDerivation derivations; | ||
24 | }; | ||
25 | in selfPackages // project // rec { | ||
26 | inherit selfPackagesNames; | ||
27 | checks = pkgs.haskell-nix.haskellLib.collectChecks' selfPackages; | ||
28 | exes = extractComponent "exes"; | ||
29 | library = extractComponent "library"; | ||
30 | documentation = extractDocumentation; | ||
31 | foreignlibs = extractComponent "foreignlibs"; | ||
32 | sublibs = extractComponent "sublibs"; | ||
33 | benchmarks = extractComponent "benchmarks"; | ||
34 | tests = extractComponent "tests"; | ||
35 | project-env = toEnv exes; | ||
36 | bundled-dist = nixBundleLib.bundled-dist exes; | ||
37 | bundled-documentation = nixBundleLib.bundled-documentation documentation; | ||
38 | bundled-exes = nixBundleLib.bundled-derivations exes; | ||
39 | bundled-project-env = nixBundleLib.tarball exes; | ||
40 | } | ||