Searching packages: Difference between revisions

imported>Fricklerhandwerk
add category: Reference
m Fix typo
 
(17 intermediate revisions by 9 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 @nixpkgs 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
 
 
There are third party tools that allow searching for packages similarly to <code>nix search</code>, namely:
* [https://github.com/diamondburned/nix-search diamondburned/nix-search]: A faster and channel-compatible <code>nix search</code> using only stable Nix tools (no [[flakes]] required) which creates a local database with a package index.
 
== 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:Reference]]
[[Category:Nixpkgs]]