From 331574afcebd01f54520518e576f4bbc9a9b3144 Mon Sep 17 00:00:00 2001 From: Pablo Andres Dealbera Date: Mon, 21 Jul 2025 09:02:10 -0300 Subject: [PATCH] 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 --- .../browsers/firefox/mobile-config.nix | 135 +++++------------- 1 file changed, 34 insertions(+), 101 deletions(-) diff --git a/pkgs/applications/networking/browsers/firefox/mobile-config.nix b/pkgs/applications/networking/browsers/firefox/mobile-config.nix index db88c0931201..027be201c3b3 100644 --- a/pkgs/applications/networking/browsers/firefox/mobile-config.nix +++ b/pkgs/applications/networking/browsers/firefox/mobile-config.nix @@ -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 /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 /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 /chrome/ - if (!chromeFile.exists()) { - defaultChrome.copyTo(chromeDir, "userChrome.css"); - updated = true; - } - - // Create nsIFile objects for userContent.css in /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 /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" + ]; }