Jump to content

Searching packages: Difference between revisions

From NixOS Wiki
imported>Rapenne-s
Create the page
 
m this isn't markdown
(16 intermediate revisions by 8 users not shown)
Line 1: Line 1:
There are a different ways to search for a package name in the nix package manager.
There are numerous approaches available for searching substrings within both package names and package descriptions in <code>nixpkgs</code>.


* https://search.nixos.org/
== Using <code>search.nixos.org</code> website ==
** easy to use
 
** requires internet
There is a web service to search with
* <code>nix-env -qaP</code>
: [[channel branches]]
** very slow
:* Nix packages at [https://search.nixos.org/packages search.nixos.org/packages]
* [https://github.com/bennofs/nix-index nix-index] to find which package provides a given file
:* NixOS options at [https://search.nixos.org/options search.nixos.org/options]
: [[flakes]]
:* packages at [https://search.nixos.org/flakes?type=packages search.nixos.org/flakes?type=packages]
:* options at [https://search.nixos.org/flakes?type=options search.nixos.org/flakes?type=options]
 
; pros:
* easy to use
* allows filters
* nice GUI in browser
* browser extensions possible (like @nixpgs as search engine in Firefox)
; cons:
* always requires Internet connection
 
 
If you'd like to search with this web service from the command line, you may use [https://github.com/peterldowns/nix-search-cli peterldowns/nix-search-cli]. It provides exactly the same search experience by default.
 
== Other online sites for searching ==
 
These are another possible places to search
 
* [https://github.com/search?q=language%3ANix+&type=code github.com] - search for regex/strings in nixpkgs, home-manager, nix-darwin and any other public github repos.
* [https://mynixos.com mynixos.com] - search for packages in nixpkgs, also nixos, home-manager, nix-darwin options. Not foss and unofficial.
* [https://home-manager-options.extranix.com home-manager-options.extranix.com] - search for home-manager options. [https://github.com/mipmip/home-manager-option-search foss]
 
== Using the <code>nix search</code> command ==
 
While this command requires [[flakes]], you can use it to search for a package. It may be slow the first time, but further runs will use cached results.
 
<syntaxhighlight lang="bash">nix search nixpkgs firefox</syntaxhighlight>
 
; pros:
* fast
* possible offline usage
; cons:
* requires disk space for caching
* quite long command
 
== Using the <code>nix-env</code> command ==
 
It's possible to search for a package using <code>nix-env -qaP</code>
 
; pros:
* works offline
; cons:
* it's very slow and requires a lot of memory
 
== Using the <code>nix repl</code> environment ==
 
With the read–eval–print loop (REPL) of nix you can browse packages interactively.
 
Starting the [https://nixos.org/manual/nix/stable/command-ref/new-cli/nix3-repl.html nix repl]
<syntaxhighlight lang="bash">nix repl</syntaxhighlight>
<syntaxhighlight lang="console">
Welcome to Nix 2.18.2. Type :? for help.
 
nix-repl>
</syntaxhighlight>
 
Loading the repository for nixpkgs
<syntaxhighlight lang="console">
nix-repl>
</syntaxhighlight>
<syntaxhighlight lang="bash">nix-repl> :load <nixpkgs>
Added 21181 variables.
</syntaxhighlight>Type the first letters of a package
<syntaxhighlight lang="bash">nix-repl> neo  </syntaxhighlight>
Press <tt>Tab ↹</tt> key<!-- {{[[mw:Template::Key press]]|Tab}} --> for auto completion
 
== Reverse search: searching which package provides a file ==
 
There are third party programs that make it easier to determine which package you need to install in order to obtain a specific file or program.
 
These are most commonly used, and require you to create an index on your computer before you can search for a package:
 
* [https://github.com/nix-community/nix-index nix-community/nix-index]
* [https://github.com/replit/rippkgs replit/rippkgs]
 
These are online tools which search an index someone else keeps up to date:
 
* [https://github.com/peterldowns/nix-search-cli peterldowns/nix-search-cli]: <code>nix-search -p theBinaryIWantToInstall</code> to search the search.nixos.org elasticsearch index.
 
[[Category:Reference]]
[[Category:Nixpkgs]]

Revision as of 03:09, 16 March 2025

There are numerous approaches available for searching substrings within both package names and package descriptions in nixpkgs.

Using search.nixos.org website

There is a web service to search with

channel branches
flakes
pros
  • easy to use
  • allows filters
  • nice GUI in browser
  • browser extensions possible (like @nixpgs as search engine in Firefox)
cons
  • always requires Internet connection


If you'd like to search with this web service from the command line, you may use peterldowns/nix-search-cli. It provides exactly the same search experience by default.

Other online sites for searching

These are another possible places to search

  • github.com - search for regex/strings in nixpkgs, home-manager, nix-darwin and any other public github repos.
  • mynixos.com - search for packages in nixpkgs, also nixos, home-manager, nix-darwin options. Not foss and unofficial.
  • home-manager-options.extranix.com - search for home-manager options. foss

Using the nix search command

While this command requires flakes, you can use it to search for a package. It may be slow the first time, but further runs will use cached results.

nix search nixpkgs firefox
pros
  • fast
  • possible offline usage
cons
  • requires disk space for caching
  • quite long command

Using the nix-env command

It's possible to search for a package using nix-env -qaP

pros
  • works offline
cons
  • it's very slow and requires a lot of memory

Using the nix repl environment

With the read–eval–print loop (REPL) of nix you can browse packages interactively.

Starting the nix repl

nix repl
Welcome to Nix 2.18.2. Type :? for help.

nix-repl>

Loading the repository for nixpkgs

nix-repl>
nix-repl> :load <nixpkgs>
Added 21181 variables.

Type the first letters of a package

nix-repl> neo

Press Tab ↹ key for auto completion

Reverse search: searching which package provides a file

There are third party programs that make it easier to determine which package you need to install in order to obtain a specific file or program.

These are most commonly used, and require you to create an index on your computer before you can search for a package:

These are online tools which search an index someone else keeps up to date: