-
Notifications
You must be signed in to change notification settings - Fork 13
/
Copy pathflake.nix
69 lines (57 loc) · 2.01 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
{
description = "calligraphy";
inputs.nixpkgs.url = "github:NixOS/nixpkgs/release-23.05";
inputs.flake-utils.url = "github:numtide/flake-utils";
outputs = inputs:
let
overlay = final: prev: {
haskell = prev.haskell // {
packageOverrides = hfinal: hprev:
prev.haskell.packageOverrides hfinal hprev // {
calligraphy = hfinal.callCabal2nix "calligraphy" ./. { };
};
};
calligraphy = final.haskell.lib.compose.justStaticExecutables final.haskellPackages.calligraphy;
};
perSystem = system:
let
per-compiler = f: pkgs.lib.genAttrs [
"ghc962"
"ghc945"
"ghc927"
"ghc902"
"ghc8107"
"ghc884"
]
(ghc: f pkgs.haskell.packages.${ghc});
pkgs = import inputs.nixpkgs { inherit system; overlays = [ overlay ]; };
mkExe = hspkgs: pkgs.haskell.lib.compose.justStaticExecutables hspkgs.calligraphy;
mkBuildShell = hspkgs:
hspkgs.shellFor {
packages = hpkgs: [ hpkgs.calligraphy ];
nativeBuildInputs = [ hspkgs.cabal-install ];
};
mkDevShell = hspkgs:
hspkgs.shellFor {
withHoogle = true;
packages = hpkgs: [ hpkgs.calligraphy ];
nativeBuildInputs = [
hspkgs.cabal-install
hspkgs.ormolu
pkgs.bashInteractive
pkgs.graphviz
hspkgs.hlint
hspkgs.haskell-language-server
];
};
in
{
packages.default = pkgs.calligraphy;
packages.calligraphyFor = per-compiler mkExe;
devShells.default = mkDevShell pkgs.haskellPackages;
devShells.build-shells = per-compiler mkBuildShell;
devShells.dev-shells = per-compiler mkDevShell;
};
in
{ inherit overlay; } // inputs.flake-utils.lib.eachDefaultSystem perSystem;
}