diff --git a/configurations/home-manager/eve/packages.nix b/configurations/home-manager/eve/packages.nix index 3c2a281..30fc361 100644 --- a/configurations/home-manager/eve/packages.nix +++ b/configurations/home-manager/eve/packages.nix @@ -41,7 +41,7 @@ in { ]; }; }) - (lib.mkIf userConfig.isDesktopUser { + (lib.mkIf config.user.isDesktopUser { vscode = { enable = true; package = pkgs.vscodium; diff --git a/modules/home-manager-modules/programs/firefox.nix b/modules/home-manager-modules/programs/firefox.nix index 5e78114..907b619 100644 --- a/modules/home-manager-modules/programs/firefox.nix +++ b/modules/home-manager-modules/programs/firefox.nix @@ -3,31 +3,41 @@ config, osConfig, ... -}: { - # TODO: map firefox impermanence +}: let + buildProfilePersistence = profile: { + directories = [ + ".mozilla/firefox/${profile}/extensions" + ]; + files = [ + ".mozilla/firefox/${profile}/cookies.sqlite" + ".mozilla/firefox/${profile}/favicons.sqlite" + # Permissions and ${profileName} levels for each site + ".mozilla/firefox/${profile}/permissions.sqlite" + ".mozilla/firefox/${profile}/content-prefs.sqlite" + # Browser history and bookmarks + ".mozilla/firefox/${profile}/places.sqlite" + # I guess this is useful? + # https://bugzilla.mozilla.org/show_bug.cgi?id=1511384 + # https://developer.mozilla.org/en-US/docs/Web/API/Storage_API/Storage_quotas_and_eviction_criteria + ".mozilla/firefox/${profile}/storage.sqlite" + # Extension configuration + ".mozilla/firefox/${profile}/extension-settings.json" + ]; + allowOther = true; + }; +in { config = lib.mkIf (config.programs.firefox.enable && osConfig.host.impermanence.enable) { - # firefox profiles are defined by: programs.firefox.profile - # TODO: only set these if we arn't using custom firefox profiles. If we are using custom profiles then we should set this for each firefox profile - # home.persistence."/persist${config.home.homeDirectory}" = { - # directories = [ - # ".mozilla/firefox/default/extensions" - # ]; - # files = [ - # ".mozilla/firefox/default/cookies.sqlite" - # ".mozilla/firefox/default/favicons.sqlite" - # # Permissions and zoom levels for each site - # ".mozilla/firefox/default/permissions.sqlite" - # ".mozilla/firefox/default/content-prefs.sqlite" - # # Browser history and bookmarks - # ".mozilla/firefox/default/places.sqlite" - # # I guess this is useful? - # # https://bugzilla.mozilla.org/show_bug.cgi?id=1511384 - # # https://developer.mozilla.org/en-US/docs/Web/API/Storage_API/Storage_quotas_and_eviction_criteria - # ".mozilla/firefox/default/storage.sqlite" - # # Extension configuration - # ".mozilla/firefox/default/extension-settings.json" - # ]; - # allowOther = true; - # }; + home.persistence."/persist${config.home.homeDirectory}" = lib.mkMerge ( + ( + lib.attrsets.mapAttrsToList + (profile: _: buildProfilePersistence profile) + config.programs.firefox.profiles + ) + ++ ( + lib.lists.optional + ((builtins.length (lib.attrsets.mapAttrsToList (key: value: value) config.programs.firefox.profiles)) == 0) + (buildProfilePersistence "default") + ) + ); }; }