From 3abc719c76f681def9beb9d211f0ce3b64a907c5 Mon Sep 17 00:00:00 2001 From: Wroclaw Date: Sun, 4 May 2025 16:19:06 +0200 Subject: [PATCH] default: use `fetchGit` when in git repository --- default.nix | 30 ++++++++++++++++++------------ outputs.nix | 4 +++- 2 files changed, 21 insertions(+), 13 deletions(-) diff --git a/default.nix b/default.nix index d6c5e01..4fad081 100644 --- a/default.nix +++ b/default.nix @@ -13,19 +13,25 @@ let storePathLength = builtins.stringLength (builtins.toString builtins.storeDir); evaluatingInStore = (builtins.substring 0 storePathLength currentFilePath) == builtins.storeDir; - selfInStore = builtins.path { - path = ./.; - name = "source"; - filter = path: type: - let - selfPath = builtins.dirOf currentFilePath; - gitIgnoreFilters = lib.parseGitignore selfPath path; - result = type != "unknown" - && type != "symlink" - && builtins.baseNameOf path != ".git" - && lib.runGitignoreFilter gitIgnoreFilters path type; - in result; + gitlessSelfInStore = { + outPath = builtins.path { + path = ./.; + name = "source"; + filter = path: type: + let + selfPath = builtins.dirOf currentFilePath; + gitIgnoreFilters = lib.parseGitignore selfPath path; + result = type != "unknown" + && type != "symlink" + && builtins.baseNameOf path != ".git" + && lib.runGitignoreFilter gitIgnoreFilters path type; + in result; + }; }; + gitfullSelfInStore = builtins.fetchGit "file://${builtins.toString ./.}"; + + selfInStore' = builtins.tryEval gitfullSelfInStore; + selfInStore = if selfInStore'.success then selfInStore'.value else gitlessSelfInStore; in if !(evaluatingInStore) then { ... }@args: import selfInStore ({ selfPath = selfInStore; } // args ) else { ... }@args: import ./outputs.nix ({ selfPath = selfInStore; } // args) diff --git a/outputs.nix b/outputs.nix index 4146c0f..8cc85cc 100644 --- a/outputs.nix +++ b/outputs.nix @@ -1,7 +1,9 @@ { inputsPath ? ./inputs.nix, inputs ? import inputsPath {}, - selfPath ? builtins.toString ./., + selfPath ? { + outPath = builtins.toString ./.; + }, }: let