226 lines
5.8 KiB
Nix
226 lines
5.8 KiB
Nix
# 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";
|
|
}
|
|
{
|
|
directory = config.services.jellyfin.media_directory;
|
|
user = "jellyfin";
|
|
group = "jellyfin_media";
|
|
mode = "1770";
|
|
}
|
|
])
|
|
|
|
# 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";
|
|
}
|
|
{
|
|
directory = config.services.qbittorrent.mediaDir;
|
|
user = "qbittorrent";
|
|
group = "qbittorrent";
|
|
mode = "1775";
|
|
}
|
|
])
|
|
|
|
# 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";
|
|
}
|
|
])
|
|
];
|
|
};
|
|
};
|
|
}
|