From 4b31769241440d7da5a65d6f0a4e43e929bd4ed7 Mon Sep 17 00:00:00 2001 From: cswimr Date: Wed, 11 Dec 2024 15:05:31 -0500 Subject: [PATCH] switch from `zen-browser` to `floorp` this change was made for a multitude of reasons: 1. Zen's constant updates would be completely fine if they didn't almost always result in some part of my workflow being broken. I want my browser to be stable, I don't want updating to break the address bar completely like the latest update as of writing (1.0.2b) 2. Floorp is supported by Home Manager, allowing me to declaratively manage my browser configuration. --- flake.lock | 119 +++++++++++++++++++++++++++++--------- flake.nix | 17 +++++- home-manager/browser.nix | 121 +++++++++++++++++++++++++++++++++++++++ home-manager/plasma.nix | 2 +- nixos/gui-pkgs.nix | 5 +- 5 files changed, 229 insertions(+), 35 deletions(-) create mode 100644 home-manager/browser.nix diff --git a/flake.lock b/flake.lock index f430093..ecf2941 100644 --- a/flake.lock +++ b/flake.lock @@ -168,6 +168,27 @@ "type": "github" } }, + "flake-parts_3": { + "inputs": { + "nixpkgs-lib": [ + "nur", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1733312601, + "narHash": "sha256-4pDvzqnegAfRkPwO3wmwBhVi/Sye1mzps0zHWYnP88c=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "205b12d8b7cd4802fbcb8e8ef6a0f1408781a4f9", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, "flake-utils": { "locked": { "lastModified": 1652776076, @@ -318,11 +339,11 @@ ] }, "locked": { - "lastModified": 1733484277, - "narHash": "sha256-i5ay20XsvpW91N4URET/nOc0VQWOAd4c4vbqYtcH8Rc=", + "lastModified": 1733873195, + "narHash": "sha256-dTosiZ3sZ/NKoLKQ++v8nZdEHya0eTNEsaizNp+MUPM=", "owner": "nix-community", "repo": "home-manager", - "rev": "d00c6f6d0ad16d598bf7e2956f52c1d9d5de3c3a", + "rev": "f26aa4b76fb7606127032d33ac73d7d507d82758", "type": "github" }, "original": { @@ -431,11 +452,11 @@ }, "nix-flatpak": { "locked": { - "lastModified": 1733345341, - "narHash": "sha256-8S58zrdpzGhax6tmn1i+R3AA0N9DJMu5FQI8JkA0NNU=", + "lastModified": 1733863840, + "narHash": "sha256-OO/yx700wpyKjFmsNlxep57pUIVCA1OlfEN1qUrxgCY=", "owner": "gmodena", "repo": "nix-flatpak", - "rev": "ebb0be49fc381112ff37726c6dd6df4df2ef5a1b", + "rev": "eb6f90693f91a7ce082c0c2c78627049265bc599", "type": "github" }, "original": { @@ -494,11 +515,11 @@ "nixpkgs": "nixpkgs_2" }, "locked": { - "lastModified": 1733623412, - "narHash": "sha256-Dc7xuCu6XaSTYbfRxQDHl0nW8mgIXWr8YRBOEmm9GMk=", + "lastModified": 1733882180, + "narHash": "sha256-KiI6gRWYgV4x5le9ETHWVMH5LBX2vGwamELJG/joiC0=", "owner": "nix-community", "repo": "nix-vscode-extensions", - "rev": "094ded90ffc925bca8a44ef47f03f229c9fc68f2", + "rev": "b5aa69a2b8c0c31e4e8a23f3dd41b474eeabf4fc", "type": "github" }, "original": { @@ -557,11 +578,11 @@ }, "nixpkgs_3": { "locked": { - "lastModified": 1733581040, - "narHash": "sha256-Qn3nPMSopRQJgmvHzVqPcE3I03zJyl8cSbgnnltfFDY=", + "lastModified": 1733759999, + "narHash": "sha256-463SNPWmz46iLzJKRzO3Q2b0Aurff3U1n0nYItxq7jU=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "22c3f2cf41a0e70184334a958e6b124fb0ce3e01", + "rev": "a73246e2eef4c6ed172979932bc80e1404ba2d56", "type": "github" }, "original": { @@ -573,11 +594,11 @@ }, "nixpkgs_4": { "locked": { - "lastModified": 1732521221, - "narHash": "sha256-2ThgXBUXAE1oFsVATK1ZX9IjPcS4nKFOAjhPNKuiMn0=", + "lastModified": 1733759999, + "narHash": "sha256-463SNPWmz46iLzJKRzO3Q2b0Aurff3U1n0nYItxq7jU=", "owner": "nixos", "repo": "nixpkgs", - "rev": "4633a7c72337ea8fd23a4f2ba3972865e3ec685d", + "rev": "a73246e2eef4c6ed172979932bc80e1404ba2d56", "type": "github" }, "original": { @@ -602,11 +623,11 @@ "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1733667809, - "narHash": "sha256-RajfsaKZIc3bk75wiaw+ZYVDSMljdLWW69VCT90f05w=", + "lastModified": 1733847310, + "narHash": "sha256-VHzWuZYK/m5OFXzAczrjnI7vH6knj0sfLnziRVDqgFE=", "owner": "nix-community", "repo": "nixvim", - "rev": "e2f81c8e8e8baa28b100e0e43b721f16de6299d8", + "rev": "b752606681ded3f69e99ed568c7075b3578dce48", "type": "github" }, "original": { @@ -615,6 +636,28 @@ "type": "github" } }, + "nur": { + "inputs": { + "flake-parts": "flake-parts_3", + "nixpkgs": [ + "nixpkgs" + ], + "treefmt-nix": "treefmt-nix_2" + }, + "locked": { + "lastModified": 1733925096, + "narHash": "sha256-RRSyDAuzhL8fTF3pDoiBezQ/7ZQM+c61eYktPksVznE=", + "owner": "nix-community", + "repo": "NUR", + "rev": "cebaa5601eca31b9d7eb4bf65aee90da9696821c", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "NUR", + "type": "github" + } + }, "nuschtosSearch": { "inputs": { "flake-utils": "flake-utils_4", @@ -670,11 +713,11 @@ ] }, "locked": { - "lastModified": 1733578387, - "narHash": "sha256-XkMZGeqg0GCRoSXvMcaHP7bdvWPRZxCK1sw1ASsc16E=", + "lastModified": 1733858086, + "narHash": "sha256-h2BDIDKiqgMpA6E+mu0RgMGy3FeM6k+EuJ9xgOQ1+zw=", "owner": "nix-community", "repo": "plasma-manager", - "rev": "2a64e173f1effdcc86e25cba0601e8feedf89115", + "rev": "7e2010249529931a3848054d5ff0dbf24675ab68", "type": "github" }, "original": { @@ -721,6 +764,7 @@ "nix-vscode-extensions": "nix-vscode-extensions", "nixpkgs": "nixpkgs_3", "nixvim": "nixvim", + "nur": "nur", "plasma-manager": "plasma-manager", "sops-nix": "sops-nix", "zen-browser": "zen-browser" @@ -758,11 +802,11 @@ ] }, "locked": { - "lastModified": 1733128155, - "narHash": "sha256-m6/qwJAJYcidGMEdLqjKzRIjapK4nUfMq7rDCTmZajc=", + "lastModified": 1733785344, + "narHash": "sha256-pm4cfEcPXripE36PYCl0A2Tu5ruwHEvTee+HzNk+SQE=", "owner": "Mic92", "repo": "sops-nix", - "rev": "c6134b6fff6bda95a1ac872a2a9d5f32e3c37856", + "rev": "a80af8929781b5fe92ddb8ae52e9027fae780d2a", "type": "github" }, "original": { @@ -837,16 +881,37 @@ "type": "github" } }, + "treefmt-nix_2": { + "inputs": { + "nixpkgs": [ + "nur", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1733222881, + "narHash": "sha256-JIPcz1PrpXUCbaccEnrcUS8jjEb/1vJbZz5KkobyFdM=", + "owner": "numtide", + "repo": "treefmt-nix", + "rev": "49717b5af6f80172275d47a418c9719a31a78b53", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "treefmt-nix", + "type": "github" + } + }, "zen-browser": { "inputs": { "nixpkgs": "nixpkgs_4" }, "locked": { - "lastModified": 1732933979, - "narHash": "sha256-Z7X++lKZMNBu67BJl2LP23e7RBadp2C/RuRrygLehaE=", + "lastModified": 1733840403, + "narHash": "sha256-j5hmZ/Oudzr4/HB383uUvY86PxB4c94+7QRV109kOpE=", "owner": "0xc000022070", "repo": "zen-browser-flake", - "rev": "5a765451af1db68acceae07b98e5c768f238210c", + "rev": "ddbfcd69583724e6d142af98010411ac26c2029d", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 6a9db84..0d6f9ca 100644 --- a/flake.nix +++ b/flake.nix @@ -6,6 +6,10 @@ url = "github:nix-community/home-manager/master"; inputs.nixpkgs.follows = "nixpkgs"; }; + nur = { + url = "github:nix-community/NUR"; + inputs.nixpkgs.follows = "nixpkgs"; + }; plasma-manager = { url = "github:nix-community/plasma-manager"; inputs.nixpkgs.follows = "nixpkgs"; @@ -32,7 +36,6 @@ url = "github:aksiksi/compose2nix"; inputs.nixpkgs.follows = "nixpkgs"; }; - zen-browser.url = "github:0xc000022070/zen-browser-flake"; nix-vscode-extensions.url = "github:nix-community/nix-vscode-extensions"; catppuccin-vsc.url = "https://flakehub.com/f/catppuccin/vscode/*.tar.gz"; }; @@ -48,7 +51,10 @@ system = "x86_64-linux"; pkgs = import nixpkgs { inherit system; - overlays = [ inputs.catppuccin-vsc.overlays.default ]; + overlays = [ + inputs.catppuccin-vsc.overlays.default + inputs.nur.overlays.default + ]; config.allowUnfree = true; }; in @@ -91,6 +97,7 @@ inputs.sops-nix.nixosModules.sops inputs.nixvim.nixosModules.nixvim + inputs.nur.modules.nixos.default inputs.nix-flatpak.nixosModules.nix-flatpak inputs.lanzaboote.nixosModules.lanzaboote @@ -114,7 +121,10 @@ home-manager = { useGlobalPkgs = true; useUserPackages = true; - sharedModules = [ inputs.plasma-manager.homeManagerModules.plasma-manager ]; + sharedModules = [ + inputs.nur.modules.homeManager.default + inputs.plasma-manager.homeManagerModules.plasma-manager + ]; backupFileExtension = "bak"; extraSpecialArgs = { inherit inputs; @@ -125,6 +135,7 @@ }; users.${user} = { imports = [ + ./home-manager/browser.nix ./home-manager/plasma.nix ./home-manager/tpm.nix ./home-manager/user.nix diff --git a/home-manager/browser.nix b/home-manager/browser.nix new file mode 100644 index 0000000..02fd72d --- /dev/null +++ b/home-manager/browser.nix @@ -0,0 +1,121 @@ +{ pkgs, ... }: +let + extensions-repo = pkgs.nur.repos.rycee.firefox-addons; + extensions = with extensions-repo; [ + augmented-steam # improve the Steam store experience + bitwarden # password manager + dearrow # crowdsourced YouTube thumbnails and titles with the goal of being less sensationalist + docsafterdark # dark mode for Google Workspace + fastforwardteam # bypass url shorteners + honey # automatically find and try coupon codes on digital stores + indie-wiki-buddy # automatically redirect from Fandom to standalone wikis or Breezewiki + modrinthify # add Modrinth links to Curseforge and Spigot projects that are also on Modrinth + plasma-integration # NOTE - replace with gnome-browser-integration if you use gnome, remove if you don't use either plasma or gnome + privacy-badger # block invisible trackers + prometheus-formatter # format Prometheus endpoints + protondb-for-steam # add ProtonDB information to Steam game store pages + #pwas-for-firefox # a tool to install, manage, and use Progressive Web Apps (PWAs) in Firefox, not necessary with Floorp + return-youtube-dislikes # re-add the dislike counter to YouTube + #sidebery # vertical tabs in Firefox, not necessary with Floorp + sponsorblock # block YouTube video sponsored segments + stylus # user stylesheet editor and manager + tampermonkey # userscript manager + ublock-origin # the best adblocker ❤️ + wayback-machine # access the Wayback Machine / Internet Archive from any page, also supports automatically saving a page to the Wayback Machine + web-scrobbler # last.fm scrobbling + youtube-nonstop # removes the "Video paused. Continue watching?" confirmation prompt from YouTube + youtube-shorts-block # remove YouTube shorts from the homepage and video suggestions + ]; +in +{ + programs.floorp = { + enable = true; + policies = { + "DisableAppUpdate" = true; # updates should be handled by NixOS + "DisplayBookmarksToolbar" = "always"; + "DisableTelemetry" = true; + # For extensions that aren't in NUR + "ExtensionSettings" = { + # Catppuccin Selector + "catppuccin@federicoscodelaro.com" = { + install_url = "https://addons.mozilla.org/firefox/downloads/latest/catppuccin-selector/latest.xpi"; + installation_mode = "force_installed"; + }; + }; + }; + profiles = { + "cswimr (personal)" = { + id = 0; + isDefault = true; + extensions = extensions; + search = { + default = "DuckDuckGo"; + force = true; + engines = { + "Nix Packages" = { + urls = [ + { + template = "https://search.nixos.org/packages"; + params = [ + { + "name" = "query"; + "value" = "{searchTerms}"; + } + { + "name" = "channel"; + "value" = "unstable"; + } + ]; + } + ]; + icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg"; + definedAliases = [ + "@np" + "pkgs" + "pkg" + ]; + }; + "Nix Options" = { + urls = [ + { + template = "https://search.nixos.org/options"; + params = [ + { + "name" = "query"; + "value" = "{searchTerms}"; + } + { + "name" = "channel"; + "value" = "unstable"; + } + ]; + } + ]; + icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg"; + definedAliases = [ + "@no" + "opts" + "opt" + ]; + }; + "NixOS Wiki" = { + urls = [ { template = "https://wiki.nixos.org/w/index.php?search={searchTerms}"; } ]; + icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg"; + definedAliases = [ + "@nw" + "nix" + ]; + }; + }; + }; + settings = { + "extensions.autoDisableScopes" = 0; + "floorp.browser.sidebar.enable" = false; + "floorp.browser.sidebar.useIconProvider" = "duckduckgo"; + "floorp.browser.sidebar2.hide.to.unload.panel.enabled" = true; + "floorp.extensions.allowPrivateBrowsingByDefault.is.enabled" = true; + }; + }; + }; + }; +} diff --git a/home-manager/plasma.nix b/home-manager/plasma.nix index b34ba15..f49e8cc 100644 --- a/home-manager/plasma.nix +++ b/home-manager/plasma.nix @@ -48,7 +48,7 @@ { iconTasks = { launchers = [ - "applications:zen.desktop" + "applications:floorp.desktop" "applications:vesktop.desktop" "applications:steam.desktop" "applications:org.prismlauncher.PrismLauncher.desktop" diff --git a/nixos/gui-pkgs.nix b/nixos/gui-pkgs.nix index 1aa2d80..d58558b 100644 --- a/nixos/gui-pkgs.nix +++ b/nixos/gui-pkgs.nix @@ -1,7 +1,5 @@ { pkgs, - inputs, - system, lib, ... }: @@ -22,10 +20,9 @@ let libnotify hoppscotch ]; - flakePackages = with inputs; [ zen-browser.packages.${system}.specific ]; in { - environment.systemPackages = lib.lists.unique (kdePackages ++ packages ++ flakePackages); + environment.systemPackages = lib.lists.unique (kdePackages ++ packages); # Enable the X11 windowing system. # You can leave this disabled if you're only using the Wayland session.