diff options
Diffstat (limited to 'modules/webapps/peertube.nix')
-rw-r--r-- | modules/webapps/peertube.nix | 25 |
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 | ||