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
|
let
|
||||||
pkg = fetchFromGitLab {
|
pkg = fetchFromGitLab {
|
||||||
|
domain = "gitlab.postmarketos.org";
|
||||||
owner = "postmarketOS";
|
owner = "postmarketOS";
|
||||||
repo = "mobile-config-firefox";
|
repo = "mobile-config-firefox";
|
||||||
rev = "ff2f07873f4ebc6e220da0e9b9f04c69f451edda";
|
rev = "4.6.0";
|
||||||
sha256 = "sha256-8wRz8corz00+0qROMiOmZAddM4tjfmE91bx0+P8JNx4=";
|
hash = "sha256-tISfxN/04spgtKStkkn+zlCtFU6GbtwuZubqpGN2olA=";
|
||||||
};
|
};
|
||||||
userChrome = runCommand "userChrome.css" { } ''
|
mobileConfigDir = runCommand "mobile-config-firefox" { } ''
|
||||||
cat ${pkg}/src/userChrome/*.css > $out
|
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
|
in
|
||||||
wrapFirefox firefox-unwrapped {
|
wrapFirefox firefox-unwrapped {
|
||||||
# extraPolicies = (lib.importJSON "${pkg}/src/policies.json").policies;
|
extraPrefsFiles = [
|
||||||
extraPoliciesFiles = [ "${pkg}/src/policies.json" ];
|
mobileConfigAutoconfig
|
||||||
extraPrefs = ''
|
mobileConfigPrefs
|
||||||
// Copyright 2022 Arnaud Ferraris, Oliver Smith
|
];
|
||||||
// SPDX-License-Identifier: MPL-2.0
|
|
||||||
|
|
||||||
// This is a Firefox autoconfig file:
|
extraPoliciesFiles = [
|
||||||
// https://support.mozilla.org/en-US/kb/customizing-firefox-using-autoconfig
|
"${pkg}/src/policies.json"
|
||||||
|
];
|
||||||
// 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);
|
|
||||||
'';
|
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user