diff --git a/modules/home/programs/gui/librewolf/default.nix b/modules/home/programs/gui/librewolf/default.nix index 19699e13..76a7463f 100644 --- a/modules/home/programs/gui/librewolf/default.nix +++ b/modules/home/programs/gui/librewolf/default.nix @@ -238,6 +238,9 @@ }; # Symlinks to Librewolf - home.file.".librewolf".source = config.lib.file.mkOutOfStoreSymlink "${config.home.homeDirectory}/.mozilla/firefox"; + home = { + file.".librewolf".source = config.lib.file.mkOutOfStoreSymlink "${config.home.homeDirectory}/.mozilla/firefox"; + persistence."/persist${config.home.homeDirectory}".directories = [ ".mozilla" ]; + }; }; } diff --git a/modules/home/programs/gui/obs/default.nix b/modules/home/programs/gui/obs/default.nix index 55f075bf..9366ae5f 100644 --- a/modules/home/programs/gui/obs/default.nix +++ b/modules/home/programs/gui/obs/default.nix @@ -1,14 +1,18 @@ -{ config, pkgs, ... }: +{ config, lib, pkgs, ... }: { - programs.obs-studio = { - enable = config.home.production.enable; - plugins = with pkgs.obs-studio-plugins; [ - looking-glass-obs - obs-multi-rtmp - obs-pipewire-audio-capture - obs-tuna - obs-vkcapture - obs-webkitgtk - ]; + config = lib.mkIf config.home.production.enable { + programs.obs-studio = { + enable = true; + plugins = with pkgs.obs-studio-plugins; [ + looking-glass-obs + obs-multi-rtmp + obs-pipewire-audio-capture + obs-tuna + obs-vkcapture + obs-webkitgtk + ]; + }; + + home.persistence."/persist${config.home.homeDirectory}".directories = [ ".config/obs-studio" ]; }; } diff --git a/modules/home/programs/gui/thunderbird/default.nix b/modules/home/programs/gui/thunderbird/default.nix index 2dcc5de7..21c23773 100644 --- a/modules/home/programs/gui/thunderbird/default.nix +++ b/modules/home/programs/gui/thunderbird/default.nix @@ -1,60 +1,64 @@ -{ config, ... }: +{ config, lib, ... }: { - programs.thunderbird = { - enable = config.home.desktop.enable; - profiles = { - Main = { - isDefault = true; - userContent = '' - *{scrollbar-width:none !important} - ''; - settings = { - "general.autoScroll" = true; + config = lib.mkIf config.home.desktop.enable { + programs.thunderbird = { + enable = config.home.desktop.enable; + profiles = { + Main = { + isDefault = true; + userContent = '' + *{scrollbar-width:none !important} + ''; + settings = { + "general.autoScroll" = true; - "security.mixed_content.block_active_content" = true; - "security.mixed_content.block_display_content" = true; + "security.mixed_content.block_active_content" = true; + "security.mixed_content.block_display_content" = true; - "extensions.enabled" = false; - "extensions.autoDisableScopes" = 0; - "extensions.allow-non-mpc-extensions" = false; - "extensions.installDistroAddons" = false; - "extensions.getAddons.cache.enabled" = false; - "extensions.blocklist.enabled" = true; - "extensions.webextensions.userSelection" = false; - "extensions.checkCompatibility" = false; - "extensions.allowRemoteAddons" = false; - "extensions.ui.enabled" = false; - "extensions.ui.useSystemTheme" = true; - "extensions.activeThemeID" = "thunderbird-compact-dark@mozilla.org"; + "extensions.enabled" = false; + "extensions.autoDisableScopes" = 0; + "extensions.allow-non-mpc-extensions" = false; + "extensions.installDistroAddons" = false; + "extensions.getAddons.cache.enabled" = false; + "extensions.blocklist.enabled" = true; + "extensions.webextensions.userSelection" = false; + "extensions.checkCompatibility" = false; + "extensions.allowRemoteAddons" = false; + "extensions.ui.enabled" = false; + "extensions.ui.useSystemTheme" = true; + "extensions.activeThemeID" = "thunderbird-compact-dark@mozilla.org"; - "privacy.clearOnShutdown.cookies" = true; - "privacy.clearOnShutdown.cache" = true; - "privacy.clearOnShutdown.formdata" = true; - "privacy.clearOnShutdown.siteSettings" = true; - "privacy.trackingprotection.enabled" = true; - "privacy.firstparty.isolate" = true; - "privacy.donottrackheader.enabled" = true; - "privacy.resistFingerprinting" = true; + "privacy.clearOnShutdown.cookies" = true; + "privacy.clearOnShutdown.cache" = true; + "privacy.clearOnShutdown.formdata" = true; + "privacy.clearOnShutdown.siteSettings" = true; + "privacy.trackingprotection.enabled" = true; + "privacy.firstparty.isolate" = true; + "privacy.donottrackheader.enabled" = true; + "privacy.resistFingerprinting" = true; - "browser.history.enabled" = false; - "browser.sessionstore.privacy_level" = 2; - "browser.tabs.warnOnClose" = false; - "browser.shell.checkDefaultBrowser" = false; - "browser.urlbar.suggest.openpage" = false; - "browser.urlbar.suggest.bookmark" = false; - "browser.urlbar.suggest.history" = false; - "browser.urlbar.suggest.searches" = false; - "browser.urlbar.suggest.topsites" = false; - "browser.download.promptForDownload" = true; + "browser.history.enabled" = false; + "browser.sessionstore.privacy_level" = 2; + "browser.tabs.warnOnClose" = false; + "browser.shell.checkDefaultBrowser" = false; + "browser.urlbar.suggest.openpage" = false; + "browser.urlbar.suggest.bookmark" = false; + "browser.urlbar.suggest.history" = false; + "browser.urlbar.suggest.searches" = false; + "browser.urlbar.suggest.topsites" = false; + "browser.download.promptForDownload" = true; - "network.cookie.cookieBehavior" = 1; - "network.dns.dnsOverHttps.enabled" = true; - "network.http.speculative-parallel-limit" = 0; - "network.http.pipelining" = false; - "network.predictor.enabled" = false; - "network.cookie.lifetimePolicy" = 2; - }; + "network.cookie.cookieBehavior" = 1; + "network.dns.dnsOverHttps.enabled" = true; + "network.http.speculative-parallel-limit" = 0; + "network.http.pipelining" = false; + "network.predictor.enabled" = false; + "network.cookie.lifetimePolicy" = 2; + }; + }; }; }; + + home.persistence."/persist${config.home.homeDirectory}".directories = [ ".thunderbird" ]; }; } diff --git a/modules/home/programs/misc/gaming/launchers/default.nix b/modules/home/programs/misc/gaming/launchers/default.nix index 6dc9040a..338e83b9 100644 --- a/modules/home/programs/misc/gaming/launchers/default.nix +++ b/modules/home/programs/misc/gaming/launchers/default.nix @@ -1,14 +1,22 @@ { config, lib, pkgs, ... }: { - home.packages = with pkgs; lib.mkIf config.home.gaming.enable [ - heroic - prismlauncher - steam - steam-run-free - ]; + config = lib.mkIf config.home.gaming.enable { + home.packages = with pkgs; [ + heroic + prismlauncher + steam + steam-run-free + ]; - nixpkgs.allowUnfreePackages = [ - "steam" - "steam-unwrapped" - ]; + home.persistence."/persist${config.home.homeDirectory}".directories = [ + ".config/heroic" + ".local/share/PrismLauncher" + ".local/share/Steam" + ]; + + nixpkgs.allowUnfreePackages = [ + "steam" + "steam-unwrapped" + ]; + }; } diff --git a/modules/home/programs/misc/general/default.nix b/modules/home/programs/misc/general/default.nix index d20405cb..c0ffd99e 100644 --- a/modules/home/programs/misc/general/default.nix +++ b/modules/home/programs/misc/general/default.nix @@ -1,8 +1,11 @@ { config, lib, pkgs, ... }: { - home.packages = with pkgs; lib.mkIf config.home.desktop.enable [ - libreoffice - qbittorrent - vesktop - ]; + home = lib.mkIf config.home.desktop.enable { + packages = with pkgs; [ + libreoffice + qbittorrent + vesktop + ]; + persistence."/persist${config.home.homeDirectory}".directories = [ ".config/vesktop" ]; + }; } diff --git a/modules/home/programs/misc/production/default.nix b/modules/home/programs/misc/production/default.nix index 545c9737..ea3a1c3b 100644 --- a/modules/home/programs/misc/production/default.nix +++ b/modules/home/programs/misc/production/default.nix @@ -1,11 +1,17 @@ { config, lib, pkgs, blender, ... }: { - config = lib.mkIf config.home.production.enable { - nixpkgs.overlays = [ blender.overlays.default ]; - home.packages = with pkgs; [ + nixpkgs.overlays = [ blender.overlays.default ]; + + home = lib.mkIf config.home.production.enable { + packages = with pkgs; [ audacity blender_4_4 krita ]; + persistence."/persist${config.home.homeDirectory}".directories = [ + ".config/audacity" + ".config/blender" + ".local/share/krita" + ]; }; } diff --git a/modules/home/programs/terminal/default.nix b/modules/home/programs/terminal/default.nix index 16b949b7..8a79ff6b 100644 --- a/modules/home/programs/terminal/default.nix +++ b/modules/home/programs/terminal/default.nix @@ -7,6 +7,7 @@ ./eza ./fastfetch ./git + ./lazygit ./ncmpcpp ./neovim ./nh diff --git a/modules/home/programs/terminal/git/default.nix b/modules/home/programs/terminal/git/default.nix index fb48ae7b..789a8421 100644 --- a/modules/home/programs/terminal/git/default.nix +++ b/modules/home/programs/terminal/git/default.nix @@ -7,10 +7,8 @@ extraConfig.safe.directory = "/etc/nixos"; }; - programs.lazygit.enable = true; - home.packages = with pkgs; [ - gnupg git-crypt + gnupg ]; } diff --git a/modules/home/programs/terminal/lazygit/default.nix b/modules/home/programs/terminal/lazygit/default.nix new file mode 100644 index 00000000..45a9411d --- /dev/null +++ b/modules/home/programs/terminal/lazygit/default.nix @@ -0,0 +1,5 @@ +{ config, ... }: +{ + programs.lazygit.enable = true; + home.persistence."/persist${config.home.homeDirectory}".directories = [ ".local/state/lazygit" ]; +} diff --git a/modules/home/programs/terminal/neovim/default.nix b/modules/home/programs/terminal/neovim/default.nix index 80e3edf0..c79599b5 100644 --- a/modules/home/programs/terminal/neovim/default.nix +++ b/modules/home/programs/terminal/neovim/default.nix @@ -110,4 +110,6 @@ nmap :NERDTreeToggleVCS ''; }; + + home.persistence."/persist${config.home.homeDirectory}".directories = [ ".local/share/nvim/undo" ]; } diff --git a/modules/home/programs/terminal/nix-index/default.nix b/modules/home/programs/terminal/nix-index/default.nix index 3cbafd76..f02dd683 100644 --- a/modules/home/programs/terminal/nix-index/default.nix +++ b/modules/home/programs/terminal/nix-index/default.nix @@ -1,4 +1,5 @@ -{ ... }: +{ config, ... }: { programs.nix-index.enable = true; + home.persistence."/persist${config.home.homeDirectory}".directories = [ ".cache/nix-index" ]; } diff --git a/modules/home/programs/terminal/zsh/default.nix b/modules/home/programs/terminal/zsh/default.nix index 933ba0f2..b9f9780b 100644 --- a/modules/home/programs/terminal/zsh/default.nix +++ b/modules/home/programs/terminal/zsh/default.nix @@ -1,4 +1,4 @@ -{ pkgs, ... }: +{ config, pkgs, ... }: { programs.zsh = { enable = true; @@ -25,4 +25,6 @@ source ${pkgs.zsh-you-should-use}/share/zsh/plugins/you-should-use/you-should-use.plugin.zsh ''; }; + + home.persistence."/persist${config.home.homeDirectory}".directories = [ ".config/zsh" ]; } diff --git a/modules/home/services/default.nix b/modules/home/services/default.nix index 89f12947..17951bde 100644 --- a/modules/home/services/default.nix +++ b/modules/home/services/default.nix @@ -3,6 +3,7 @@ imports = [ ./easyeffects ./gnome-keyring + ./impermanence ./mpd ./playerctl ]; diff --git a/modules/home/services/impermanence/default.nix b/modules/home/services/impermanence/default.nix new file mode 100644 index 00000000..474955b9 --- /dev/null +++ b/modules/home/services/impermanence/default.nix @@ -0,0 +1,24 @@ +{ config, impermanence, ... }: +{ + imports = [ impermanence.homeManagerModules.impermanence ]; + + home.persistence."/persist${config.home.homeDirectory}" = { + directories = [ + "Keepers" + "Projects" + "Documents" + "Pictures" + "Videos" + "Games" + "VMs" + + ".ssh" + ".gnupg" + + ".config/sunshine" + ".local/share/keyrings" + ".local/state/wireplumber" + ]; + allowOther = false; + }; +} diff --git a/modules/home/services/mpd/default.nix b/modules/home/services/mpd/default.nix index 8b1a328a..e862bd2b 100644 --- a/modules/home/services/mpd/default.nix +++ b/modules/home/services/mpd/default.nix @@ -1,19 +1,23 @@ { config, lib, ... }: { - services = lib.mkIf config.home.desktop.enable { - mpd = { - enable = true; - network.startWhenNeeded = true; - musicDirectory = "${config.home.homeDirectory}/Network/Midas/Music/NixBops"; - playlistDirectory = "${config.services.mpd.musicDirectory}/Playlists"; - extraConfig = '' - audio_output { - type "pipewire" - name "Local Pipewire" - } - ''; + config = lib.mkIf config.home.desktop.enable { + services = { + mpd = { + enable = true; + network.startWhenNeeded = true; + musicDirectory = "${config.home.homeDirectory}/Network/Midas/Music/NixBops"; + playlistDirectory = "${config.services.mpd.musicDirectory}/Playlists"; + extraConfig = '' + audio_output { + type "pipewire" + name "Local Pipewire" + } + ''; + }; + mpd-mpris.enable = true; + mpd-discord-rpc.enable = true; }; - mpd-mpris.enable = true; - mpd-discord-rpc.enable = true; + + home.persistence."/persist${config.home.homeDirectory}".directories = [ ".local/share/mpd" ]; }; } diff --git a/modules/system/devices/disks/impermanence/default.nix b/modules/system/devices/disks/impermanence/default.nix index e73882de..9c555679 100644 --- a/modules/system/devices/disks/impermanence/default.nix +++ b/modules/system/devices/disks/impermanence/default.nix @@ -1,8 +1,13 @@ { impermanence, ... }: { - imports = [ - ./main - ./root - impermanence.nixosModules.impermanence - ]; + imports = [ impermanence.nixosModules.impermanence ]; + + environment.persistence."/persist" = { + hideMounts = true; + directories = [ + "/storage" + "/var/lib/nixos" + ]; + files = [ "/etc/machine-id" ]; + }; } diff --git a/modules/system/devices/disks/impermanence/main/default.nix b/modules/system/devices/disks/impermanence/main/default.nix deleted file mode 100644 index 1cf44809..00000000 --- a/modules/system/devices/disks/impermanence/main/default.nix +++ /dev/null @@ -1,43 +0,0 @@ -{ config, ... }: -{ - environment.persistence."/persist" = { - hideMounts = true; - users.${config.sysusers.main} = { - directories = [ - "Keepers" - "Projects" - "Documents" - "Pictures" - "Videos" - "Games" - "VMs" - - ".mozilla" - ".thunderbird" - - ".config/blender" - ".config/dconf" - ".config/heroic" - ".config/obs-studio" - ".config/sunshine" - ".config/vesktop" - ".config/zsh" - - ".local/share/PrismLauncher" - ".local/share/Steam" - ".local/share/TelegramDesktop" - ".local/share/mpd" - ".local/share/nvim/undo" - - ".local/state/lazygit" - ".local/state/wireplumber" - - ".cache/nix-index" - - { directory = ".ssh"; mode = "0700"; } - { directory = ".gnupg"; mode = "0700"; } - { directory = ".local/share/keyrings"; mode = "0700"; } - ]; - }; - }; -} diff --git a/modules/system/devices/disks/impermanence/root/default.nix b/modules/system/devices/disks/impermanence/root/default.nix deleted file mode 100644 index f3e539ff..00000000 --- a/modules/system/devices/disks/impermanence/root/default.nix +++ /dev/null @@ -1,11 +0,0 @@ -{ ... }: -{ - environment.persistence."/persist" = { - hideMounts = true; - directories = [ - "/storage" - "/var/lib/nixos" - ]; - files = [ "/etc/machine-id" ]; - }; -} diff --git a/modules/system/programs/home-manager/default.nix b/modules/system/programs/home-manager/default.nix index 2bda4092..d7e2ce31 100644 --- a/modules/system/programs/home-manager/default.nix +++ b/modules/system/programs/home-manager/default.nix @@ -1,4 +1,4 @@ -{ hm, stable, unstable, nur, blender, ... }: +{ hm, stable, unstable, blender, impermanence, nur, ... }: { imports = [ hm.nixosModules.home-manager ]; @@ -9,8 +9,9 @@ inherit stable unstable - nur blender + impermanence + nur ; }; };