1{
2 config,
3 lib,
4 pkgs,
5 ...
6}:
7
8let
9 cfg = config.services.freenet;
10 varDir = "/var/lib/freenet";
11in
12{
13 options = {
14 services.freenet = {
15 enable = lib.mkEnableOption "Freenet daemon";
16
17 nice = lib.mkOption {
18 type = lib.types.int;
19 default = 10;
20 description = "Set the nice level for the Freenet daemon";
21 };
22 };
23 };
24
25 config = lib.mkIf cfg.enable {
26 systemd.services.freenet = {
27 description = "Freenet daemon";
28 after = [ "network.target" ];
29 wantedBy = [ "multi-user.target" ];
30 serviceConfig = {
31 ExecStart = lib.getExe pkgs.freenet;
32 User = "freenet";
33 UMask = "0007";
34 WorkingDirectory = varDir;
35 Nice = cfg.nice;
36 };
37 };
38
39 users.users.freenet = {
40 group = "freenet";
41 description = "Freenet daemon user";
42 home = varDir;
43 createHome = true;
44 uid = config.ids.uids.freenet;
45 };
46
47 users.groups.freenet.gid = config.ids.gids.freenet;
48 };
49
50 meta.maintainers = with lib.maintainers; [ nagy ];
51}