added secureHost flag

This commit is contained in:
Danilo Reyes 2025-09-28 10:52:27 -06:00
parent d704e0ee13
commit a376428118
24 changed files with 100 additions and 87 deletions

View File

@ -1,6 +1,7 @@
{
pkgs,
config,
lib,
...
}:
{
@ -35,14 +36,16 @@
supportedFeatures = config.my.nix.features;
}
];
sops.secrets."vps/home/private".sopsFile = ../../secrets/wireguard.yaml;
sops.secrets."vps/home/private" = lib.mkIf config.my.secureHost {
sopsFile = ../../secrets/wireguard.yaml;
};
networking = {
hostName = "server";
firewall = {
allowedUDPPorts = config.networking.firewall.allowedTCPPorts;
interfaces.wg0.allowedTCPPorts = [ 8081 ];
};
wireguard.interfaces.wg0 = {
wireguard.interfaces.wg0 = lib.mkIf config.my.secureHost {
ips = [ "${config.my.ips.wg-server}/32" ];
privateKeyFile = config.sops.secrets."vps/home/private".path;
peers = [

View File

@ -7,7 +7,7 @@
}:
{
imports = [ ./base.nix ];
config = {
config = lib.mkIf config.my.secureHost {
sops.secrets = {
cloudflare-api.sopsFile = ../../secrets/env.yaml;
dns = {

View File

@ -5,7 +5,7 @@ let
in
{
options.my.servers.atticd = setup.mkOptions "atticd" "cache" 2343;
config = lib.mkIf cfg.enable {
config = lib.mkIf (cfg.enable && config.my.secureHost) {
sops.secrets."private_cache_keys/atticd".sopsFile = ../../secrets/keys.yaml;
services.atticd = {
enable = true;

View File

@ -1,7 +1,10 @@
{ lib, config, ... }:
{
options.my.servers.firefly-iii.enable = lib.mkEnableOption "enable";
config = lib.mkIf (config.my.servers.firefly-iii.enable && config.my.servers.postgres.enable) {
config =
lib.mkIf
(config.my.servers.firefly-iii.enable && config.my.servers.postgres.enable && config.my.secureHost)
{
sops.secrets.firefly-iii-keyfile = {
owner = config.users.users.firefly-iii.name;
inherit (config.users.users.firefly-iii) group;

View File

@ -2,7 +2,7 @@
let
cfg = config.my.servers.flame;
cfgS = config.my.servers.flameSecret;
enable = cfg.enable || cfgS.enable;
enable = (cfg.enable || cfgS.enable) && config.my.secureHost;
setup = import ./setup.nix { inherit lib config; };
in
{
@ -10,12 +10,14 @@ in
flame = setup.mkOptions "flame" "start" 5005;
flameSecret = setup.mkOptions "flameSecret" "qampqwn4wprhqny8h8zj" 5007;
};
config = {
config = lib.mkIf enable {
networking.firewall.allowedTCPPorts = lib.mkIf (!cfg.isLocal || !cfgS.isLocal) [
cfg.port
cfgS.port
];
sops.secrets = lib.mkIf enable { flame.sopsFile = ../../secrets/env.yaml; };
sops.secrets = {
flame.sopsFile = ../../secrets/env.yaml;
};
virtualisation.oci-containers.containers = lib.mkIf enable {
flame = lib.mkIf cfg.enable {
autoStart = true;
@ -45,11 +47,9 @@ in
};
};
};
services.nginx = {
virtualHosts = lib.mkIf (cfg.enableProxy || cfgS.enableProxy) {
"${cfg.host}" = setup.proxyReverse cfg;
"${cfgS.host}" = setup.proxyReverse cfgS;
};
services.nginx.virtualHosts = lib.mkIf enable {
"${cfg.host}" = lib.mkIf cfg.enableProxy (setup.proxyReverse cfg);
"${cfgS.host}" = lib.mkIf cfgS.enableProxy (setup.proxyReverse cfgS);
};
};
}

View File

@ -8,7 +8,7 @@ let
cfg = config.my.servers.gitea;
in
{
config = lib.mkIf cfg.enable {
config = lib.mkIf (cfg.enable && config.my.secureHost) {
services.gitea-actions-runner.instances.nixos = {
inherit (cfg) url enable;
name = "${config.networking.hostName}-nixos";

View File

@ -8,7 +8,7 @@ let
cfg = config.my.servers.gitea;
in
{
config = lib.mkIf cfg.enable {
config = lib.mkIf (cfg.enable && config.my.secureHost) {
services.gitea-actions-runner.instances.ryujinx = {
inherit (cfg) url enable;
name = "${config.networking.hostName}-ryujinx";

View File

@ -14,9 +14,9 @@ in
./gitea-actions-runners/nixos.nix
];
options.my.servers.gitea = setup.mkOptions "gitea" "git" 9083;
config = {
sops.secrets = lib.mkIf cfg.enable { gitea.sopsFile = ../../secrets/env.yaml; };
services.gitea = lib.mkIf cfg.enable {
config = lib.mkIf (cfg.enable && config.my.secureHost) {
sops.secrets.gitea.sopsFile = ../../secrets/env.yaml;
services.gitea = {
enable = true;
domain = cfg.host;
rootUrl = cfg.url;

View File

@ -5,7 +5,7 @@ let
in
{
options.my.servers.homepage = setup.mkOptions "homepage" "home" 8082;
config = {
config = lib.mkIf config.my.secureHost {
sops.secrets = lib.mkIf cfg.enable {
homepage.sopsFile = ../../secrets/homepage.yaml;
"private-ca/pem" = {

View File

@ -5,8 +5,8 @@ let
in
{
options.my.servers.kavita = setup.mkOptions "kavita" "library" config.services.kavita.settings.Port;
config = {
sops.secrets.kavita-token = lib.mkIf cfg.enable {
config = lib.mkIf (cfg.enable && config.my.secureHost) {
sops.secrets.kavita-token = {
owner = config.users.users.kavita.name;
inherit (config.users.users.kavita) group;
};
@ -18,7 +18,7 @@ in
"piracy"
];
};
services.kavita = lib.mkIf cfg.enable {
services.kavita = {
enable = true;
tokenKeyFile = config.sops.secrets.kavita-token.path;
};

View File

@ -5,9 +5,9 @@ let
in
{
options.my.servers.maloja = setup.mkOptions "maloja" "maloja" 42010;
config = {
sops.secrets = lib.mkIf cfg.enable { maloja.sopsFile = ../../secrets/env.yaml; };
virtualisation.oci-containers.containers.maloja = lib.mkIf cfg.enable {
config = lib.mkIf (cfg.enable && config.my.secureHost) {
sops.secrets.maloja.sopsFile = ../../secrets/env.yaml;
virtualisation.oci-containers.containers.maloja = {
image = "krateng/maloja:3.2.3";
ports = [ "${toString cfg.port}:${toString cfg.port}" ];
environmentFiles = [ config.sops.secrets.maloja.path ];

View File

@ -5,11 +5,10 @@ let
in
{
options.my.servers.mealie = setup.mkOptions "mealie" "mealie" 9925;
config = {
sops.secrets = lib.mkIf cfg.enable { mealie.sopsFile = ../../secrets/env.yaml; };
services.mealie = lib.mkIf cfg.enable {
enable = true;
inherit (cfg) port;
config = lib.mkIf (cfg.enable && config.my.secureHost) {
sops.secrets.mealie.sopsFile = ../../secrets/env.yaml;
services.mealie = {
inherit (cfg) port enable;
settings = {
TZ = config.my.timeZone;
DEFAULT_GROUP = "Home";

View File

@ -5,9 +5,9 @@ let
in
{
options.my.servers.multi-scrobbler = setup.mkOptions "multi-scrobbler" "scrobble" 9078;
config = {
sops.secrets = lib.mkIf cfg.enable { multi-scrobbler.sopsFile = ../../secrets/env.yaml; };
virtualisation.oci-containers.containers.multi-scrobbler = lib.mkIf cfg.enable {
config = lib.mkIf (cfg.enable && config.my.secureHost) {
sops.secrets.multi-scrobbler.sopsFile = ../../secrets/env.yaml;
virtualisation.oci-containers.containers.multi-scrobbler = {
image = "foxxmd/multi-scrobbler:0.9.11";
ports = [ "${toString cfg.port}:${toString cfg.port}" ];
environmentFiles = [ config.sops.secrets.multi-scrobbler.path ];

View File

@ -39,7 +39,7 @@ in
collabora = setup.mkOptions "collabora" "collabora" 9980;
go-vod.enable = lib.mkEnableOption "enable";
};
config = lib.mkIf (cfg.enable && config.my.servers.postgres.enable) {
config = lib.mkIf (cfg.enable && config.my.servers.postgres.enable && config.my.secureHost) {
sops.secrets.nextcloud-adminpass = {
owner = config.users.users.nextcloud.name;
inherit (config.users.users.nextcloud) group;

View File

@ -10,7 +10,7 @@ let
in
{
options.my.servers.nix-serve = setup.mkOptions "nix-serve" "cache" 5000;
config = lib.mkIf cfg.enable {
config = lib.mkIf (cfg.enable && config.my.secureHost) {
sops.secrets."private_cache_keys/miniserver".sopsFile = ../../secrets/keys.yaml;
services.nix-serve = {
enable = true;

View File

@ -5,8 +5,10 @@ let
in
{
options.my.servers.radarr = setup.mkOptions "radarr" "movies" 7878;
config.services.radarr = lib.mkIf cfg.enable {
config = lib.mkIf (cfg.enable && config.my.secureHost) {
services.radarr = {
enable = true;
group = "piracy";
};
};
}

View File

@ -5,10 +5,10 @@ let
in
{
options.my.servers.readeck = setup.mkOptions "readeck" "laters" 9546;
config = {
config = lib.mkIf (cfg.enable && config.my.secureHost) {
sops.secrets.readeck.sopsFile = ../../secrets/env.yaml;
services.readeck = {
inherit (cfg) enable;
enable = true;
environmentFile = config.sops.secrets.readeck.path;
settings = {
main = {

View File

@ -5,7 +5,10 @@ let
in
{
options.my.servers.ryot = setup.mkOptions "ryot" "tracker" 8765;
config = lib.mkIf (config.my.servers.ryot.enable && config.my.servers.postgres.enable) {
config =
lib.mkIf
(config.my.servers.ryot.enable && config.my.servers.postgres.enable && config.my.secureHost)
{
sops.secrets.ryot.sopsFile = ../../secrets/env.yaml;
virtualisation.oci-containers.containers.ryot = {
image = "ghcr.io/ignisda/ryot:v9.2.0";

View File

@ -5,9 +5,12 @@ let
in
{
options.my.servers.shiori = setup.mkOptions "shiori" "bookmarks" 4368;
config = lib.mkIf (config.my.servers.shiori.enable && config.my.servers.postgres.enable) {
sops.secrets = lib.mkIf cfg.enable { shiori.sopsFile = ../../secrets/env.yaml; };
services.shiori = lib.mkIf cfg.enable {
config =
lib.mkIf
(config.my.servers.shiori.enable && config.my.servers.postgres.enable && config.my.secureHost)
{
sops.secrets.shiori.sopsFile = ../../secrets/env.yaml;
services.shiori = {
inherit (cfg) port;
enable = true;
environmentFile = config.sops.secrets.shiori.path;

View File

@ -5,13 +5,13 @@ let
in
{
options.my.servers.stash = setup.mkOptions "stash" "xxx" 9999;
config = {
sops.secrets = lib.mkIf cfg.enable {
config = lib.mkIf (cfg.enable && config.my.secureHost) {
sops.secrets = {
"stash/password".sopsFile = ../../secrets/env.yaml;
"stash/jwt".sopsFile = ../../secrets/env.yaml;
"stash/session".sopsFile = ../../secrets/env.yaml;
};
services.stash = lib.mkIf cfg.enable {
services.stash = {
enable = true;
group = "piracy";
mutableSettings = true;

View File

@ -22,12 +22,12 @@ in
synapse = setup.mkOptions "synapse" "pYLemuAfsrzNBaH77xSu" 8008;
element = setup.mkOptions "element" "55a608953f6d64c199" 5345;
};
config = {
config = lib.mkIf (cfg.enable && config.my.secureHost) {
my.servers = {
synapse = { inherit domain; };
element = { inherit domain; };
};
sops.secrets = lib.mkIf cfg.enable {
sops.secrets = {
synapse = {
sopsFile = ../../secrets/env.yaml;
owner = "matrix-synapse";
@ -50,7 +50,7 @@ in
};
};
networking.firewall.allowedTCPPorts = lib.mkIf (!cfg.isLocal) [ cfg.port ];
services = lib.mkIf cfg.enable {
services = {
matrix-synapse = {
enable = true;
extraConfigFiles = [

View File

@ -10,9 +10,9 @@ let
in
{
options.my.servers.vaultwarden = setup.mkOptions "vaultwarden" "vault" 8222;
config = lib.mkIf (cfg.enable && config.my.servers.postgres.enable) {
sops.secrets = lib.mkIf cfg.enable { vaultwarden.sopsFile = ../../secrets/env.yaml; };
services.vaultwarden = lib.mkIf cfg.enable {
config = lib.mkIf (cfg.enable && config.my.servers.postgres.enable && config.my.secureHost) {
sops.secrets.vaultwarden.sopsFile = ../../secrets/env.yaml;
services.vaultwarden = {
enable = true;
dbBackend = "postgresql";
package = pkgs.vaultwarden;

View File

@ -7,7 +7,7 @@ let
cfg = config.my.servers;
in
{
config = lib.mkIf cfg.nextcloud.enable or cfg.gitea.enable {
config = lib.mkIf (config.my.secureHost && (cfg.nextcloud.enable or cfg.gitea.enable)) {
sops.secrets.smtp-password = { };
programs.msmtp = {
enable = true;

View File

@ -10,7 +10,7 @@ let
in
{
options.my.services.wireguard.enable = lib.mkEnableOption "enable";
config = lib.mkIf config.my.services.wireguard.enable {
config = lib.mkIf (config.my.services.wireguard.enable && config.my.secureHost) {
sops.secrets."wireguard/private".sopsFile = ../../secrets/wireguard.yaml;
networking = {
firewall.allowedUDPPorts = [ port ];