git.iko.soy/purestack-dev/project-m36-rest
on master help sign in
66 lines 2.5 kB history raw
1{
2 inputs = {
3 nixpkgs.url = "nixpkgs/nixos-unstable";
4 flake-utils.url = "flake-utils";
5 stacklock2nix.url = "github:cdepillabout/stacklock2nix";
6 };
8 outputs = { self, flake-utils, nixpkgs, stacklock2nix }:
9 let
10 supportedSystems =
11 [ "x86_64-linux" "x86_64-darwin" "aarch64-darwin" "aarch64-linux" ];
12 compilerVersion = "966";
13 in flake-utils.lib.eachSystem supportedSystems (system:
14 let
15 pkgs = import nixpkgs {
16 inherit system;
17 overlays = [ stacklock2nix.overlay ];
18 };
19 appendGhcFlags = opts: drv:
20 pkgs.haskell.lib.appendBuildFlag drv
21 ''--ghc-options="${builtins.concatStringsSep " " opts}"'';
22 insaneOptimizationFlags =
23 [ "-O2" "-fexpose-all-unfoldings" "-fspecialise-aggressively" ];
24 justStatic = package:
25 (pkgs.haskell.lib.overrideCabal
26 (pkgs.haskell.lib.justStaticExecutables package)
27 (drv: { disallowGhcReference = false; }));
28 in {
29 packages = {
30 default = justStatic (pkgs.stacklock2nix {
31 stackYaml = ./stack.yaml;
32 baseHaskellPkgSet = pkgs.haskell.packages."ghc${compilerVersion}";
33 additionalHaskellPkgSetOverrides = (hfinal: hprev:
34 builtins.mapAttrs (name: value:
35 if (builtins.tryEval (!(builtins.isAttrs value)
36 || !(value ? pname))).value or true then
37 value
38 else if value ? doCheck && value.pname != "ghc" then
39 pkgs.lib.pipe value (with pkgs.haskell.lib; [
40 dontCheck
41 dontHaddock
42 doJailbreak
43 doStrip
44 disableLibraryProfiling
45 disableExecutableProfiling
46 (appendGhcFlags insaneOptimizationFlags)
47 ])
48 else
49 value) hprev);
50 }).pkgSet.project-m36-rest;
51 };
52 devShells.default = pkgs.mkShell {
53 buildInputs = with pkgs; [
54 haskell.compiler."ghc${compilerVersion}"
55 (pkgs.haskell-language-server.override {
56 supportedGhcVersions = [ compilerVersion ];
57 })
58 ];
59 };
60 });
61 nixConfig = {
62 extra-substituters = [ "https://cache.garnix.io" ];
63 extra-trusted-public-keys =
64 [ "cache.garnix.io:CTFPyKSLcx5RMJKfLo5EEPUObbA78b0YQ2DTCJXqr9g=" ];
65 };