Files
nix-config/modules/nixos/services/actual/default.nix
mjallen18 03f6b730cf kek
2026-04-01 13:21:25 -05:00

48 lines
1.2 KiB
Nix

{
config,
pkgs,
lib,
namespace,
...
}:
with lib;
let
name = "actual";
cfg = config.${namespace}.services.${name};
actualConfig = lib.${namespace}.mkModule {
inherit config name;
description = "Actual Personal Finance Planner";
options = { };
moduleConfig = {
services.actual = {
enable = true;
openFirewall = cfg.openFirewall;
settings = {
trustedProxies = [ config.${namespace}.network.ipv4.address ];
port = cfg.port;
serverFiles = "${cfg.configDir}/${name}/server-files";
userFiles = "${cfg.configDir}/${name}/user-files";
dataDir = "${cfg.configDir}/${name}";
};
};
systemd.services = lib.mkIf cfg.createUser {
actual = {
environment.ACTUAL_CONFIG_PATH = lib.mkForce "/run/actual/config.json";
serviceConfig = {
ExecStart = lib.mkForce "${lib.getExe pkgs.actual-server} --config /run/actual/config.json";
WorkingDirectory = lib.mkForce "${cfg.configDir}/${name}";
StateDirectoryMode = lib.mkForce 700;
DynamicUser = lib.mkForce false;
ProtectSystem = lib.mkForce "full";
};
};
};
};
};
in
{
imports = [ actualConfig ];
}