diff --git a/home/programs/graphical/browsers/chromium/default.nix b/home/programs/graphical/browsers/chromium/default.nix new file mode 100644 index 0000000..f79495c --- /dev/null +++ b/home/programs/graphical/browsers/chromium/default.nix @@ -0,0 +1,72 @@ +{ + lib, + osConfig, + pkgs, + ... +}: let + inherit (lib) mkIf optionals concatStringsSep; + + cfg = osConfig.myOptions.home-manager.programs.browsers.chromium; + isWayland = osConfig.myOptions.home-manager.wms.isWayland; +in { + config = mkIf cfg.enable { + programs.chromium = { + enable = true; + + package = pkgs.ungoogled-chromium.override { + nss = pkgs.nss_latest; + commandLineArgs = [ + # Ungoogled features + "--disable-search-engine-collection" + "--extension-mime-request-handling=always-prompt-for-install" + "--fingerprinting-canvas-image-data-noise" + "--fingerprinting-canvas-measuretext-noise" + "--fingerprinting-client-rects-noise" + "--popups-to-tabs" + "--show-avatar-button=incognito-and-guest" + + # Experimental features + "--enable-features=${ + concatStringsSep "," [ + "BackForwardCache:enable_same_site/true" + "CopyLinkToText" + "OverlayScrollbar" + "TabHoverCardImages" + "VaapiVideoDecoder" + ] + }" + + # Aesthetics + "--force-dark-mode" + + # Performance + "--enable-gpu-rasterization" + "--enable-oop-rasterization" + "--enable-zero-copy" + "--ignore-gpu-blocklist" + + # Etc + # "--gtk-version=4" + "--disk-cache=$XDG_RUNTIME_DIR/chromium-cache" + "--no-default-browser-check" + "--no-service-autorun" + "--disable-features=PreloadMediaEngagementData,MediaEngagementBypassAutoplayPolicies" + "--disable-reading-from-canvas" + "--no-pings" + "--no-first-run" + "--no-experiments" + "--no-crash-upload" + "--disable-wake-on-wifi" + "--disable-breakpad" + "--disable-sync" + "--disable-speech-api" + "--disable-speech-synthesis-api" + ] ++ optionals isWayland [ + "--ozone-platform=wayland" + "--enable-features=UseOzonePlatform" + ]; + }; + }; + }; +} + diff --git a/home/programs/graphical/browsers/default.nix b/home/programs/graphical/browsers/default.nix new file mode 100644 index 0000000..f495042 --- /dev/null +++ b/home/programs/graphical/browsers/default.nix @@ -0,0 +1,6 @@ +_: { + imports = [ + ./chromium + ]; +} + diff --git a/home/programs/graphical/default.nix b/home/programs/graphical/default.nix index 233cea0..68f78e7 100644 --- a/home/programs/graphical/default.nix +++ b/home/programs/graphical/default.nix @@ -4,5 +4,6 @@ _: { ./launchers ./apps ./bars + ./browsers ]; } diff --git a/hosts/herugrim/default.nix b/hosts/herugrim/default.nix index 820486b..6920150 100644 --- a/hosts/herugrim/default.nix +++ b/hosts/herugrim/default.nix @@ -95,6 +95,10 @@ }; programs = { + browsers = { + chromium.enable = true; + }; + spotify.enable = true; }; }; diff --git a/options/home/programs/default.nix b/options/home/programs/default.nix index f37aae7..df13c0f 100644 --- a/options/home/programs/default.nix +++ b/options/home/programs/default.nix @@ -19,6 +19,10 @@ in }; }; + browsers = { + chromium.enable = mkEnableOption "Chromium browser"; + }; + spotify.enable = mkEnableOption "Spotify"; }; }