-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathflake.nix
73 lines (61 loc) · 1.88 KB
/
flake.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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
{
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs";
flake-utils.url = "github:numtide/flake-utils";
common-j.url = "github:lep/common-j";
common-j.inputs.nixpkgs.follows = "nixpkgs";
common-j.inputs.flake-utils.follows = "flake-utils";
};
outputs = { self, nixpkgs, flake-utils, common-j }:
flake-utils.lib.eachDefaultSystem (system:
let
pkgs = import nixpkgs { inherit system; };
packageName = "jhcr";
ghcPackages = pkgs.haskellPackages.ghcWithPackages (ps: [
ps.file-embed
ps.filepath
ps.directory
ps.bytestring
ps.binary
ps.containers
ps.hashable
ps.megaparsec
ps.optparse-applicative
ps.gitrev
ps.parser-combinators
ps.lca
ps.mtl
ps.lens
ps.dlist
ps.unordered-containers
ps.vector
ps.utf8-string
ps.random
ps.Glob
]);
jhcr = pkgs.stdenv.mkDerivation {
name = "jhcr";
src = self;
buildPhase = ''
export PATCH_LVL=133
${ghcPackages}/bin/runhaskell -isrc src/convert.hs ${common-j}/common.j
mkdir out
for j in src/runtime/*.j; do
bash src/process.sh "$j" "''${j/src\/runtime/out}" JHCR_
done
${ghcPackages}/bin/ghc -O -isrc src/Main.hs -o jhcr
'';
installPhase = ''
install -Dt $out/bin jhcr
'';
};
buildInputs = [ pkgs.gnumake pkgs.cabal-install ghcPackages ];
in rec {
packages = { ${packageName} = jhcr; };
defaultPackage = packages.${packageName};
devShell = pkgs.mkShell {
buildInputs = buildInputs ++ [ pkgs.cabal-install ];
inputsFrom = builtins.attrValues self.packages.${system};
};
});
}