storage-refactor #9

Open
jan-leila wants to merge 40 commits from storage-refactor into main
63 changed files with 81 additions and 78 deletions
Showing only changes of commit 1eb66d1c31 - Show all commits

View file

@ -4,7 +4,7 @@
... ...
}: { }: {
config = lib.mkIf (config.impermanence.enable) { config = lib.mkIf (config.impermanence.enable) {
home.persistence."/persist/home" = { home.persistence."/persist/replicate/home" = {
directories = [ directories = [
"desktop" "desktop"
"downloads" "downloads"

View file

@ -26,7 +26,7 @@ in {
# If impermanence is not enabled for this user but system impermanence is enabled, # If impermanence is not enabled for this user but system impermanence is enabled,
# persist the entire home directory as fallback # persist the entire home directory as fallback
(lib.mkIf (osConfig.storage.impermanence.enable && !cfg.enable && cfg.fallbackPersistence.enable) { (lib.mkIf (osConfig.storage.impermanence.enable && !cfg.enable && cfg.fallbackPersistence.enable) {
home.persistence."/persist/home" = { home.persistence."/persist/replicate/home" = {
directories = ["."]; directories = ["."];
}; };
}) })

View file

@ -96,7 +96,7 @@
} }
) )
(lib.mkIf config.impermanence.enable { (lib.mkIf config.impermanence.enable {
home.persistence."/persist/home" = { home.persistence."/persist/replicate/home" = {
files = lib.lists.flatten ( files = lib.lists.flatten (
builtins.map (hostKey: [".ssh/${hostKey.path}" ".ssh/${hostKey.path}.pub"]) config.programs.openssh.hostKeys builtins.map (hostKey: [".ssh/${hostKey.path}" ".ssh/${hostKey.path}.pub"]) config.programs.openssh.hostKeys
); );

View file

@ -4,7 +4,7 @@
... ...
}: { }: {
config = lib.mkIf (config.programs.anki.enable && config.impermanence.enable) { config = lib.mkIf (config.programs.anki.enable && config.impermanence.enable) {
home.persistence."/persist/home" = { home.persistence."/persist/replicate/home" = {
directories = [ directories = [
".local/share/Anki2" ".local/share/Anki2"
]; ];

View file

@ -16,7 +16,7 @@
} }
( (
lib.mkIf config.impermanence.enable { lib.mkIf config.impermanence.enable {
home.persistence."/persist/home" = { home.persistence."/persist/replicate/home" = {
directories = [ directories = [
"${config.xdg.configHome}/Bitwarden" "${config.xdg.configHome}/Bitwarden"
]; ];

View file

@ -16,7 +16,7 @@
} }
( (
lib.mkIf config.impermanence.enable { lib.mkIf config.impermanence.enable {
home.persistence."/persist/home" = { home.persistence."/persist/replicate/home" = {
directories = [ directories = [
"${config.xdg.configHome}/bruno/" "${config.xdg.configHome}/bruno/"
]; ];

View file

@ -16,7 +16,7 @@
} }
( (
lib.mkIf config.impermanence.enable { lib.mkIf config.impermanence.enable {
home.persistence."/persist/home" = { home.persistence."/persist/replicate/home" = {
directories = [ directories = [
"${config.xdg.configHome}/calibre" "${config.xdg.configHome}/calibre"
]; ];

View file

@ -16,7 +16,7 @@
} }
( (
lib.mkIf config.impermanence.enable { lib.mkIf config.impermanence.enable {
home.persistence."/persist/home" = { home.persistence."/persist/replicate/home" = {
directories = [ directories = [
"${config.xdg.dataHome}/DaVinciResolve" "${config.xdg.dataHome}/DaVinciResolve"
"${config.xdg.configHome}/blackmagic" "${config.xdg.configHome}/blackmagic"

View file

@ -16,7 +16,7 @@
} }
( (
lib.mkIf config.impermanence.enable { lib.mkIf config.impermanence.enable {
home.persistence."/persist/home" = { home.persistence."/persist/replicate/home" = {
directories = [ directories = [
"${config.xdg.dataHome}/DBeaverData/" "${config.xdg.dataHome}/DBeaverData/"
]; ];

View file

@ -16,7 +16,7 @@
} }
( (
lib.mkIf config.impermanence.enable { lib.mkIf config.impermanence.enable {
home.persistence."/persist/home" = { home.persistence."/persist/replicate/home" = {
directories = [ directories = [
"${config.xdg.configHome}/discord/" "${config.xdg.configHome}/discord/"
]; ];

View file

@ -25,7 +25,7 @@
}; };
in { in {
config = lib.mkIf (config.programs.firefox.enable && config.impermanence.enable) { config = lib.mkIf (config.programs.firefox.enable && config.impermanence.enable) {
home.persistence."/persist/home" = lib.mkMerge ( home.persistence."/persist/replicate/home" = lib.mkMerge (
( (
lib.attrsets.mapAttrsToList lib.attrsets.mapAttrsToList
(profile: _: buildProfilePersistence profile) (profile: _: buildProfilePersistence profile)

View file

@ -16,7 +16,7 @@
} }
( (
lib.mkIf config.impermanence.enable { lib.mkIf config.impermanence.enable {
home.persistence."/persist/home" = { home.persistence."/persist/replicate/home" = {
directories = [ directories = [
"${config.xdg.configHome}/FreeCAD" "${config.xdg.configHome}/FreeCAD"
]; ];

View file

@ -16,7 +16,7 @@
} }
( (
lib.mkIf config.impermanence.enable { lib.mkIf config.impermanence.enable {
home.persistence."/persist/home" = { home.persistence."/persist/replicate/home" = {
directories = [ directories = [
"${config.xdg.configHome}/GIMP" "${config.xdg.configHome}/GIMP"
]; ];

View file

@ -16,7 +16,7 @@
} }
( (
lib.mkIf config.impermanence.enable { lib.mkIf config.impermanence.enable {
home.persistence."/persist/home" = { home.persistence."/persist/replicate/home" = {
directories = [ directories = [
# configuration # configuration
"${config.xdg.configHome}/JetBrains/" "${config.xdg.configHome}/JetBrains/"

View file

@ -16,7 +16,7 @@
} }
( (
lib.mkIf config.impermanence.enable { lib.mkIf config.impermanence.enable {
home.persistence."/persist/home" = { home.persistence."/persist/replicate/home" = {
directories = [ directories = [
"${config.xdg.configHome}/inkscape" "${config.xdg.configHome}/inkscape"
]; ];

View file

@ -23,7 +23,7 @@ in {
} }
( (
lib.mkIf config.impermanence.enable { lib.mkIf config.impermanence.enable {
home.persistence."/persist/home" = { home.persistence."/persist/replicate/home" = {
directories = [ directories = [
"${config.xdg.configHome}/kdenliverc" "${config.xdg.configHome}/kdenliverc"
"${config.xdg.dataHome}/kdenlive" "${config.xdg.dataHome}/kdenlive"

View file

@ -16,7 +16,7 @@
} }
( (
lib.mkIf config.impermanence.enable { lib.mkIf config.impermanence.enable {
home.persistence."/persist/home" = { home.persistence."/persist/replicate/home" = {
directories = [ directories = [
"${config.xdg.configHome}/kritarc" "${config.xdg.configHome}/kritarc"
"${config.xdg.dataHome}/krita" "${config.xdg.dataHome}/krita"

View file

@ -16,7 +16,7 @@
} }
( (
lib.mkIf config.impermanence.enable { lib.mkIf config.impermanence.enable {
home.persistence."/persist/home" = { home.persistence."/persist/replicate/home" = {
directories = [ directories = [
"${config.xdg.configHome}/libreoffice" "${config.xdg.configHome}/libreoffice"
]; ];

View file

@ -30,7 +30,7 @@
} }
( (
lib.mkIf config.impermanence.enable { lib.mkIf config.impermanence.enable {
home.persistence."/persist/home" = { home.persistence."/persist/replicate/home" = {
directories = [ directories = [
".MakeMKV" ".MakeMKV"
]; ];

View file

@ -17,7 +17,7 @@ in {
} }
( (
mkIf config.impermanence.enable { mkIf config.impermanence.enable {
home.persistence."/persist/home" = { home.persistence."/persist/replicate/home" = {
directories = [ directories = [
"${config.xdg.configHome}/mapillary-uploader" "${config.xdg.configHome}/mapillary-uploader"
"${config.xdg.dataHome}/mapillary-uploader" "${config.xdg.dataHome}/mapillary-uploader"

View file

@ -6,7 +6,7 @@
config = lib.mkIf config.programs.obs-studio.enable (lib.mkMerge [ config = lib.mkIf config.programs.obs-studio.enable (lib.mkMerge [
( (
lib.mkIf config.impermanence.enable { lib.mkIf config.impermanence.enable {
home.persistence."/persist/home" = { home.persistence."/persist/replicate/home" = {
directories = [ directories = [
"${config.xdg.configHome}/obs-studio" "${config.xdg.configHome}/obs-studio"
]; ];

View file

@ -6,7 +6,7 @@
config = lib.mkIf config.programs.obsidian.enable (lib.mkMerge [ config = lib.mkIf config.programs.obsidian.enable (lib.mkMerge [
( (
lib.mkIf config.impermanence.enable { lib.mkIf config.impermanence.enable {
home.persistence."/persist/home" = { home.persistence."/persist/replicate/home" = {
directories = [ directories = [
"${config.xdg.configHome}/obsidian" "${config.xdg.configHome}/obsidian"
]; ];

View file

@ -23,7 +23,7 @@ in {
} }
( (
lib.mkIf config.impermanence.enable { lib.mkIf config.impermanence.enable {
home.persistence."/persist/home" = { home.persistence."/persist/replicate/home" = {
directories = [ directories = [
"${config.xdg.configHome}/olympus" "${config.xdg.configHome}/olympus"
"${config.xdg.dataHome}/olympus" "${config.xdg.dataHome}/olympus"

View file

@ -16,7 +16,7 @@
} }
( (
lib.mkIf config.impermanence.enable { lib.mkIf config.impermanence.enable {
home.persistence."/persist/home" = { home.persistence."/persist/replicate/home" = {
directories = [ directories = [
"${config.xdg.configHome}/OpenRGB" "${config.xdg.configHome}/OpenRGB"
]; ];

View file

@ -16,7 +16,7 @@
} }
( (
lib.mkIf config.impermanence.enable { lib.mkIf config.impermanence.enable {
home.persistence."/persist/home" = { home.persistence."/persist/replicate/home" = {
directories = [ directories = [
"${config.xdg.configHome}/MusicBrainz" "${config.xdg.configHome}/MusicBrainz"
]; ];

View file

@ -16,7 +16,7 @@
} }
( (
lib.mkIf config.impermanence.enable { lib.mkIf config.impermanence.enable {
home.persistence."/persist/home" = { home.persistence."/persist/replicate/home" = {
directories = [ directories = [
"${config.xdg.configHome}/ProStudioMasters" "${config.xdg.configHome}/ProStudioMasters"
]; ];

View file

@ -16,7 +16,7 @@
} }
( (
lib.mkIf config.impermanence.enable { lib.mkIf config.impermanence.enable {
home.persistence."/persist/home" = { home.persistence."/persist/replicate/home" = {
directories = [ directories = [
"${config.xdg.configHome}/protonvpn" "${config.xdg.configHome}/protonvpn"
"${config.xdg.configHome}/Proton" "${config.xdg.configHome}/Proton"

View file

@ -16,7 +16,7 @@
} }
( (
lib.mkIf config.impermanence.enable { lib.mkIf config.impermanence.enable {
home.persistence."/persist/home" = { home.persistence."/persist/replicate/home" = {
directories = [ directories = [
"${config.xdg.configHome}/qBittorrent" "${config.xdg.configHome}/qBittorrent"
]; ];

View file

@ -16,7 +16,7 @@
} }
( (
lib.mkIf config.impermanence.enable { lib.mkIf config.impermanence.enable {
home.persistence."/persist/home" = { home.persistence."/persist/replicate/home" = {
directories = [ directories = [
"${config.xdg.configHome}/qFlipper" "${config.xdg.configHome}/qFlipper"
]; ];

View file

@ -16,7 +16,7 @@
} }
( (
lib.mkIf config.impermanence.enable { lib.mkIf config.impermanence.enable {
home.persistence."/persist/home" = { home.persistence."/persist/replicate/home" = {
directories = [ directories = [
"${config.xdg.configHome}/Signal" "${config.xdg.configHome}/Signal"
]; ];

View file

@ -18,7 +18,7 @@
} }
( (
lib.mkIf config.impermanence.enable { lib.mkIf config.impermanence.enable {
home.persistence."/persist/home" = { home.persistence."/persist/replicate/home" = {
directories = [ directories = [
{ {
directory = "${config.xdg.dataHome}/Steam"; directory = "${config.xdg.dataHome}/Steam";

View file

@ -16,7 +16,7 @@
} }
( (
lib.mkIf config.impermanence.enable { lib.mkIf config.impermanence.enable {
home.persistence."/persist/home" = { home.persistence."/persist/replicate/home" = {
directories = [ directories = [
"${config.xdg.dataHome}/torbrowser" "${config.xdg.dataHome}/torbrowser"
]; ];

View file

@ -16,7 +16,7 @@
} }
( (
lib.mkIf config.impermanence.enable { lib.mkIf config.impermanence.enable {
home.persistence."/persist/home" = { home.persistence."/persist/replicate/home" = {
directories = [ directories = [
"${config.xdg.configHome}/chromium" "${config.xdg.configHome}/chromium"
]; ];

View file

@ -16,7 +16,7 @@
} }
( (
lib.mkIf config.impermanence.enable { lib.mkIf config.impermanence.enable {
home.persistence."/persist/home" = { home.persistence."/persist/replicate/home" = {
directories = [ directories = [
"${config.xdg.configHome}/via" "${config.xdg.configHome}/via"
"${config.xdg.dataHome}/via" "${config.xdg.dataHome}/via"

View file

@ -17,7 +17,7 @@
} }
( (
lib.mkIf config.impermanence.enable { lib.mkIf config.impermanence.enable {
home.persistence."/persist/home" = { home.persistence."/persist/replicate/home" = {
directories = [ directories = [
{ {
directory = ".vmware"; directory = ".vmware";

View file

@ -20,7 +20,7 @@
# TODO: placeholder to configure a unique dataset for this service # TODO: placeholder to configure a unique dataset for this service
}) })
(lib.mkIf config.services.ollama.impermanence.enable { (lib.mkIf config.services.ollama.impermanence.enable {
storage.impermanence.datasets."persist/system/root" = { storage.impermanence.datasets."persist/replicate/system/root" = {
directories."/var/lib/private/ollama" = { directories."/var/lib/private/ollama" = {
enable = true; enable = true;
owner.name = config.services.ollama.user; owner.name = config.services.ollama.user;

View file

@ -29,7 +29,7 @@ in {
# TODO: placeholder to configure a unique dataset for this service # TODO: placeholder to configure a unique dataset for this service
}) })
(lib.mkIf config.services.actual.impermanence.enable { (lib.mkIf config.services.actual.impermanence.enable {
storage.impermanence.datasets."persist/system/root" = { storage.impermanence.datasets."persist/replicate/system/root" = {
directories."${dataDirectory}" = { directories."${dataDirectory}" = {
owner.name = "actual"; owner.name = "actual";
group.name = "actual"; group.name = "actual";

View file

@ -24,7 +24,7 @@ in {
# TODO: placeholder to configure a unique dataset for this service # TODO: placeholder to configure a unique dataset for this service
}) })
(lib.mkIf config.services.bazarr.impermanence.enable { (lib.mkIf config.services.bazarr.impermanence.enable {
storage.impermanence.datasets."persist/system/root" = { storage.impermanence.datasets."persist/replicate/system/root" = {
directories."${bazarr_data_directory}" = { directories."${bazarr_data_directory}" = {
owner.name = "bazarr"; owner.name = "bazarr";
group.name = "bazarr"; group.name = "bazarr";

View file

@ -25,7 +25,7 @@ in {
# TODO: placeholder to configure a unique dataset for this service # TODO: placeholder to configure a unique dataset for this service
}) })
(lib.mkIf config.services.crab-hole.impermanence.enable { (lib.mkIf config.services.crab-hole.impermanence.enable {
storage.impermanence.datasets."persist/system/root" = { storage.impermanence.datasets."persist/replicate/system/root" = {
directories."${workingDirectory}" = { directories."${workingDirectory}" = {
owner.name = "crab-hole"; owner.name = "crab-hole";
group.name = "crab-hole"; group.name = "crab-hole";

View file

@ -25,7 +25,7 @@ in {
# TODO: placeholder to configure a unique dataset for this service # TODO: placeholder to configure a unique dataset for this service
}) })
(lib.mkIf config.services.fail2ban.impermanence.enable { (lib.mkIf config.services.fail2ban.impermanence.enable {
storage.impermanence.datasets."persist/system/root" = { storage.impermanence.datasets."persist/replicate/system/root" = {
directories."${dataFolder}" = { directories."${dataFolder}" = {
owner.name = "fail2ban"; owner.name = "fail2ban";
group.name = "fail2ban"; group.name = "fail2ban";

View file

@ -14,7 +14,7 @@
# TODO: placeholder to configure a unique dataset for this service # TODO: placeholder to configure a unique dataset for this service
}) })
(lib.mkIf config.services.flaresolverr.impermanence.enable { (lib.mkIf config.services.flaresolverr.impermanence.enable {
storage.impermanence.datasets."persist/system/root" = { storage.impermanence.datasets."persist/replicate/system/root" = {
directories."/var/lib/flaresolverr" = { directories."/var/lib/flaresolverr" = {
owner.name = "flaresolverr"; owner.name = "flaresolverr";
group.name = "flaresolverr"; group.name = "flaresolverr";

View file

@ -24,7 +24,7 @@ in {
# TODO: placeholder to configure a unique dataset for this service # TODO: placeholder to configure a unique dataset for this service
}) })
(lib.mkIf config.services.forgejo.impermanence.enable { (lib.mkIf config.services.forgejo.impermanence.enable {
storage.impermanence.datasets."persist/system/root" = { storage.impermanence.datasets."persist/replicate/system/root" = {
directories."${stateDir}" = { directories."${stateDir}" = {
owner.name = "forgejo"; owner.name = "forgejo";
group.name = "forgejo"; group.name = "forgejo";

View file

@ -24,7 +24,7 @@ in {
# TODO: placeholder to configure a unique dataset for this service # TODO: placeholder to configure a unique dataset for this service
}) })
(lib.mkIf config.services.home-assistant.impermanence.enable { (lib.mkIf config.services.home-assistant.impermanence.enable {
storage.impermanence.datasets."persist/system/root" = { storage.impermanence.datasets."persist/replicate/system/root" = {
directories."${configDir}" = { directories."${configDir}" = {
owner.name = "hass"; owner.name = "hass";
group.name = "hass"; group.name = "hass";

View file

@ -24,7 +24,7 @@ in {
# TODO: placeholder to configure a unique dataset for this service # TODO: placeholder to configure a unique dataset for this service
}) })
(lib.mkIf config.services.immich.impermanence.enable { (lib.mkIf config.services.immich.impermanence.enable {
storage.impermanence.datasets."persist/system/root" = { storage.impermanence.datasets."persist/replicate/system/root" = {
directories."${mediaLocation}" = { directories."${mediaLocation}" = {
owner.name = "immich"; owner.name = "immich";
group.name = "immich"; group.name = "immich";

View file

@ -24,7 +24,7 @@ in {
# TODO: placeholder to configure a unique dataset for this service # TODO: placeholder to configure a unique dataset for this service
}) })
(lib.mkIf config.services.jackett.impermanence.enable { (lib.mkIf config.services.jackett.impermanence.enable {
storage.impermanence.datasets."persist/system/root" = { storage.impermanence.datasets."persist/replicate/system/root" = {
directories."${jackett_data_directory}" = { directories."${jackett_data_directory}" = {
owner.name = "jackett"; owner.name = "jackett";
group.name = "jackett"; group.name = "jackett";

View file

@ -30,7 +30,7 @@ in {
}) })
(lib.mkIf config.services.jellyfin.impermanence.enable { (lib.mkIf config.services.jellyfin.impermanence.enable {
storage.impermanence.datasets = { storage.impermanence.datasets = {
"persist/system/root" = { "persist/replicate/system/root" = {
directories = { directories = {
"${jellyfin_data_directory}" = { "${jellyfin_data_directory}" = {
enable = true; enable = true;

View file

@ -24,7 +24,7 @@ in {
# TODO: placeholder to configure a unique dataset for this service # TODO: placeholder to configure a unique dataset for this service
}) })
(lib.mkIf config.services.lidarr.impermanence.enable { (lib.mkIf config.services.lidarr.impermanence.enable {
storage.impermanence.datasets."persist/system/root" = { storage.impermanence.datasets."persist/replicate/system/root" = {
directories."${lidarr_data_directory}" = { directories."${lidarr_data_directory}" = {
owner.name = "lidarr"; owner.name = "lidarr";
group.name = "lidarr"; group.name = "lidarr";

View file

@ -74,7 +74,7 @@ in {
); );
} }
# (lib.mkIf config.host.impermanence.enable { # (lib.mkIf config.host.impermanence.enable {
# environment.persistence."/persist/system/root" = { # environment.persistence."/persist/replicate/system/root" = {
# enable = true; # enable = true;
# hideMounts = true; # hideMounts = true;
# directories = [ # directories = [

View file

@ -21,7 +21,7 @@
# TODO: placeholder to configure a unique dataset for this service # TODO: placeholder to configure a unique dataset for this service
}) })
(lib.mkIf config.services.panoramax.impermanence.enable { (lib.mkIf config.services.panoramax.impermanence.enable {
storage.impermanence.datasets."persist/system/root" = { storage.impermanence.datasets."persist/replicate/system/root" = {
directories."/var/lib/panoramax" = { directories."/var/lib/panoramax" = {
owner.name = "panoramax"; owner.name = "panoramax";
group.name = "panoramax"; group.name = "panoramax";

View file

@ -24,7 +24,7 @@ in {
# TODO: placeholder to configure a unique dataset for this service # TODO: placeholder to configure a unique dataset for this service
}) })
(lib.mkIf config.services.paperless.impermanence.enable { (lib.mkIf config.services.paperless.impermanence.enable {
storage.impermanence.datasets."persist/system/root" = { storage.impermanence.datasets."persist/replicate/system/root" = {
directories."${dataDir}" = { directories."${dataDir}" = {
owner.name = "paperless"; owner.name = "paperless";
group.name = "paperless"; group.name = "paperless";

View file

@ -24,7 +24,7 @@ in {
# TODO: placeholder to configure a unique dataset for this service # TODO: placeholder to configure a unique dataset for this service
}) })
(lib.mkIf config.services.postgresql.impermanence.enable { (lib.mkIf config.services.postgresql.impermanence.enable {
storage.impermanence.datasets."persist/system/root" = { storage.impermanence.datasets."persist/replicate/system/root" = {
directories."${dataDir}" = { directories."${dataDir}" = {
owner.name = "postgres"; owner.name = "postgres";
group.name = "postgres"; group.name = "postgres";

View file

@ -27,7 +27,7 @@ in {
lib.mkIf config.services.qbittorrent.impermanence.enable lib.mkIf config.services.qbittorrent.impermanence.enable
{ {
storage.impermanence.datasets = { storage.impermanence.datasets = {
"persist/system/root" = { "persist/replicate/system/root" = {
directories."${qbittorent_profile_directory}" = { directories."${qbittorent_profile_directory}" = {
owner.name = "qbittorrent"; owner.name = "qbittorrent";
group.name = "qbittorrent"; group.name = "qbittorrent";

View file

@ -24,7 +24,7 @@ in {
# TODO: placeholder to configure a unique dataset for this service # TODO: placeholder to configure a unique dataset for this service
}) })
(lib.mkIf config.services.radarr.impermanence.enable { (lib.mkIf config.services.radarr.impermanence.enable {
storage.impermanence.datasets."persist/system/root" = { storage.impermanence.datasets."persist/replicate/system/root" = {
directories."${radarr_data_directory}" = { directories."${radarr_data_directory}" = {
owner.name = "radarr"; owner.name = "radarr";
group.name = "radarr"; group.name = "radarr";

View file

@ -16,7 +16,7 @@ in {
# TODO: placeholder to configure a unique dataset for this service # TODO: placeholder to configure a unique dataset for this service
}) })
(lib.mkIf config.services.reverseProxy.impermanence.enable { (lib.mkIf config.services.reverseProxy.impermanence.enable {
storage.impermanence.datasets."persist/system/root" = { storage.impermanence.datasets."persist/replicate/system/root" = {
directories."${dataDir}" = { directories."${dataDir}" = {
owner.name = "acme"; owner.name = "acme";
group.name = "acme"; group.name = "acme";

View file

@ -24,7 +24,7 @@ in {
# TODO: placeholder to configure a unique dataset for this service # TODO: placeholder to configure a unique dataset for this service
}) })
(lib.mkIf config.services.sonarr.impermanence.enable { (lib.mkIf config.services.sonarr.impermanence.enable {
storage.impermanence.datasets."persist/system/root" = { storage.impermanence.datasets."persist/replicate/system/root" = {
directories."${sonarr_data_directory}" = { directories."${sonarr_data_directory}" = {
owner.name = "sonarr"; owner.name = "sonarr";
group.name = "sonarr"; group.name = "sonarr";

View file

@ -48,7 +48,7 @@
systemd.services."wyoming-faster-whisper-en".serviceConfig.ProcSubset = lib.mkForce "all"; systemd.services."wyoming-faster-whisper-en".serviceConfig.ProcSubset = lib.mkForce "all";
} }
(lib.mkIf config.host.impermanence.enable { (lib.mkIf config.host.impermanence.enable {
environment.persistence."/persist/system/root" = { environment.persistence."/persist/replicate/system/root" = {
enable = true; enable = true;
hideMounts = true; hideMounts = true;
directories = [ directories = [

View file

@ -32,7 +32,7 @@
# TODO: placeholder to configure a unique dataset for this service # TODO: placeholder to configure a unique dataset for this service
}) })
(lib.mkIf config.services.openssh.impermanence.enable { (lib.mkIf config.services.openssh.impermanence.enable {
storage.impermanence.datasets."persist/system/root" = { storage.impermanence.datasets."persist/replicate/system/root" = {
files = builtins.listToAttrs ( files = builtins.listToAttrs (
lib.lists.flatten ( lib.lists.flatten (
builtins.map (hostKey: [ builtins.map (hostKey: [

View file

@ -72,8 +72,8 @@ in {
"var-lib-private-permissions" = { "var-lib-private-permissions" = {
deps = ["specialfs"]; deps = ["specialfs"];
text = '' text = ''
mkdir -p /persist/system/root/var/lib/private mkdir -p /persist/replicate/system/root/var/lib/private
chmod 0700 /persist/system/root/var/lib/private chmod 0700 /persist/replicate/system/root/var/lib/private
''; '';
}; };
}; };

View file

@ -10,7 +10,7 @@
lib.mkIf config.storage.zfs.enable (lib.mkMerge [ lib.mkIf config.storage.zfs.enable (lib.mkMerge [
{ {
storage.zfs.datasets = { storage.zfs.datasets = {
"persist/system/nix" = { "persist/local/nix" = {
type = "zfs_fs"; type = "zfs_fs";
mount = { mount = {
enable = true; enable = true;
@ -22,15 +22,12 @@
atime = "off"; atime = "off";
relatime = "off"; relatime = "off";
}; };
"persist/system/var/log" = { "persist/replicate/system/var/log" = {
type = "zfs_fs"; type = "zfs_fs";
mount = { mount = {
enable = true; enable = true;
mountPoint = "/var/log"; mountPoint = "/var/log";
}; };
snapshot = {
autoSnapshot = false;
};
}; };
}; };
} }
@ -53,11 +50,11 @@
}) })
(lib.mkIf config.storage.impermanence.enable { (lib.mkIf config.storage.impermanence.enable {
boot.initrd.postResumeCommands = lib.mkAfter '' boot.initrd.postResumeCommands = lib.mkAfter ''
zfs rollback -r rpool/local/system/root@blank zfs rollback -r rpool/ephemeral/system/root@blank
''; '';
storage.zfs.datasets = { storage.zfs.datasets = {
"local/system/root" = { "ephemeral/system/root" = {
type = "zfs_fs"; type = "zfs_fs";
mount = { mount = {
enable = true; enable = true;
@ -70,10 +67,13 @@
}; };
storage.impermanence.datasets = { storage.impermanence.datasets = {
"persist/system/root" = { "persist/replicate/system/root" = {
mount = { mount = {
enable = true; enable = true;
mountPoint = "/persist/system/root"; mountPoint = "/persist/replicate/system/root";
};
snapshot = {
autoSnapshot = true;
}; };
directories = { directories = {
"/var/lib/nixos".enable = true; "/var/lib/nixos".enable = true;
@ -83,10 +83,13 @@
"/etc/machine-id".enable = true; "/etc/machine-id".enable = true;
}; };
}; };
"persist/home" = { "persist/replicate/home" = {
mount = { mount = {
enable = true; enable = true;
mountPoint = "/persist/home"; mountPoint = "/persist/replicate/home";
};
snapshot = {
autoSnapshot = true;
}; };
}; };
}; };

View file

@ -170,7 +170,7 @@ in {
}; };
cache = lib.mkOption { cache = lib.mkOption {
type = lib.types.listOf deviceType; type = lib.types.listOf deviceType;
default = {}; default = [];
}; };
}; };
@ -264,7 +264,7 @@ in {
members = builtins.map (device: hashDisk device.device) vdev; members = builtins.map (device: hashDisk device.device) vdev;
}) })
config.storage.zfs.pool.vdevs; config.storage.zfs.pool.vdevs;
cache = builtins.map (device: hashDisk device.device) (builtins.attrValues config.storage.zfs.pool.cache); cache = builtins.map (device: hashDisk device.device) config.storage.zfs.pool.cache;
}; };
}; };

View file

@ -36,7 +36,7 @@ in {
}) })
config.services.syncthing.settings.folders; config.services.syncthing.settings.folders;
storage.impermanence.datasets."persist/system/root" = { storage.impermanence.datasets."persist/replicate/system/root" = {
directories = { directories = {
"${mountDir}" = { "${mountDir}" = {
enable = true; enable = true;

View file

@ -22,7 +22,7 @@ in {
# TODO: placeholder to configure a unique dataset for this service # TODO: placeholder to configure a unique dataset for this service
}) })
(lib.mkIf config.services.tailscale.impermanence.enable { (lib.mkIf config.services.tailscale.impermanence.enable {
storage.impermanence.datasets."persist/system/root" = { storage.impermanence.datasets."persist/replicate/system/root" = {
directories."${tailscale_data_directory}" = { directories."${tailscale_data_directory}" = {
enable = true; enable = true;
owner.name = "root"; owner.name = "root";

View file

@ -405,7 +405,7 @@ in {
# sops age key needs to be available to pre persist for user generation # sops age key needs to be available to pre persist for user generation
storage.zfs.datasets = lib.mkMerge [ storage.zfs.datasets = lib.mkMerge [
{ {
"local/system/sops" = { "persist/local/system/sops" = {
type = "zfs_fs"; type = "zfs_fs";
mount = { mount = {
enable = true; enable = true;
@ -417,7 +417,7 @@ in {
} }
(lib.mkMerge ( (lib.mkMerge (
builtins.map (user: { builtins.map (user: {
"local/home/${user.name}" = { "ephemeral/home/${user.name}" = {
type = "zfs_fs"; type = "zfs_fs";
mount = { mount = {
enable = true; enable = true;
@ -432,7 +432,7 @@ in {
# Post resume commands to rollback user home datasets to blank snapshots # Post resume commands to rollback user home datasets to blank snapshots
boot.initrd.postResumeCommands = lib.mkAfter ( boot.initrd.postResumeCommands = lib.mkAfter (
lib.strings.concatLines (builtins.map (user: "zfs rollback -r rpool/local/home/${user.name}@blank") lib.strings.concatLines (builtins.map (user: "zfs rollback -r rpool/ephemeral/home/${user.name}@blank")
normalUsers) normalUsers)
); );
@ -440,7 +440,7 @@ in {
systemd = { systemd = {
tmpfiles.rules = tmpfiles.rules =
builtins.map ( builtins.map (
user: "d /persist/home/${user.name} 700 ${user.name} ${user.name} -" user: "d /persist/replicate/home/${user.name} 700 ${user.name} ${user.name} -"
) )
normalUsers; normalUsers;
}; };