From 005731f1d5d40e621b39f73481dfa4a0811e9a74 Mon Sep 17 00:00:00 2001 From: TheWanderingCrow Date: Tue, 3 Feb 2026 11:52:30 -0500 Subject: [PATCH] convert actualbudget to quadlet --- hosts/nixos/HandlerOne/default.nix | 2 +- .../actualbudget/default.nix | 39 ++++++++++--------- 2 files changed, 22 insertions(+), 19 deletions(-) rename modules/{services => quadlets}/actualbudget/default.nix (75%) diff --git a/hosts/nixos/HandlerOne/default.nix b/hosts/nixos/HandlerOne/default.nix index f2c3b17..6a5f81a 100644 --- a/hosts/nixos/HandlerOne/default.nix +++ b/hosts/nixos/HandlerOne/default.nix @@ -43,11 +43,11 @@ "modules/quadlets" "modules/quadlets/booklore" "modules/quadlets/frigate" + "modules/quadlets/actualbudget" # Hosted services "modules/services/system-logging/prometheus-server.nix" "modules/services/mealie" - "modules/services/actualbudget" "modules/services/mqtt" "modules/services/lubelogger" "modules/services/trilium" diff --git a/modules/services/actualbudget/default.nix b/modules/quadlets/actualbudget/default.nix similarity index 75% rename from modules/services/actualbudget/default.nix rename to modules/quadlets/actualbudget/default.nix index 3cf82cf..823939d 100644 --- a/modules/services/actualbudget/default.nix +++ b/modules/quadlets/actualbudget/default.nix @@ -1,4 +1,5 @@ { + lib, inputs, config, ... @@ -6,6 +7,8 @@ let volumePath = "/overseer/services"; sopsFolder = builtins.toString inputs.nix-secrets + "/sops"; + serverPort = builtins.toString (lib.custom.autoport "serverActualbudget"); + apiPort = builtins.toString (lib.custom.autoport "apiActualbudget"); in { nixpkgs.overlays = [ inputs.actualbudget-report.overlays.default ]; @@ -54,11 +57,12 @@ in }; templates = { + # ACTUAL_OPENID_DISCOVERY_URL=https://auth.wanderingcrow.net/.well-known/openid-configuration + # ACTUAL_OPENID_CLIENT_ID=${config.sops.placeholder."actualbudget/client-id"} + # ACTUAL_OPENID_CLIENT_SECRET=${config.sops.placeholder."actualbudget/client-secret"} + # ACTUAL_OPENID_SERVER_HOSTNAME=https://budget.wanderingcrow.net "actualbudget-env".content = '' - ACTUAL_OPENID_DISCOVERY_URL=https://auth.wanderingcrow.net/.well-known/openid-configuration - ACTUAL_OPENID_CLIENT_ID=${config.sops.placeholder."actualbudget/client-id"} - ACTUAL_OPENID_CLIENT_SECRET=${config.sops.placeholder."actualbudget/client-secret"} - ACTUAL_OPENID_SERVER_HOSTNAME=https://budget.wanderingcrow.net + ACTUAL_PORT=80 ''; "actualbudget-api-env".content = '' ACTUAL_SERVER_URL=https://budget.wanderingcrow.net @@ -82,31 +86,30 @@ in enable = true; virtualHosts = { "budget.wanderingcrow.net".extraConfig = '' - reverse_proxy http://10.88.0.12 + reverse_proxy http://localhost:${serverPort} ''; "api.budget.wanderingcrow.net".extraConfig = '' - reverse_proxy http://10.88.0.13:5007 + reverse_proxy http://localhost:${apiPort} ''; }; }; - virtualisation.oci-containers = { - backend = "podman"; + virtualisation.quadlet = { containers = { - "actualbudget" = { - image = "actualbudget/actual-server:25.10.0"; + actualbudget.containerConfig = { + image = "actualbudget/actual-server:26.2.0"; volumes = [ "${volumePath}/actualbudget:/data" ]; - extraOptions = [ "--ip=10.88.0.12" ]; - environment = { - ACTUAL_PORT = "80"; - }; environmentFiles = [ config.sops.templates."actualbudget-env".path ]; - + publishPorts = [ + "${serverPort}:80" + ]; }; - "actualbudget-api" = { - image = "jhonderson/actual-http-api:25.10.0"; + actualbudget-api.containerConfig = { + image = "jhonderson/actual-http-api:26.2.0"; volumes = [ "${volumePath}/actualbudget-api:/data" ]; - extraOptions = [ "--ip=10.88.0.13" ]; environmentFiles = [ config.sops.templates."actualbudget-api-env".path ]; + publishPorts = [ + "${serverPort}:5006" + ]; }; }; };