forked from lix-project/lix
74210c12fe
Enables shebang usage of nix shell. All arguments with `#! nix` get added to the nix invocation. This implementation does NOT set any additional arguments other than placing the script path itself as the first argument such that the interpreter can utilize it. Example below: ``` #!/usr/bin/env nix #! nix shell --quiet #! nix nixpkgs#bash #! nix nixpkgs#shellcheck #! nix nixpkgs#hello #! nix --ignore-environment --command bash # shellcheck shell=bash set -eu shellcheck "$0" || exit 1 function main { hello echo 0:"$0" 1:"$1" 2:"$2" } "$@" ``` fix: include programName usage EDIT: For posterity I've changed shellwords to shellwords2 in order not to interfere with other changes during a rebase. shellwords2 is removed in a later commit. -- roberth
72 lines
1.4 KiB
Bash
72 lines
1.4 KiB
Bash
source ../common.sh
|
|
|
|
registry=$TEST_ROOT/registry.json
|
|
|
|
writeSimpleFlake() {
|
|
local flakeDir="$1"
|
|
cat > $flakeDir/flake.nix <<EOF
|
|
{
|
|
description = "Bla bla";
|
|
|
|
outputs = inputs: rec {
|
|
packages.$system = rec {
|
|
foo = import ./simple.nix;
|
|
fooScript = (import ./shell.nix {}).foo;
|
|
default = foo;
|
|
};
|
|
packages.someOtherSystem = rec {
|
|
foo = import ./simple.nix;
|
|
default = foo;
|
|
};
|
|
|
|
# To test "nix flake init".
|
|
legacyPackages.$system.hello = import ./simple.nix;
|
|
};
|
|
}
|
|
EOF
|
|
|
|
cp ../simple.nix ../shell.nix ../simple.builder.sh ../config.nix $flakeDir/
|
|
}
|
|
|
|
createSimpleGitFlake() {
|
|
local flakeDir="$1"
|
|
writeSimpleFlake $flakeDir
|
|
git -C $flakeDir add flake.nix simple.nix shell.nix simple.builder.sh config.nix
|
|
git -C $flakeDir commit -m 'Initial'
|
|
}
|
|
|
|
writeDependentFlake() {
|
|
local flakeDir="$1"
|
|
cat > $flakeDir/flake.nix <<EOF
|
|
{
|
|
outputs = { self, flake1 }: {
|
|
packages.$system.default = flake1.packages.$system.default;
|
|
expr = assert builtins.pathExists ./flake.lock; 123;
|
|
};
|
|
}
|
|
EOF
|
|
}
|
|
|
|
writeTrivialFlake() {
|
|
local flakeDir="$1"
|
|
cat > $flakeDir/flake.nix <<EOF
|
|
{
|
|
outputs = { self }: {
|
|
expr = 123;
|
|
};
|
|
}
|
|
EOF
|
|
}
|
|
|
|
createGitRepo() {
|
|
local repo="$1"
|
|
local extraArgs="${2-}"
|
|
|
|
rm -rf "$repo" "$repo".tmp
|
|
mkdir -p "$repo"
|
|
|
|
git -C "$repo" init $extraArgs
|
|
git -C "$repo" config user.email "foobar@example.com"
|
|
git -C "$repo" config user.name "Foobar"
|
|
}
|