2024-09-09 00:22:14 +00:00
|
|
|
{
|
2024-09-13 01:50:53 +00:00
|
|
|
config,
|
|
|
|
lib,
|
2024-12-21 18:41:28 +00:00
|
|
|
pkgs,
|
2024-09-13 01:50:53 +00:00
|
|
|
...
|
|
|
|
}:
|
|
|
|
with lib; let
|
|
|
|
cfg = config.custom.programs.chromium;
|
|
|
|
in {
|
2024-12-21 18:41:28 +00:00
|
|
|
options.custom.programs.chromium = {
|
|
|
|
enable = mkOption {default = false;};
|
|
|
|
package = mkOption {default = pkgs.google-chrome;};
|
|
|
|
};
|
2024-09-09 00:22:14 +00:00
|
|
|
|
2024-12-21 18:41:28 +00:00
|
|
|
config = mkIf cfg.enable {
|
2024-09-09 00:22:14 +00:00
|
|
|
# https://wiki.nixos.org/wiki/Chromium
|
|
|
|
# https://www.chromium.org/chromium-projects
|
|
|
|
programs.chromium = {
|
|
|
|
enable = true;
|
|
|
|
|
2024-12-21 18:41:28 +00:00
|
|
|
# https://chromeenterprise.google/policies/
|
|
|
|
#?? chrome://policy
|
|
|
|
extraOpts = {
|
|
|
|
# HACK: Extensions are force-installed with programs.chromium.extensions option
|
|
|
|
# https://support.google.com/chrome/a/answer/9867568
|
|
|
|
# https://chromeenterprise.google/policies/#ExtensionSettings
|
|
|
|
ExtensionSettings = listToAttrs (map (id: {
|
|
|
|
name = id;
|
|
|
|
value = {
|
|
|
|
installation_mode = "normal_installed";
|
|
|
|
update_url = "https://clients2.google.com/service/update2/crx";
|
|
|
|
};
|
|
|
|
}) (optionals config.custom.default [
|
|
|
|
#// "cjpalhdlnbpafiamejdnhcphjbkeiagm" # uBlock Origin
|
|
|
|
"ddkjiahejlhfcafbddmgiahcphecmpfh" # uBlock Origin Lite
|
|
|
|
]
|
|
|
|
++ optionals config.custom.full [
|
|
|
|
"khgocmkkpikpnmmkgmdnfckapcdkgfaf" # 1Password Beta
|
|
|
|
#// "ajopnjidmegmdimjlfnijceegpefgped" # BetterTTV
|
|
|
|
#// "nngceckbapebfimnlniiiahkandclblb" # Bitwarden
|
|
|
|
#// "enamippconapkdmgfgjchkhakpfinmaj" # DeArrow
|
|
|
|
#// "fnaicdffflnofjppbagibeoednhnbjhg" # floccus
|
|
|
|
#// "bnomihfieiccainjcjblhegjgglakjdd" # Improve YouTube
|
2024-12-22 12:14:46 +00:00
|
|
|
"pnjaodmkngahhkoihejjehlcdlnohgmp" # RSS Feed Reader
|
2024-12-21 18:41:28 +00:00
|
|
|
"mnjggcdmjocbbbhaepdhchncahnbgone" # SponsorBlock
|
|
|
|
"clngdbkpkpeebahjckkjfobafhncgmne" # Stylus
|
|
|
|
#// "kfidecgcdjjfpeckbblhmfkhmlgecoff" # Svelte DevTools
|
|
|
|
#// "nplimhmoanghlebhdiboeellhgmgommi" # Tab Groups Extension
|
|
|
|
"enboaomnljigfhfjfoalacienlhjlfil" # UnTrap for YouTube
|
|
|
|
]));
|
|
|
|
|
|
|
|
# https://chromeenterprise.google/policies/#DefaultSearchProvider
|
|
|
|
DefaultSearchProviderEnabled = true;
|
|
|
|
DefaultSearchProviderKeyword = "g";
|
|
|
|
DefaultSearchProviderName = "Google";
|
|
|
|
DefaultSearchProviderSearchURL = "{google:baseURL}search?q={searchTerms}&{google:RLZ}{google:originalQueryForSuggestion}{google:assistedQueryStats}{google:searchFieldtrialParameter}{google:searchClient}{google:sourceId}ie={inputEncoding}";
|
|
|
|
DefaultSearchProviderSuggestURL = "{google:baseURL}complete/search?output=chrome&q={searchTerms}";
|
|
|
|
|
|
|
|
# https://chromeenterprise.google/policies/#SiteSearchSettings
|
|
|
|
SiteSearchSettings = [
|
|
|
|
{
|
|
|
|
name = "Amazon";
|
|
|
|
shortcut = "a";
|
|
|
|
url = "https://www.amazon.com/s?k={searchTerms}";
|
|
|
|
}
|
|
|
|
|
|
|
|
{
|
|
|
|
name = "ArchWiki";
|
|
|
|
shortcut = "aw";
|
|
|
|
url = "https://wiki.archlinux.org/index.php?search={searchTerms}";
|
|
|
|
}
|
|
|
|
|
|
|
|
{
|
|
|
|
name = "Brave";
|
|
|
|
shortcut = "b";
|
|
|
|
url = "https://search.brave.com/search?q={searchTerms}";
|
|
|
|
}
|
|
|
|
|
|
|
|
{
|
|
|
|
name = "DuckDuckGo";
|
|
|
|
shortcut = "d";
|
|
|
|
url = "https://duckduckgo.com/?q={searchTerms}";
|
|
|
|
}
|
|
|
|
|
|
|
|
{
|
|
|
|
name = "Docker Hub";
|
|
|
|
shortcut = "dh";
|
|
|
|
url = "https://hub.docker.com/search?q={searchTerms}";
|
|
|
|
}
|
|
|
|
|
|
|
|
{
|
|
|
|
name = "e621";
|
|
|
|
shortcut = "e";
|
|
|
|
url = "https://e621.net/posts?tags={searchTerms}";
|
|
|
|
}
|
|
|
|
|
|
|
|
{
|
|
|
|
name = "Element Issues";
|
|
|
|
shortcut = "ei";
|
|
|
|
url = "https://github.com/element-hq/element-web/issues?q=is%3Aissue+is%3Aopen+{searchTerms}";
|
|
|
|
}
|
|
|
|
|
|
|
|
{
|
|
|
|
name = "Flathub";
|
|
|
|
shortcut = "fh";
|
|
|
|
url = "https://flathub.org/apps/search?q={searchTerms}";
|
|
|
|
}
|
|
|
|
|
|
|
|
{
|
|
|
|
name = "GitHub";
|
|
|
|
shortcut = "gh";
|
|
|
|
url = "https://github.com/search?q={searchTerms}";
|
|
|
|
}
|
|
|
|
|
|
|
|
{
|
|
|
|
name = "Home Manager Issues";
|
|
|
|
shortcut = "hi";
|
|
|
|
url = "https://github.com/nix-community/home-manager/issues?q=is%3Aissue+is%3Aopen+{searchTerms}";
|
|
|
|
}
|
|
|
|
|
|
|
|
{
|
|
|
|
name = "Home Manager Options";
|
|
|
|
shortcut = "ho";
|
|
|
|
url = "https://home-manager-options.extranix.com/?query={searchTerms}&release=master";
|
|
|
|
}
|
|
|
|
|
|
|
|
{
|
|
|
|
name = "Hyprland Issues";
|
|
|
|
shortcut = "hyi";
|
|
|
|
url = "https://github.com/hyprwm/Hyprland/issues?q=is%3Aissue+is%3Aopen+{searchTerms}";
|
|
|
|
}
|
|
|
|
|
|
|
|
{
|
|
|
|
name = "i3 Issues";
|
|
|
|
shortcut = "ii";
|
|
|
|
url = "https://github.com/i3/i3/issues?q=is%3Aissue+is%3Aopen+{searchTerms}";
|
|
|
|
}
|
|
|
|
|
|
|
|
{
|
|
|
|
name = "Lutris";
|
|
|
|
shortcut = "l";
|
|
|
|
url = "https://lutris.net/games?q={searchTerms}";
|
|
|
|
}
|
|
|
|
|
|
|
|
{
|
|
|
|
name = "Lix Issues";
|
|
|
|
shortcut = "li";
|
|
|
|
url = "https://git.lix.systems/lix-project/lix/issues?state=open&q={searchTerms}";
|
|
|
|
}
|
|
|
|
|
|
|
|
{
|
|
|
|
name = "Mozilla Web Docs";
|
|
|
|
shortcut = "mdn";
|
|
|
|
url = "https://developer.mozilla.org/en-US/search?q={searchTerms}";
|
|
|
|
}
|
|
|
|
|
|
|
|
{
|
|
|
|
name = "MyNixOS Options";
|
|
|
|
shortcut = "mno";
|
|
|
|
url = "https://mynixos.com/search?q=option+{searchTerms}";
|
|
|
|
}
|
|
|
|
|
|
|
|
{
|
|
|
|
name = "Nix Dev";
|
|
|
|
shortcut = "nd";
|
|
|
|
url = "https://nix.dev/manual/nix/latest?search={searchTerms}";
|
|
|
|
}
|
|
|
|
|
|
|
|
{
|
|
|
|
name = "NixOS Flakes";
|
|
|
|
shortcut = "nf";
|
|
|
|
url = "https://search.nixos.org/flakes?channel=unstable&query={searchTerms}";
|
|
|
|
}
|
|
|
|
|
|
|
|
{
|
|
|
|
name = "Nix Hub";
|
|
|
|
shortcut = "nh";
|
|
|
|
url = "https://www.nixhub.io/search?q={searchTerms}";
|
|
|
|
}
|
|
|
|
|
|
|
|
{
|
|
|
|
name = "NixOS Nixpkgs Issues";
|
|
|
|
shortcut = "ni";
|
|
|
|
url = "https://github.com/NixOS/nixpkgs/issues?q=is%3Aissue+is%3Aopen+{searchTerms}";
|
|
|
|
}
|
|
|
|
|
|
|
|
{
|
|
|
|
name = "NixOS Options";
|
|
|
|
shortcut = "no";
|
|
|
|
url = "https://search.nixos.org/options?channel=unstable&query={searchTerms}";
|
|
|
|
}
|
|
|
|
|
|
|
|
{
|
|
|
|
name = "Noogle Dev";
|
|
|
|
shortcut = "nod";
|
|
|
|
url = "https://noogle.dev/q?term={searchTerms}";
|
|
|
|
}
|
|
|
|
|
|
|
|
{
|
|
|
|
name = "NixOS Packages";
|
|
|
|
shortcut = "np";
|
|
|
|
url = "https://search.nixos.org/packages?channel=unstable&query={searchTerms}";
|
|
|
|
}
|
|
|
|
|
|
|
|
{
|
|
|
|
name = "Nix PR";
|
|
|
|
shortcut = "npr";
|
|
|
|
url = "https://nixpk.gs/pr-tracker.html?pr={searchTerms}";
|
|
|
|
}
|
|
|
|
|
|
|
|
{
|
|
|
|
name = "NixOS Wiki";
|
|
|
|
shortcut = "nw";
|
|
|
|
url = "https://wiki.nixos.org/w/index.php?search={searchTerms}";
|
|
|
|
}
|
|
|
|
|
|
|
|
{
|
|
|
|
name = "Piped";
|
|
|
|
shortcut = "p";
|
|
|
|
url = "https://piped.bjork.tech/results?search_query={searchTerms}";
|
|
|
|
}
|
|
|
|
|
|
|
|
{
|
|
|
|
name = "PCGamingWiki";
|
|
|
|
shortcut = "pc";
|
|
|
|
url = "https://www.pcgamingwiki.com/w/index.php?search={searchTerms}";
|
|
|
|
}
|
|
|
|
|
|
|
|
{
|
|
|
|
name = "ProtonDB";
|
|
|
|
shortcut = "pdb";
|
|
|
|
url = "https://www.protondb.com/search?q={searchTerms}";
|
|
|
|
}
|
|
|
|
|
|
|
|
{
|
|
|
|
name = "PyPI";
|
|
|
|
shortcut = "pip";
|
|
|
|
url = "https://pypi.org/search/?q={searchTerms}";
|
|
|
|
}
|
|
|
|
|
|
|
|
{
|
|
|
|
name = "Reddit";
|
|
|
|
shortcut = "r";
|
|
|
|
url = "https://www.google.com/search?q=site%3Areddit.com+{searchTerms}";
|
|
|
|
}
|
|
|
|
|
|
|
|
{
|
|
|
|
name = "SearXNG";
|
|
|
|
shortcut = "s";
|
|
|
|
url = "https://search.bjork.tech/search?q={searchTerms}";
|
|
|
|
}
|
|
|
|
|
|
|
|
{
|
|
|
|
name = "Sway Issues";
|
|
|
|
shortcut = "si";
|
|
|
|
url = "https://github.com/swaywm/sway/issues?q=is%3Aissue+is%3Aopen+{searchTerms}";
|
|
|
|
}
|
|
|
|
|
|
|
|
{
|
|
|
|
name = "Wikipedia";
|
|
|
|
shortcut = "w";
|
|
|
|
url = "https://en.wikipedia.org/w/index.php?search={searchTerms}";
|
|
|
|
}
|
|
|
|
|
|
|
|
{
|
|
|
|
name = "Wolfram Alpha";
|
|
|
|
shortcut = "wa";
|
|
|
|
url = "https://www.wolframalpha.com/input?i={searchTerms}";
|
|
|
|
}
|
|
|
|
|
|
|
|
{
|
|
|
|
name = "Walker Issues";
|
|
|
|
shortcut = "wi";
|
|
|
|
url = "https://github.com/abenz1267/walker/issues?q=is%3Aissue+is%3Aopen+{searchTerms}";
|
|
|
|
}
|
|
|
|
|
|
|
|
{
|
|
|
|
name = "YouTube";
|
|
|
|
shortcut = "y";
|
|
|
|
url = "https://www.youtube.com/results?search_query={searchTerms}";
|
|
|
|
}
|
|
|
|
];
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
home-manager.users.${config.custom.username} = {
|
|
|
|
programs.chromium = {
|
|
|
|
enable = true;
|
|
|
|
package = cfg.package;
|
|
|
|
|
|
|
|
# https://stackoverflow.com/questions/69363637/how-to-write-argument-for-chrome-chromiums-enable-features-flag
|
|
|
|
#?? https://source.chromium.org/chromium/chromium/src/+/main:chrome/browser/about_flags.cc
|
|
|
|
commandLineArgs = let
|
|
|
|
features = concatStringsSep "," [
|
2024-12-22 12:15:00 +00:00
|
|
|
"FluentOverlayScrollbar"
|
2024-12-21 18:41:28 +00:00
|
|
|
|
|
|
|
# https://wiki.archlinux.org/title/Chromium#Touchpad_Gestures_for_Navigation
|
|
|
|
"TouchpadOverscrollHistoryNavigation"
|
|
|
|
];
|
|
|
|
in
|
|
|
|
[
|
|
|
|
"--enable-features=${features}"
|
|
|
|
]
|
|
|
|
++ optionals (cfg.package.pname == "brave") [
|
|
|
|
"--password-store=auto" # Fix secrets defaulting to kwallet
|
|
|
|
];
|
|
|
|
};
|
2024-09-09 00:22:14 +00:00
|
|
|
};
|
|
|
|
};
|
|
|
|
}
|