From cb0545832e3925b3518a1e3a2d83c43b69bd2eff Mon Sep 17 00:00:00 2001 From: xenia Date: Tue, 14 May 2024 16:04:14 -0700 Subject: [PATCH] lib: add gitSource helper --- README.md | 13 +++++++++++++ default.nix | 2 ++ lib/git-source/default.nix | 8 ++++++++ 3 files changed, 23 insertions(+) create mode 100644 lib/git-source/default.nix diff --git a/README.md b/README.md index 765d8ae..4f497ce 100644 --- a/README.md +++ b/README.md @@ -181,6 +181,19 @@ pkgs.mkNginxServer { } ``` +### [`gitSource`](./lib/git-source) + +for development package nix files, computes the source set of files tracked by git at the given root +path + +example: +```nix +stdenv.mkDerivation { + # ... + src = gitSource { root = ./.; }; +} +``` + ## development structure of this repo diff --git a/default.nix b/default.nix index dbb718a..8a63b62 100644 --- a/default.nix +++ b/default.nix @@ -9,6 +9,8 @@ (final: prev: { fetchFromSteam = prev.callPackage ./lib/fetchsteam {}; + gitSource = prev.callPackage ./lib/git-source {}; + ghidra_headless = prev.ghidra.override { openjdk17 = prev.openjdk17_headless; }; diff --git a/lib/git-source/default.nix b/lib/git-source/default.nix new file mode 100644 index 0000000..9ed4f6f --- /dev/null +++ b/lib/git-source/default.nix @@ -0,0 +1,8 @@ +{ lib }: { root }: +let + fs = lib.fileset; + sourceFiles = fs.difference + (fs.gitTracked root) + (fs.fileFilter (file: file.hasExt "nix") root); +in + fs.toSource { inherit root; fileset = sourceFiles; }