summary refs log tree commit diff
diff options
context:
space:
mode:
authorAlyssa Ross <hi@alyssa.is>2023-12-17 12:27:42 +0100
committerAlyssa Ross <hi@alyssa.is>2023-12-17 15:46:29 +0100
commit3689d431074c3bdc40646d593b273708d8792259 (patch)
tree4d5fa3920762f0f655e53ade5c272c827e86f82e
parent9f8a8aafa37624360df15c14472b071269810e38 (diff)
downloadspectrum-3689d431074c3bdc40646d593b273708d8792259.tar
spectrum-3689d431074c3bdc40646d593b273708d8792259.tar.gz
spectrum-3689d431074c3bdc40646d593b273708d8792259.tar.bz2
spectrum-3689d431074c3bdc40646d593b273708d8792259.tar.lz
spectrum-3689d431074c3bdc40646d593b273708d8792259.tar.xz
spectrum-3689d431074c3bdc40646d593b273708d8792259.tar.zst
spectrum-3689d431074c3bdc40646d593b273708d8792259.zip
pkgs: use filesets for src
This will make it possible later to specify which directories actually
need to be present to build a component, so changing a single file
somewhere won't force rebuilds of every Spectrum component.

Signed-off-by: Alyssa Ross <hi@alyssa.is>
-rw-r--r--Documentation/default.nix7
-rw-r--r--host/initramfs/default.nix5
-rw-r--r--host/rootfs/default.nix5
-rw-r--r--host/start-vm/default.nix7
-rw-r--r--img/app/default.nix5
-rw-r--r--pkgs/default.nix26
-rw-r--r--release/checks/doc-anchors.nix11
-rw-r--r--release/checks/reuse.nix7
-rw-r--r--release/checks/rustfmt.nix7
-rw-r--r--release/checks/shellcheck.nix7
-rw-r--r--release/checks/wayland/surface-notify/default.nix5
-rw-r--r--release/live/default.nix5
-rw-r--r--tools/lseek/default.nix5
-rw-r--r--vm/sys/net/default.nix5
14 files changed, 76 insertions, 31 deletions
diff --git a/Documentation/default.nix b/Documentation/default.nix
index 94d4741..b58b531 100644
--- a/Documentation/default.nix
+++ b/Documentation/default.nix
@@ -4,12 +4,15 @@
 
 import ../lib/call-package.nix
 
