1
0
Files
dotfiles/pkgs/fish/functions/nix-shell.fish
2025-11-21 17:11:38 +01:00

46 lines
994 B
Fish

function nix-shell
set -l _argv (string split ' ' -- $argv);
if contains -- '-q' $_argv; or contains -- '--query' $_argv
for pkg in (string split ' ' -- $FISH_NIX_PACKAGES)
echo $pkg
end
return 0;
end
function package_flag -a arg
contains -- '-p' $arg
or contains -- '--packages' $arg
end
if not command -q nix-shell; or not package_flag $argv
command nix-shell --run fish $argv;
return $status;
end
set -l packages
set -l reading_packages 0
for arg in $_argv
if [ $reading_packages -ne 0 ]
if string match -r '^-'
set reading_packages 0
else
not contains -- $arg (string split ' ' -- $FISH_NIX_PACKAGES);
and set packages $packages $arg
end
else
package_flag $arg; and set reading_packages 1
end
end
set -l prev_packages $FISH_NIX_PACKAGES;
set -x FISH_NIX_PACKAGES $prev_packages $packages;
command nix-shell --run fish $argv;
set -l nix_status $status;
set -x FISH_NIX_PACKAGES $prev_packages;
return $nix_status
end