Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions modules/modules.nix
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
29 changes: 29 additions & 0 deletions modules/programs/floorp.nix
Original file line number Diff line number Diff line change
@@ -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";
Comment thread
Mikilio marked this conversation as resolved.
};
platforms.darwin = { configPath = "Library/Application Support/Floorp"; };
})
];
}
1 change: 1 addition & 0 deletions tests/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -192,6 +192,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
Expand Down
15 changes: 15 additions & 0 deletions tests/modules/programs/firefox/common.nix
Original file line number Diff line number Diff line change
@@ -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;
}
17 changes: 1 addition & 16 deletions tests/modules/programs/firefox/firefox.nix
Original file line number Diff line number Diff line change
@@ -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 change: 1 addition & 0 deletions tests/modules/programs/firefox/floorp.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
import ./common.nix "floorp"
4 changes: 2 additions & 2 deletions tests/modules/programs/firefox/policies.nix
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand All @@ -39,5 +39,5 @@ in {
fail "Expected '$config_file' to set 'policies.DownloadDirectory' to \"/foo\""
fi
'';
};
});
}
241 changes: 241 additions & 0 deletions tests/modules/programs/firefox/profile-settings.nix
Original file line number Diff line number Diff line change
@@ -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}
'';
});
}
Original file line number Diff line number Diff line change
Expand Up @@ -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 ];

Expand Down Expand Up @@ -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}' \
Expand Down

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading