firefox-mobile: update and refactor (#418920)
* firefox-mobile: update and refactor * firefox-mobile-update: update sha256 to hash to align with current Nix standards. * firefox-mobile-update: update firefox mobile config to 4.6.0 * firefox-mobile: grab source from gitlab.postmarketos.org instead of gitlab.org
This commit is contained in:
		
							parent
							
								
									decc7d7115
								
							
						
					
					
						commit
						331574afce
					
				| @ -7,113 +7,46 @@ | ||||
| 
 | ||||
| let | ||||
|   pkg = fetchFromGitLab { | ||||
|     domain = "gitlab.postmarketos.org"; | ||||
|     owner = "postmarketOS"; | ||||
|     repo = "mobile-config-firefox"; | ||||
|     rev = "ff2f07873f4ebc6e220da0e9b9f04c69f451edda"; | ||||
|     sha256 = "sha256-8wRz8corz00+0qROMiOmZAddM4tjfmE91bx0+P8JNx4="; | ||||
|     rev = "4.6.0"; | ||||
|     hash = "sha256-tISfxN/04spgtKStkkn+zlCtFU6GbtwuZubqpGN2olA="; | ||||
|   }; | ||||
|   userChrome = runCommand "userChrome.css" { } '' | ||||
|     cat ${pkg}/src/userChrome/*.css > $out | ||||
|   mobileConfigDir = runCommand "mobile-config-firefox" { } '' | ||||
|     mkdir -p $out/mobile-config-firefox/{common,userChrome,userContent} | ||||
| 
 | ||||
|     cp ${pkg}/src/common/*.css $out/mobile-config-firefox/common/ | ||||
|     cp ${pkg}/src/userChrome/*.css $out/mobile-config-firefox/userChrome/ | ||||
|     cp ${pkg}/src/userContent/*.css $out/mobile-config-firefox/userContent/ | ||||
| 
 | ||||
|     (cd $out/mobile-config-firefox && find common -name "*.css" | sort) >> $out/mobile-config-firefox/userChrome.files | ||||
|     (cd $out/mobile-config-firefox && find common -name "*.css" | sort) >> $out/mobile-config-firefox/userContent.files | ||||
| 
 | ||||
|     (cd $out/mobile-config-firefox && find userChrome -name "*.css" | sort) > $out/mobile-config-firefox/userChrome.files | ||||
|     (cd $out/mobile-config-firefox && find userContent -name "*.css" | sort) > $out/mobile-config-firefox/userContent.files | ||||
| 
 | ||||
|   ''; | ||||
|   userContent = runCommand "userContent.css" { } '' | ||||
|     cat ${pkg}/src/userContent/*.css > $out | ||||
| 
 | ||||
|   mobileConfigAutoconfig = runCommand "mobile-config-autoconfig.js" { } '' | ||||
|     substitute ${pkg}/src/mobile-config-autoconfig.js $out \ | ||||
|       --replace "/etc/mobile-config-firefox" "${mobileConfigDir}/mobile-config-firefox" | ||||
|   ''; | ||||
| 
 | ||||
|   mobileConfigPrefs = runCommand "mobile-config-prefs.js" { } '' | ||||
|     # Remove the autoconfig setup lines since we handle that through extraPrefsFiles | ||||
|     grep -v "general.config.filename" ${pkg}/src/mobile-config-prefs.js | \ | ||||
|     grep -v "general.config.obscure_value" | \ | ||||
|     grep -v "general.config.sandbox_enabled" > $out | ||||
|   ''; | ||||
| in | ||||
| wrapFirefox firefox-unwrapped { | ||||
|   # extraPolicies = (lib.importJSON "${pkg}/src/policies.json").policies; | ||||
|   extraPoliciesFiles = [ "${pkg}/src/policies.json" ]; | ||||
|   extraPrefs = '' | ||||
|     // Copyright 2022 Arnaud Ferraris, Oliver Smith | ||||
|     // SPDX-License-Identifier: MPL-2.0 | ||||
|   extraPrefsFiles = [ | ||||
|     mobileConfigAutoconfig | ||||
|     mobileConfigPrefs | ||||
|   ]; | ||||
| 
 | ||||
|     // This is a Firefox autoconfig file: | ||||
|     // https://support.mozilla.org/en-US/kb/customizing-firefox-using-autoconfig | ||||
| 
 | ||||
|     // Import custom userChrome.css on startup or new profile creation | ||||
|     const {classes: Cc, interfaces: Ci, utils: Cu} = Components; | ||||
|     Cu.import("resource://gre/modules/Services.jsm"); | ||||
|     Cu.import("resource://gre/modules/FileUtils.jsm"); | ||||
| 
 | ||||
|     var updated = false; | ||||
| 
 | ||||
|     // Create <profile>/chrome/ directory if not already present | ||||
|     var chromeDir = Services.dirsvc.get("ProfD", Ci.nsIFile); | ||||
|     chromeDir.append("chrome"); | ||||
|     if (!chromeDir.exists()) { | ||||
|         chromeDir.create(Ci.nsIFile.DIRECTORY_TYPE, FileUtils.PERMS_DIRECTORY); | ||||
|     } | ||||
| 
 | ||||
|     // Create nsIFile objects for userChrome.css in <profile>/chrome/ and in /etc/ | ||||
|     var chromeFile = chromeDir.clone(); | ||||
|     chromeFile.append("userChrome.css"); | ||||
|     var defaultChrome = new FileUtils.File("${userChrome}"); | ||||
| 
 | ||||
|     // No auto-upgrade. Should this be replaced with symlinking? | ||||
|     // // Remove the existing userChrome.css if older than the installed one | ||||
|     // if (chromeFile.exists() && defaultChrome.exists() && | ||||
|     //   chromeFile.lastModifiedTime < defaultChrome.lastModifiedTime) { | ||||
|     //   chromeFile.remove(false); | ||||
|     // } | ||||
| 
 | ||||
|     // Copy userChrome.css to <profile>/chrome/ | ||||
|     if (!chromeFile.exists()) { | ||||
|       defaultChrome.copyTo(chromeDir, "userChrome.css"); | ||||
|       updated = true; | ||||
|     } | ||||
| 
 | ||||
|     // Create nsIFile objects for userContent.css in <profile>/chrome/ and in /etc/ | ||||
|     var contentFile = chromeDir.clone(); | ||||
|     contentFile.append("userContent.css"); | ||||
|     var defaultContent = new FileUtils.File("${userContent}"); | ||||
| 
 | ||||
|     // No auto-upgrade. Should this be replaced with symlinking? | ||||
|     // // Remove the existing userContent.css if older than the installed one | ||||
|     // if (contentFile.exists() && defaultContent.exists() && | ||||
|     //   contentFile.lastModifiedTime < defaultContent.lastModifiedTime) { | ||||
|     //   contentFile.remove(false); | ||||
|     // } | ||||
| 
 | ||||
|     // Copy userContent.css to <profile>/chrome/ | ||||
|     if (!contentFile.exists()) { | ||||
|       defaultContent.copyTo(chromeDir, "userContent.css"); | ||||
|       updated = true; | ||||
|     } | ||||
| 
 | ||||
|     // Restart Firefox immediately if one of the files got updated | ||||
|     if (updated === true) { | ||||
|         var appStartup = Cc["@mozilla.org/toolkit/app-startup;1"].getService(Ci.nsIAppStartup); | ||||
|         appStartup.quit(Ci.nsIAppStartup.eForceQuit | Ci.nsIAppStartup.eRestart); | ||||
|     } | ||||
| 
 | ||||
|     defaultPref('general.useragent.override', 'Mozilla/5.0 (Android 11; Mobile; rv:96.0) Gecko/96.0 Firefox/96.0'); | ||||
|     defaultPref('browser.urlbar.suggest.topsites', false); | ||||
|     defaultPref('browser.urlbar.suggest.engines', false); | ||||
|     defaultPref('browser.newtabpage.enabled', true); | ||||
| 
 | ||||
|     // Enable android-style pinch-to-zoom | ||||
|     pref('dom.w3c.touch_events.enabled', true); | ||||
|     pref('apz.allow_zooming', true); | ||||
|     pref('apz.allow_double_tap_zooming', true); | ||||
| 
 | ||||
|     // Save vertical space by hiding the titlebar | ||||
|     pref('browser.tabs.inTitlebar', 1); | ||||
| 
 | ||||
|     // Disable search suggestions | ||||
|     pref('browser.search.suggest.enabled', false); | ||||
| 
 | ||||
|     // Empty new tab page: faster, less distractions | ||||
|     pref('browser.newtabpage.enabled', false); | ||||
| 
 | ||||
|     // Allow UI customizations with userChrome.css and userContent.css | ||||
|     pref('toolkit.legacyUserProfileCustomizations.stylesheets', true); | ||||
| 
 | ||||
|     // Select the entire URL with one click | ||||
|     pref('browser.urlbar.clickSelectsAll', true); | ||||
| 
 | ||||
|     // Disable cosmetic animations, save CPU | ||||
|     pref('toolkit.cosmeticAnimations.enabled', false); | ||||
| 
 | ||||
|     // Disable download animations, save CPU | ||||
|     pref('browser.download.animateNotifications', false); | ||||
|   ''; | ||||
|   extraPoliciesFiles = [ | ||||
|     "${pkg}/src/policies.json" | ||||
|   ]; | ||||
| } | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Pablo Andres Dealbera
						Pablo Andres Dealbera