feat: fixed actual install

This commit is contained in:
Leyla Becker 2025-10-26 14:24:18 -05:00
parent 7ad6a83dfa
commit f72a6da013
3 changed files with 18 additions and 8 deletions

View file

@ -6,14 +6,18 @@
const = import ./const.nix; const = import ./const.nix;
dataDirectory = const.dataDirectory; dataDirectory = const.dataDirectory;
in { in {
options.services.actual = {
port = lib.mkOption {
type = lib.types.port;
description = "The port to listen on";
default = 5006;
};
};
config = lib.mkIf config.services.actual.enable { config = lib.mkIf config.services.actual.enable {
systemd.tmpfiles.rules = [
"d ${dataDirectory} 2770 actual actual"
];
services.actual = { services.actual = {
settings = { settings = {
ACTUAL_DATA_DIR = dataDirectory; port = config.services.actual.port;
dataDir = dataDirectory;
}; };
}; };
}; };

View file

@ -1,3 +1,3 @@
{ {
dataDirectory = "/var/lib/actual/"; dataDirectory = "/var/lib/private/actual";
} }

View file

@ -5,6 +5,8 @@
}: let }: let
const = import ./const.nix; const = import ./const.nix;
dataDirectory = const.dataDirectory; dataDirectory = const.dataDirectory;
# Strip /private from dataDirectory for assertion check (systemd DynamicUser adds /private automatically)
configDataDirectory = lib.strings.replaceStrings ["/var/lib/private"] ["/var/lib"] dataDirectory;
in { in {
options.services.actual = { options.services.actual = {
impermanence.enable = lib.mkOption { impermanence.enable = lib.mkOption {
@ -16,8 +18,12 @@ in {
config = lib.mkIf config.services.actual.impermanence.enable { config = lib.mkIf config.services.actual.impermanence.enable {
assertions = [ assertions = [
{ {
assertion = config.services.actual.settings.ACTUAL_DATA_DIR == dataDirectory; assertion = config.services.actual.settings.dataDir == dataDirectory;
message = "actual data location does not match persistence"; message = "actual data location does not match persistence\nconfig directory: ${config.services.actual.settings.dataDir}\npersistence directory: ${dataDirectory}";
}
{
assertion = config.systemd.services.actual.serviceConfig.DynamicUser or false;
message = "actual systemd service must have DynamicUser enabled to use private directory";
} }
]; ];
environment.persistence."/persist/system/root" = { environment.persistence."/persist/system/root" = {