diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index 6bccd253500a..0accee36034c 100644 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -427,7 +427,7 @@ ./services/misc/parsoid.nix ./services/misc/phd.nix ./services/misc/plex.nix - ./services/misc/plexpy.nix + ./services/misc/tautulli.nix ./services/misc/pykms.nix ./services/misc/radarr.nix ./services/misc/redmine.nix diff --git a/nixos/modules/rename.nix b/nixos/modules/rename.nix index 1e6557e1f0e0..7fb58a2b8002 100644 --- a/nixos/modules/rename.nix +++ b/nixos/modules/rename.nix @@ -186,6 +186,9 @@ with lib; # parsoid (mkRemovedOptionModule [ "services" "parsoid" "interwikis" ] [ "services" "parsoid" "wikis" ]) + # plexpy / tautulli + (mkRenamedOptionModule [ "services" "plexpy" ] [ "services" "tautulli" ]) + # piwik was renamed to matomo (mkRenamedOptionModule [ "services" "piwik" "enable" ] [ "services" "matomo" "enable" ]) (mkRenamedOptionModule [ "services" "piwik" "webServerUser" ] [ "services" "matomo" "webServerUser" ]) diff --git a/nixos/modules/services/misc/plexpy.nix b/nixos/modules/services/misc/tautulli.nix similarity index 50% rename from nixos/modules/services/misc/plexpy.nix rename to nixos/modules/services/misc/tautulli.nix index 2a589fdfb27f..50e450366478 100644 --- a/nixos/modules/services/misc/plexpy.nix +++ b/nixos/modules/services/misc/tautulli.nix @@ -3,73 +3,69 @@ with lib; let - cfg = config.services.plexpy; + cfg = config.services.tautulli; in { options = { - services.plexpy = { - enable = mkEnableOption "PlexPy Plex Monitor"; + services.tautulli = { + enable = mkEnableOption "Tautulli Plex Monitor"; dataDir = mkOption { type = types.str; default = "/var/lib/plexpy"; - description = "The directory where PlexPy stores its data files."; + description = "The directory where Tautulli stores its data files."; }; configFile = mkOption { type = types.str; default = "/var/lib/plexpy/config.ini"; - description = "The location of PlexPy's config file."; + description = "The location of Tautulli's config file."; }; port = mkOption { type = types.int; default = 8181; - description = "TCP port where PlexPy listens."; + description = "TCP port where Tautulli listens."; }; user = mkOption { type = types.str; default = "plexpy"; - description = "User account under which PlexPy runs."; + description = "User account under which Tautulli runs."; }; group = mkOption { type = types.str; default = "nogroup"; - description = "Group under which PlexPy runs."; + description = "Group under which Tautulli runs."; }; package = mkOption { type = types.package; - default = pkgs.plexpy; - defaultText = "pkgs.plexpy"; + default = pkgs.tautulli; + defaultText = "pkgs.tautulli"; description = '' - The PlexPy package to use. + The Tautulli package to use. ''; }; }; }; config = mkIf cfg.enable { - systemd.services.plexpy = { - description = "PlexPy Plex Monitor"; + systemd.tmpfiles.rules = [ + "d '${cfg.dataDir}' - ${cfg.user} ${cfg.group} - -" + ]; + + systemd.services.tautulli = { + description = "Tautulli Plex Monitor"; after = [ "network.target" ]; wantedBy = [ "multi-user.target" ]; - preStart = '' - test -d "${cfg.dataDir}" || { - echo "Creating initial PlexPy data directory in \"${cfg.dataDir}\"." - mkdir -p "${cfg.dataDir}" - chown ${cfg.user}:${cfg.group} "${cfg.dataDir}" - } - ''; serviceConfig = { Type = "simple"; User = cfg.user; Group = cfg.group; - PermissionsStartOnly = "true"; GuessMainPID = "false"; - ExecStart = "${cfg.package}/bin/plexpy --datadir ${cfg.dataDir} --config ${cfg.configFile} --port ${toString cfg.port} --pidfile ${cfg.dataDir}/plexpy.pid --nolaunch"; + ExecStart = "${cfg.package}/bin/tautulli --datadir ${cfg.dataDir} --config ${cfg.configFile} --port ${toString cfg.port} --pidfile ${cfg.dataDir}/tautulli.pid --nolaunch"; Restart = "on-failure"; }; }; diff --git a/pkgs/servers/plexpy/default.nix b/pkgs/servers/plexpy/default.nix deleted file mode 100644 index 2875ecc52404..000000000000 --- a/pkgs/servers/plexpy/default.nix +++ /dev/null @@ -1,41 +0,0 @@ -{stdenv, fetchFromGitHub, python}: - -stdenv.mkDerivation rec { - version = "1.4.25"; - pname = "plexpy"; - name = "${pname}-${version}"; - - src = fetchFromGitHub { - owner = "JonnyWong16"; - repo = pname; - rev = "v${version}"; - sha256 = "0a4ynrfamlwkgqil4n61v47p21czxpjdzg0mias4kdjam2nnwnjx"; - }; - - buildPhase = ":"; - - installPhase = '' - mkdir -p $out - cp -R * $out/ - - # Remove superfluous Python checks from main script; - # prepend shebang - echo "#!${python.interpreter}" > $out/PlexPy.py - tail -n +7 PlexPy.py >> $out/PlexPy.py - - mkdir $out/bin - # Can't just symlink to the main script, since it uses __file__ to - # import bundled packages and manage the service - echo "#!/bin/bash" > $out/bin/plexpy - echo "$out/PlexPy.py \$*" >> $out/bin/plexpy - chmod +x $out/bin/plexpy - ''; - - meta = with stdenv.lib; { - description = "A Python based monitoring and tracking tool for Plex Media Server."; - homepage = http://jonnywong16.github.io/plexpy/; - license = licenses.gpl3; - platforms = platforms.linux; - maintainers = with stdenv.lib.maintainers; [ csingley ]; - }; -} diff --git a/pkgs/servers/tautulli/default.nix b/pkgs/servers/tautulli/default.nix new file mode 100644 index 000000000000..5dcd958b799f --- /dev/null +++ b/pkgs/servers/tautulli/default.nix @@ -0,0 +1,55 @@ +{stdenv, fetchFromGitHub, python }: + +stdenv.mkDerivation rec { + version = "2.1.26"; + pname = "Tautulli"; + name = "${pname}-${version}"; + + pythonPath = [ python.pkgs.setuptools ]; + buildInputs = [ python.pkgs.setuptools ]; + nativeBuildInputs = [ python.pkgs.wrapPython ]; + + src = fetchFromGitHub { + owner = "Tautulli"; + repo = pname; + rev = "v${version}"; + sha256 = "1gq13dazbqbzdb0wfw87maprr9nva357zdj8x0lfrbasi3h5522q"; + }; + + buildPhase = ":"; + + installPhase = '' + mkdir -p $out + cp -R * $out/ + + # Remove the PlexPy.py compatibility file as it won't work after wrapping. + # We still have the plexpy executable in bin for compatibility. + rm $out/PlexPy.py + + # Remove superfluous Python checks from main script; + # prepend shebang + echo "#!${python.interpreter}" > $out/Tautulli.py + tail -n +7 Tautulli.py >> $out/Tautulli.py + + + mkdir $out/bin + # Can't just symlink to the main script, since it uses __file__ to + # import bundled packages and manage the service + echo "#!/bin/bash" > $out/bin/tautulli + echo "$out/Tautulli.py \$*" >> $out/bin/tautulli + chmod +x $out/bin/tautulli + + # Creat backwards compatibility symlink to bin/plexpy + ln -s $out/bin/tautulli $out/bin/plexpy + + wrapPythonProgramsIn "$out" "$out $pythonPath" + ''; + + meta = with stdenv.lib; { + description = "A Python based monitoring and tracking tool for Plex Media Server."; + homepage = https://tautulli.com/; + license = licenses.gpl3; + platforms = platforms.linux; + maintainers = with stdenv.lib.maintainers; [ csingley ]; + }; +} diff --git a/pkgs/top-level/aliases.nix b/pkgs/top-level/aliases.nix index 59eb707c8af5..96396acb9e62 100644 --- a/pkgs/top-level/aliases.nix +++ b/pkgs/top-level/aliases.nix @@ -234,6 +234,7 @@ mapAliases ({ pidginwindowmerge = pidgin-window-merge; # added 2018-01-08 piwik = matomo; # added 2018-01-16 pltScheme = racket; # just to be sure + plexpy = tautulli; # plexpy got renamed to tautulli, added 2019-02-22 pmtools = acpica-tools; # added 2018-11-01 poppler_qt5 = libsForQt5.poppler; # added 2015-12-19 postgresql94 = postgresql_9_4; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 6f25783a71d7..6414f0023224 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -4928,7 +4928,7 @@ in plex = callPackage ../servers/plex { }; - plexpy = callPackage ../servers/plexpy { python = python2; }; + tautulli = callPackage ../servers/tautulli { python = python2; }; ploticus = callPackage ../tools/graphics/ploticus { libpng = libpng12;