feat(actualbudget): add NixOS guest

This commit is contained in:
2026-08-10 21:50:22 -04:00
parent 55ed1bf5a9
commit ce12c90aff
2 changed files with 68 additions and 4 deletions

23
guests/actualbudget.nix Normal file
View File

@@ -0,0 +1,23 @@
args@{ my, ... }:
# Actual Budget in a NixOS guest, with durable state bind-mounted from the host.
my.guest {
name = "actualbudget";
interior = {
users.users.actual = {
isSystemUser = true;
uid = 20001;
group = "storage";
};
services.actual = {
enable = true;
openFirewall = true;
user = "actual";
group = "storage";
settings = {
port = 5006;
dataDir = "/var/lib/actual";
};
};
};
} args

View File

@@ -20,14 +20,42 @@
systemd.network = {
enable = true;
networks."10-uplink" = {
matchConfig.MACAddress = "78:55:36:07:af:49";
networkConfig.DHCP = "yes";
linkConfig.RequiredForOnline = "routable";
netdevs = {
"40-br-vlan20".netdevConfig = {
Name = "br-vlan20";
Kind = "bridge";
};
"40-vlan20" = {
netdevConfig = {
Name = "vlan20";
Kind = "vlan";
};
vlanConfig.Id = 20;
};
};
networks = {
"10-uplink" = {
matchConfig.MACAddress = "78:55:36:07:af:49";
networkConfig.DHCP = "yes";
vlan = [ "vlan20" ];
linkConfig.RequiredForOnline = "routable";
};
"40-vlan20" = {
matchConfig.Name = "vlan20";
networkConfig.Bridge = "br-vlan20";
linkConfig.RequiredForOnline = "no";
};
"40-br-vlan20" = {
matchConfig.Name = "br-vlan20";
linkConfig.RequiredForOnline = "no";
};
};
};
networking.useDHCP = false;
modules.network.vlans = [ 20 ];
boot.zfs.forceImportRoot = false;
modules.zfs = {
@@ -43,6 +71,19 @@
modules.git.enable = true;
modules.toolkit.enable = true;
guests.actualbudget = {
enable = true;
autoStart = false;
vlan = 20;
mac = "BC:24:11:C1:CD:28";
mounts."/var/lib/actual".hostPath = "/pikachu/data/actualbudget";
limits = {
memory = "2G";
cpu = "200%";
tasksMax = 512;
};
};
environment.systemPackages = with pkgs; [
pciutils
smartmontools