Skip to content

Latest commit

 

History

History
288 lines (212 loc) · 17.1 KB

File metadata and controls

288 lines (212 loc) · 17.1 KB

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog.

[Unreleased]

Fixed

  • fix seerr sonarr activeDirectory default resolving host config (#283)
  • fix *arr rootfolders oneshot racing app startup (#286)
  • fix *arr config.hostConfig auth/port/urlBase values being ignored in favor of hardcoded settings env vars (#289)
  • fix Jellyfin crash-looping on boot when a stale TranscodingTempPath in encoding.xml points at an inaccessible path after cacheDir/encoding.transcodingTempPath changes (#291)

[3.0.0] - 2026-07-12

Breaking

  • Jellyfin manifest is pulled from this repository instead of a separate one.
    • I accidentally deleted the old repository instead of archiving it, updates to 3.0.0 are required.

[2.1.0] - 2026-06-26

Added

  • Jellyfin Metadata Settings (UseFileCreationTimeForDateAdded)
  • Maintainerr support (#242).

Fixed

  • Make Seerr library sync non-fatal to circumvent Seerr bug

[2.0.0] - 2026-06-21

Fixed

  • Sonarr and Radarr renaming for better Jellyfin matches
  • prowlarr-indexer-proxies restart-looping (and blocking boot) when the proxy's test endpoint is unreachable, by adding ?forceSave=true to its create/update requests (mirrors #247 for indexers).
  • _secret pattern not trimming all terminating newlines in decrypted files.
  • qBittorrent potentially starting before nixflix.serviceDependencies and thus losing track of downloaded files, lest a recheck was manually forced.

Added

  • Starr app Media Management API configuration (#221).

Removed

  • Breaking (#230): nixflix.postgres.dataDir. PostgreSQL dataDir no longer overridden globally, fixing data loss for co-located services (e.g. Forgejo) that share the system PostgreSQL instance (#230).
    • Remove nixflix.postgres.dataDir from your configuraiton.

    • If you set nixflix.stateDir to a non-default value (i.e. anything other than /var/lib), then your PostgreSQL data was previously stored at ${nixflix.stateDir}/postgres and must be moved to the standard NixOS location before rebuilding. Stop all services that depend on PostgreSQL first, then perform the following steps:

      1. sudo -su postgres
      2. cd /var/lib/postgresql/
      3. stateDir=/your/custom/stateDir  # replace with your nixflix.stateDir value
        version=$(cat $stateDir/postgres/PG_VERSION)
      4. # Move and fix ownership
        mv $stateDir/postgres /var/lib/postgresql/$version
        chown -R postgres:postgres /var/lib/postgresql/$version
      5. exit

Changed

  • nixflix.<starr>.config.hostConfig.username and nixflix.<starr>.config.hostConfig.password must both be set or null (#223).

[1.2.0] - 2026-05-20

Added

  • Print response error when prowlarr indexer add/update fails.
  • Add support for apikey and passkey indexer fields (#220).

Changed

  • Fix inet_exposure for SABnzbd when reverse proxy is enabled
  • Change license to MPL 2.0 (#217).
  • nixflix.lib.jellyfinPlugins.fromRepo's hash parameter now supports nix32 format as well (#202).
    • It also throws if the user's system does not have builtins.convertHash implemented.

Fixed

  • Prowlarr indexers missing baseUrl when list of choices is available.
  • connectionAddresses ignoring bind addresses of associated services (#213).
  • Fix prowlarr indexer API key inconsistency bug (#219).
  • Prowlarr indexer apiKey inconsistency (#210).
  • Inability to unset predefined libraries (#207).

[1.1.0] - 2026-05-12

Added

  • Missing Recyclarr options (#204).

Changed

  • Updated Recyclarr options documentation (#204).

Fixed

  • Incorrect Recyclarr delete_old_custom_formats default (#204).

[1.0.0] - 2026-05-08

Added

  • Subtitle downloads using Jellyfin plugins (#199).
  • Caddy as alternative reverse proxy to nginx via nixflix.caddy (#163).
  • Per-service reverse proxy opt-out via reverseProxy.expose (#163).
  • Generic WireGuard VPN support via nixflix.vpn (#164).
  • Jellyfin Plugin management (#156).
  • Mullvad first-class Tailscale coexistence option (nixflix.mullvad.tailscale) (#141).
  • Mullvad persistDevice option to keep login across reboots (#133).
  • Prowlarr indexer proxy support (#139).
  • Automatic known-proxy configuration (#123).
  • Support for remote Jellyfin instances in Jellyseerr authentication (#125).
  • Jellyfin VM tests (#64).
  • Jellyseerr module with Radarr/Sonarr integration and VM tests (#43, #73, #74).
  • Sonarr anime instance support (#40).
  • Initial Jellyfin configuration with library, branding, and encoding services (#24).
  • Delay profiles for Starr apps (#20).
  • TRaSH guide defaults for SABnzbd (#19).
  • Recyclarr with sane defaults, managed quality profiles, and automatic cleanup of unmanaged profiles (#13).
  • Download clients configuration service (#8).
  • SABnzbd configuration module (#6).
  • Prowlarr applications configuration (#5).

Changed

  • Breaking: nixflix.stateDir default has been changed to /var/lib to match FHS convention

    • You will need to move everything from /data/.state to /var/lib.
    • /data/.state/postgres will need to be moved to /var/lib/postgresql/<version>.
      • You can find version by running sudo cat /data/.state/postgres/PG_VERSION.
      • I also had to delete my /var/lib/jellyfin and /var/lib/seerr folders entirely after running the following (you may not have to, though):
        sudo systemctl stop jellyfin-api-key jellyfin-branding-config jellyfin-libraries jellyfin-plugins jellyfin-setup-wizard jellyfin-system-config jellyfin-users-config jellyfin seerr-jellyfin seerr-env seerr-setup seerr-user-settings seerr-wait-for-db seerr
  • Breaking: unpin PostgreSQL version.

    • If you're stateVersion is 25.11, you will need to update your database version to 17 manually using pg_upgrade from pkgs.postgresql_17. You should probably stop the services that depend on PostgreSQL first. Perform the following steps:

      1. sudo -su postgres
      2. cd /var/lib/postgresql/
      3. old=16
        new=17
      4. pg_old=$(nix-build --no-out-link -E "with import <nixpkgs> {}; \
                postgresql_${old:?}.withPackages (p: [ p.pgvector p.vectorchord ])")
        pg_new=$(nix-build --no-out-link -E "with import <nixpkgs> {}; \
                postgresql_${new:?}.withPackages (p: [ p.pgvector p.vectorchord ])")
      5. # Init the new database
        $pg_new/bin/initdb -D /var/lib/postgresql/$new || exit 1
      6. # Check the upgrade
        $pg_new/bin/pg_upgrade \
          --socketdir=/var/run/postgresql \
          --old-bindir=$pg_old/bin \
          --new-bindir=$pg_new/bin \
          --old-datadir=/var/lib/postgresql/${old:?} \
          --new-datadir=/var/lib/postgresql/${new:?} \
          --old-options "-c shared_preload_libraries='vchord.so'" \
          --new-options "-c shared_preload_libraries='vchord.so'" \
          --check # remove when ready to migrate
      7. # Perform the upgrade
        $pg_new/bin/pg_upgrade \
          --socketdir=/var/run/postgresql \
          --old-bindir=$pg_old/bin \
          --new-bindir=$pg_new/bin \
          --old-datadir=/var/lib/postgresql/${old:?} \
          --new-datadir=/var/lib/postgresql/${new:?} \
          --old-options "-c shared_preload_libraries='vchord.so'" \
          --new-options "-c shared_preload_libraries='vchord.so'"
  • Breaking: nixflix.mullvad.* options have been replaced by nixflix.vpn.*. Update your configuration accordingly.

  • nixflix.radarr.vpn, nixflix.sonarr.vpn, etc. per-service VPN options now reference the generic nixflix.vpn namespace rather than Mullvad.

  • Breaking (#162): nixflix.mullvad.* options have been replaced by nixflix.vpn.*. Update your configuration accordingly.

    • If you had nixflix.mullvad.killSwitch.enable = true, you need to disable it before updating. This can be done without rebuilding by running mullvad lockdown-mode set off, then run mullvad disconnect. nixflix.vpn.*. Update your configuration accordingly.
  • nixflix.radarr.vpn, nixflix.sonarr.vpn, etc. per-service VPN options now reference the generic nixflix.vpn namespace rather than Mullvad.

  • Breaking (#162): Recyclarr options schema updated to v8.

    • Remove replace_existing_custom_formats from your recyclarr config (dropped in recyclarr v8).
    • New fields available: trash_id/score_set/min_upgrade_format_score on quality profiles, custom_format_groups, media_management, sqp-streaming/sqp-uhd quality definition types.
    • If you use nixflix.inputs.nixpkgs.follows = "nixpkgs", run nix flake update nixpkgs to get recyclarr 8.5.1.
  • Recyclarr timer no longer attempts to start sonarr-anime services when sonarr-anime is disabled (#158).

  • Services now wait for the Jellyfin API to be ready before running configuration services (#157).

  • ACME certificate configuration added (#154).

  • nixflix.serviceDependencies now correctly applied to Arr and Jellyfin services (#153).

  • Breaking (#147): nixflix.jellyseerr renamed to nixflix.seerr.

    • Update all nixflix.jellyseerr.* references to nixflix.seerr.* in your configuration.
    • If using nixflix.inputs.nixpkgs.follows, update your flake.lock.
    • Without PostgreSQL: rename /data/.state/jellyseerr to /data/.state/seerr and update ownership to seerr:seerr, or set nixflix.seerr.dataDir = "/data/.state/jellyseerr" and change ownership to seerr:seerr.
    • With PostgreSQL: data is preserved. To keep existing data, set nixflix.seerr.user = "jellyseerr" and nixflix.seerr.group = "jellyseerr". If you see collation version warnings, refresh them:
      sudo -u postgres psql -c "ALTER DATABASE jellyseerr REFRESH COLLATION VERSION;"
      # repeat for each database (radarr, sonarr, prowlarr, lidarr, etc.)
  • Breaking (#146): nixflix.jellyfin.apiKey is now required. Add the option to your configuration before deploying.

  • Jellyseerr/Arr PostgreSQL usage scoped to nixflix.postgres.enable to avoid conflicting with unrelated PostgreSQL instances (#127).

  • Breaking (#115): Recyclarr configuration options were refactored. Review the recyclarr module options for the updated structure.

  • Arr services now wait for network-online.target to fix DNS resolution errors after reboot (#91).

  • Recyclarr disabled by default (#80).

  • Individual Starr settings overrides added (#87).

  • Jellyseerr Radarr/Sonarr config converted from list to attrset (nixflix.jellyseerr.radarr.<name> = {}) (#73).

  • Breaking (#107): Reverse proxy routing switched from path-based to subdomain-based. Services are now served at <service>.<domain> instead of <domain>/<service>. Update any bookmarks, reverse proxy configuration, or hardcoded URLs accordingly.

  • Breaking (#101): qBittorrent module rewritten. Review the updated nixflix.qbittorrent.* options and update your configuration.

  • Breaking (#90): Starr service log databases are now separate from the primary databases. Existing logs will not be migrated — a fresh log database will be created on first start. Primary application data is unaffected.

  • _secrets pattern adopted for all secret paths (#56).

  • SABnzbd refactored with updated options (#46).

Removed

  • modules/mullvad.nix and all nixflix.mullvad.* options.
  • Tailscale coexistence. It is not necessary because of the VPN namespace.

Fixed

  • Hardcoded service connection addresses broke integrations (#201).
  • Starr services UMask was 0022, needs to be 0002 to allow group writes (#178).
  • Default matadata providers, anime providers were used for TV Shows and Movies (#177).
  • Services failing when changing nixflix.mediaDir or nixflix.stateDir to nested structures (#170).
  • qBittorrent category save path now correctly used (#148).
  • Download client timing issue causing connection-refused errors at boot (#134).
  • Arr services now wait for download client API readiness before proceeding (#128).
  • qBittorrent DefaultSavePath set to downloadsDir/default to prevent permission errors on uncategorized torrent imports (#122).
  • Download clients integration fixed (target address was incorrectly set to 0.0.0.0) (#117).
  • Missing folders on NixOS rebuild without reboot (tmpfiles rules and permissions) (#113).
  • Secret values with special characters (commas, quotes) no longer mangled by ConfigObj in SABnzbd (#111).
  • Jellyseerr authentication after secure curl refactor (#96).
  • Prowlarr indexer documentation corrected (#79).
  • Username/password download clients for Starr apps (#86).
  • Timing issues with Starr services at boot (#84).
  • Systemd tmpfiles rules syntax corrected (wrong root:media owner format) (#83).
  • SABnzbd categories service: API key now passed to curl, redundant URL base slash removed (#68).
  • Indexer freeform type fixed; username/password credential option added for Prowlarr (#71).
  • Websocket and direct port access for Jellyfin (#37).