blob: 490b01d847115c97fc60fc1a347b3d5bdf078af5 (
plain)
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
73
74
75
76
77
78
79
80
81
|
{ pkgs ? import sources.nixpkgs {
overlays = [
(import ./pkgs { })
(self: super: {
haskell = super.haskell // {
packageOverrides = self.lib.composeManyExtensions [
super.haskell.packageOverrides
(self: super: {
ghcWithPackages = super.ghcWithPackages.override {
installDocumentation = false; # XXX true (default)
};
})
];
};
})
];
}
, sources ? import ./nix/sources.nix
}:
let
haskellPackages = pkgs.haskell.packages.ghc98;
jsHaskellPackages = pkgs.pkgsCross.ghcjs.haskell.packages.ghc98;
lib = pkgs.lib;
in
rec {
inherit (haskellPackages) acms;
inherit (jsHaskellPackages) frontend;
shell = pkgs.mkShell {
inputsFrom = [
(jsHaskellPackages.shellFor {
packages = _: [
jsHaskellPackages.acms
jsHaskellPackages.autotypes
jsHaskellPackages.frontend
];
})
(haskellPackages.shellFor {
packages = _: [
haskellPackages.acms
haskellPackages.autotypes
haskellPackages.frontend
];
withHoogle = true;
withHaddock = true;
})
(pkgs.mkShell {
buildInputs = [
haskellPackages.astore
haskellPackages.autotypes
haskellPackages.cabal-install
haskellPackages.haskell-language-server
haskellPackages.ormolu
pkgs.niv
pkgs.pkg-config
(pkgs.writeScriptBin "reload" ''
set -efu
${haskellPackages.ghcid.bin}/bin/ghcid -c \
'${haskellPackages.cabal-install}/bin/cabal new-repl' \
-T ':run Main.main'
'')
(pkgs.writeScriptBin "acms" ''
set -efu
exec ${haskellPackages.cabal-install}/bin/cabal run acms -- "$@"
'')
(pkgs.writeScriptBin "format" ''
set -efu
git ls-files | grep .hs$ | while read -r fn; do
${haskellPackages.ormolu}/bin/ormolu -i "$fn" || :
done
'')
(pkgs.writeScriptBin "git-hook-precommit" ''
set -efux
cd ${lib.escapeShellArg (toString ./.)}
nix-build . -A acms -A frontend --no-out-link
nix-build tests.nix --no-out-link
'')
];
})
];
};
}
|