40 lines
847 B
Python
40 lines
847 B
Python
from pathlib import Path
|
|
|
|
from clan_lib.flake import Flake
|
|
from clan_lib.nix import (
|
|
nix_command,
|
|
run,
|
|
)
|
|
|
|
|
|
def realize_nix_path(clan_dir: Flake, nix_path: str) -> None:
|
|
"""
|
|
Downloads / realizes a nix path into the nix store
|
|
"""
|
|
|
|
if Path(nix_path).exists():
|
|
return
|
|
|
|
cmd = [
|
|
"flake",
|
|
"prefetch",
|
|
"--inputs-from",
|
|
clan_dir.identifier,
|
|
"--option",
|
|
"flake-registry",
|
|
"",
|
|
nix_path,
|
|
]
|
|
|
|
run(nix_command(cmd))
|
|
|
|
|
|
def copy_from_nixstore(src: Path, dest: Path) -> None:
|
|
"""
|
|
Copy a directory from the nix store to a destination path.
|
|
Uses `cp -r` to recursively copy the directory.
|
|
Ensures the destination directory is writable by the user.
|
|
"""
|
|
run(["cp", "-r", str(src), str(dest)])
|
|
run(["chmod", "-R", "u+w", str(dest)])
|