forked from jan-leila/nix-config
		
	
		
			
				
	
	
		
			42 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			42 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
| {
 | |
|   lib,
 | |
|   config,
 | |
|   ...
 | |
| }: 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 && config.impermanence.enable) {
 | |
|     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")
 | |
|       )
 | |
|     );
 | |
|   };
 | |
| }
 |