Skip to content

Quick Start

New to Nixflix? Start with the Installation Guide or explore the Basic Setup Example.

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 get Starr and Jellyfin services (Sonarr, Radarr, Lidarr, Prowlarr, Jellyfin, Jellyseerr) working together. I want users to be able to configure this module and it just works.

This project is alpha-almost-beta-software. Please expect breaking changes until the 1.0 milestone is achieved.

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:

  • Opionated — 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
  • Mullvad VPN Integration: Built-in support for Mullvad 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
  • Optional Nginx Reverse Proxy: Configurable nginx integration for all services
  • 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

  • Jellyfin Plugin Configuration
  • Torrent client integration
  • qBittorrent Client Configuration
  • Jellystat configuration
  • Media Removal Automation
  • Subtitle Management

Documentation

Checkout the documentation to get started.

Services

Starr Stack

All Arr services (Sonarr, Radarr, Lidarr, Prowlarr) support:

  • API-based configuration
  • PostgreSQL integration
  • Nginx reverse proxy
  • Automatic directory creation
  • Root folder management
  • Custom media directories

Jellyfin

  • Basic server management
  • Libraries are automatically configured based on elected media managers

Jellyseerr

  • Media request management
  • Automatic integration with Starr services
  • Automatic integration with Jellyfin libraries

SABnzbd

  • Automatic integration with Starr services

qBittorrent

  • Automatic integration with Starr services

Mullvad VPN

  • Automatic authentication
  • Custom DNS servers
  • Kill switch (lockdown mode)
  • Location selection
  • Auto-connect on startup

Development

# Enter development shell
nix develop

# Format code
nix fmt

# Check formatting and linting
nix flake check

License

GNU General Public License

Quick Example

{
  nixflix = {
    enable = true;
    mediaDir = "/data/media";
    stateDir = "/data/.state/services";

    sonarr = {
      enable = true;
      config.apiKey = {_secret = "/run/secrets/sonarr-api-key";};
    };

    prowlarr = {
      enable = true;
      config.apiKey = {_secret = "/run/secrets/prowlarr-api-key";};
    };

    sabnzbd = {
      enable = true;
      settings.misc.api_key = {_secret = "/run/secrets/sabnzbd-api-key";};
    };

    jellyfin.enable = true;
  };
}

Next Steps

  • Installation - Add Nixflix to your NixOS configuration
  • Examples - Copy-paste ready configurations
  • Reference - Complete documentation of all options