Files
Batuhan Baserdem, Ph.D. 3c6f1244ed firefox: allow setting persistent StoreID
Added a new config option programs.firefox.profiles.<name>.storeId.
Setting this option now writes the StoreID both to the profiles.ini
and to the settings."toolkit.profiles.storeID" of the profile.
Firefox has two different profile implementations;
- the old one that home-manager module can declare
- the new "Selectable Profile Service" introduced in 150
The new profiles are managed in a runtime db, and reads from profiles.ini
Migration without database operations is not possible right now,
but when it becomes available, this option will stop home-manager from
clobbering the linked storeIDs.
2026-07-07 15:46:26 -05:00

71 lines
1.6 KiB
Nix

modulePath:
{
config,
lib,
pkgs,
...
}:
let
cfg = lib.getAttrFromPath modulePath config;
firefoxMockOverlay = import ../../setup-firefox-mock-overlay.nix modulePath;
in
{
imports = [ firefoxMockOverlay ];
config = lib.mkIf config.test.enableBig (
lib.setAttrByPath modulePath {
enable = true;
profiles = {
basic.isDefault = true;
test = {
id = 1;
storeId = "1a2b3c4d";
settings = {
"browser.bookmarks.file" = ./bookmarks.html;
"general.smoothScroll" = false;
"browser.newtabpage.pinned" = [
{
title = "NixOS";
url = "https://nixos.org";
}
];
};
};
};
}
// {
nmt.script =
let
binPath =
if pkgs.stdenv.hostPlatform.isDarwin then
"Applications/${cfg.darwinAppName}.app/Contents/MacOS"
else
"bin";
expectedUserJs = pkgs.writeText "expected-user.js" (builtins.readFile ./expected-user.js + "\n");
in
''
assertFileRegex \
"home-path/${binPath}/${cfg.finalPackage.meta.mainProgram}" \
MOZ_APP_LAUNCHER
assertDirectoryExists "home-files/${cfg.profilesPath}/basic"
settingsUserJs=$(normalizeStorePaths \
"home-files/${cfg.profilesPath}/test/user.js")
assertFileContent \
"$settingsUserJs" \
${expectedUserJs}
assertFileRegex \
"home-files/${cfg.configPath}/profiles.ini" \
"StoreID=1a2b3c4d"
'';
}
);
}