Fuzzy search for NixOS packages.
environment.systemPackages = [ nix-search-tv ]
There are many ways how one can install a package from a flake, below is one:
{
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
nix-search-tv.url = "github:3timeslazy/nix-search-tv";
};
outputs = {
nixpkgs,
nix-search-tv,
...
}: {
nixosConfigurations.system = nixpkgs.lib.nixosSystem {
modules = [
{
environment.systemPackages = [
nix-search-tv.packages.x86_64-linux.default
];
}
];
};
};
}
nix-search-tv
does not do the search by itself, but rather integrates
with other general purpose fuzzy finders, such as television and fzf
Add nix_channels.toml
file to your television config directory with the content below:
[[cable_channel]]
name = "nixpkgs"
source_command = "nix-search-tv print"
preview_command = "nix-search-tv preview {}"
The most straightforward integration might look like:
alias ns="nix-search-tv print | fzf --preview 'nix-search-tv preview {}' --scheme history"
Note
No matter how you use nix-search-tv with fzf, it's better to add --scheme history
. That way, the options will be sorted, which makes the search experience better
More advanced integration might be found here in nixpkgs.sh. It is the same search but with the following shortcuts:
- Search only Nixpkgs or Home Manager
- Open package code declaration or homepage
- Search GitHub for snippets with the selected package/option
You can install it like:
let
ns = pkgs.writeShellScriptBin "ns" (builtins.readFile ./path/to/nixpkgs.sh);
in {
environment.systemPackages = [ ns ]
}
By default, the configuration file is looked at $XDG_CONFIG_HOME/nix-search-tv/config.json
You can also search any documentation page generated by nixos-render-docs. See experimental.render_docs_indexes
in Configuration section
This project was inspired and wouldn't exist without work done by nix-search contributors.