git.iko.soy/purestack-dev/project-m36-rest
on master help sign in
Added nix build
commitb137dc5eb0ebfe7071e758b0011cddc18a2eb087 authoriko <mail@iko.soy> dateTue 24 Jun 2025, 15:05 (1 year ago) parent69f708b
2 files changed+61−3
flake.lock+17−1 flake.nix+44−2
flake.lock+17−1
@@ -35,7 +35,23 @@
3535 "root": {
3636 "inputs": {
3737 "flake-utils": "flake-utils",
38− "nixpkgs": "nixpkgs"
38+ "nixpkgs": "nixpkgs",
39+ "stacklock2nix": "stacklock2nix"
40+ }
41+ },
42+ "stacklock2nix": {
43+ "locked": {
44+ "lastModified": 1743151034,
45+ "narHash": "sha256-2QgpxnOyQg475wd0f/qzgG4fNqce1UearDjzZyrmMG8=",
46+ "owner": "cdepillabout",
47+ "repo": "stacklock2nix",
48+ "rev": "108f6ab6d0208e3842443bea26dfd72b37d82f28",
49+ "type": "github"
50+ },
51+ "original": {
52+ "owner": "cdepillabout",
53+ "repo": "stacklock2nix",
54+ "type": "github"
3955 }
4056 },
4157 "systems": {
flake.nix+44−2
@@ -2,16 +2,53 @@
22 inputs = {
33 nixpkgs.url = "nixpkgs/nixos-unstable";
44 flake-utils.url = "flake-utils";
5+ stacklock2nix.url = "github:cdepillabout/stacklock2nix";
56 };
67
7− outputs = { self, flake-utils, nixpkgs }:
8+ outputs = { self, flake-utils, nixpkgs, stacklock2nix }:
89 let
910 supportedSystems =
1011 [ "x86_64-linux" "x86_64-darwin" "aarch64-darwin" "aarch64-linux" ];
1112 compilerVersion = "966";
1213 in flake-utils.lib.eachSystem supportedSystems (system:
13− let pkgs = import nixpkgs { inherit 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; }));
1428 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+ };
1552 devShells.default = pkgs.mkShell {
1653 buildInputs = with pkgs; [
1754 haskell.compiler."ghc${compilerVersion}"
@@ -21,4 +58,9 @@
2158 ];
2259 };
2360 });
61+ nixConfig = {
62+ extra-substituters = [ "https://cache.garnix.io" ];
63+ extra-trusted-public-keys =
64+ [ "cache.garnix.io:CTFPyKSLcx5RMJKfLo5EEPUObbA78b0YQ2DTCJXqr9g=" ];
65+ };
2466}