feat: impure symlink

This commit is contained in:
2025-12-28 10:47:21 +08:00
parent f9308dda9e
commit 7eb32cfabc
6 changed files with 41 additions and 16 deletions

26
modules/impure.nix Normal file
View File

@@ -0,0 +1,26 @@
{
lib,
pkgs,
self,
...
}:
let
relativePath =
path:
assert lib.types.path.check path;
lib.strings.removePrefix (toString self) (toString path);
mkImpureLink =
path:
let
relative = relativePath path;
in
pkgs.runCommandLocal relative { } "ln -s ${lib.escapeShellArg (impureRoot + relative)} $out";
impureRoot =
let
impureRoot = builtins.getEnv "IMPURE_ROOT";
in
if impureRoot == "" then throw "IMPURE_ROOT is not set" else impureRoot;
in
{
_module.args.impure = { inherit mkImpureLink; };
}