From a6f0d984fed1888590c21d33754baec337b3727b Mon Sep 17 00:00:00 2001 From: Domen Kozar Date: Sun, 24 Feb 2013 17:33:48 +0100 Subject: [PATCH 1/6] Add deluge and deluge web services --- modules/misc/ids.nix | 2 + modules/module-list.nix | 1 + modules/services/torrent/deluge.nix | 62 +++++++++++++++++++++++++++++ 3 files changed, 65 insertions(+) create mode 100644 modules/services/torrent/deluge.nix diff --git a/modules/misc/ids.nix b/modules/misc/ids.nix index 218bd0ed47a..998cf59927d 100644 --- a/modules/misc/ids.nix +++ b/modules/misc/ids.nix @@ -75,6 +75,7 @@ in wwwrun = 54; spamd = 56; nslcd = 58; + deluge = 60; # When adding a uid, make sure it doesn't match an existing gid. @@ -132,6 +133,7 @@ in networkmanager = 57; nslcd = 58; scanner = 59; + deluge = 60; # When adding a gid, make sure it doesn't match an existing uid. diff --git a/modules/module-list.nix b/modules/module-list.nix index 208abb4ffaf..ba57c092c1e 100644 --- a/modules/module-list.nix +++ b/modules/module-list.nix @@ -172,6 +172,7 @@ ./services/system/kerberos.nix ./services/system/nscd.nix ./services/system/uptimed.nix + ./services/torrent/deluge.nix ./services/ttys/gpm.nix ./services/ttys/agetty.nix ./services/web-servers/apache-httpd/default.nix diff --git a/modules/services/torrent/deluge.nix b/modules/services/torrent/deluge.nix new file mode 100644 index 00000000000..78e352e40e2 --- /dev/null +++ b/modules/services/torrent/deluge.nix @@ -0,0 +1,62 @@ +{ config, pkgs, ... }: + +with pkgs.lib; + +let + uid = config.ids.uids.deluge; + gid = config.ids.gids.deluge; + cfg = config.services.deluge; + cfg_web = config.services.deluge.web; +in { + options = { + services.deluge = { + enable = mkOption { + default = false; + example = "true"; + description = '' + Start Deluge daemon. + ''; + }; + }; + + services.deluge.web = { + enable = mkOption { + default = false; + example = "true"; + description = '' + Start Deluge Web daemon. + ''; + }; + }; + }; + + config = mkIf cfg.enable { + + systemd.services.deluged = { + after = [ "network.target" ]; + description = "Deluge Daemon"; + wantedBy = [ "multi-user.target" ]; + path = [ pkgs.pythonPackages.deluge ]; + script = "deluged -d"; + }; + + systemd.services.delugeweb = mkIf cfg_web.enable { + after = [ "network.target" "deluged.service" ]; + description = "Deluge Web"; + wantedBy = [ "multi-user.target" ]; + wants = [ "deluged.service" ]; + path = [ pkgs.pythonPackages.deluge ]; + script = "deluge --ui web"; + }; + + environment.systemPackages = [ pkgs.pythonPackages.deluge ]; + + users.extraUsers.deluge = { + inherit uid; + group = "deluge"; + description = "Deluge Daemon user"; + }; + + users.extraGroups.deluge.gid = gid; + }; +} From 259fd8e34ac2992937bd0b6a45792a98f4f8af46 Mon Sep 17 00:00:00 2001 From: Domen Kozar Date: Mon, 25 Feb 2013 22:39:47 +0100 Subject: [PATCH 2/6] don't use quotes when setting example to true --- modules/services/torrent/deluge.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/services/torrent/deluge.nix b/modules/services/torrent/deluge.nix index 78e352e40e2..0a3b5c83ede 100644 --- a/modules/services/torrent/deluge.nix +++ b/modules/services/torrent/deluge.nix @@ -12,7 +12,7 @@ in { services.deluge = { enable = mkOption { default = false; - example = "true"; + example = true; description = '' Start Deluge daemon. ''; @@ -22,7 +22,7 @@ in { services.deluge.web = { enable = mkOption { default = false; - example = "true"; + example = true; description = '' Start Deluge Web daemon. ''; From 99edd5d575e3dd0305dee0db348a39484669fca4 Mon Sep 17 00:00:00 2001 From: Domen Kozar Date: Tue, 26 Feb 2013 22:53:52 +0100 Subject: [PATCH 3/6] run deluge under deluge user/group --- modules/services/torrent/deluge.nix | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/modules/services/torrent/deluge.nix b/modules/services/torrent/deluge.nix index 0a3b5c83ede..17e4ae69279 100644 --- a/modules/services/torrent/deluge.nix +++ b/modules/services/torrent/deluge.nix @@ -34,19 +34,23 @@ in { systemd.services.deluged = { after = [ "network.target" ]; - description = "Deluge Daemon"; + description = "Deluge BitTorrent Daemon"; wantedBy = [ "multi-user.target" ]; path = [ pkgs.pythonPackages.deluge ]; script = "deluged -d"; + serviceConfig.User = "deluge"; + serviceConfig.Group = "deluge"; }; systemd.services.delugeweb = mkIf cfg_web.enable { after = [ "network.target" "deluged.service" ]; - description = "Deluge Web"; + description = "Deluge BitTorrent WebUI"; wantedBy = [ "multi-user.target" ]; wants = [ "deluged.service" ]; path = [ pkgs.pythonPackages.deluge ]; script = "deluge --ui web"; + serviceConfig.User = "deluge"; + serviceConfig.Group = "deluge"; }; environment.systemPackages = [ pkgs.pythonPackages.deluge ]; @@ -54,6 +58,8 @@ in { users.extraUsers.deluge = { inherit uid; group = "deluge"; + home = "/var/lib/deluge/"; + createHome = true; description = "Deluge Daemon user"; }; From 71f4330d3fcdebdeff70fbd7a6c1b48ae43111b7 Mon Sep 17 00:00:00 2001 From: Domen Kozar Date: Wed, 27 Feb 2013 10:58:28 +0100 Subject: [PATCH 4/6] use path to deluge script correctly --- modules/services/torrent/deluge.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/services/torrent/deluge.nix b/modules/services/torrent/deluge.nix index 17e4ae69279..87c8029739f 100644 --- a/modules/services/torrent/deluge.nix +++ b/modules/services/torrent/deluge.nix @@ -37,7 +37,7 @@ in { description = "Deluge BitTorrent Daemon"; wantedBy = [ "multi-user.target" ]; path = [ pkgs.pythonPackages.deluge ]; - script = "deluged -d"; + script = "${pkgs.pythonPackages.deluge}/bin/deluged -d"; serviceConfig.User = "deluge"; serviceConfig.Group = "deluge"; }; @@ -48,7 +48,7 @@ in { wantedBy = [ "multi-user.target" ]; wants = [ "deluged.service" ]; path = [ pkgs.pythonPackages.deluge ]; - script = "deluge --ui web"; + script = "${pkgs.pythonPackages.deluge}/bin/deluge --ui web"; serviceConfig.User = "deluge"; serviceConfig.Group = "deluge"; }; From bb89f2eb99a2d4357425aa534317e35d1da4db30 Mon Sep 17 00:00:00 2001 From: Domen Kozar Date: Wed, 27 Feb 2013 20:06:10 +0100 Subject: [PATCH 5/6] We don't need an explicit uid/gid. We also don't need web to depend on deluged, since it can be started before it. --- modules/misc/ids.nix | 2 -- modules/services/torrent/deluge.nix | 8 ++------ 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/modules/misc/ids.nix b/modules/misc/ids.nix index 998cf59927d..218bd0ed47a 100644 --- a/modules/misc/ids.nix +++ b/modules/misc/ids.nix @@ -75,7 +75,6 @@ in wwwrun = 54; spamd = 56; nslcd = 58; - deluge = 60; # When adding a uid, make sure it doesn't match an existing gid. @@ -133,7 +132,6 @@ in networkmanager = 57; nslcd = 58; scanner = 59; - deluge = 60; # When adding a gid, make sure it doesn't match an existing uid. diff --git a/modules/services/torrent/deluge.nix b/modules/services/torrent/deluge.nix index 87c8029739f..0ef5c8fe319 100644 --- a/modules/services/torrent/deluge.nix +++ b/modules/services/torrent/deluge.nix @@ -3,8 +3,6 @@ with pkgs.lib; let - uid = config.ids.uids.deluge; - gid = config.ids.gids.deluge; cfg = config.services.deluge; cfg_web = config.services.deluge.web; in { @@ -43,10 +41,9 @@ in { }; systemd.services.delugeweb = mkIf cfg_web.enable { - after = [ "network.target" "deluged.service" ]; + after = [ "network.target" ]; description = "Deluge BitTorrent WebUI"; wantedBy = [ "multi-user.target" ]; - wants = [ "deluged.service" ]; path = [ pkgs.pythonPackages.deluge ]; script = "${pkgs.pythonPackages.deluge}/bin/deluge --ui web"; serviceConfig.User = "deluge"; @@ -56,13 +53,12 @@ in { environment.systemPackages = [ pkgs.pythonPackages.deluge ]; users.extraUsers.deluge = { - inherit uid; group = "deluge"; home = "/var/lib/deluge/"; createHome = true; description = "Deluge Daemon user"; }; - users.extraGroups.deluge.gid = gid; + users.extraGroups.deluge = {}; }; } From c50d7cbc8d63dcfb88295fcf378bf2b6ffd9cba3 Mon Sep 17 00:00:00 2001 From: Domen Kozar Date: Wed, 27 Feb 2013 20:13:14 +0100 Subject: [PATCH 6/6] use ExecStart instead of script, this way we get rid of systemd wrapper scripts --- modules/services/torrent/deluge.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/services/torrent/deluge.nix b/modules/services/torrent/deluge.nix index 0ef5c8fe319..12b61d39109 100644 --- a/modules/services/torrent/deluge.nix +++ b/modules/services/torrent/deluge.nix @@ -35,7 +35,7 @@ in { description = "Deluge BitTorrent Daemon"; wantedBy = [ "multi-user.target" ]; path = [ pkgs.pythonPackages.deluge ]; - script = "${pkgs.pythonPackages.deluge}/bin/deluged -d"; + serviceConfig.ExecStart = "${pkgs.pythonPackages.deluge}/bin/deluged -d"; serviceConfig.User = "deluge"; serviceConfig.Group = "deluge"; }; @@ -45,7 +45,7 @@ in { description = "Deluge BitTorrent WebUI"; wantedBy = [ "multi-user.target" ]; path = [ pkgs.pythonPackages.deluge ]; - script = "${pkgs.pythonPackages.deluge}/bin/deluge --ui web"; + serviceConfig.ExecStart = "${pkgs.pythonPackages.deluge}/bin/deluge --ui web"; serviceConfig.User = "deluge"; serviceConfig.Group = "deluge"; };