Home

Awesome

any-nix-shell

fish, xonsh, and zsh support for the nix run and nix-shell environments of the Nix package manager.

Features:

Installation

any-nix-shell can be installed from stable nixpkgs. For instance,

$ nix-env -i any-nix-shell

installs any-nix-shell into your user environment.

Enabling

In the following we describe how to enable the any-nix-shell plugin for your user. This differs slightly among fish, xonsh, and zsh.

fish

Add the following to your ~/.config/fish/config.fish. Create it if it doesn't exist.

any-nix-shell fish --info-right | source

xonsh

Add the following to your xonsh configuration file. (Create it if it doesn't exist.)

execx($(any-nix-shell xonsh --info-right))

zsh

Add the following to your ~/.zshrc. Create it if it doesn't exist.

any-nix-shell zsh --info-right | source /dev/stdin

System-wide enabling on NixOS

Alternatively the any-nix-shell plugin can be enabled system-wide. This enables it for every user. To do so, add the following to your configuration (/etc/nixos/configuration.nix).

fish

{
  programs.fish.enable = true;
  programs.fish.interactiveShellInit = ''
    ${pkgs.any-nix-shell}/bin/any-nix-shell fish --info-right | source
  '';
}

xonsh

{
  programs.xonsh.enable = true;
  programs.xonsh.config = ''
    execx($(${pkgs.any-nix-shell}/bin/any-nix-shell xonsh --info-right))
  '';
}

zsh

{
  programs.zsh.enable = true;
  programs.zsh.promptInit = ''
    ${pkgs.any-nix-shell}/bin/any-nix-shell zsh --info-right | source /dev/stdin
  '';
}

zsh with home-manager

{
  programs.zsh.enable = true;
  programs.zsh.initExtra = ''
    any-nix-shell zsh --info-right | source /dev/stdin
  '';
}

Customization

The any-nix-shell command (which is used for enabling the plugin in a specific shell) optionally takes any of the following flags:

FlagDescription
--info-rightWhile in a nix shell or nix-shell environment, display information about the loaded packages at the right.