-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathrelease.nix
40 lines (39 loc) · 1.82 KB
/
release.nix
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
let
haskellNixSrc = builtins.fetchTarball "https://github.com/input-output-hk/haskell.nix/archive/1c2c9cd47f267aacf5472477a9827b18cfe5252a.tar.gz";
haskellNix = import haskellNixSrc {};
pkgs = import haskellNix.sources.nixpkgs-unstable haskellNix.nixpkgsArgs;
nixBundleLib = import ./release-bundle.nix { inherit pkgs; };
projectName = "edi-parser";
selfPackagesNames = map (v: "${projectName}-${v}") [ "core" "scaffolder" "specification" ];
project = pkgs.haskell-nix.project' {
src = pkgs.haskell-nix.haskellLib.cleanGit {
name = projectName;
src = ./.;
};
};
selfPackages = pkgs.lib.genAttrs selfPackagesNames (n: project.hsPkgs.${n});
extractComponent = type: pkgs.haskell-nix.haskellLib.collectComponents' type selfPackages;
mapRecursive = action: pkgs.lib.mapAttrsRecursiveCond (as: !(as ? "type" && as.type == "derivation"))
(n: v: if builtins.isBool v then v else action n v);
extractDocumentation = mapRecursive (n: v: v.haddock.doc) (extractComponent "library");
toEnv = derivations: pkgs.buildEnv {
name = "project-env";
ignoreCollisions = true;
paths = pkgs.lib.collect pkgs.lib.isDerivation derivations;
};
in selfPackages // project // rec {
inherit selfPackagesNames;
checks = pkgs.haskell-nix.haskellLib.collectChecks' selfPackages;
exes = extractComponent "exes";
library = extractComponent "library";
documentation = extractDocumentation;
foreignlibs = extractComponent "foreignlibs";
sublibs = extractComponent "sublibs";
benchmarks = extractComponent "benchmarks";
tests = extractComponent "tests";
project-env = toEnv exes;
bundled-dist = nixBundleLib.bundled-dist exes;
bundled-documentation = nixBundleLib.bundled-documentation documentation;
bundled-exes = nixBundleLib.bundled-derivations exes;
bundled-project-env = nixBundleLib.tarball exes;
}