diff --git a/default.nix b/default.nix index d6c5e01..9cd1637 100644 --- a/default.nix +++ b/default.nix @@ -13,19 +13,33 @@ 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; + }; + selfMode = "path"; }; + gitfullSelfInStore = builtins.fetchGit "file://${builtins.toString ./.}" // { + selfMode = "git"; + }; + + selfInStore' = builtins.tryEval gitfullSelfInStore; + selfInStore = if selfInStore'.success then selfInStore'.value else gitlessSelfInStore; in -if !(evaluatingInStore) then { ... }@args: import selfInStore ({ selfPath = selfInStore; } // args ) +if !(evaluatingInStore) then { ... }@args: import selfInStore ({ + selfPath = { + outPath = builtins.toString ./.; + selfMode = "store"; + }; +} // args ) else { ... }@args: import ./outputs.nix ({ selfPath = selfInStore; } // args) diff --git a/nix-os/nix.nix b/nix-os/nix.nix index 8d4c425..bce75a5 100644 --- a/nix-os/nix.nix +++ b/nix-os/nix.nix @@ -54,6 +54,7 @@ in { nix.package = wrappedNixExecutables false; environment.systemPackages = [ pkgs.nix-output-monitor + pkgs.nix-diff ] ++ lib.map (lib.hiPrio) [ (wrappedNixExecutables true) wrappedNixosExecutables diff --git a/outputs.nix b/outputs.nix index 4146c0f..b95e04b 100644 --- a/outputs.nix +++ b/outputs.nix @@ -1,7 +1,10 @@ { inputsPath ? ./inputs.nix, inputs ? import inputsPath {}, - selfPath ? builtins.toString ./., + selfPath ? { + outPath = builtins.toString ./.; + selfMode = "impure"; + }, }: let