at 17.09-beta 2.0 kB view raw
1{ config, lib, pkgs, ... }: 2 3with lib; 4 5let 6 cfg = config.services.deluge; 7 cfg_web = config.services.deluge.web; 8 openFilesLimit = 4096; 9 10in { 11 options = { 12 services = { 13 deluge = { 14 enable = mkOption { 15 default = false; 16 description = "Start the Deluge daemon"; 17 }; 18 19 openFilesLimit = mkOption { 20 default = openFilesLimit; 21 example = 8192; 22 description = '' 23 Number of files to allow deluged to open. 24 ''; 25 }; 26 }; 27 28 deluge.web = { 29 enable = mkOption { 30 default = false; 31 description = '' 32 Start Deluge Web daemon. 33 ''; 34 }; 35 }; 36 }; 37 }; 38 39 config = mkIf cfg.enable { 40 41 systemd.services.deluged = { 42 after = [ "network.target" ]; 43 description = "Deluge BitTorrent Daemon"; 44 wantedBy = [ "multi-user.target" ]; 45 path = [ pkgs.pythonPackages.deluge ]; 46 serviceConfig = { 47 ExecStart = "${pkgs.pythonPackages.deluge}/bin/deluged -d"; 48 # To prevent "Quit & shutdown daemon" from working; we want systemd to manage it! 49 Restart = "on-success"; 50 User = "deluge"; 51 Group = "deluge"; 52 LimitNOFILE = cfg.openFilesLimit; 53 }; 54 }; 55 56 systemd.services.delugeweb = mkIf cfg_web.enable { 57 after = [ "network.target" ]; 58 description = "Deluge BitTorrent WebUI"; 59 wantedBy = [ "multi-user.target" ]; 60 path = [ pkgs.pythonPackages.deluge ]; 61 serviceConfig.ExecStart = "${pkgs.pythonPackages.deluge}/bin/deluge --ui web"; 62 serviceConfig.User = "deluge"; 63 serviceConfig.Group = "deluge"; 64 }; 65 66 environment.systemPackages = [ pkgs.pythonPackages.deluge ]; 67 68 users.extraUsers.deluge = { 69 group = "deluge"; 70 uid = config.ids.uids.deluge; 71 home = "/var/lib/deluge/"; 72 createHome = true; 73 description = "Deluge Daemon user"; 74 }; 75 76 users.extraGroups.deluge.gid = config.ids.gids.deluge; 77 }; 78}