Listen to Navidrome using your favourite fuzzy picker and media player :)
  • Go 94.8%
  • Nix 5.2%
Find a file
james dc9723cd1e feat: add nix flake with package, app, devShell, and home-manager module
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.
2026-09-13 13:58:38 +01:00
api fix: paginate album lists by genre and cap random songs at 500 2026-09-13 13:49:35 +01:00
cmd feat: add noctalia selector support 2026-09-10 15:22:34 +01:00
config refactor: dedupe command pipeline and add config/version flags 2026-09-01 08:09:18 +01:00
nix feat: add nix flake with package, app, devShell, and home-manager module 2026-09-13 13:58:38 +01:00
.gitignore feat: add nix flake with package, app, devShell, and home-manager module 2026-09-13 13:58:38 +01:00
config.example.json chore: default shuffle and loop to off 2026-09-01 08:31:51 +01:00
flake.lock feat: add nix flake with package, app, devShell, and home-manager module 2026-09-13 13:58:38 +01:00
flake.nix feat: add nix flake with package, app, devShell, and home-manager module 2026-09-13 13:58:38 +01:00
go.mod refactor: dedupe command pipeline and add config/version flags 2026-09-01 08:09:18 +01:00
go.sum chore: rename project to navifuzz and switch config to json 2026-09-01 08:09:18 +01:00
LICENSE refactor: dedupe command pipeline and add config/version flags 2026-09-01 08:09:18 +01:00
main.go fix: paginate album lists by genre and cap random songs at 500 2026-09-13 13:49:35 +01:00
README.md feat: add nix flake with package, app, devShell, and home-manager module 2026-09-13 13:58:38 +01:00

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:

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.