- Go 94.8%
- Nix 5.2%
The package builds through buildGoModule with the version injected via ldflags from the flake, so the flake version and main.version can never drift. A homeManagerModules.default provides programs.navifuzz, mirroring the option shape (enable, package, settings) previously maintained in-repo consumers. |
||
|---|---|---|
| api | ||
| cmd | ||
| config | ||
| nix | ||
| .gitignore | ||
| config.example.json | ||
| flake.lock | ||
| flake.nix | ||
| go.mod | ||
| go.sum | ||
| LICENSE | ||
| main.go | ||
| README.md | ||
LLM Disclaimer
The code was written with the assistance of MiMo v2.5 using the opencode free tier.
Mirror
This repository is mirrored from my forgejo to github.
What is it?
navifuzz is a command line tool for browsing and playing the music on your navidrome server.
It fetches lists of albums, artists, songs, playlists, and genres from the server, presents them in a fuzzy picker, and hands your selection off to a media player.
What is it not?
A media player.
A fuzzy finder/picker/launcher.
It is not for writing anything to a navidrome server (eg. adding or removing playlists/music).
Building
Requires Go 1.26 or newer.
go build -o navifuzz .
Or install directly to your GOBIN:
go install .
Nix
The repo ships a flake. Install with one command:
nix run github:ryfrd/navifuzz -- albums
Or add to your profile:
nix profile install github:ryfrd/navifuzz
A home-manager module provides
programs.navifuzz (options: enable, package, settings), which installs
the package and writes ~/.config/navifuzz/config.json:
{
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
home-manager.url = "github:nix-community/home-manager";
navifuzz.url = "github:ryfrd/navifuzz";
};
outputs = { navifuzz, ... }: {
homeManagerModules.default = navifuzz.homeManagerModules.default;
};
}
Usage
Dependencies
navifuzz needs the following:
- A navidrome server running somewhere.
- A media player: mpv or vlc currently supported.
- A fuzzy picker/launcher: fzf, skim, fuzzel, rofi, tofi, wofi, dmenu, bemenu, and noctalia currently supported.
Configuration
Copy config.example.json to ~/.config/navifuzz/config.json (or $XDG_CONFIG_HOME/navifuzz/config.json if set) and adjust to your liking.
server, username, and password are required. The rest are optional.
The picker and player can also be overridden per-invocation without touching the config file:
navifuzz --selector rofi albums
navifuzz --player vlc songs
navifuzz --config /path/to/other/config.json albums
The --config, --selector, and --player flags can appear anywhere before or after the command.