aboutsummaryrefslogtreecommitdiff
path: root/modules/webapps/peertube.nix
diff options
context:
space:
mode:
Diffstat (limited to 'modules/webapps/peertube.nix')
-rw-r--r--modules/webapps/peertube.nix25
1 files changed, 15 insertions, 10 deletions
diff --git a/modules/webapps/peertube.nix b/modules/webapps/peertube.nix
index 7c96076..89dcc67 100644
--- a/modules/webapps/peertube.nix
+++ b/modules/webapps/peertube.nix
@@ -39,6 +39,17 @@ in
39 Peertube package to use. 39 Peertube package to use.
40 ''; 40 '';
41 }; 41 };
42 # Output variables
43 systemdStateDirectory = lib.mkOption {
44 type = lib.types.str;
45 # Use ReadWritePaths= instead if varDir is outside of /var/lib
46 default = assert lib.strings.hasPrefix "/var/lib/" cfg.dataDir;
47 lib.strings.removePrefix "/var/lib/" cfg.dataDir;
48 description = ''
49 Adjusted Peertube data directory for systemd
50 '';
51 readOnly = true;
52 };
42 }; 53 };
43 54
44 config = lib.mkIf cfg.enable { 55 config = lib.mkIf cfg.enable {
@@ -68,6 +79,8 @@ in
68 path = [ pkgs.nodejs pkgs.bashInteractive pkgs.ffmpeg pkgs.openssl ]; 79 path = [ pkgs.nodejs pkgs.bashInteractive pkgs.ffmpeg pkgs.openssl ];
69 80
70 script = '' 81 script = ''
82 install -m 0750 -d ${cfg.dataDir}/config
83 ln -sf ${cfg.configFile} ${cfg.dataDir}/config/production.yaml
71 exec npm run start 84 exec npm run start
72 ''; 85 '';
73 86
@@ -75,6 +88,8 @@ in
75 User = cfg.user; 88 User = cfg.user;
76 Group = cfg.group; 89 Group = cfg.group;
77 WorkingDirectory = cfg.package; 90 WorkingDirectory = cfg.package;
91 StateDirectory = cfg.systemdStateDirectory;
92 StateDirectoryMode = 0750;
78 PrivateTmp = true; 93 PrivateTmp = true;
79 ProtectHome = true; 94 ProtectHome = true;
80 ProtectControlGroups = true; 95 ProtectControlGroups = true;
@@ -85,16 +100,6 @@ in
85 100
86 unitConfig.RequiresMountsFor = cfg.dataDir; 101 unitConfig.RequiresMountsFor = cfg.dataDir;
87 }; 102 };
88
89 system.activationScripts.peertube = {
90 deps = [ "users" ];
91 text = ''
92 install -m 0750 -o ${cfg.user} -g ${cfg.group} -d ${cfg.dataDir}
93 install -m 0750 -o ${cfg.user} -g ${cfg.group} -d ${cfg.dataDir}/config
94 ln -sf ${cfg.configFile} ${cfg.dataDir}/config/production.yaml
95 '';
96 };
97
98 }; 103 };
99} 104}
100 105