From a43b962d03a90b58d3d5ee2cbd0906d79498f013 Mon Sep 17 00:00:00 2001 From: dusk Date: Mon, 14 Jul 2025 01:16:40 +0300 Subject: [PATCH] flake.nix,nix: use filesets to reduce unnecessary recompiles of packages Change-Id: ytptsysvtkqvlvrlkvuwrklkvyrrrokn Change-Id: ytptsysvtkqvlvrlkvuwrklkvyrrrokn --- flake.lock | 21 ---------- flake.nix | 77 +++++++++++++++++++++++++++++++------ nix/pkgs/appview.nix | 5 ++- nix/pkgs/genjwks.nix | 5 ++- nix/pkgs/knot-unwrapped.nix | 5 ++- nix/pkgs/spindle.nix | 5 ++- 6 files changed, 78 insertions(+), 40 deletions(-) diff --git a/flake.lock b/flake.lock index 2a23de4..d63a3d4 100644 --- a/flake.lock +++ b/flake.lock @@ -1,25 +1,5 @@ { "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": { @@ -117,7 +97,6 @@ }, "root": { "inputs": { - "gitignore": "gitignore", "htmx-src": "htmx-src", "htmx-ws-src": "htmx-ws-src", "ibm-plex-mono-src": "ibm-plex-mono-src", diff --git a/flake.nix b/flake.nix index 4d2ef23..69aa1dd 100644 --- a/flake.nix +++ b/flake.nix @@ -33,10 +33,6 @@ url = "https://sqlite.org/2024/sqlite-amalgamation-3450100.zip"; flake = false; }; - gitignore = { - url = "github:hercules-ci/gitignore.nix"; - inputs.nixpkgs.follows = "nixpkgs"; - }; }; outputs = { @@ -46,30 +42,89 @@ 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 { diff --git a/nix/pkgs/appview.nix b/nix/pkgs/appview.nix index 3a663af..90cbd8f 100644 --- a/nix/pkgs/appview.nix +++ b/nix/pkgs/appview.nix @@ -9,14 +9,15 @@ tailwindcss, sqlite-lib, goModHash, - gitignoreSource, + src, + lib, }: buildGoModule { inherit stdenv; pname = "appview"; version = "0.1.0"; - src = gitignoreSource ../..; + inherit src; postUnpack = '' pushd source diff --git a/nix/pkgs/genjwks.nix b/nix/pkgs/genjwks.nix index 087fadd..9f82415 100644 --- a/nix/pkgs/genjwks.nix +++ b/nix/pkgs/genjwks.nix @@ -1,12 +1,13 @@ { buildGoModule, goModHash, - gitignoreSource, + src, + lib, }: buildGoModule { pname = "genjwks"; version = "0.1.0"; - src = gitignoreSource ../..; + inherit src; subPackages = ["cmd/genjwks"]; vendorHash = goModHash; doCheck = false; diff --git a/nix/pkgs/knot-unwrapped.nix b/nix/pkgs/knot-unwrapped.nix index ec6f01b..6620689 100644 --- a/nix/pkgs/knot-unwrapped.nix +++ b/nix/pkgs/knot-unwrapped.nix @@ -3,12 +3,13 @@ stdenv, sqlite-lib, goModHash, - gitignoreSource, + src, + lib, }: buildGoModule { pname = "knot"; version = "0.1.0"; - src = gitignoreSource ../..; + inherit src; doCheck = false; diff --git a/nix/pkgs/spindle.nix b/nix/pkgs/spindle.nix index 424a054..9e7c2b6 100644 --- a/nix/pkgs/spindle.nix +++ b/nix/pkgs/spindle.nix @@ -3,12 +3,13 @@ stdenv, sqlite-lib, goModHash, - gitignoreSource, + src, + lib, }: buildGoModule { pname = "spindle"; version = "0.1.0"; - src = gitignoreSource ../..; + inherit src; doCheck = false; -- 2.43.0