From a9d77a20008efe82862cc1adbfa7a6d4f09f8ff7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Menou?= <frederic.menou@fretlink.com> Date: Thu, 8 Dec 2016 10:19:15 +0200 Subject: Release code as open source --- release.nix | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 release.nix (limited to 'release.nix') diff --git a/release.nix b/release.nix new file mode 100644 index 0000000..d96b579 --- /dev/null +++ b/release.nix @@ -0,0 +1,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; +} -- cgit v1.2.3