-
Notifications
You must be signed in to change notification settings - Fork 0
/
flake.nix
49 lines (48 loc) · 1.69 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
{
inputs = {
unstable.url = "github:nixos/nixpkgs/nixos-unstable";
flake-utils.url = "github:numtide/flake-utils";
};
outputs = { self, unstable, flake-utils }:
flake-utils.lib.eachDefaultSystem
(system:
let
pkgs = unstable.legacyPackages.${system};
hl = pkgs.haskell.lib.compose;
haskellPackages = pkgs.haskellPackages;
trv = unstable.lib.trivial;
project = extraModifiers: returnShellEnv:
haskellPackages.developPackage {
root = unstable.lib.sourceFilesBySuffices ./. [ ".yaml" ".hs" ];
name = "XmoFlake";
returnShellEnv = returnShellEnv;
modifier =
(trv.flip trv.pipe) ([
hl.enableStaticLibraries
hl.justStaticExecutables
hl.disableExecutableProfiling
] ++ extraModifiers);
};
in
{
packages.default = project [ ] false;
devShell = project
[
(hl.addBuildTools (with haskellPackages; [
haskell-language-server
hlint
]))
(hl.overrideCabal (old: {
shellHook = (old.shellHook or "") + ''
echo "Generating .cabal file from package.yaml using hpack, remember to regenerate if you change package.yaml! Although nix build dont care about it, its mostly for helping haskell-language-server." | ${pkgs.cowsay}/bin/cowsay
hpack
'';
}))
]
true;
}) // {
overlay = final: prev: {
xmoflake = self.packages.${final.system}.default;
};
};
}