diff --git a/modules/module-list.nix b/modules/module-list.nix index 35da89c8df97..50c746081051 100644 --- a/modules/module-list.nix +++ b/modules/module-list.nix @@ -173,6 +173,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 000000000000..12b61d39109b --- /dev/null +++ b/modules/services/torrent/deluge.nix @@ -0,0 +1,64 @@ +{ config, pkgs, ... }: + +with pkgs.lib; + +let + 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 BitTorrent Daemon"; + wantedBy = [ "multi-user.target" ]; + path = [ pkgs.pythonPackages.deluge ]; + serviceConfig.ExecStart = "${pkgs.pythonPackages.deluge}/bin/deluged -d"; + serviceConfig.User = "deluge"; + serviceConfig.Group = "deluge"; + }; + + systemd.services.delugeweb = mkIf cfg_web.enable { + after = [ "network.target" ]; + description = "Deluge BitTorrent WebUI"; + wantedBy = [ "multi-user.target" ]; + path = [ pkgs.pythonPackages.deluge ]; + serviceConfig.ExecStart = "${pkgs.pythonPackages.deluge}/bin/deluge --ui web"; + serviceConfig.User = "deluge"; + serviceConfig.Group = "deluge"; + }; + + environment.systemPackages = [ pkgs.pythonPackages.deluge ]; + + users.extraUsers.deluge = { + group = "deluge"; + home = "/var/lib/deluge/"; + createHome = true; + description = "Deluge Daemon user"; + }; + + users.extraGroups.deluge = {}; + }; +}