···
{ config, lib, pkgs, ... }:
4
+
inherit (lib) generators literalExample mkEnableOption mkIf mkOption recursiveUpdate types;
cfg = config.services.zeronet;
6
+
dataDir = "/var/lib/zeronet";
7
+
configFile = pkgs.writeText "zeronet.conf" (generators.toINI {} (recursiveUpdate defaultSettings cfg.settings));
6
-
zConfFile = pkgs.writeTextFile {
7
-
name = "zeronet.conf";
11
-
data_dir = ${cfg.dataDir}
12
-
log_dir = ${cfg.logDir}
13
-
'' + lib.optionalString (cfg.port != null) ''
14
-
ui_port = ${toString cfg.port}
15
-
'' + lib.optionalString (cfg.fileserverPort != null) ''
16
-
fileserver_port = ${toString cfg.fileserverPort}
17
-
'' + lib.optionalString (cfg.torAlways) ''
19
-
'' + cfg.extraConfig;
14
+
fileserver_port = cfg.fileserverPort;
15
+
tor = if !cfg.tor then "disable" else if cfg.torAlways then "always" else "enable";
options.services.zeronet = {
enable = mkEnableOption "zeronet";
25
-
dataDir = mkOption {
27
-
default = "/var/lib/zeronet";
28
-
example = "/home/okina/zeronet";
29
-
description = "Path to the zeronet data directory.";
22
+
settings = mkOption {
23
+
type = with types; attrsOf (oneOf [ str int bool (listOf str) ]);
25
+
example = literalExample "global.tor = enable;";
34
-
default = "/var/log/zeronet";
35
-
example = "/home/okina/zeronet/log";
36
-
description = "Path to the zeronet log directory.";
28
+
<filename>zeronet.conf</filename> configuration. Refer to
29
+
<link xlink:href="https://zeronet.readthedocs.io/en/latest/faq/#is-it-possible-to-use-a-configuration-file"/>
30
+
for details on supported values;
40
-
type = types.nullOr types.int;
description = "Optional zeronet web UI port.";
···
description = "Use TOR for all zeronet traffic.";
67
-
extraConfig = mkOption {
72
-
Extra configuration. Contents will be added verbatim to the
73
-
configuration file at the end.
config = mkIf cfg.enable {
services.tor = mkIf cfg.tor {
CacheDirectoryGroupReadable 1
···
89
-
systemd.tmpfiles.rules = [
90
-
"d '${cfg.dataDir}' 750 zeronet zeronet - -"
91
-
"d '${cfg.logDir}' 750 zeronet zeronet - -"
systemd.services.zeronet = {
after = [ "network.target" (optionalString cfg.tor "tor.service") ];
wantedBy = [ "multi-user.target" ];
100
-
PrivateTmp = "yes";
103
-
ExecStart = "${pkgs.zeronet}/bin/zeronet --config_file ${zConfFile}";
108
-
groups.zeronet.gid = config.ids.gids.zeronet;
111
-
description = "zeronet service user";
112
-
home = cfg.dataDir;
115
-
extraGroups = mkIf cfg.tor [ "tor" ];
116
-
uid = config.ids.uids.zeronet;
83
+
StateDirectory = "zeronet";
84
+
SupplementaryGroups = mkIf cfg.tor [ "tor" ];
85
+
ExecStart = "${pkgs.zeronet}/bin/zeronet --config_file ${configFile}";
91
+
(mkRemovedOptionModule [ "services" "zeronet" "dataDir" ] "Zeronet will store data by default in /var/lib/zeronet")
92
+
(mkRemovedOptionModule [ "services" "zeronet" "logDir" ] "Zeronet will log by default in /var/lib/zeronet")
meta.maintainers = with maintainers; [ chiiruno ];