Nixflix is a declarative media server configuration manager for NixOS that provisions and wires together the Starr services, Jellyfin, Seerr and their supporting tools from a single Nix flake, aimed at homelab operators who would rather keep their media stack in version control than click through a dozen web UIs.
What it is
Nixflix is a NixOS configuration module that automates the connective tissue required to run a media server. Its scope covers Sonarr, Radarr, Lidarr, Prowlarr, Jellyfin and Seerr, plus the surrounding pieces those services depend on: SABnzbd, qBittorrent, Navidrome, Maintainerr and WireGuard. Configuration is expressed as NixOS options, and Nixflix applies it by calling the official REST APIs of each service, with a small number of exceptions. The result is opinionated, idempotent and repeatable: services can be reconfigured safely over and over, and the Nix code stays the single source of truth so configuration drift does not accumulate.
The concrete problem it replaces is manual setup of a media server stack. Without it, an operator faces settings with no version control, tedious navigation through each service's UI, and annoying interservice configuration to make the pieces talk to each other. Root folders have to be created and assigned, indexers propagated, download clients linked to the Starr applications, Jellyfin libraries built to match the media managers actually in use, and request management connected on both sides. Nixflix exists so that, in the author's framing, this is configured once and then just works. It lives in the NixOS ecosystem, and the thing it replaces is the hand-built, click-driven installation of that same stack.
Key capabilities
- Pre-configured modules for Sonarr, Radarr, Lidarr and Prowlarr, with declarative API configuration applied through each service's REST API.
- Optional PostgreSQL backend for all Arr services, as an alternative to their default databases.
- Reverse proxy integration for nginx or Caddy across all services, with a per-service opt-out.
- Built-in WireGuard VPN support with a kill switch and custom DNS.
- Jellyfin management covering libraries that are automatically configured based on the selected media managers, plus plugin and subtitle downloader management.
- Seerr media request management with automatic integration to the Starr services and to Jellyfin libraries.
- Default configuration that follows TRaSH Guides, and unified theming across supported services powered by theme.park.
Who uses it and how
- Homelab operators running NixOS who already treat their machine configuration as code and want the media stack to live in the same repository.
- Users assembling a full Starr pipeline, where SABnzbd and qBittorrent are wired into the Starr services automatically rather than linked by hand.
- Households serving media through Jellyfin who want libraries generated from whichever media managers they enabled, and who want friends and family to request titles through Seerr.
- Operators who need their indexers and download traffic routed through WireGuard with a kill switch, so a dropped tunnel does not expose the traffic.
- Music-focused users running Navidrome over the OpenSubsonic API, with cleanup of older media handled by Maintainerr.
Getting started
Nixflix is consumed as a Nix flake and configured through NixOS options, with the project documentation at https://kiriwalawren.github.io/nixflix serving as the entry point. Contributors enter the development shell with nix develop, format with nix fmt, and verify formatting and linting with nix flake check.
How it compares
No list of paid products that Nixflix replaces is provided, and the facts name no comparable alternative projects, so within this registry it stands alone: it is the NixOS-native declarative media server configuration manager. The contrast it does draw is internal to the workflow, pitching API-driven configuration on NixOS against rebuilding the same stack by hand through service UIs. It is licensed under MPL-2.0.
When to use it — and when not to
A self-hoster adopting Nixflix must already run NixOS and be comfortable with flakes and NixOS options, and must operate the services themselves, including the optional PostgreSQL backend, a WireGuard tunnel, an nginx or Caddy reverse proxy, and the download clients. Anyone unwilling to maintain a Nix configuration, or who wants a stack on a non-NixOS distribution, should not pick it — the module is tied to NixOS by design. The honest limitations are visible in the project itself: music tooling is still listed as an upcoming feature rather than a finished one, and the defaults are deliberately opinionated, so operators who want to deviate from the TRaSH Guides baseline will be working against the grain that the project is built on.
project readme (upstream, from github) — read inline
Nixflix
Nixflix is a declarative media server configuration manager for NixOS. The aim of the project is to automate
all of the connective tissue required to get Starr and Jellyfin services (Sonarr, Radarr, Lidarr, Prowlarr, Jellyfin, Seerr) working
together. I want users to be able to configure this module and it just works.
Why Nixflix?
Dreading the thought of configuring a media server from scratch. Again...
Nixflix makes it so you never have to again!
Managing media server configuration can be very painful:
- No version control for settings
- Tedious navigation through UI systems
- And annoying interservice Configuration
All of these services have APIs, surely we can use this to automate the whole thing.
Nixflix is:
- ✅ Opinionated — Don't you hate having to think for yourself?
- ✅ API-based — Nixflix uses official REST APIs of each service (with a couple minor exceptions)
- ✅ Idempotent — All services safely execute repeatedly
- ✅ Commanding — Your code is the source of truth, no need to fear drift
Features
- Media Server Stack: Pre-configured modules for Sonarr, Radarr, Lidarr, and Prowlarr
- Declarative API Configuration: Configure services declaratively via NixOS options, automatically applied through their REST APIs
- PostgreSQL Integration: Optional PostgreSQL backend for all Arr services
- WireGuard VPN Integration: Built-in support for Wireguard VPN with kill switch and custom DNS
- Flexible Directory Management: Configurable media and state directories with automatic setup
- Service Dependencies: Configure custom systemd service dependencies
- Reverse Proxy Support: Configurable nginx or Caddy integration for all services, with per-service opt-out
- Unified Theming: All supported services can be themed to look the same, powered by theme.park
- TRaSH Guides: Default configuration follows TRaSH guidelines
Upcoming Features
Documentation
Check out the documentation to get started.
Services
Starr Stack
All Arr services (Sonarr, Radarr, Lidarr, Prowlarr) support:
- API-based configuration
- PostgreSQL integration
- Reverse proxy (nginx or Caddy)
- Automatic directory creation
- Root folder management
- Custom media directories
Jellyfin
- Basic server management
- Libraries are automatically configured based on selected media managers
- Plugin management
- Subtitle downloader management
Seerr
- Media request management
- Automatic integration with Starr services
- Automatic integration with Jellyfin libraries
Navidrome
- Music Server
- Supports OpenSubsonic API
SABnzbd
- Automatic integration with Starr services
qBittorrent
- Automatic integration with Starr services
WireGuard VPN
- Generic WireGuard support
- Kill switch
Maintainerr
- Automatic cleanup of old media
Development
Enter development shell:
nix develop
Format code:
nix fmt
Check formatting and linting:
nix flake check
License
MPL 2.0