flake.nix,nix: use filesets to reduce unnecessary recompiles of packages #303

deleted
opened by ptr.pet targeting master from [deleted fork]: reduce-spurious-recompiles

Change-Id: ytptsysvtkqvlvrlkvuwrklkvyrrrokn

-21
flake.lock
··· 1 1 { 2 2 "nodes": { 3 - "gitignore": { 4 - "inputs": { 5 - "nixpkgs": [ 6 - "nixpkgs" 7 - ] 8 - }, 9 - "locked": { 10 - "lastModified": 1709087332, 11 - "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", 12 - "owner": "hercules-ci", 13 - "repo": "gitignore.nix", 14 - "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", 15 - "type": "github" 16 - }, 17 - "original": { 18 - "owner": "hercules-ci", 19 - "repo": "gitignore.nix", 20 - "type": "github" 21 - } 22 - }, 23 3 "htmx-src": { 24 4 "flake": false, 25 5 "locked": { ··· 117 97 }, 118 98 "root": { 119 99 "inputs": { 120 - "gitignore": "gitignore", 121 100 "htmx-src": "htmx-src", 122 101 "htmx-ws-src": "htmx-ws-src", 123 102 "ibm-plex-mono-src": "ibm-plex-mono-src",
+66 -11
flake.nix
··· 33 33 url = "https://sqlite.org/2024/sqlite-amalgamation-3450100.zip"; 34 34 flake = false; 35 35 }; 36 - gitignore = { 37 - url = "github:hercules-ci/gitignore.nix"; 38 - inputs.nixpkgs.follows = "nixpkgs"; 39 - }; 40 36 }; 41 37 42 38 outputs = { ··· 46 42 htmx-src, 47 43 htmx-ws-src, 48 44 lucide-src, 49 - gitignore, 50 45 inter-fonts-src, 51 46 sqlite-lib-src, 52 47 ibm-plex-mono-src, 53 48 }: let 54 49 supportedSystems = ["x86_64-linux" "x86_64-darwin" "aarch64-linux" "aarch64-darwin"]; 55 - forAllSystems = nixpkgs.lib.genAttrs supportedSystems; 50 + lib = nixpkgs.lib; 51 + forAllSystems = lib.genAttrs supportedSystems; 56 52 nixpkgsFor = forAllSystems (system: nixpkgs.legacyPackages.${system}); 57 53 54 + mkSrc = sets: 55 + lib.fileset.toSource { 56 + root = ./.; 57 + fileset = lib.fileset.unions sets; 58 + }; 59 + goFileset = lib.fileset.union ./go.mod ./go.sum; 60 + appCommonFileset = lib.fileset.unions [ 61 + goFileset 62 + ./types 63 + ./api 64 + ./log 65 + ./jetstream 66 + ./rbac 67 + ./workflow 68 + ]; 69 + genjwksSrc = mkSrc [goFileset ./cmd/genjwks]; 70 + appviewSrc = mkSrc [ 71 + appCommonFileset 72 + ./appview 73 + ./cmd/appview 74 + ./input.css 75 + ./knotclient 76 + ./patchutil 77 + ./crypto 78 + ./eventconsumer 79 + ./spindle/models 80 + ./spindle/config 81 + ]; 82 + spindleSrc = mkSrc [ 83 + appCommonFileset 84 + ./spindle 85 + ./cmd/spindle 86 + ./notifier 87 + ./tid 88 + ./eventconsumer 89 + ./appview/cache 90 + ]; 91 + knotSrc = mkSrc [ 92 + appCommonFileset 93 + ./knotserver 94 + ./cmd/knot 95 + ./keyfetch 96 + ./notifier 97 + ./patchutil 98 + ./guard 99 + ./hook 100 + ./appview/idresolver 101 + ./appview/config 102 + ]; 103 + 58 104 mkPackageSet = pkgs: 59 105 pkgs.lib.makeScope pkgs.newScope (self: { 60 - goModHash = "sha256-SLi+nALwCd/Lzn3aljwPqCo2UaM9hl/4OAjcHQLt2Bk="; 61 - inherit (gitignore.lib) gitignoreSource; 62 106 sqlite-lib = self.callPackage ./nix/pkgs/sqlite-lib.nix { 63 107 inherit (pkgs) gcc; 64 108 inherit sqlite-lib-src; 65 109 }; 66 - genjwks = self.callPackage ./nix/pkgs/genjwks.nix {}; 110 + genjwks = self.callPackage ./nix/pkgs/genjwks.nix { 111 + goModHash = "sha256-dDIwwM5gePR1jNpyIFRP9d6ocxB+NeEAP+lmKQIy2aE="; 112 + src = genjwksSrc; 113 + }; 67 114 lexgen = self.callPackage ./nix/pkgs/lexgen.nix {inherit indigo;}; 68 115 appview = self.callPackage ./nix/pkgs/appview.nix { 69 116 inherit htmx-src htmx-ws-src lucide-src inter-fonts-src ibm-plex-mono-src; 117 + goModHash = "sha256-iDNH2EyKa3Sj+IbZ6BopXQtz/rjoxq7Rc5l352rqkWs="; 118 + src = appviewSrc; 119 + }; 120 + spindle = self.callPackage ./nix/pkgs/spindle.nix { 121 + goModHash = "sha256-N2GxNgeusKq+z5OkMNs/6EaDR/SjxiGCWeIWYRyb4jU="; 122 + src = spindleSrc; 123 + }; 124 + knot-unwrapped = self.callPackage ./nix/pkgs/knot-unwrapped.nix { 125 + goModHash = "sha256-KJZQO9OZUDx4Mj64XC7F2b0K5sQC4Vq2+zT3oH8UTIE="; 126 + src = knotSrc; 70 127 }; 71 - spindle = self.callPackage ./nix/pkgs/spindle.nix {}; 72 - knot-unwrapped = self.callPackage ./nix/pkgs/knot-unwrapped.nix {}; 73 128 knot = self.callPackage ./nix/pkgs/knot.nix {}; 74 129 }); 75 130 in {
+3 -2
nix/pkgs/appview.nix
··· 9 9 tailwindcss, 10 10 sqlite-lib, 11 11 goModHash, 12 - gitignoreSource, 12 + src, 13 + lib, 13 14 }: 14 15 buildGoModule { 15 16 inherit stdenv; 16 17 17 18 pname = "appview"; 18 19 version = "0.1.0"; 19 - src = gitignoreSource ../..; 20 + inherit src; 20 21 21 22 postUnpack = '' 22 23 pushd source
+3 -2
nix/pkgs/genjwks.nix
··· 1 1 { 2 2 buildGoModule, 3 3 goModHash, 4 - gitignoreSource, 4 + src, 5 + lib, 5 6 }: 6 7 buildGoModule { 7 8 pname = "genjwks"; 8 9 version = "0.1.0"; 9 - src = gitignoreSource ../..; 10 + inherit src; 10 11 subPackages = ["cmd/genjwks"]; 11 12 vendorHash = goModHash; 12 13 doCheck = false;
+3 -2
nix/pkgs/knot-unwrapped.nix
··· 3 3 stdenv, 4 4 sqlite-lib, 5 5 goModHash, 6 - gitignoreSource, 6 + src, 7 + lib, 7 8 }: 8 9 buildGoModule { 9 10 pname = "knot"; 10 11 version = "0.1.0"; 11 - src = gitignoreSource ../..; 12 + inherit src; 12 13 13 14 doCheck = false; 14 15
+3 -2
nix/pkgs/spindle.nix
··· 3 3 stdenv, 4 4 sqlite-lib, 5 5 goModHash, 6 - gitignoreSource, 6 + src, 7 + lib, 7 8 }: 8 9 buildGoModule { 9 10 pname = "spindle"; 10 11 version = "0.1.0"; 11 - src = gitignoreSource ../..; 12 + inherit src; 12 13 13 14 doCheck = false; 14 15