vuls: init at 0.27.0
[NixPkgs.git] / nixos / modules / services / networking / amuled.nix
blobb41d4d629ec53271326425a83eccf5b22ac4e3d8
1 { config, lib, options, pkgs, ... }:
2 let
3   cfg = config.services.amule;
4   opt = options.services.amule;
5   user = if cfg.user != null then cfg.user else "amule";
6 in
10   ###### interface
12   options = {
14     services.amule = {
16       enable = lib.mkOption {
17         type = lib.types.bool;
18         default = false;
19         description = ''
20           Whether to run the AMule daemon. You need to manually run "amuled --ec-config" to configure the service for the first time.
21         '';
22       };
24       dataDir = lib.mkOption {
25         type = lib.types.str;
26         default = "/home/${user}/";
27         defaultText = lib.literalExpression ''
28           "/home/''${config.${opt.user}}/"
29         '';
30         description = ''
31           The directory holding configuration, incoming and temporary files.
32         '';
33       };
35       user = lib.mkOption {
36         type = lib.types.nullOr lib.types.str;
37         default = null;
38         description = ''
39           The user the AMule daemon should run as.
40         '';
41       };
43     };
45   };
48   ###### implementation
50   config = lib.mkIf cfg.enable {
52     users.users = lib.mkIf (cfg.user == null) [
53       { name = "amule";
54         description = "AMule daemon";
55         group = "amule";
56         uid = config.ids.uids.amule;
57       } ];
59     users.groups = lib.mkIf (cfg.user == null) [
60       { name = "amule";
61         gid = config.ids.gids.amule;
62       } ];
64     systemd.services.amuled = {
65       description = "AMule daemon";
66       wantedBy = [ "multi-user.target" ];
67       after = [ "network.target" ];
69       preStart = ''
70         mkdir -p ${cfg.dataDir}
71         chown ${user} ${cfg.dataDir}
72       '';
74       script = ''
75         ${pkgs.su}/bin/su -s ${pkgs.runtimeShell} ${user} \
76             -c 'HOME="${cfg.dataDir}" ${pkgs.amule-daemon}/bin/amuled'
77       '';
78     };
79   };