Bruno BELANYI
46df8b5b5b
All checks were successful
ci/woodpecker/push/check Pipeline was successful
I like it better with a space in it.
70 lines
1.8 KiB
Bash
70 lines
1.8 KiB
Bash
# shellcheck shell=bash
|
|
|
|
use_pkgs() {
|
|
if ! has nix; then
|
|
# shellcheck disable=2016
|
|
log_error 'use_pkgs: `nix` is not in PATH'
|
|
return 1
|
|
fi
|
|
|
|
# Use user-provided default value, or fallback to nixpkgs
|
|
local DEFAULT_FLAKE="${DIRENV_DEFAULT_FLAKE:-nixpkgs}"
|
|
# Additional args that should be forwarded to `nix`
|
|
local args=()
|
|
|
|
# Allow changing the default flake through a command line switch
|
|
while true; do
|
|
case "$1" in
|
|
-b|--broken)
|
|
args+=(--impure)
|
|
export NIXPKGS_ALLOW_BROKEN=1
|
|
shift
|
|
;;
|
|
-f|--flake)
|
|
DEFAULT_FLAKE="$2"
|
|
shift 2
|
|
;;
|
|
-i|--impure)
|
|
args+=(--impure)
|
|
shift
|
|
;;
|
|
-s|--insecure)
|
|
args+=(--impure)
|
|
export NIXPKGS_ALLOW_INSECURE=1
|
|
shift
|
|
;;
|
|
-u|--unfree)
|
|
args+=(--impure)
|
|
export NIXPKGS_ALLOW_UNFREE=1
|
|
shift
|
|
;;
|
|
--)
|
|
shift
|
|
break
|
|
;;
|
|
*)
|
|
break
|
|
;;
|
|
esac
|
|
done
|
|
|
|
|
|
# Allow specifying a full installable, or just a package name and use the default flake
|
|
local packages=()
|
|
for pkg; do
|
|
if [[ $pkg =~ .*#.* ]]; then
|
|
packages+=("$pkg")
|
|
else
|
|
packages+=("$DEFAULT_FLAKE#$pkg")
|
|
fi
|
|
done
|
|
|
|
# shellcheck disable=2154
|
|
direnv_load nix shell "${args[@]}" "${packages[@]}" --command "$direnv" dump
|
|
|
|
# Clean-up after ourselves (assumes the user does not set them before us)
|
|
unset NIXPKGS_ALLOW_BROKEN
|
|
unset NIXPKGS_ALLOW_INSECURE
|
|
unset NIXPKGS_ALLOW_UNFREE
|
|
}
|