nixos/actual: revert 452544 and allow specifying secrets using genJqSecretsReplacementSnippet (#457783)

This commit is contained in:
dish
2025-11-02 17:35:21 +00:00
committed by GitHub
+13 -14
View File
@@ -2,6 +2,7 @@
lib,
pkgs,
config,
utils,
...
}:
let
@@ -16,7 +17,6 @@ let
;
cfg = config.services.actual;
configFile = formatType.generate "config.json" cfg.settings;
dataDir = "/var/lib/actual";
formatType = pkgs.formats.json { };
@@ -32,19 +32,12 @@ in
description = "Whether to open the firewall for the specified port.";
};
environmentFile = mkOption {
type = types.nullOr types.path;
default = null;
description = ''
Environment file for specifying additional settings such as secrets.
See <https://actualbudget.org/docs/config/oauth-auth#environment-variables>.
'';
};
settings = mkOption {
default = { };
description = "Server settings, refer to [the documentation](https://actualbudget.org/docs/config/) for available options.";
description = ''
Server settings, refer to [the documentation](https://actualbudget.org/docs/config/) for available options.
You can specify secret values in this configuration by setting `somevalue._secret = "/path/to/file"` instead of setting `somevalue` directly.
'';
type = types.submodule {
freeformType = formatType.type;
@@ -78,15 +71,21 @@ in
description = "Actual server, a local-first personal finance app";
after = [ "network.target" ];
wantedBy = [ "multi-user.target" ];
environment.ACTUAL_CONFIG_PATH = configFile;
environment.ACTUAL_CONFIG_PATH = "/run/actual/config.json";
preStart = ''
# Generate config including secret values.
${utils.genJqSecretsReplacementSnippet cfg.settings "/run/actual/config.json"}
'';
serviceConfig = {
ExecStart = getExe cfg.package;
DynamicUser = true;
User = "actual";
Group = "actual";
StateDirectory = "actual";
RuntimeDirectory = "actual";
WorkingDirectory = dataDir;
EnvironmentFile = cfg.environmentFile;
LimitNOFILE = "1048576";
PrivateTmp = true;
PrivateDevices = true;