mirror of
https://github.com/nix-community/home-manager
synced 2024-12-24 02:39:48 +01:00
floorp: add module
Also fix tests for Firefox module derivatives.
This commit is contained in:
parent
65ae9c1473
commit
2b13611eae
13 changed files with 334 additions and 29 deletions
|
@ -92,6 +92,7 @@ let
|
|||
./programs/feh.nix
|
||||
./programs/firefox.nix
|
||||
./programs/fish.nix
|
||||
./programs/floorp.nix
|
||||
./programs/foot.nix
|
||||
./programs/freetube.nix
|
||||
./programs/fuzzel.nix
|
||||
|
|
29
modules/programs/floorp.nix
Normal file
29
modules/programs/floorp.nix
Normal file
|
@ -0,0 +1,29 @@
|
|||
{ lib, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
|
||||
modulePath = [ "programs" "floorp" ];
|
||||
|
||||
mkFirefoxModule = import ./firefox/mkFirefoxModule.nix;
|
||||
|
||||
in {
|
||||
meta.maintainers = [ hm.maintainers.bricked ];
|
||||
|
||||
imports = [
|
||||
(mkFirefoxModule {
|
||||
inherit modulePath;
|
||||
name = "Floorp";
|
||||
wrappedPackageName = "floorp";
|
||||
unwrappedPackageName = "floorp-unwrapped";
|
||||
visible = true;
|
||||
|
||||
platforms.linux = {
|
||||
configPath = ".floorp";
|
||||
vendorPath = ".floorp";
|
||||
};
|
||||
platforms.darwin = { configPath = "Library/Application Support/Floorp"; };
|
||||
})
|
||||
];
|
||||
}
|
|
@ -193,6 +193,7 @@ in import nmtSrc {
|
|||
./modules/programs/bemenu
|
||||
./modules/programs/boxxy
|
||||
./modules/programs/firefox/firefox.nix
|
||||
./modules/programs/firefox/floorp.nix
|
||||
./modules/programs/foot
|
||||
./modules/programs/freetube
|
||||
./modules/programs/fuzzel
|
||||
|
|
15
tests/modules/programs/firefox/common.nix
Normal file
15
tests/modules/programs/firefox/common.nix
Normal file
|
@ -0,0 +1,15 @@
|
|||
name:
|
||||
builtins.mapAttrs (test: module: import module [ "programs" name ]) {
|
||||
"${name}-deprecated-native-messenger" = ./deprecated-native-messenger.nix;
|
||||
"${name}-policies" = ./policies.nix;
|
||||
"${name}-profiles-bookmarks" = ./profiles/bookmarks;
|
||||
"${name}-profiles-containers" = ./profiles/containers;
|
||||
"${name}-profiles-containers-duplicate-ids" =
|
||||
./profiles/containers/duplicate-ids.nix;
|
||||
"${name}-profiles-containers-id-out-of-range" =
|
||||
./profiles/containers/id-out-of-range.nix;
|
||||
"${name}-profiles-duplicate-ids" = ./profiles/duplicate-ids.nix;
|
||||
"${name}-profiles-search" = ./profiles/search;
|
||||
"${name}-profiles-settings" = ./profiles/settings;
|
||||
"${name}-state-version-19_09" = ./state-version-19_09.nix;
|
||||
}
|
|
@ -1,16 +1 @@
|
|||
let name = "firefox";
|
||||
|
||||
in builtins.mapAttrs (test: module: import module [ "programs" name ]) {
|
||||
"${name}-deprecated-native-messenger" = ./deprecated-native-messenger.nix;
|
||||
"${name}-policies" = ./policies.nix;
|
||||
"${name}-profiles-bookmarks" = ./profiles/bookmarks;
|
||||
"${name}-profiles-containers" = ./profiles/containers;
|
||||
"${name}-profiles-containers-duplicate-ids" =
|
||||
./profiles/containers/duplicate-ids.nix;
|
||||
"${name}-profiles-containers-id-out-of-range" =
|
||||
./profiles/containers/id-out-of-range.nix;
|
||||
"${name}-profiles-duplicate-ids" = ./profiles/duplicate-ids.nix;
|
||||
"${name}-profiles-search" = ./profiles/search;
|
||||
"${name}-profiles-settings" = ./profiles/settings;
|
||||
"${name}-state-version-19_09" = ./state-version-19_09.nix;
|
||||
}
|
||||
import ./common.nix "firefox"
|
||||
|
|
1
tests/modules/programs/firefox/floorp.nix
Normal file
1
tests/modules/programs/firefox/floorp.nix
Normal file
|
@ -0,0 +1 @@
|
|||
import ./common.nix "floorp"
|
|
@ -20,7 +20,7 @@ in {
|
|||
package = pkgs.${cfg.wrappedPackageName}.override {
|
||||
extraPolicies = { DownloadDirectory = "/foo"; };
|
||||
};
|
||||
}) // {
|
||||
} // {
|
||||
nmt.script = ''
|
||||
jq=${lib.getExe pkgs.jq}
|
||||
config_file="${cfg.finalPackage}/lib/${cfg.wrappedPackageName}/distribution/policies.json"
|
||||
|
@ -39,5 +39,5 @@ in {
|
|||
fail "Expected '$config_file' to set 'policies.DownloadDirectory' to \"/foo\""
|
||||
fi
|
||||
'';
|
||||
};
|
||||
});
|
||||
}
|
||||
|
|
241
tests/modules/programs/firefox/profile-settings.nix
Normal file
241
tests/modules/programs/firefox/profile-settings.nix
Normal file
|
@ -0,0 +1,241 @@
|
|||
modulePath:
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
|
||||
cfg = getAttrFromPath modulePath config;
|
||||
|
||||
firefoxMockOverlay = import ./setup-firefox-mock-overlay.nix modulePath;
|
||||
|
||||
withName = path:
|
||||
pkgs.substituteAll {
|
||||
src = path;
|
||||
name = cfg.wrappedPackageName;
|
||||
};
|
||||
|
||||
in {
|
||||
imports = [ firefoxMockOverlay ];
|
||||
|
||||
config = mkIf config.test.enableBig (setAttrByPath modulePath {
|
||||
enable = true;
|
||||
profiles.basic.isDefault = true;
|
||||
|
||||
profiles.test = {
|
||||
id = 1;
|
||||
settings = {
|
||||
"general.smoothScroll" = false;
|
||||
"browser.newtabpage.pinned" = [{
|
||||
title = "NixOS";
|
||||
url = "https://nixos.org";
|
||||
}];
|
||||
};
|
||||
};
|
||||
|
||||
profiles.bookmarks = {
|
||||
id = 2;
|
||||
settings = { "general.smoothScroll" = false; };
|
||||
bookmarks = [
|
||||
{
|
||||
toolbar = true;
|
||||
bookmarks = [{
|
||||
name = "Home Manager";
|
||||
url = "https://wiki.nixos.org/wiki/Home_Manager";
|
||||
}];
|
||||
}
|
||||
{
|
||||
name = "wikipedia";
|
||||
tags = [ "wiki" ];
|
||||
keyword = "wiki";
|
||||
url = "https://en.wikipedia.org/wiki/Special:Search?search=%s&go=Go";
|
||||
}
|
||||
{
|
||||
name = "kernel.org";
|
||||
url = "https://www.kernel.org";
|
||||
}
|
||||
{
|
||||
name = "Nix sites";
|
||||
bookmarks = [
|
||||
{
|
||||
name = "homepage";
|
||||
url = "https://nixos.org/";
|
||||
}
|
||||
{
|
||||
name = "wiki";
|
||||
tags = [ "wiki" "nix" ];
|
||||
url = "https://wiki.nixos.org/";
|
||||
}
|
||||
{
|
||||
name = "Nix sites";
|
||||
bookmarks = [
|
||||
{
|
||||
name = "homepage";
|
||||
url = "https://nixos.org/";
|
||||
}
|
||||
{
|
||||
name = "wiki";
|
||||
url = "https://wiki.nixos.org/";
|
||||
}
|
||||
];
|
||||
}
|
||||
];
|
||||
}
|
||||
];
|
||||
};
|
||||
|
||||
profiles.search = {
|
||||
id = 3;
|
||||
search = {
|
||||
force = true;
|
||||
default = "Google";
|
||||
privateDefault = "DuckDuckGo";
|
||||
order = [ "Nix Packages" "NixOS Wiki" ];
|
||||
engines = {
|
||||
"Nix Packages" = {
|
||||
urls = [{
|
||||
template = "https://search.nixos.org/packages";
|
||||
params = [
|
||||
{
|
||||
name = "type";
|
||||
value = "packages";
|
||||
}
|
||||
{
|
||||
name = "query";
|
||||
value = "{searchTerms}";
|
||||
}
|
||||
];
|
||||
}];
|
||||
|
||||
icon =
|
||||
"/run/current-system/sw/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
|
||||
|
||||
definedAliases = [ "@np" ];
|
||||
};
|
||||
|
||||
"NixOS Wiki" = {
|
||||
urls = [{
|
||||
template =
|
||||
"https://wiki.nixos.org/index.php?search={searchTerms}";
|
||||
}];
|
||||
iconUpdateURL = "https://wiki.nixos.org/favicon.png";
|
||||
updateInterval = 24 * 60 * 60 * 1000;
|
||||
definedAliases = [ "@nw" ];
|
||||
};
|
||||
|
||||
"Bing".metaData.hidden = true;
|
||||
"Google".metaData.alias = "@g";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
profiles.searchWithoutDefault = {
|
||||
id = 4;
|
||||
search = {
|
||||
force = true;
|
||||
order = [ "Google" "Nix Packages" ];
|
||||
engines = {
|
||||
"Nix Packages" = {
|
||||
urls = [{
|
||||
template = "https://search.nixos.org/packages";
|
||||
params = [
|
||||
{
|
||||
name = "type";
|
||||
value = "packages";
|
||||
}
|
||||
{
|
||||
name = "query";
|
||||
value = "{searchTerms}";
|
||||
}
|
||||
];
|
||||
}];
|
||||
|
||||
definedAliases = [ "@np" ];
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
profiles.containers = {
|
||||
id = 5;
|
||||
containers = {
|
||||
"shopping" = {
|
||||
id = 6;
|
||||
icon = "circle";
|
||||
color = "yellow";
|
||||
};
|
||||
};
|
||||
};
|
||||
} // {
|
||||
|
||||
nmt.script = let
|
||||
|
||||
noHashQuery = ''
|
||||
'def walk(f):
|
||||
. as $in
|
||||
| if type == "object" then
|
||||
reduce keys[] as $key
|
||||
( {}; . + { ($key): ($in[$key] | walk(f)) } | f )
|
||||
elif type == "array" then
|
||||
map( walk(f) )
|
||||
else
|
||||
f
|
||||
end;
|
||||
walk(if type == "object" then
|
||||
if has("hash") then .hash = null else . end |
|
||||
if has("privateHash") then .privateHash = null else . end
|
||||
else
|
||||
.
|
||||
end)' '';
|
||||
|
||||
in ''
|
||||
assertFileRegex \
|
||||
home-path/bin/${cfg.wrappedPackageName} \
|
||||
MOZ_APP_LAUNCHER
|
||||
|
||||
assertDirectoryExists home-files/${cfg.configPath}/basic
|
||||
|
||||
assertFileContent \
|
||||
home-files/${cfg.configPath}/test/user.js \
|
||||
${withName ./profile-settings-expected-user.js}
|
||||
|
||||
assertFileContent \
|
||||
home-files/${cfg.configPath}/containers/containers.json \
|
||||
${withName ./profile-settings-expected-containers.json}
|
||||
|
||||
bookmarksUserJs=$(normalizeStorePaths \
|
||||
home-files/${cfg.configPath}/bookmarks/user.js)
|
||||
|
||||
assertFileContent \
|
||||
$bookmarksUserJs \
|
||||
${withName ./profile-settings-expected-bookmarks-user.js}
|
||||
|
||||
bookmarksFile="$(sed -n \
|
||||
'/browser.bookmarks.file/ {s|^.*\(/nix/store[^"]*\).*|\1|;p}' \
|
||||
$TESTED/home-files/${cfg.configPath}/bookmarks/user.js)"
|
||||
|
||||
assertFileContent \
|
||||
$bookmarksFile \
|
||||
${withName ./profile-settings-expected-bookmarks.html}
|
||||
|
||||
function assertFirefoxSearchContent() {
|
||||
compressedSearch=$(normalizeStorePaths "$1")
|
||||
|
||||
decompressedSearch=$(dirname $compressedSearch)/search.json
|
||||
${pkgs.mozlz4a}/bin/mozlz4a -d "$compressedSearch" >(${pkgs.jq}/bin/jq ${noHashQuery} > "$decompressedSearch")
|
||||
|
||||
assertFileContent \
|
||||
$decompressedSearch \
|
||||
"$2"
|
||||
}
|
||||
|
||||
assertFirefoxSearchContent \
|
||||
home-files/${cfg.configPath}/search/search.json.mozlz4 \
|
||||
${withName ./profile-settings-expected-search.json}
|
||||
|
||||
assertFirefoxSearchContent \
|
||||
home-files/${cfg.configPath}/searchWithoutDefault/search.json.mozlz4 \
|
||||
${withName ./profile-settings-expected-search-without-default.json}
|
||||
'';
|
||||
});
|
||||
}
|
|
@ -9,6 +9,12 @@ let
|
|||
|
||||
firefoxMockOverlay = import ../../setup-firefox-mock-overlay.nix modulePath;
|
||||
|
||||
withName = path:
|
||||
pkgs.substituteAll {
|
||||
src = path;
|
||||
name = cfg.wrappedPackageName;
|
||||
};
|
||||
|
||||
in {
|
||||
imports = [ firefoxMockOverlay ];
|
||||
|
||||
|
@ -70,7 +76,7 @@ in {
|
|||
|
||||
assertFileContent \
|
||||
$bookmarksUserJs \
|
||||
${./expected-bookmarks-user.js}
|
||||
${withName ./expected-bookmarks-user.js}
|
||||
|
||||
bookmarksFile="$(sed -n \
|
||||
'/browser.bookmarks.file/ {s|^.*\(/nix/store[^"]*\).*|\1|;p}' \
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
// Generated by Home Manager.
|
||||
|
||||
user_pref("browser.bookmarks.file", "/nix/store/00000000000000000000000000000000-firefox-bookmarks.html");
|
||||
user_pref("browser.bookmarks.file", "/nix/store/00000000000000000000000000000000-@name@-bookmarks.html");
|
||||
user_pref("browser.places.importBookmarksHTML", true);
|
||||
user_pref("general.smoothScroll", false);
|
||||
|
||||
|
|
|
@ -9,6 +9,12 @@ let
|
|||
|
||||
firefoxMockOverlay = import ../../setup-firefox-mock-overlay.nix modulePath;
|
||||
|
||||
withName = path:
|
||||
pkgs.substituteAll {
|
||||
src = path;
|
||||
name = cfg.wrappedPackageName;
|
||||
};
|
||||
|
||||
in {
|
||||
imports = [ firefoxMockOverlay ];
|
||||
|
||||
|
@ -88,12 +94,32 @@ in {
|
|||
};
|
||||
};
|
||||
} // {
|
||||
nmt.script = ''
|
||||
nmt.script = let
|
||||
|
||||
noHashQuery = ''
|
||||
'def walk(f):
|
||||
. as $in
|
||||
| if type == "object" then
|
||||
reduce keys[] as $key
|
||||
( {}; . + { ($key): ($in[$key] | walk(f)) } | f )
|
||||
elif type == "array" then
|
||||
map( walk(f) )
|
||||
else
|
||||
f
|
||||
end;
|
||||
walk(if type == "object" then
|
||||
if has("hash") then .hash = null else . end |
|
||||
if has("privateHash") then .privateHash = null else . end
|
||||
else
|
||||
.
|
||||
end)' '';
|
||||
|
||||
in ''
|
||||
function assertFirefoxSearchContent() {
|
||||
compressedSearch=$(normalizeStorePaths "$1")
|
||||
|
||||
decompressedSearch=$(dirname $compressedSearch)/search.json
|
||||
${pkgs.mozlz4a}/bin/mozlz4a -d "$compressedSearch" >(${pkgs.jq}/bin/jq . > "$decompressedSearch")
|
||||
${pkgs.mozlz4a}/bin/mozlz4a -d "$compressedSearch" >(${pkgs.jq}/bin/jq ${noHashQuery} > "$decompressedSearch")
|
||||
|
||||
assertFileContent \
|
||||
$decompressedSearch \
|
||||
|
@ -102,11 +128,11 @@ in {
|
|||
|
||||
assertFirefoxSearchContent \
|
||||
home-files/${cfg.configPath}/search/search.json.mozlz4 \
|
||||
${./expected-search.json}
|
||||
${withName ./expected-search.json}
|
||||
|
||||
assertFirefoxSearchContent \
|
||||
home-files/${cfg.configPath}/searchWithoutDefault/search.json.mozlz4 \
|
||||
${./expected-search-without-default.json}
|
||||
${withName ./expected-search-without-default.json}
|
||||
'';
|
||||
});
|
||||
}
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
"@np"
|
||||
],
|
||||
"_isAppProvided": false,
|
||||
"_loadPath": "[home-manager]/programs.firefox.profiles.searchWithoutDefault.search.engines.\"Nix Packages\"",
|
||||
"_loadPath": "[home-manager]/programs.@name@.profiles.searchWithoutDefault.search.engines.\"Nix Packages\"",
|
||||
"_metaData": {
|
||||
"order": 2
|
||||
},
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
],
|
||||
"_iconURL": "file:///run/current-system/sw/share/icons/hicolor/scalable/apps/nix-snowflake.svg",
|
||||
"_isAppProvided": false,
|
||||
"_loadPath": "[home-manager]/programs.firefox.profiles.search.search.engines.\"Nix Packages\"",
|
||||
"_loadPath": "[home-manager]/programs.@name@.profiles.search.search.engines.\"Nix Packages\"",
|
||||
"_metaData": {
|
||||
"order": 1
|
||||
},
|
||||
|
@ -34,7 +34,7 @@
|
|||
"_iconURL": "https://wiki.nixos.org/favicon.png",
|
||||
"_iconUpdateURL": "https://wiki.nixos.org/favicon.png",
|
||||
"_isAppProvided": false,
|
||||
"_loadPath": "[home-manager]/programs.firefox.profiles.search.search.engines.\"NixOS Wiki\"",
|
||||
"_loadPath": "[home-manager]/programs.@name@.profiles.search.search.engines.\"NixOS Wiki\"",
|
||||
"_metaData": {
|
||||
"order": 2
|
||||
},
|
||||
|
@ -68,9 +68,9 @@
|
|||
],
|
||||
"metaData": {
|
||||
"current": "Google",
|
||||
"hash": "IRmKVSQlAYnvLO8kdZyNUR/g5hzVn4++T0PLPGm+kZk=",
|
||||
"hash": null,
|
||||
"private": "DuckDuckGo",
|
||||
"privateHash": "BWvqUiaCuMJ20lbymFf2dqzWyl1cgm1LZhhdWNEp0Cc=",
|
||||
"privateHash": null,
|
||||
"useSavedOrder": true
|
||||
},
|
||||
"version": 6
|
||||
|
|
Loading…
Reference in a new issue