How to find the name of a Nix package to install it in configuration.nix?

NixOS community has three manuals, always consult them first, if you're stuck:

  • Nix manual, for the package manager
  • NixOS manual, for the operating system
  • Nixpkgs manual, for Nix package infrastructure

Every package on Nix is specified by a Nix expression. A Nix expression is some text, written in Nix language, typically residing in a file with extension .nix.

Every expression has the so-called “symbolic name”, a human-readable name that is printed, when you use nix-env. See sample Nix expression. Nix itself doesn't use this symbolic name anywhere internally, so it doesn't matter if your package is named aspell-dict-en, it's just for your, human's, convenience.

What actually matters is the so-called “attribute path”. So your confusion is between symbolic name and attribute path. Every package has an attribute path, which you can use in environment.systemPackages configuration option to install system-wide using declarative package management.

To find out your package's attribute path, add another flag -P to your query:

$ nix-env -qaP 'aspell.*en'
nixos.aspellDicts.en  aspell-dict-en-7.1-0

You should be comfortable using nix-env on a daily basis, so practice calling nix-env with --query and --install options. However you can also browse packages and find out their attribute paths online on Nix packages search. Type aspell, click on aspell-dict-en and you'll see various package's properties, including attribute path as part of the install command:

$ nix-env -iA nixos.pkgs.aspellDicts.en

Now you can put this attribute path into /etc/nixos/configuration.nix:

environment.systemPackages = with pkgs; [
  aspellDicts.en
];

Then update the system by running sudo nixos-rebuild switch.


In case you are using NixOS for Data Science:

Python modules:

nix-env -qaP .\*pylint.\*

or

py_pkgs="nix_packages_py35.txt"
nix-env -qaP | grep -i python36 > ${py_pkgs}
grep pandas ${py_pkgs}

OR if your are searching especially for R packages/libraries

nix-env -f "<nixpkgs>" -qaP -A rPackages .\*tidyverse.\*

alternatively you get i.g. npm packages with:

nix-env -qaPA 'nixos.nodePackages'

there is also a website for searching for pkgs

  • https://nixos.org/nixos/packages.html#openshift

Tags:

Nixos

Nix