This takes the `std::filesystem::path` migration from the CLI layer into the core libraries (libutil, libstore, libexpr, libfetchers, libflake), converting function signatures, settings fields, and locals throughout `file-system.hh`, `archive.hh`, `configuration.hh`, and their implementations. `PathSetting` becomes `Setting<std::filesystem::path>` in `local-overlay-store.hh` and `local-store.hh` with `.get()` calls at use sites, and several `writeFile` overloads collapse now that the `Path`-based wrappers in `file-system.hh` are gone. Co-authored-by: Amaan Qureshi <git@amaanq.com>
90 lines
2.1 KiB
Bash
Executable File
90 lines
2.1 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
source ./common.sh
|
|
|
|
requireGit
|
|
|
|
templatesDir=$TEST_ROOT/templates
|
|
flakeDir=$TEST_ROOT/flake
|
|
nixpkgsDir=$TEST_ROOT/nixpkgs
|
|
|
|
nix registry add --registry "$registry" templates "git+file://$templatesDir"
|
|
nix registry add --registry "$registry" nixpkgs "git+file://$nixpkgsDir"
|
|
|
|
createGitRepo "$nixpkgsDir"
|
|
createSimpleGitFlake "$nixpkgsDir"
|
|
|
|
# Test 'nix flake init'.
|
|
createGitRepo "$templatesDir"
|
|
|
|
cat > "$templatesDir"/flake.nix <<EOF
|
|
{
|
|
description = "Some templates";
|
|
|
|
outputs = { self }: {
|
|
templates = rec {
|
|
trivial = {
|
|
path = ./trivial;
|
|
description = "A trivial flake";
|
|
welcomeText = ''
|
|
Welcome to my trivial flake
|
|
'';
|
|
};
|
|
default = trivial;
|
|
};
|
|
};
|
|
}
|
|
EOF
|
|
|
|
mkdir "$templatesDir/trivial"
|
|
|
|
cat > "$templatesDir"/trivial/flake.nix <<EOF
|
|
{
|
|
description = "A flake for building Hello World";
|
|
|
|
outputs = { self, nixpkgs }: {
|
|
packages.$system = rec {
|
|
hello = nixpkgs.legacyPackages.$system.hello;
|
|
default = hello;
|
|
};
|
|
};
|
|
}
|
|
EOF
|
|
echo a > "$templatesDir/trivial/a"
|
|
echo b > "$templatesDir/trivial/b"
|
|
|
|
git -C "$templatesDir" add flake.nix trivial/
|
|
git -C "$templatesDir" commit -m 'Initial'
|
|
|
|
nix flake check templates
|
|
nix flake show templates
|
|
nix flake show templates --json | jq
|
|
|
|
createGitRepo "$flakeDir"
|
|
(cd "$flakeDir" && nix flake init)
|
|
(cd "$flakeDir" && nix flake init) # check idempotence
|
|
git -C "$flakeDir" add flake.nix
|
|
nix flake check "$flakeDir"
|
|
nix flake show "$flakeDir"
|
|
nix flake show "$flakeDir" --json | jq
|
|
git -C "$flakeDir" commit -a -m 'Initial'
|
|
|
|
# Test 'nix flake init' with benign conflicts
|
|
createGitRepo "$flakeDir"
|
|
echo a > "$flakeDir/a"
|
|
(cd "$flakeDir" && nix flake init) # check idempotence
|
|
|
|
# Test 'nix flake init' with conflicts
|
|
createGitRepo "$flakeDir"
|
|
echo b > "$flakeDir/a"
|
|
pushd "$flakeDir"
|
|
(! nix flake init) |& grep "refusing to overwrite existing file \"$flakeDir/a\""
|
|
popd
|
|
git -C "$flakeDir" commit -a -m 'Changed'
|
|
|
|
# Test 'nix flake new'.
|
|
rm -rf "$flakeDir"
|
|
nix flake new -t templates#trivial "$flakeDir"
|
|
nix flake new -t templates#trivial "$flakeDir" # check idempotence
|
|
nix flake check "$flakeDir"
|