43 lines
948 B
Python
43 lines
948 B
Python
import shutil
|
|
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.
|
|
"""
|
|
shutil.copytree(src, dest, dirs_exist_ok=True, symlinks=True)
|
|
run(
|
|
["chmod", "-R", "u+w", str(dest)]
|
|
) # Ensure the destination is writable by the user
|