#!/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 < "$templatesDir"/trivial/flake.nix < "$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"