forked from haskell-nix/hnix-store
-
Notifications
You must be signed in to change notification settings - Fork 0
/
shell.nix
45 lines (41 loc) · 1 KB
/
shell.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
41
42
43
44
45
attrs@{...}:
let
inherit (import ./. attrs) pkgs haskellPackages;
hlib = pkgs.haskell.lib;
packages = [
"hnix-store-core"
"hnix-store-db"
"hnix-store-json"
"hnix-store-nar"
"hnix-store-readonly"
"hnix-store-remote"
"hnix-store-tests"
];
extract-external-inputs = p:
builtins.filter
(dep: !(builtins.elem dep packages))
(map
(x: x.pname)
(hlib.getHaskellBuildInputs haskellPackages.${p}));
external-inputs =
map
(x: haskellPackages.${x})
(builtins.concatLists
(map
extract-external-inputs
packages));
metaPackage =
haskellPackages.mkDerivation
{ pname = "hnix-store-shell";
version = "0.0.0.0";
libraryHaskellDepends = external-inputs;
license = pkgs.stdenv.lib.licenses.asl20;};
package-envs =
builtins.listToAttrs
(map
(p:
{ name = p;
value = haskellPackages.${p}.env;})
packages);
in
metaPackage.env // package-envs