]> git.immae.eu Git - github/fretlink/edi-parser.git/blob - release.nix
Release code as open source
[github/fretlink/edi-parser.git] / release.nix
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 }