1# NixOS module for Freenet daemon
2
3{ config, lib, pkgs, ... }:
4
5with lib;
6
7let
8
9 cfg = config.services.freenet;
10 varDir = "/var/lib/freenet";
11
12in
13
14{
15
16 ### configuration
17
18 options = {
19
20 services.freenet = {
21
22 enable = mkOption {
23 type = types.bool;
24 default = false;
25 description = "Enable the Freenet daemon";
26 };
27
28 nice = mkOption {
29 type = types.int;
30 default = 10;
31 description = "Set the nice level for the Freenet daemon";
32 };
33
34 };
35
36 };
37
38 ### implementation
39
40 config = mkIf cfg.enable {
41
42 systemd.services.freenet = {
43 description = "Freenet daemon";
44 after = [ "network.target" ];
45 wantedBy = [ "multi-user.target" ];
46 serviceConfig.ExecStart = "${pkgs.freenet}/bin/freenet";
47 serviceConfig.User = "freenet";
48 serviceConfig.UMask = "0007";
49 serviceConfig.WorkingDirectory = varDir;
50 serviceConfig.Nice = cfg.nice;
51 };
52
53 users.extraUsers.freenet = {
54 group = "freenet";
55 description = "Freenet daemon user";
56 home = varDir;
57 createHome = true;
58 uid = config.ids.uids.freenet;
59 };
60
61 users.extraGroups.freenet.gid = config.ids.gids.freenet;
62 };
63
64}