Files
clan-core/pkgs/clan-cli/clan_lib/templates/filesystem.py
2025-08-25 11:34:41 +02:00

39 lines
933 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