|
6 | 6 | }: |
7 | 7 | with lib; let |
8 | 8 | cfg = config.services.pointer; |
| 9 | + tomlFormat = pkgs.formats.toml {}; |
| 10 | + repoServerConfig = recursiveUpdate cfg.repoServer.config { |
| 11 | + global.state_dir = cfg.repoServer.stateDirectory; |
| 12 | + }; |
| 13 | + repoServerConfigFile = tomlFormat.generate "pointer-reposerver.toml" repoServerConfig; |
| 14 | + repoServerArgs = ["--config" repoServerConfigFile] ++ cfg.repoServer.extraArgs; |
9 | 15 |
|
10 | 16 | # Helper function to create environment variables for a service component |
11 | 17 | mkEnv = { |
@@ -100,6 +106,41 @@ in { |
100 | 106 | description = "Sets the GC_INTERVAL_SECS environment variable for the 'pointer-backend' service."; |
101 | 107 | }; |
102 | 108 | }; |
| 109 | + |
| 110 | + # --- Reposerver Configuration --- |
| 111 | + repoServer = { |
| 112 | + enable = mkEnableOption "the Pointer reposerver component."; |
| 113 | + |
| 114 | + config = mkOption { |
| 115 | + type = tomlFormat.type; |
| 116 | + default = {}; |
| 117 | + description = "Inline reposerver TOML configuration rendered by the module."; |
| 118 | + }; |
| 119 | + |
| 120 | + extraArgs = mkOption { |
| 121 | + type = types.listOf types.str; |
| 122 | + default = []; |
| 123 | + description = "Additional command-line arguments passed to reposerver."; |
| 124 | + }; |
| 125 | + |
| 126 | + user = mkOption { |
| 127 | + type = types.str; |
| 128 | + default = "pointer"; |
| 129 | + description = "User account for the reposerver systemd service."; |
| 130 | + }; |
| 131 | + |
| 132 | + group = mkOption { |
| 133 | + type = types.str; |
| 134 | + default = "pointer"; |
| 135 | + description = "Group for the reposerver systemd service."; |
| 136 | + }; |
| 137 | + |
| 138 | + stateDirectory = mkOption { |
| 139 | + type = types.str; |
| 140 | + default = "/home/pointer"; |
| 141 | + description = "State directory for pointer-reposerver; also used as WorkingDirectory and written to global.state_dir."; |
| 142 | + }; |
| 143 | + }; |
103 | 144 | }; |
104 | 145 |
|
105 | 146 | config = mkIf cfg.enable { |
@@ -143,6 +184,20 @@ in { |
143 | 184 | }; |
144 | 185 | }; |
145 | 186 |
|
| 187 | + # --- Systemd Service for Reposerver --- |
| 188 | + systemd.services.pointer-reposerver = mkIf cfg.repoServer.enable { |
| 189 | + description = "Pointer Reposerver Service"; |
| 190 | + wantedBy = ["multi-user.target"]; |
| 191 | + after = ["network.target"]; |
| 192 | + serviceConfig = { |
| 193 | + ExecStart = "${cfg.package}/bin/pointer-reposerver ${escapeShellArgs repoServerArgs}"; |
| 194 | + User = cfg.repoServer.user; |
| 195 | + Group = cfg.repoServer.group; |
| 196 | + WorkingDirectory = cfg.repoServer.stateDirectory; |
| 197 | + Restart = "always"; |
| 198 | + }; |
| 199 | + }; |
| 200 | + |
146 | 201 | users.groups.pointer = {}; |
147 | 202 | users.users.pointer = { |
148 | 203 | createHome = true; |
|
0 commit comments