Nix/src/nix/search.md
Felix Uhl 397cf4e285 nix search: Disallow empty regex
Fixes #4739
Fixes #3553 in spirit IMO
2023-12-21 22:13:43 +01:00

2.5 KiB

R""(

Examples

  • Show all packages in the nixpkgs flake:

    # nix search nixpkgs ^
    * legacyPackages.x86_64-linux.AMB-plugins (0.8.1)
      A set of ambisonics ladspa plugins
    
    * legacyPackages.x86_64-linux.ArchiSteamFarm (4.3.1.0)
      Application with primary purpose of idling Steam cards from multiple accounts simultaneously
    
  • Show packages in the nixpkgs flake containing blender in its name or description:

    # nix search nixpkgs blender
    * legacyPackages.x86_64-linux.blender (2.91.0)
      3D Creation/Animation/Publishing System
    
  • Search for packages underneath the attribute gnome3 in Nixpkgs:

    # nix search nixpkgs#gnome3 vala
    * legacyPackages.x86_64-linux.gnome3.vala (0.48.9)
      Compiler for GObject type system
    
  • Show all packages in the flake in the current directory:

    # nix search . ^
    
  • Search for Firefox or Chromium:

    # nix search nixpkgs 'firefox|chromium'
    
  • Search for packages containing git and either frontend or gui:

    # nix search nixpkgs git 'frontend|gui'
    
  • Search for packages containing neovim but hide ones containing either gui or python:

    # nix search nixpkgs neovim --exclude 'python|gui'
    

    or

    # nix search nixpkgs neovim --exclude 'python' --exclude 'gui'
    

Description

nix search searches installable (which can be evaluated, that is, a flake or Nix expression, but not a store path or store derivation path) for packages whose name or description matches all of the regular expressions regex. For each matching package, It prints the full attribute name (from the root of the installable), the version and the meta.description field, highlighting the substrings that were matched by the regular expressions.

To show all packages, use the regular expression ^. In contrast to .*, it avoids highlighting the entire name and description of every package.

Note that in this context, ^ is the regex character to match the beginning of a string, not the delimiter for selecting a derivation output.

Flake output attributes

If no flake output attribute is given, nix search searches for packages:

  • Directly underneath packages.<system>.

  • Underneath legacyPackages.<system>, recursing into attribute sets that contain an attribute recurseForDerivations = true.

)""