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

deleted
opened by ptr.pet targeting master from ptr.pet/core: reduce-spurious-recompiles

Change-Id: ytptsysvtkqvlvrlkvuwrklkvyrrrokn

-21
flake.lock
···
{
"nodes": {
-
"gitignore": {
-
"inputs": {
-
"nixpkgs": [
-
"nixpkgs"
-
]
-
},
-
"locked": {
-
"lastModified": 1709087332,
-
"narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=",
-
"owner": "hercules-ci",
-
"repo": "gitignore.nix",
-
"rev": "637db329424fd7e46cf4185293b9cc8c88c95394",
-
"type": "github"
-
},
-
"original": {
-
"owner": "hercules-ci",
-
"repo": "gitignore.nix",
-
"type": "github"
-
}
-
},
"htmx-src": {
"flake": false,
"locked": {
···
},
"root": {
"inputs": {
-
"gitignore": "gitignore",
"htmx-src": "htmx-src",
"htmx-ws-src": "htmx-ws-src",
"ibm-plex-mono-src": "ibm-plex-mono-src",
+66 -11
flake.nix
···
url = "https://sqlite.org/2024/sqlite-amalgamation-3450100.zip";
flake = false;
};
-
gitignore = {
-
url = "github:hercules-ci/gitignore.nix";
-
inputs.nixpkgs.follows = "nixpkgs";
-
};
};
outputs = {
···
htmx-src,
htmx-ws-src,
lucide-src,
-
gitignore,
inter-fonts-src,
sqlite-lib-src,
ibm-plex-mono-src,
}: let
supportedSystems = ["x86_64-linux" "x86_64-darwin" "aarch64-linux" "aarch64-darwin"];
-
forAllSystems = nixpkgs.lib.genAttrs supportedSystems;
+
lib = nixpkgs.lib;
+
forAllSystems = lib.genAttrs supportedSystems;
nixpkgsFor = forAllSystems (system: nixpkgs.legacyPackages.${system});
+
mkSrc = sets:
+
lib.fileset.toSource {
+
root = ./.;
+
fileset = lib.fileset.unions sets;
+
};
+
goFileset = lib.fileset.union ./go.mod ./go.sum;
+
appCommonFileset = lib.fileset.unions [
+
goFileset
+
./types
+
./api
+
./log
+
./jetstream
+
./rbac
+
./workflow
+
];
+
genjwksSrc = mkSrc [goFileset ./cmd/genjwks];
+
appviewSrc = mkSrc [
+
appCommonFileset
+
./appview
+
./cmd/appview
+
./input.css
+
./knotclient
+
./patchutil
+
./crypto
+
./eventconsumer
+
./spindle/models
+
./spindle/config
+
];
+
spindleSrc = mkSrc [
+
appCommonFileset
+
./spindle
+
./cmd/spindle
+
./notifier
+
./tid
+
./eventconsumer
+
./appview/cache
+
];
+
knotSrc = mkSrc [
+
appCommonFileset
+
./knotserver
+
./cmd/knot
+
./keyfetch
+
./notifier
+
./patchutil
+
./guard
+
./hook
+
./appview/idresolver
+
./appview/config
+
];
+
mkPackageSet = pkgs:
pkgs.lib.makeScope pkgs.newScope (self: {
-
goModHash = "sha256-SLi+nALwCd/Lzn3aljwPqCo2UaM9hl/4OAjcHQLt2Bk=";
-
inherit (gitignore.lib) gitignoreSource;
sqlite-lib = self.callPackage ./nix/pkgs/sqlite-lib.nix {
inherit (pkgs) gcc;
inherit sqlite-lib-src;
};
-
genjwks = self.callPackage ./nix/pkgs/genjwks.nix {};
+
genjwks = self.callPackage ./nix/pkgs/genjwks.nix {
+
goModHash = "sha256-dDIwwM5gePR1jNpyIFRP9d6ocxB+NeEAP+lmKQIy2aE=";
+
src = genjwksSrc;
+
};
lexgen = self.callPackage ./nix/pkgs/lexgen.nix {inherit indigo;};
appview = self.callPackage ./nix/pkgs/appview.nix {
inherit htmx-src htmx-ws-src lucide-src inter-fonts-src ibm-plex-mono-src;
+
goModHash = "sha256-iDNH2EyKa3Sj+IbZ6BopXQtz/rjoxq7Rc5l352rqkWs=";
+
src = appviewSrc;
+
};
+
spindle = self.callPackage ./nix/pkgs/spindle.nix {
+
goModHash = "sha256-N2GxNgeusKq+z5OkMNs/6EaDR/SjxiGCWeIWYRyb4jU=";
+
src = spindleSrc;
+
};
+
knot-unwrapped = self.callPackage ./nix/pkgs/knot-unwrapped.nix {
+
goModHash = "sha256-KJZQO9OZUDx4Mj64XC7F2b0K5sQC4Vq2+zT3oH8UTIE=";
+
src = knotSrc;
};
-
spindle = self.callPackage ./nix/pkgs/spindle.nix {};
-
knot-unwrapped = self.callPackage ./nix/pkgs/knot-unwrapped.nix {};
knot = self.callPackage ./nix/pkgs/knot.nix {};
});
in {
+3 -2
nix/pkgs/appview.nix
···
tailwindcss,
sqlite-lib,
goModHash,
-
gitignoreSource,
+
src,
+
lib,
}:
buildGoModule {
inherit stdenv;
pname = "appview";
version = "0.1.0";
-
src = gitignoreSource ../..;
+
inherit src;
postUnpack = ''
pushd source
+3 -2
nix/pkgs/genjwks.nix
···
{
buildGoModule,
goModHash,
-
gitignoreSource,
+
src,
+
lib,
}:
buildGoModule {
pname = "genjwks";
version = "0.1.0";
-
src = gitignoreSource ../..;
+
inherit src;
subPackages = ["cmd/genjwks"];
vendorHash = goModHash;
doCheck = false;
+3 -2
nix/pkgs/knot-unwrapped.nix
···
stdenv,
sqlite-lib,
goModHash,
-
gitignoreSource,
+
src,
+
lib,
}:
buildGoModule {
pname = "knot";
version = "0.1.0";
-
src = gitignoreSource ../..;
+
inherit src;
doCheck = false;
+3 -2
nix/pkgs/spindle.nix
···
stdenv,
sqlite-lib,
goModHash,
-
gitignoreSource,
+
src,
+
lib,
}:
buildGoModule {
pname = "spindle";
version = "0.1.0";
-
src = gitignoreSource ../..;
+
inherit src;
doCheck = false;