Fish: Difference between revisions
imported>Mic92 No edit summary |
imported>HLandau No edit summary |
||
Line 1: | Line 1: | ||
{{DISPLAYTITLE:fish}} | |||
fish is the [http://fishshell.com/ Friendly Interactive SHell]. | |||
== | ==Setting fish as the login shell== | ||
The following <tt>/etc/nixos/configuration.nix</tt> fragment demonstrates how to enable fish and set it as the default shell for user <tt>foo</tt>. | |||
<syntaxhighlight lang="nix"> | |||
{ | |||
... | |||
programs.fish.enable = true; | |||
users.extraUsers.foo = { | |||
shell = "/run/current-system/sw/bin/fish"; | |||
users.extraUsers. | }; | ||
... | |||
}; | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Revision as of 20:52, 24 October 2017
fish is the Friendly Interactive SHell.
Setting fish as the login shell
The following /etc/nixos/configuration.nix fragment demonstrates how to enable fish and set it as the default shell for user foo.
{
...
programs.fish.enable = true;
users.extraUsers.foo = {
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 ..