Compare commits
No commits in common. "3302af38b38ab61ea9de9f065ac213da3d8d2e58" and "67eee18d7f593f5fac6054d7173dc72ff68a2d15" have entirely different histories.
3302af38b3
...
67eee18d7f
3 changed files with 2 additions and 242 deletions
|
|
@ -226,7 +226,6 @@
|
||||||
postgresql = {
|
postgresql = {
|
||||||
enable = true;
|
enable = true;
|
||||||
adminUsers = ["leyla"];
|
adminUsers = ["leyla"];
|
||||||
impermanence.enable = false;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
# temp enable desktop environment for setup
|
# temp enable desktop environment for setup
|
||||||
|
|
@ -245,7 +244,6 @@
|
||||||
reverseProxy = {
|
reverseProxy = {
|
||||||
enable = true;
|
enable = true;
|
||||||
openFirewall = true;
|
openFirewall = true;
|
||||||
impermanence.enable = false;
|
|
||||||
acme = {
|
acme = {
|
||||||
enable = true;
|
enable = true;
|
||||||
email = "jan-leila@protonmail.com";
|
email = "jan-leila@protonmail.com";
|
||||||
|
|
@ -255,7 +253,6 @@
|
||||||
ollama = {
|
ollama = {
|
||||||
enable = true;
|
enable = true;
|
||||||
exposePort = true;
|
exposePort = true;
|
||||||
impermanence.enable = false;
|
|
||||||
|
|
||||||
environmentVariables = {
|
environmentVariables = {
|
||||||
OLLAMA_KEEP_ALIVE = "24h";
|
OLLAMA_KEEP_ALIVE = "24h";
|
||||||
|
|
@ -290,7 +287,6 @@
|
||||||
enable = true;
|
enable = true;
|
||||||
authKeyFile = config.sops.secrets."vpn-keys/tailscale-authkey/defiant".path;
|
authKeyFile = config.sops.secrets."vpn-keys/tailscale-authkey/defiant".path;
|
||||||
useRoutingFeatures = "server";
|
useRoutingFeatures = "server";
|
||||||
impermanence.enable = false;
|
|
||||||
extraUpFlags = [
|
extraUpFlags = [
|
||||||
"--advertise-exit-node"
|
"--advertise-exit-node"
|
||||||
"--advertise-routes=192.168.0.0/24"
|
"--advertise-routes=192.168.0.0/24"
|
||||||
|
|
@ -303,33 +299,24 @@
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
syncthing = {
|
syncthing.enable = true;
|
||||||
enable = true;
|
|
||||||
impermanence.enable = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
fail2ban = {
|
fail2ban.enable = true;
|
||||||
enable = true;
|
|
||||||
impermanence.enable = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
jellyfin = {
|
jellyfin = {
|
||||||
enable = true;
|
enable = true;
|
||||||
domain = "media.jan-leila.com";
|
domain = "media.jan-leila.com";
|
||||||
extraDomains = ["jellyfin.jan-leila.com"];
|
extraDomains = ["jellyfin.jan-leila.com"];
|
||||||
impermanence.enable = false;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
immich = {
|
immich = {
|
||||||
enable = true;
|
enable = true;
|
||||||
domain = "photos.jan-leila.com";
|
domain = "photos.jan-leila.com";
|
||||||
impermanence.enable = false;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
forgejo = {
|
forgejo = {
|
||||||
enable = true;
|
enable = true;
|
||||||
reverseProxy.domain = "git.jan-leila.com";
|
reverseProxy.domain = "git.jan-leila.com";
|
||||||
impermanence.enable = false;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
searx = {
|
searx = {
|
||||||
|
|
@ -340,7 +327,6 @@
|
||||||
actual = {
|
actual = {
|
||||||
enable = true;
|
enable = true;
|
||||||
domain = "budget.jan-leila.com";
|
domain = "budget.jan-leila.com";
|
||||||
impermanence.enable = false;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
home-assistant = {
|
home-assistant = {
|
||||||
|
|
@ -348,7 +334,6 @@
|
||||||
domain = "home.jan-leila.com";
|
domain = "home.jan-leila.com";
|
||||||
openFirewall = true;
|
openFirewall = true;
|
||||||
postgres.enable = true;
|
postgres.enable = true;
|
||||||
impermanence.enable = false;
|
|
||||||
|
|
||||||
extensions = {
|
extensions = {
|
||||||
sonos.enable = true;
|
sonos.enable = true;
|
||||||
|
|
@ -361,13 +346,11 @@
|
||||||
enable = true;
|
enable = true;
|
||||||
domain = "documents.jan-leila.com";
|
domain = "documents.jan-leila.com";
|
||||||
passwordFile = config.sops.secrets."services/paperless_password".path;
|
passwordFile = config.sops.secrets."services/paperless_password".path;
|
||||||
impermanence.enable = false;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
panoramax = {
|
panoramax = {
|
||||||
enable = false;
|
enable = false;
|
||||||
openFirewall = true;
|
openFirewall = true;
|
||||||
impermanence.enable = false;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
crab-hole = {
|
crab-hole = {
|
||||||
|
|
@ -375,7 +358,6 @@
|
||||||
port = 8085;
|
port = 8085;
|
||||||
openFirewall = true;
|
openFirewall = true;
|
||||||
show_doc = true;
|
show_doc = true;
|
||||||
impermanence.enable = false;
|
|
||||||
downstreams = {
|
downstreams = {
|
||||||
host = {
|
host = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
@ -391,38 +373,31 @@
|
||||||
mediaDir = "/srv/qbittorent";
|
mediaDir = "/srv/qbittorent";
|
||||||
openFirewall = true;
|
openFirewall = true;
|
||||||
webuiPort = 8084;
|
webuiPort = 8084;
|
||||||
impermanence.enable = false;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
sonarr = {
|
sonarr = {
|
||||||
enable = true;
|
enable = true;
|
||||||
openFirewall = true;
|
openFirewall = true;
|
||||||
impermanence.enable = false;
|
|
||||||
};
|
};
|
||||||
radarr = {
|
radarr = {
|
||||||
enable = true;
|
enable = true;
|
||||||
openFirewall = true;
|
openFirewall = true;
|
||||||
impermanence.enable = false;
|
|
||||||
};
|
};
|
||||||
bazarr = {
|
bazarr = {
|
||||||
enable = true;
|
enable = true;
|
||||||
openFirewall = true;
|
openFirewall = true;
|
||||||
impermanence.enable = false;
|
|
||||||
};
|
};
|
||||||
lidarr = {
|
lidarr = {
|
||||||
enable = true;
|
enable = true;
|
||||||
openFirewall = true;
|
openFirewall = true;
|
||||||
impermanence.enable = false;
|
|
||||||
};
|
};
|
||||||
jackett = {
|
jackett = {
|
||||||
enable = true;
|
enable = true;
|
||||||
openFirewall = true;
|
openFirewall = true;
|
||||||
impermanence.enable = false;
|
|
||||||
};
|
};
|
||||||
flaresolverr = {
|
flaresolverr = {
|
||||||
enable = true;
|
enable = true;
|
||||||
openFirewall = true;
|
openFirewall = true;
|
||||||
impermanence.enable = false;
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,5 @@
|
||||||
./hardware-configuration.nix
|
./hardware-configuration.nix
|
||||||
./configuration.nix
|
./configuration.nix
|
||||||
./packages.nix
|
./packages.nix
|
||||||
./legacy-impermanence.nix
|
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,214 +0,0 @@
|
||||||
# Legacy impermanence module for defiant
|
|
||||||
# This module contains all the impermanence configurations that were previously
|
|
||||||
# handled by individual service modules on the main branch. It allows us to
|
|
||||||
# merge the storage-refactor branch into main while keeping current functionality,
|
|
||||||
# and then migrate services one at a time to the new automated impermanence system.
|
|
||||||
#
|
|
||||||
# To migrate a service to the new system:
|
|
||||||
# 1. Remove the service's configuration from this file
|
|
||||||
# 2. Set `impermanence.enable = true` for that service in configuration.nix
|
|
||||||
# 3. Remove `impermanence.enable = false` from the service configuration
|
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
config = lib.mkIf config.storage.impermanence.enable {
|
|
||||||
environment.persistence."/persist/replicate/system/root" = {
|
|
||||||
enable = true;
|
|
||||||
hideMounts = true;
|
|
||||||
directories = lib.mkMerge [
|
|
||||||
# PostgreSQL
|
|
||||||
(lib.mkIf config.services.postgresql.enable [
|
|
||||||
{
|
|
||||||
directory = "/var/lib/postgresql/16";
|
|
||||||
user = "postgres";
|
|
||||||
group = "postgres";
|
|
||||||
}
|
|
||||||
])
|
|
||||||
|
|
||||||
# Reverse Proxy (ACME)
|
|
||||||
(lib.mkIf config.services.reverseProxy.enable [
|
|
||||||
{
|
|
||||||
directory = "/var/lib/acme";
|
|
||||||
user = "acme";
|
|
||||||
group = "acme";
|
|
||||||
}
|
|
||||||
])
|
|
||||||
|
|
||||||
# Ollama
|
|
||||||
(lib.mkIf config.services.ollama.enable [
|
|
||||||
{
|
|
||||||
directory = "/var/lib/private/ollama";
|
|
||||||
user = config.services.ollama.user;
|
|
||||||
group = config.services.ollama.group;
|
|
||||||
mode = "0700";
|
|
||||||
}
|
|
||||||
])
|
|
||||||
|
|
||||||
# Tailscale
|
|
||||||
(lib.mkIf config.services.tailscale.enable [
|
|
||||||
{
|
|
||||||
directory = "/var/lib/tailscale";
|
|
||||||
user = "root";
|
|
||||||
group = "root";
|
|
||||||
}
|
|
||||||
])
|
|
||||||
|
|
||||||
# Syncthing
|
|
||||||
(lib.mkIf config.services.syncthing.enable [
|
|
||||||
{
|
|
||||||
directory = "/mnt/sync";
|
|
||||||
user = "syncthing";
|
|
||||||
group = "syncthing";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
directory = "/etc/syncthing";
|
|
||||||
user = "syncthing";
|
|
||||||
group = "syncthing";
|
|
||||||
}
|
|
||||||
])
|
|
||||||
|
|
||||||
# Fail2ban
|
|
||||||
(lib.mkIf config.services.fail2ban.enable [
|
|
||||||
{
|
|
||||||
directory = "/var/lib/fail2ban";
|
|
||||||
user = "fail2ban";
|
|
||||||
group = "fail2ban";
|
|
||||||
}
|
|
||||||
])
|
|
||||||
|
|
||||||
# Jellyfin
|
|
||||||
(lib.mkIf config.services.jellyfin.enable [
|
|
||||||
{
|
|
||||||
directory = "/var/lib/jellyfin";
|
|
||||||
user = "jellyfin";
|
|
||||||
group = "jellyfin";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
directory = "/var/cache/jellyfin";
|
|
||||||
user = "jellyfin";
|
|
||||||
group = "jellyfin";
|
|
||||||
}
|
|
||||||
])
|
|
||||||
|
|
||||||
# Immich
|
|
||||||
(lib.mkIf config.services.immich.enable [
|
|
||||||
{
|
|
||||||
directory = "/var/lib/immich";
|
|
||||||
user = "immich";
|
|
||||||
group = "immich";
|
|
||||||
}
|
|
||||||
])
|
|
||||||
|
|
||||||
# Forgejo
|
|
||||||
(lib.mkIf config.services.forgejo.enable [
|
|
||||||
{
|
|
||||||
directory = "/var/lib/forgejo";
|
|
||||||
user = "forgejo";
|
|
||||||
group = "forgejo";
|
|
||||||
}
|
|
||||||
])
|
|
||||||
|
|
||||||
# Actual
|
|
||||||
(lib.mkIf config.services.actual.enable [
|
|
||||||
{
|
|
||||||
directory = "/var/lib/private/actual";
|
|
||||||
user = "actual";
|
|
||||||
group = "actual";
|
|
||||||
}
|
|
||||||
])
|
|
||||||
|
|
||||||
# Home Assistant
|
|
||||||
(lib.mkIf config.services.home-assistant.enable [
|
|
||||||
{
|
|
||||||
directory = "/var/lib/hass";
|
|
||||||
user = "hass";
|
|
||||||
group = "hass";
|
|
||||||
}
|
|
||||||
])
|
|
||||||
|
|
||||||
# Paperless
|
|
||||||
(lib.mkIf config.services.paperless.enable [
|
|
||||||
{
|
|
||||||
directory = "/var/lib/paperless";
|
|
||||||
user = "paperless";
|
|
||||||
group = "paperless";
|
|
||||||
}
|
|
||||||
])
|
|
||||||
|
|
||||||
# Crab-hole
|
|
||||||
(lib.mkIf config.services.crab-hole.enable [
|
|
||||||
{
|
|
||||||
directory = "/var/lib/private/crab-hole";
|
|
||||||
user = "crab-hole";
|
|
||||||
group = "crab-hole";
|
|
||||||
}
|
|
||||||
])
|
|
||||||
|
|
||||||
# qBittorrent
|
|
||||||
(lib.mkIf config.services.qbittorrent.enable [
|
|
||||||
{
|
|
||||||
directory = "/var/lib/qBittorrent/";
|
|
||||||
user = "qbittorrent";
|
|
||||||
group = "qbittorrent";
|
|
||||||
}
|
|
||||||
])
|
|
||||||
|
|
||||||
# Sonarr
|
|
||||||
(lib.mkIf config.services.sonarr.enable [
|
|
||||||
{
|
|
||||||
directory = "/var/lib/sonarr/.config/NzbDrone";
|
|
||||||
user = "sonarr";
|
|
||||||
group = "sonarr";
|
|
||||||
}
|
|
||||||
])
|
|
||||||
|
|
||||||
# Radarr
|
|
||||||
(lib.mkIf config.services.radarr.enable [
|
|
||||||
{
|
|
||||||
directory = "/var/lib/radarr/.config/Radarr";
|
|
||||||
user = "radarr";
|
|
||||||
group = "radarr";
|
|
||||||
}
|
|
||||||
])
|
|
||||||
|
|
||||||
# Bazarr
|
|
||||||
(lib.mkIf config.services.bazarr.enable [
|
|
||||||
{
|
|
||||||
directory = "/var/lib/bazarr";
|
|
||||||
user = "bazarr";
|
|
||||||
group = "bazarr";
|
|
||||||
}
|
|
||||||
])
|
|
||||||
|
|
||||||
# Lidarr
|
|
||||||
(lib.mkIf config.services.lidarr.enable [
|
|
||||||
{
|
|
||||||
directory = "/var/lib/lidarr/.config/Lidarr";
|
|
||||||
user = "lidarr";
|
|
||||||
group = "lidarr";
|
|
||||||
}
|
|
||||||
])
|
|
||||||
|
|
||||||
# Jackett
|
|
||||||
(lib.mkIf config.services.jackett.enable [
|
|
||||||
{
|
|
||||||
directory = "/var/lib/jackett/.config/Jackett";
|
|
||||||
user = "jackett";
|
|
||||||
group = "jackett";
|
|
||||||
}
|
|
||||||
])
|
|
||||||
|
|
||||||
# FlareSolverr
|
|
||||||
(lib.mkIf config.services.flaresolverr.enable [
|
|
||||||
{
|
|
||||||
directory = "/var/lib/flaresolverr";
|
|
||||||
user = "flaresolverr";
|
|
||||||
group = "flaresolverr";
|
|
||||||
}
|
|
||||||
])
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue