Files
clan-core/pkgs/clan-cli/clan_lib/templates/filesystem.py
2025-07-12 15:08:40 +02:00

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