feat(actualbudget): add NixOS guest
This commit is contained in:
23
guests/actualbudget.nix
Normal file
23
guests/actualbudget.nix
Normal 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
|
||||||
@@ -20,14 +20,42 @@
|
|||||||
|
|
||||||
systemd.network = {
|
systemd.network = {
|
||||||
enable = true;
|
enable = true;
|
||||||
networks."10-uplink" = {
|
netdevs = {
|
||||||
matchConfig.MACAddress = "78:55:36:07:af:49";
|
"40-br-vlan20".netdevConfig = {
|
||||||
networkConfig.DHCP = "yes";
|
Name = "br-vlan20";
|
||||||
linkConfig.RequiredForOnline = "routable";
|
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;
|
networking.useDHCP = false;
|
||||||
|
|
||||||
|
modules.network.vlans = [ 20 ];
|
||||||
|
|
||||||
boot.zfs.forceImportRoot = false;
|
boot.zfs.forceImportRoot = false;
|
||||||
|
|
||||||
modules.zfs = {
|
modules.zfs = {
|
||||||
@@ -43,6 +71,19 @@
|
|||||||
modules.git.enable = true;
|
modules.git.enable = true;
|
||||||
modules.toolkit.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; [
|
environment.systemPackages = with pkgs; [
|
||||||
pciutils
|
pciutils
|
||||||
smartmontools
|
smartmontools
|
||||||
|
|||||||
Reference in New Issue
Block a user