-({ callSpectrumPackage, src, stdenvNoCC, jekyll, drawio-headless }:
+({ callSpectrumPackage, src, lib, stdenvNoCC, jekyll, drawio-headless }:
 
 stdenvNoCC.mkDerivation {
   name = "spectrum-docs";
 
-  inherit src;
+  src = lib.fileset.toSource {
+    root = ../.;
+    fileset = src;
+  };
   sourceRoot = "source/Documentation";
 
   buildPhase = ''
diff --git a/host/initramfs/default.nix b/host/initramfs/default.nix
index 871a1de..f290595 100644
--- a/host/initramfs/default.nix
+++ b/host/initramfs/default.nix
@@ -78,7 +78,10 @@ in
 stdenvNoCC.mkDerivation {
   name = "initramfs";
 
-  inherit src;
+  src = lib.fileset.toSource {
+    root = ../..;
+    fileset = src;
+  };
   sourceRoot = "source/host/initramfs";
 
   MICROCODE = microcode;
diff --git a/host/rootfs/default.nix b/host/rootfs/default.nix
index 3176259..5bd2488 100644
--- a/host/rootfs/default.nix
+++ b/host/rootfs/default.nix
@@ -108,7 +108,10 @@ in
 stdenvNoCC.mkDerivation {
   name = "spectrum-rootfs";
 
-  inherit src;
+  src = lib.fileset.toSource {
+    root = ../..;
+    fileset = src;
+  };
   sourceRoot = "source/host/rootfs";
 
   nativeBuildInputs = [ erofs-utils lseek s6-rc ];
diff --git a/host/start-vm/default.nix b/host/start-vm/default.nix
index b776806..bd399b1 100644
--- a/host/start-vm/default.nix
+++ b/host/start-vm/default.nix
@@ -2,12 +2,15 @@
 # SPDX-FileCopyrightText: 2022-2023 Alyssa Ross <hi@alyssa.is>
 
 import ../../lib/call-package.nix (
-{ src, stdenv, meson, ninja, rustc, clippy }:
+{ src, lib, stdenv, meson, ninja, rustc, clippy }:
 
 stdenv.mkDerivation (finalAttrs: {
   name = "start-vm";
 
-  inherit src;
+  src = lib.fileset.toSource {
+    root = ../..;
+    fileset = src;
+  };
   sourceRoot = "source/host/start-vm";
 
   nativeBuildInputs = [ meson ninja rustc ];
diff --git a/img/app/default.nix b/img/app/default.nix
index fa282ab..57dcddb 100644
--- a/img/app/default.nix
+++ b/img/app/default.nix
@@ -78,7 +78,10 @@ in
 stdenvNoCC.mkDerivation {
   name = "spectrum-appvm";
 
-  inherit src;
+  src = lib.fileset.toSource {
+    root = ../..;
+    fileset = src;
+  };
   sourceRoot = "source/img/app";
 
   nativeBuildInputs = [ erofs-utils jq lseek s6-rc util-linux ];
diff --git a/pkgs/default.nix b/pkgs/default.nix
index 13ac843..1c9da7f 100644
--- a/pkgs/default.nix
+++ b/pkgs/default.nix
@@ -7,8 +7,7 @@ let
   config = import ../lib/config.nix args;
   pkgs = import ./overlaid.nix ({ elaboratedConfig = config; } // args);
 
-  inherit (pkgs.lib)
-    cleanSource cleanSourceWith hasSuffix makeScope optionalAttrs;
+  inherit (pkgs.lib) cleanSource fileset makeScope optionalAttrs;
 
   scope = self: let pkgs = self.callPackage ({ pkgs }: pkgs) {}; in {
     inherit config;
@@ -26,15 +25,20 @@ let
 
     pkgsStatic = makeScope pkgs.pkgsStatic.newScope scope;
 
-    src = cleanSourceWith {
-      filter = path: type:
-        path != toString ../Documentation/_site &&
-        path != toString ../Documentation/.jekyll-cache &&
-        path != toString ../Documentation/diagrams/stack.svg &&
-        (type == "regular" -> !hasSuffix ".nix" path) &&
-        (type == "directory" -> builtins.baseNameOf path != "build");
-      src = cleanSource ../.;
-    };
+    src = fileset.difference
+      (fileset.intersection
+        (fileset.fileFilter ({ hasExt, ... }: !hasExt "nix") ../.)
+        (fileset.fromSource (cleanSource ../.)))
+      (fileset.unions (map fileset.maybeMissing [
+        ../Documentation/.jekyll-cache
+        ../Documentation/_site
+        ../Documentation/diagrams/stack.svg
+        ../host/initramfs/build
+        ../host/rootfs/build
+        ../img/app/build
+        ../release/live/build
+        ../vm/sys/net/build
+      ]));
   };
 in
 
diff --git a/release/checks/doc-anchors.nix b/release/checks/doc-anchors.nix
index f2e603e..afbd262 100644
--- a/release/checks/doc-anchors.nix
+++ b/release/checks/doc-anchors.nix
@@ -1,10 +1,15 @@
 # SPDX-License-Identifier: MIT
 # SPDX-FileCopyrightText: 2023 Alyssa Ross <hi@alyssa.is>
 
-import ../../lib/call-package.nix ({ src, runCommand }:
+import ../../lib/call-package.nix ({ src, lib, runCommand }:
 
-runCommand "spectrum-doc-anchors" {} ''
-  ! grep --color=always -r xref:http ${src}
+runCommand "spectrum-doc-anchors" {
+  src = lib.fileset.toSource {
+    root = ../..;
+    fileset = src;
+  };
+} ''
+  ! grep --color=always -r xref:http $src
   touch $out
 ''
 ) (_: {})
diff --git a/release/checks/reuse.nix b/release/checks/reuse.nix
index 17bd40f..2675ad2 100644
--- a/release/checks/reuse.nix
+++ b/release/checks/reuse.nix
@@ -1,10 +1,13 @@
 # SPDX-License-Identifier: MIT
 # SPDX-FileCopyrightText: 2023 Alyssa Ross <hi@alyssa.is>
 
-import ../../lib/call-package.nix ({ src, runCommand, reuse }:
+import ../../lib/call-package.nix ({ src, lib, runCommand, reuse }:
 
 runCommand "spectrum-reuse" {
-  inherit src;
+  src = lib.fileset.toSource {
+    root = ../..;
+    fileset = src;
+  };
   nativeBuildInputs = [ reuse ];
 } ''
   reuse --root $src lint
diff --git a/release/checks/rustfmt.nix b/release/checks/rustfmt.nix
index a0de350..b674bce 100644
--- a/release/checks/rustfmt.nix
+++ b/release/checks/rustfmt.nix
@@ -1,10 +1,13 @@
 # SPDX-License-Identifier: MIT
 # SPDX-FileCopyrightText: 2022 Unikie
 
-import ../../lib/call-package.nix ({ src, runCommand, rustfmt }:
+import ../../lib/call-package.nix ({ src, lib, runCommand, rustfmt }:
 
 runCommand "spectrum-rustfmt" {
-  inherit src;
+  src = lib.fileset.toSource {
+    root = ../..;
+    fileset = src;
+  };
   nativeBuildInputs = [ rustfmt ];
 } ''
   shopt -s globstar
diff --git a/release/checks/shellcheck.nix b/release/checks/shellcheck.nix
index 0a29f81..fa2fb72 100644
--- a/release/checks/shellcheck.nix
+++ b/release/checks/shellcheck.nix
@@ -1,10 +1,13 @@
 # SPDX-License-Identifier: MIT
 # SPDX-FileCopyrightText: 2022 Unikie
 
-import ../../lib/call-package.nix ({ src, runCommand, shellcheck }:
+import ../../lib/call-package.nix ({ src, lib, runCommand, shellcheck }:
 
 runCommand "spectrum-shellcheck" {
-  inherit src;
+  src = lib.fileset.toSource {
+    root = ../..;
+    fileset = src;
+  };
   nativeBuildInputs = [ shellcheck ];
 } ''
   shopt -s globstar
diff --git a/release/checks/wayland/surface-notify/default.nix b/release/checks/wayland/surface-notify/default.nix
index 819aee6..f70fd5c 100644
--- a/release/checks/wayland/surface-notify/default.nix
+++ b/release/checks/wayland/surface-notify/default.nix
@@ -9,7 +9,10 @@ import ../../../../lib/call-package.nix (
 stdenv.mkDerivation {
   name = "surface-notify";
 
-  inherit src;
+  src = lib.fileset.toSource {
+    root = ../../../..;
+    fileset = src;
+  };
   sourceRoot = "source/release/checks/wayland/surface-notify";
 
   nativeBuildInputs = [ meson ninja pkg-config ];
diff --git a/release/live/default.nix b/release/live/default.nix
index 8668272..ef311b0 100644
--- a/release/live/default.nix
+++ b/release/live/default.nix
@@ -21,7 +21,10 @@ in
 stdenvNoCC.mkDerivation {
   name = "spectrum-live.img";
 
-  inherit src;
+  src = lib.fileset.toSource {
+    root = ../..;
+    fileset = src;
+  };
   sourceRoot = "source/release/live";
 
   nativeBuildInputs = [ cryptsetup dosfstools jq lseek mtools util-linux ];
diff --git a/tools/lseek/default.nix b/tools/lseek/default.nix
index 97a5aa6..04b2cef 100644
--- a/tools/lseek/default.nix
+++ b/tools/lseek/default.nix
@@ -7,7 +7,10 @@ pkgsStatic.callPackage ({ lib, stdenv, clang-tools }:
 stdenv.mkDerivation (finalAttrs: {
   name = "lseek";
 
-  inherit src;
+  src = lib.fileset.toSource {
+    root = ../..;
+    fileset = src;
+  };
   sourceRoot = "source/tools/lseek";
 
   makeFlags = [ "prefix=$(out)" ];
diff --git a/vm/sys/net/default.nix b/vm/sys/net/default.nix
index 6a746a2..0e57cd8 100644
--- a/vm/sys/net/default.nix
+++ b/vm/sys/net/default.nix
@@ -86,7 +86,10 @@ in
 stdenvNoCC.mkDerivation {
   name = "spectrum-netvm";
 
-  inherit src;
+  src = lib.fileset.toSource {
+    root = ../../..;
+    fileset = src;
+  };
   sourceRoot = "source/vm/sys/net";
 
   nativeBuildInputs = [ erofs-utils jq lseek s6-rc util-linux ];