diff --git a/nixcfgs/flake.lock b/nixcfgs/flake.lock index 06d1f42..6d93210 100644 --- a/nixcfgs/flake.lock +++ b/nixcfgs/flake.lock @@ -137,6 +137,27 @@ "type": "github" } }, + "firefox-addons": { + "inputs": { + "flake-utils": "flake-utils", + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1763254583, + "narHash": "sha256-qOCvJgLGKahIG9DWcLUMjadAR/0KZeEypIqw3ASj2sA=", + "owner": "petrkozorezov", + "repo": "firefox-addons-nix", + "rev": "7a779c26bd1e6caf1fe45f905253c41e5b03c2b7", + "type": "github" + }, + "original": { + "owner": "petrkozorezov", + "repo": "firefox-addons-nix", + "type": "github" + } + }, "flake-compat": { "flake": false, "locked": { @@ -213,6 +234,23 @@ "type": "github" } }, + "flake-utils": { + "inputs": { + "systems": "systems_2" + }, + "locked": { + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", + "type": "github" + }, + "original": { + "id": "flake-utils", + "type": "indirect" + } + }, "gitignore": { "inputs": { "nixpkgs": [ @@ -350,7 +388,7 @@ "hyprwayland-scanner": "hyprwayland-scanner", "nixpkgs": "nixpkgs_7", "pre-commit-hooks": "pre-commit-hooks", - "systems": "systems_2", + "systems": "systems_3", "xdph": "xdph" }, "locked": { @@ -944,6 +982,7 @@ "inputs": { "betterfox-nix": "betterfox-nix", "caelestia-shell": "caelestia-shell", + "firefox-addons": "firefox-addons", "home-manager": "home-manager", "niri-flake": "niri-flake", "nix-darwin": "nix-darwin", @@ -953,7 +992,8 @@ "nur": "nur", "plasma-manager": "plasma-manager", "sops-nix": "sops-nix", - "xremap-flake": "xremap-flake" + "xremap-flake": "xremap-flake", + "zen-browser": "zen-browser" } }, "sops-nix": { @@ -992,6 +1032,21 @@ } }, "systems_2": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_3": { "locked": { "lastModified": 1689347949, "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=", @@ -1145,6 +1200,26 @@ "repo": "xwayland-satellite", "type": "github" } + }, + "zen-browser": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1762827415, + "narHash": "sha256-YxPQbafcd09foVFn5yHggTZDbXsrtHVae+iwo2wGn0w=", + "owner": "youwen5", + "repo": "zen-browser-flake", + "rev": "6e0ad935d9caad128d2c58b2a1ba31524c0fe7f1", + "type": "github" + }, + "original": { + "owner": "youwen5", + "repo": "zen-browser-flake", + "type": "github" + } } }, "root": "root", diff --git a/nixcfgs/flake.nix b/nixcfgs/flake.nix index 39aaa6f..f892523 100644 --- a/nixcfgs/flake.nix +++ b/nixcfgs/flake.nix @@ -37,6 +37,14 @@ xremap-flake.url = "github:xremap/nix-flake"; # betterfox - preconfigured firefox user.js betterfox-nix.url = "github:HeitorAugustoLN/betterfox-nix"; + firefox-addons = { + url = "github:petrkozorezov/firefox-addons-nix"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + zen-browser = { + url = "github:youwen5/zen-browser-flake"; + inputs.nixpkgs.follows = "nixpkgs"; + }; }; outputs = { @@ -53,13 +61,19 @@ niri-flake, xremap-flake, betterfox-nix, + firefox-addons, + zen-browser, ... } @ inputs: let overlays = [ nur.overlays.default + firefox-addons.overlays.default (final: prev: { caelestia-shell = caelestia-shell.packages.x86_64-linux.caelestia-shell; }) + (final: pref: { + zen-browser = zen-browser.packages.x86_64-linux.zen-browser; + }) ]; forSystem = system: import nixpkgs { diff --git a/nixcfgs/modules/nixos/desktop/xremap.nix b/nixcfgs/modules/nixos/desktop/xremap.nix index 42f47ff..f06f457 100644 --- a/nixcfgs/modules/nixos/desktop/xremap.nix +++ b/nixcfgs/modules/nixos/desktop/xremap.nix @@ -42,7 +42,13 @@ { name = "IM Navigator - Alt-Up/Down"; application = { - only = ["org.telegram.desktop" "telegram-desktop" "wechat"]; + only = [ + "org.telegram.desktop" + "telegram-desktop" + "io.github.kukuruzka165.materialgram" + "materialgram" + "wechat" + ]; }; remap = { "M-j" = "M-down"; diff --git a/nixcfgs/modules/nixos/programs/firefox.nix b/nixcfgs/modules/nixos/programs/firefox.nix index 3039fda..ba2c54d 100644 --- a/nixcfgs/modules/nixos/programs/firefox.nix +++ b/nixcfgs/modules/nixos/programs/firefox.nix @@ -5,8 +5,8 @@ languagePacks = ["zh-CN"]; preferences = { - "widget.use-xdg-desktop-portal.file-picker" = 1; - "widget.use-xdg-desktop-portal.mime-handler" = 1; + # "widget.use-xdg-desktop-portal.file-picker" = 1; + # "widget.use-xdg-desktop-portal.mime-handler" = 1; "screenshots.browser.component.enabled" = false; "toolkit.telemetry.enabled" = false; "toolkit.telemetry.archive.enabled" = false; diff --git a/nixcfgs/users/js0ny/packages/gui.nix b/nixcfgs/users/js0ny/packages/gui.nix index f86c94a..29dbbfd 100644 --- a/nixcfgs/users/js0ny/packages/gui.nix +++ b/nixcfgs/users/js0ny/packages/gui.nix @@ -27,7 +27,7 @@ rose-pine-cursor pcloud - telegram-desktop + materialgram steam signal-desktop # Use Wayland for Jetbrains diff --git a/nixcfgs/users/js0ny/programs/chromium.nix b/nixcfgs/users/js0ny/programs/chromium.nix index b406b83..16797bc 100644 --- a/nixcfgs/users/js0ny/programs/chromium.nix +++ b/nixcfgs/users/js0ny/programs/chromium.nix @@ -1,11 +1,14 @@ -{pkgs, ...}: { +{...}: { programs.chromium = { enable = true; commandLineArgs = [ - "--enable-wayland-ime" - "--enable-features=WaylandWindowDecorations" - "--enable-features=UseOzonePlatform" - "--ozone-platform-hint=auto" + # Done by NIXOS_OZONE_WL=1 + # "--enable-wayland-ime" + # "--enable-features=WaylandWindowDecorations" + # "--enable-features=UseOzonePlatform" + # "--ozone-platform-hint=auto" + # See: https://wiki.archlinux.org/title/Chromium#Touchpad_gestures_for_navigation + "--enable-features=TouchpadOverscrollHistoryNavigation" ]; extensions = [ {id = "cjpalhdlnbpafiamejdnhcphjbkeiagm";} # ublock origin diff --git a/nixcfgs/users/js0ny/programs/firefox/addons.nix b/nixcfgs/users/js0ny/programs/firefox/addons.nix index a1bdddd..d8dada8 100644 --- a/nixcfgs/users/js0ny/programs/firefox/addons.nix +++ b/nixcfgs/users/js0ny/programs/firefox/addons.nix @@ -1,31 +1,75 @@ {pkgs, ...}: let - addons = pkgs.nur.repos.rycee.firefox-addons; + addons = pkgs.firefox-addons; in { # imports = [./lib.nix]; # TODO: Declarative extension permissions programs.firefox.profiles.default = { extensions.packages = with addons; [ - ublock-origin + # Keybindings & Gestures & User Scripts + foxy-gestures + shortkeys + surfingkeys_ff + violentmonkey + + # Theming + material-icons-for-github + + # Browsing Enhancement darkreader + bionic-reader + ublock-origin + refined-github- + global-speed + buster-captcha-solver + sidebery + + # Cookies + cookie-quick-manager + cookie-autodelete + consent-o-matic # istilldontcareaboutcookies alt + + # Privacy + google-container + facebook-container + + ### Site Specific + # Steam + steam-database + protondb-for-steam + # YouTube + return-youtube-dislikes + sponsorblock + # Bilibili + bilisponsorblock + + # Misc rsshub-radar proton-pass proton-vpn - surfingkeys - web-archives - tampermonkey - stylus - foxy-gestures - google-container - refined-github - downthemall - material-icons-for-github - single-file - return-youtube-dislikes - steam-database - bilisponsorblock - sponsorblock - buster-captcha-solver - protondb-for-steam - i-dont-care-about-cookies + styl-us + kiss-translator + + # Disabled + # view-page-archive # Web Archives + # single-file + # downthemall + + # Install globally by policies: see modules/nixos/programs/firefox.nix + # clearurls + # multi-account-container ]; }; + programs.firefox = { + policies = { + ExtensionSettings = [ + { + name = "zotero@chnm.gmu.edu"; + value = { + install_url = "https://download.zotero.org/connector/firefox/release/Zotero_Connector-5.0.189.xpi"; + installation_mode = "allow"; + private_browsing = false; + }; + } + ]; + }; + }; } diff --git a/nixcfgs/users/js0ny/programs/firefox/default.nix b/nixcfgs/users/js0ny/programs/firefox/default.nix index 66872f7..9d31fea 100644 --- a/nixcfgs/users/js0ny/programs/firefox/default.nix +++ b/nixcfgs/users/js0ny/programs/firefox/default.nix @@ -10,10 +10,16 @@ enable = true; profiles.default = { settings = { + "browser.toolbars.bookmarks.visibility" = "never"; "extensions.update.enabled" = true; "sidebar.expandOnHover" = true; "sidebar.visibility" = "expand-on-hover"; "toolkit.legacyUserProfileCustomizations.stylesheets" = true; + "toolkit.tabbox.switchByScrolling" = true; + "browser.uidensity" = 1; + # Disable Menu when pressing + "ui.key.menuAccessKey" = -1; + "ui.key.menuAccessKeyFocuses" = false; }; }; }; diff --git a/nixcfgs/users/js0ny/programs/floorp.nix b/nixcfgs/users/js0ny/programs/floorp.nix index 1d884aa..ca5efaf 100644 --- a/nixcfgs/users/js0ny/programs/floorp.nix +++ b/nixcfgs/users/js0ny/programs/floorp.nix @@ -1,19 +1,30 @@ -{pkgs, ...}: { +{ + pkgs, + lib, + ... +}: let + a = pkgs.firefox-addons; +in { + home.file.".floorp/profiles.ini".force = lib.mkForce true; + home.file.".floorp/js0ny/search.json.mozlz4".force = lib.mkForce true; programs.floorp = { enable = true; - package = pkgs.floorp; policies = { DisableTelemetry = true; BlockAboutConfig = false; DisableFirefoxScreenshots = true; DontCheckDefaultBrowser = true; + Preferences = { + }; + ExtensionSettings = with builtins; let extension = short: uuid: { name = uuid; value = { install_url = "https://addons.mozilla.org/firefox/downloads/latest/${short}/latest.xpi"; - installation_mode = "force_installed"; + updates_disabled = true; + private_browsing = true; }; }; in @@ -54,7 +65,7 @@ ]; }; }; - profiles.default = { + profiles.js0ny = { search.engines = { archwiki = { name = "ArchWiki"; @@ -113,27 +124,36 @@ definedAliases = ["@gh"]; }; }; - extensions.packages = with pkgs.nur.repos.rycee.firefox-addons; [ - darkreader - rsshub-radar - proton-pass - surfingkeys - web-archives - # immersive-translate - tampermonkey - stylus - foxy-gestures - google-container - refined-github - downthemall - material-icons-for-github - single-file - return-youtube-dislikes - steam-database - bilisponsorblock - sponsorblock - buster-captcha-solver - ]; + extensions = { + packages = with pkgs.firefox-addons; [ + ublock-origin + darkreader + rsshub-radar + proton-pass + proton-vpn + surfingkeys_ff + view-page-archive # Web Archives + tampermonkey + styl-us + foxy-gestures + google-container + refined-github- + downthemall + material-icons-for-github + single-file + return-youtube-dislikes + steam-database + bilisponsorblock + sponsorblock + buster-captcha-solver + protondb-for-steam + i-dont-care-about-cookies + global-speed + kiss-translator + # sidebery + ]; + force = true; + }; }; }; } diff --git a/nixcfgs/users/js0ny/programs/mime.nix b/nixcfgs/users/js0ny/programs/mime.nix index 7b7f62d..a387629 100644 --- a/nixcfgs/users/js0ny/programs/mime.nix +++ b/nixcfgs/users/js0ny/programs/mime.nix @@ -1,4 +1,7 @@ {...}: let + # Why using nvim gui: + # * when `rga-fzf`: nvim wrapper failed to launch + # * nvim wrapper reports error on parsing filename with spaces gvim = "nvim-qt.desktop"; in { xdg.configFile."mimeapps.list".force = true; @@ -14,6 +17,7 @@ in { # Source Code - C "text/x-csrc" = gvim; # .c "text/x-chdr" = gvim; # .h + "text/javascript" = gvim; # CSV "text/csv" = gvim; # File Explorer