refactor: moved nixos modules to dendrite pattern

This commit is contained in:
Leyla Becker 2026-04-07 15:39:45 -05:00
parent df8dd110ad
commit 0ea11e0236
219 changed files with 4802 additions and 4820 deletions

View file

@ -0,0 +1,25 @@
{...}: {
flake.nixosModules.actual-service = {
lib,
config,
...
}: let
dataDirectory = "/var/lib/private/actual";
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 {
services.actual = {
settings = {
port = config.services.actual.port;
dataDir = dataDirectory;
};
};
};
};
}

View file

@ -0,0 +1,12 @@
{config, ...}: let
mod = config.flake.nixosModules;
in {
flake.nixosModules.actual = {
imports = [
mod.actual-service
mod.actual-proxy
mod.actual-fail2ban
mod.actual-storage
];
};
}

View file

@ -0,0 +1,11 @@
{...}: {
flake.nixosModules.actual-fail2ban = {
lib,
config,
...
}: {
config = lib.mkIf (config.services.actual.enable && config.services.fail2ban.enable) {
# TODO: configuration for fail2ban for actual
};
};
}

View file

@ -0,0 +1,36 @@
{...}: {
flake.nixosModules.actual-proxy = {
lib,
config,
...
}: {
options.services.actual = {
domain = lib.mkOption {
type = lib.types.str;
description = "domain that actual will be hosted at";
default = "actual.arpa";
};
extraDomains = lib.mkOption {
type = lib.types.listOf lib.types.str;
description = "extra domains that should be configured for actual";
default = [];
};
reverseProxy.enable = lib.mkOption {
type = lib.types.bool;
default = config.services.actual.enable && config.services.reverseProxy.enable;
};
};
config = lib.mkIf config.services.actual.reverseProxy.enable {
services.reverseProxy.services.actual = {
target = "http://localhost:${toString config.services.actual.settings.port}";
domain = config.services.actual.domain;
extraDomains = config.services.actual.extraDomains;
settings = {
forwardHeaders.enable = true;
};
};
};
};
}

View file

@ -0,0 +1,23 @@
{...}: {
flake.nixosModules.actual-storage = {
lib,
config,
...
}: let
dataDirectory = "/var/lib/private/actual";
in {
options.services.actual.impermanence.enable = lib.mkOption {
type = lib.types.bool;
default = config.services.actual.enable && config.storage.impermanence.enable;
};
config = lib.mkIf config.services.actual.enable {
storage.datasets.replicate."system/root" = {
directories."${dataDirectory}" = lib.mkIf config.services.actual.impermanence.enable {
owner.name = "actual";
group.name = "actual";
};
};
};
};
}