jellyseerr: rename jellyseerr to seerr (#500782)

This commit is contained in:
Kevin Cox
2026-03-27 18:08:31 +00:00
committed by GitHub
10 changed files with 64 additions and 38 deletions

View File

@@ -228,6 +228,8 @@
- `services.taskchampion-sync-server` module have been added an option `services.taskchampion-sync-server.dynamicUser` to use systemd's DynamicUser feature. This is enabled by default when stateVersion is at least 26.05, and disabled otherwise. If you need this feature, you need to set `services.taskchampion-sync-server.dynamicUser` to `true` and migrate `/var/lib/taskchampion-sync-server` to `/var/lib/private/taskchampion-sync-server`.
- Package `jellyseerr` has been renamed to `seerr` following the upstream rename.
- The default packages in `services.jenkins.packages` have been dropped, since not every Jenkins installation needs any package at all. It's more reasonable to leave it empty and let users configure what they need.
## Other Notable Changes {#sec-nixpkgs-release-26.05-notable-changes}

View File

@@ -8502,6 +8502,12 @@
githubId = 88741530;
name = "Fabian Rigoll";
};
fallenbagel = {
name = "fallenbagel";
github = "fallenbagel";
githubId = 98979876;
email = "hello@fallenbagel.com";
};
famfo = {
name = "famfo";
email = "famfo+nixpkgs@famfo.xyz";

View File

@@ -105,7 +105,7 @@ In addition to numerous new and updated packages, this release has the following
- [vmalert](https://victoriametrics.com/), an alerting engine for VictoriaMetrics. Available as [services.vmalert.instances](#opt-services.vmalert.instances._name_.enable).
- [jellyseerr](https://github.com/Fallenbagel/jellyseerr), a web-based requests manager for Jellyfin, forked from Overseerr. Available as [services.jellyseerr](#opt-services.jellyseerr.enable).
- [jellyseerr](https://github.com/Fallenbagel/jellyseerr), a web-based requests manager for Jellyfin, forked from Overseerr. Available as `services.jellyseerr`.
- [kavita](https://kavitareader.com), a self-hosted digital library. Available as [services.kavita](options.html#opt-services.kavita.enable).

View File

@@ -239,6 +239,11 @@ See <https://github.com/NixOS/nixpkgs/issues/481673>.
- `geph` package's built-in GUI `geph5-client-gui` has been [removed](https://github.com/geph-official/geph5/commit/f2221fb8386312daf2cef05483ebb353ff48bdb4) by the upstream. All users who wish to continue using the GUI should install the `gephgui-wry`, which is consistent with the official release version.
- `services.jellyseerr` has been renamed to `services.seerr` following the upstream changes. Notable breaking changes:
- systemd service name changed accordingly.
- Default config directory moved from `/var/lib/jellyseerr/config` to `/var/lib/seerr/`.
- If `stateVersion` is older than `26.05`, the module fall backs to the legacy path value.
- `services.vikunja` has been updated to Vikunja [v1.0.0](https://vikunja.io/changelog/whats-new-in-vikunja-1.0.0/), which introduces multiple breaking changes.
Notable breaking changes:
- CORS is enabled by default. The module now sets

View File

@@ -884,7 +884,6 @@
./services/misc/irkerd.nix
./services/misc/jackett.nix
./services/misc/jellyfin.nix
./services/misc/jellyseerr.nix
./services/misc/kiwix-serve.nix
./services/misc/klipper.nix
./services/misc/languagetool.nix
@@ -950,6 +949,7 @@
./services/misc/rumno.nix
./services/misc/safeeyes.nix
./services/misc/sdrplay.nix
./services/misc/seerr.nix
./services/misc/servarr/lidarr.nix
./services/misc/servarr/prowlarr.nix
./services/misc/servarr/radarr.nix

View File

@@ -5,37 +5,47 @@
...
}:
let
cfg = config.services.jellyseerr;
cfg = config.services.seerr;
# 26.05 introduced a breaking change which is guarded behind stateVersion to avoid
# breaking users.
useNewConfigLocation = lib.versionAtLeast config.system.stateVersion "26.05";
in
{
meta.maintainers = [ lib.maintainers.camillemndn ];
imports = [
(lib.mkRenamedOptionModule [ "services" "jellyseerr" ] [ "services" "seerr" ])
];
options.services.jellyseerr = {
enable = lib.mkEnableOption "Jellyseerr, a requests manager for Jellyfin";
package = lib.mkPackageOption pkgs "jellyseerr" { };
meta.maintainers = with lib.maintainers; [
camillemndn
fallenbagel
];
options.services.seerr = {
enable = lib.mkEnableOption "Seerr, a requests manager for Jellyfin";
package = lib.mkPackageOption pkgs "seerr" { };
openFirewall = lib.mkOption {
type = lib.types.bool;
default = false;
description = "Open port in the firewall for the Jellyseerr web interface.";
description = "Open port in the firewall for the Seerr web interface.";
};
port = lib.mkOption {
type = lib.types.port;
default = 5055;
description = "The port which the Jellyseerr web UI should listen to.";
description = "The port which the Seerr web UI should listen to.";
};
configDir = lib.mkOption {
type = lib.types.path;
default = "/var/lib/jellyseerr/config";
default = if useNewConfigLocation then "/var/lib/seerr/" else "/var/lib/jellyseerr/config";
description = "Config data directory";
};
};
config = lib.mkIf cfg.enable {
systemd.services.jellyseerr = {
description = "Jellyseerr, a requests manager for Jellyfin";
systemd.services.seerr = {
description = "Seerr, a requests manager for Jellyfin";
after = [ "network.target" ];
wantedBy = [ "multi-user.target" ];
environment = {
@@ -44,7 +54,8 @@ in
};
serviceConfig = {
Type = "exec";
StateDirectory = "jellyseerr";
# Note: this should be a parent of configDir.
StateDirectory = if useNewConfigLocation then "seerr" else "jellyseerr";
DynamicUser = true;
ExecStart = lib.getExe cfg.package;
Restart = "on-failure";

View File

@@ -793,7 +793,6 @@ in
isso = runTest ./isso.nix;
jackett = runTest ./jackett.nix;
jellyfin = runTest ./jellyfin.nix;
jellyseerr = runTest ./jellyseerr.nix;
jenkins = runTest ./jenkins.nix;
jenkins-cli = runTest ./jenkins-cli.nix;
jibri = runTest ./jibri.nix;
@@ -1450,6 +1449,7 @@ in
sdl3 = runTest ./sdl3.nix;
searx = runTest ./searx.nix;
seatd = runTest ./seatd.nix;
seerr = runTest ./seerr.nix;
send = runTest ./send.nix;
service-runner = runTest ./service-runner.nix;
servo = runTest ./servo.nix;

View File

@@ -1,17 +1,20 @@
{ lib, ... }:
{
name = "jellyseerr";
meta.maintainers = with lib.maintainers; [ matteopacini ];
name = "seerr";
meta.maintainers = with lib.maintainers; [
matteopacini
fallenbagel
];
nodes.machine =
{ pkgs, ... }:
{
services.jellyseerr.enable = true;
services.seerr.enable = true;
};
testScript = ''
machine.start()
machine.wait_for_unit("jellyseerr.service")
machine.wait_for_unit("seerr.service")
machine.wait_for_open_port(5055)
machine.succeed("curl --fail http://localhost:5055/")
'';

View File

@@ -1,8 +1,8 @@
{
lib,
pnpm_9,
fetchPnpmDeps,
pnpmConfigHook,
pnpm_10,
fetchFromGitHub,
stdenv,
makeWrapper,
@@ -16,24 +16,24 @@
let
nodejs = nodejs_22;
pnpm = pnpm_9.override { inherit nodejs; };
pnpm = pnpm_10.override { inherit nodejs; };
in
stdenv.mkDerivation (finalAttrs: {
pname = "jellyseerr";
version = "2.7.3";
pname = "seerr";
version = "3.1.0";
src = fetchFromGitHub {
owner = "Fallenbagel";
repo = "jellyseerr";
owner = "seerr-team";
repo = "seerr";
tag = "v${finalAttrs.version}";
hash = "sha256-a3lhQ33Zb+vSu1sQjuqO3bITiQEIOVyFTecmJAhJROU=";
hash = "sha256-POmxXuuxATWyNLnKKNO7W3BZ1WL0t0/0IoOpzqKs4oQ=";
};
pnpmDeps = fetchPnpmDeps {
inherit (finalAttrs) pname version src;
inherit pnpm;
fetcherVersion = 3;
hash = "sha256-kCM6oNfBlVsjItzBDxSbeLu0+53I5XzxcerpCTEvZ0M=";
hash = "sha256-p45B6hp0BsSCAeOL7miVzVMG84UW24uUf2OpbH+xQuw=";
};
buildInputs = [ sqlite ];
@@ -71,34 +71,32 @@ stdenv.mkDerivation (finalAttrs: {
installPhase = ''
runHook preInstall
mkdir -p $out/share
cp -r -t $out/share .next node_modules dist public package.json jellyseerr-api.yml
cp -r -t $out/share .next node_modules dist public package.json seerr-api.yml
runHook postInstall
'';
postInstall = ''
mkdir -p $out/bin
makeWrapper '${nodejs}/bin/node' "$out/bin/jellyseerr" \
makeWrapper '${nodejs}/bin/node' "$out/bin/seerr" \
--add-flags "$out/share/dist/index.js" \
--chdir "$out/share" \
--set NODE_ENV production
'';
passthru = {
inherit (nixosTests) jellyseerr;
inherit (nixosTests) seerr;
updateScript = nix-update-script { };
};
meta = {
description = "Fork of overseerr for jellyfin support";
homepage = "https://github.com/Fallenbagel/jellyseerr";
longDescription = ''
Jellyseerr is a free and open source software application for managing
requests for your media library. It is a a fork of Overseerr built to
bring support for Jellyfin & Emby media servers!
'';
description = "Open-source media request and discovery manager for Jellyfin, Plex, and Emby";
homepage = "https://github.com/seerr-team/seerr";
license = lib.licenses.mit;
maintainers = [ lib.maintainers.camillemndn ];
maintainers = with lib.maintainers; [
camillemndn
fallenbagel
];
platforms = lib.platforms.linux;
mainProgram = "jellyseerr";
mainProgram = "seerr";
};
})

View File

@@ -953,6 +953,7 @@ mapAliases {
jdk24 = throw "OpenJDK 24 was removed as it has reached its end of life"; # Added 2025-10-04
jdk24_headless = throw "OpenJDK 24 was removed as it has reached its end of life"; # Added 2025-10-04
jellyfin-media-player = jellyfin-desktop; # Added 2025-12-14
jellyseerr = warnAlias "'jellyseerr' has been renamed to 'seerr'" seerr; # Added 2026-03-17
jesec-rtorrent = throw "'jesec-rtorrent' has been removed due to lack of maintenance upstream."; # Added 2025-11-20
jhentai = throw "'jhentai' has been removed, as it is unmaintained"; # Added 2026-01-25
jikespg = throw "'jikespg' has been removed due to lack of maintenance upstream."; # Added 2025-06-10