Fish
Fish is the Friendly Interactive SHell.
Fish as login shell
The following set up fish as a login shell for the user myuser
programs.fish.enable = true;
users.extraUsers.myuser = {
shell = "/run/current-system/sw/bin/fish";
};
Useful scripts
Show that you are in a nix-shell
Add this to fish/fish_prompt.fish
:
set -l nix_shell_info ( if test "$IN_NIX_SHELL" = "1" echo -n "<nix-shell> " end )
and $nix_shell_info
to the echo in that function, e.g.:
echo -n -s "$nix_shell_info ~>"
Now your prompt looks like this
- outside:
~>
- inside:
<nix-shell> ~>
btw. you can directly start nix-shell in fish with nix-shell --run fish
, but (FIXME) the normal build functions are not available there.
Environments
Helper functions that put you in a nix-shell with the given packages installed.
haskellEnv
function haskellEnv nix-shell -p "haskellPackages.ghcWithPackages (pkgs: with pkgs; [ $argv ])" end # Invocation: haskellEnv package1 packages2 .. packageN
pythonEnv
function pythonEnv --description 'start a nix-shell with the given python packages' --argument pythonVersion if set -q argv[2] set argv $argv[2..-1] end for el in $argv set ppkgs $ppkgs "python"$pythonVersion"Packages.$el" end nix-shell -p $ppkgs end # Invocation: pythonEnv 3 package1 package2 .. packageN # or: pythonEnv 2 ..