2024-05-28 19:43:04 +03:00
|
|
|
#!/usr/bin/env bash
|
|
|
|
|
2022-07-13 21:36:11 +03:00
|
|
|
source ./common.sh
|
|
|
|
|
|
|
|
requireGit
|
|
|
|
|
|
|
|
templatesDir=$TEST_ROOT/templates
|
|
|
|
flakeDir=$TEST_ROOT/flake
|
|
|
|
nixpkgsDir=$TEST_ROOT/nixpkgs
|
|
|
|
|
2024-06-13 00:47:54 +03:00
|
|
|
nix registry add --registry "$registry" templates "git+file://$templatesDir"
|
|
|
|
nix registry add --registry "$registry" nixpkgs "git+file://$nixpkgsDir"
|
2022-07-13 21:36:11 +03:00
|
|
|
|
2024-06-04 23:33:23 +03:00
|
|
|
createGitRepo "$nixpkgsDir"
|
|
|
|
createSimpleGitFlake "$nixpkgsDir"
|
2022-07-13 21:36:11 +03:00
|
|
|
|
|
|
|
# Test 'nix flake init'.
|
2024-06-04 23:33:23 +03:00
|
|
|
createGitRepo "$templatesDir"
|
2022-07-13 21:36:11 +03:00
|
|
|
|
2024-06-04 23:33:23 +03:00
|
|
|
cat > "$templatesDir"/flake.nix <<EOF
|
2022-07-13 21:36:11 +03:00
|
|
|
{
|
|
|
|
description = "Some templates";
|
|
|
|
|
|
|
|
outputs = { self }: {
|
|
|
|
templates = rec {
|
|
|
|
trivial = {
|
|
|
|
path = ./trivial;
|
|
|
|
description = "A trivial flake";
|
|
|
|
welcomeText = ''
|
|
|
|
Welcome to my trivial flake
|
|
|
|
'';
|
|
|
|
};
|
|
|
|
default = trivial;
|
|
|
|
};
|
|
|
|
};
|
|
|
|
}
|
|
|
|
EOF
|
|
|
|
|
2024-06-04 23:33:23 +03:00
|
|
|
mkdir "$templatesDir/trivial"
|
2022-07-13 21:36:11 +03:00
|
|
|
|
2024-06-04 23:33:23 +03:00
|
|
|
cat > "$templatesDir"/trivial/flake.nix <<EOF
|
2022-07-13 21:36:11 +03:00
|
|
|
{
|
|
|
|
description = "A flake for building Hello World";
|
|
|
|
|
|
|
|
outputs = { self, nixpkgs }: {
|
2023-01-30 12:21:52 +02:00
|
|
|
packages.$system = rec {
|
|
|
|
hello = nixpkgs.legacyPackages.$system.hello;
|
2022-07-13 21:36:11 +03:00
|
|
|
default = hello;
|
|
|
|
};
|
|
|
|
};
|
|
|
|
}
|
|
|
|
EOF
|
2024-06-04 23:33:23 +03:00
|
|
|
echo a > "$templatesDir/trivial/a"
|
|
|
|
echo b > "$templatesDir/trivial/b"
|
2022-07-13 21:36:11 +03:00
|
|
|
|
2024-06-04 23:33:23 +03:00
|
|
|
git -C "$templatesDir" add flake.nix trivial/
|
|
|
|
git -C "$templatesDir" commit -m 'Initial'
|
2022-07-13 21:36:11 +03:00
|
|
|
|
|
|
|
nix flake check templates
|
|
|
|
nix flake show templates
|
|
|
|
nix flake show templates --json | jq
|
|
|
|
|
2024-06-04 23:33:23 +03:00
|
|
|
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'
|
2022-07-13 21:36:11 +03:00
|
|
|
|
|
|
|
# Test 'nix flake init' with benign conflicts
|
|
|
|
createGitRepo "$flakeDir"
|
2024-06-04 23:33:23 +03:00
|
|
|
echo a > "$flakeDir/a"
|
|
|
|
(cd "$flakeDir" && nix flake init) # check idempotence
|
2022-07-13 21:36:11 +03:00
|
|
|
|
|
|
|
# Test 'nix flake init' with conflicts
|
|
|
|
createGitRepo "$flakeDir"
|
2024-06-04 23:33:23 +03:00
|
|
|
echo b > "$flakeDir/a"
|
|
|
|
pushd "$flakeDir"
|
2022-07-13 21:36:11 +03:00
|
|
|
(! nix flake init) |& grep "refusing to overwrite existing file '$flakeDir/a'"
|
|
|
|
popd
|
2024-06-04 23:33:23 +03:00
|
|
|
git -C "$flakeDir" commit -a -m 'Changed'
|
2022-07-13 21:36:11 +03:00
|
|
|
|
|
|
|
# Test 'nix flake new'.
|
2024-06-04 23:33:23 +03:00
|
|
|
rm -rf "$flakeDir"
|
|
|
|
nix flake new -t templates#trivial "$flakeDir"
|
|
|
|
nix flake new -t templates#trivial "$flakeDir" # check idempotence
|
|
|
|
nix flake check "$flakeDir"
|