From 6a4bf435608607794e2f64dba5a6ffda1c30c2fa Mon Sep 17 00:00:00 2001 From: laniakea Date: Sat, 11 Apr 2026 08:37:04 +0300 Subject: [PATCH] firefox config --- navi/configuration.nix | 22 +-- navi/flake.lock | 26 ++- navi/flake.nix | 8 +- navi/navi/bash.nix | 20 ++ navi/navi/browser.nix | 403 +++++++++++++++++++++++++++++++++++++++-- navi/navi/bspwm.nix | 45 +++-- navi/navi/default.nix | 1 + navi/navi/keyboard.nix | 2 +- 8 files changed, 468 insertions(+), 59 deletions(-) create mode 100644 navi/navi/bash.nix diff --git a/navi/configuration.nix b/navi/configuration.nix index 4f04d1e..3cd66ae 100644 --- a/navi/configuration.nix +++ b/navi/configuration.nix @@ -1,18 +1,13 @@ -{ config, pkgs, ... }: +{ config, pkgs, firefox-addons, ... }: { imports = [ ./hardware-configuration.nix ]; - - # Bootloader boot.loader.systemd-boot.enable = true; boot.loader.efi.canTouchEfiVariables = true; programs.dconf.enable = true; - # Hostname networking.hostName = "navi"; networking.networkmanager.enable = true; - - # Timezone & locale time.timeZone = "Asia/Jerusalem"; i18n.defaultLocale = "en_IL"; i18n.extraLocaleSettings = { @@ -26,8 +21,6 @@ LC_TELEPHONE = "he_IL.UTF-8"; LC_TIME = "he_IL.UTF-8"; }; - - # X11 + i3 (no GNOME) services.xserver = { enable = true; windowManager.i3.enable = true; @@ -37,8 +30,6 @@ variant = ""; }; }; - - # Sound security.rtkit.enable = true; services.pulseaudio.enable = false; services.pipewire = { @@ -47,26 +38,19 @@ alsa.support32Bit = true; pulse.enable = true; }; - services.printing.enable = true; - - # User users.users.laniakea = { isNormalUser = true; description = "laniakea"; extraGroups = [ "networkmanager" "wheel" ]; }; - - # home-manager as NixOS module home-manager = { useGlobalPkgs = true; useUserPackages = true; + extraSpecialArgs = { inherit firefox-addons; }; users.laniakea = import ./navi/default.nix; }; - - programs.firefox.enable = true; + nixpkgs.config.allowUnfree = true; environment.systemPackages = with pkgs; [ git ]; - - } diff --git a/navi/flake.lock b/navi/flake.lock index 7034108..e0f1ea5 100644 --- a/navi/flake.lock +++ b/navi/flake.lock @@ -1,5 +1,27 @@ { "nodes": { + "firefox-addons": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "dir": "pkgs/firefox-addons", + "lastModified": 1775793785, + "narHash": "sha256-lLJpttuuF9sbmwM7GuNJ2/mKVqbim4Wla3rl/eMjAZo=", + "owner": "rycee", + "repo": "nur-expressions", + "rev": "65415051e904355712fc63e7a0bd14f20eddbe28", + "type": "gitlab" + }, + "original": { + "dir": "pkgs/firefox-addons", + "owner": "rycee", + "repo": "nur-expressions", + "type": "gitlab" + } + }, "home-manager": { "inputs": { "nixpkgs": [ @@ -38,6 +60,7 @@ }, "root": { "inputs": { + "firefox-addons": "firefox-addons", "home-manager": "home-manager", "nixpkgs": "nixpkgs" } @@ -46,6 +69,3 @@ "root": "root", "version": 7 } - - - diff --git a/navi/flake.nix b/navi/flake.nix index ad74843..ee08e55 100644 --- a/navi/flake.nix +++ b/navi/flake.nix @@ -5,11 +5,15 @@ url = "github:nix-community/home-manager"; inputs.nixpkgs.follows = "nixpkgs"; }; + firefox-addons = { + url = "gitlab:rycee/nur-expressions?dir=pkgs/firefox-addons"; + inputs.nixpkgs.follows = "nixpkgs"; + }; }; - - outputs = { self, nixpkgs, home-manager, ... }: { + outputs = { self, nixpkgs, home-manager, firefox-addons, ... }: { nixosConfigurations.navi = nixpkgs.lib.nixosSystem { system = "x86_64-linux"; + specialArgs = { inherit firefox-addons; }; modules = [ home-manager.nixosModules.home-manager ./configuration.nix diff --git a/navi/navi/bash.nix b/navi/navi/bash.nix new file mode 100644 index 0000000..050ab66 --- /dev/null +++ b/navi/navi/bash.nix @@ -0,0 +1,20 @@ +{ pkgs, ... }: +{ + programs.bash = { + enable = true; + initExtra = '' + eval "$(starship init bash)" + ''; + }; + + programs.starship = { + enable = true; + settings = { + add_newline = true; + character = { + success_symbol = "[❯](bold green)"; + error_symbol = "[❯](bold red)"; + }; + }; + }; +} diff --git a/navi/navi/browser.nix b/navi/navi/browser.nix index edae1d2..e44c56b 100644 --- a/navi/navi/browser.nix +++ b/navi/navi/browser.nix @@ -1,16 +1,397 @@ -{ pkgs, inputs, ... }: - +let + profile = "default"; + prf = ".mozilla/firefox/${profile}"; + extstorage = "${prf}/browser-extension-data"; +in +{ config, pkgs, lib, firefox-addons, ... }: +let + fa = firefox-addons.packages.${pkgs.system}; + buildFirefoxXpiAddon = firefox-addons.lib.${pkgs.system}.buildFirefoxXpiAddon; + mozlz4 = n: x: + pkgs.runCommand "${n}.mozlz4" { buildInputs = [ pkgs.mozlz4a ]; } '' + mozlz4a ${builtins.toFile "${n}" (builtins.toJSON x)} $out + ''; +in { - programs.librewolf = { + home.file."${prf}/extension-preferences.json.tmp".source = pkgs.emptyFile; + home.file."${prf}/extension-settings.json.tmp".source = pkgs.emptyFile; + home.file."${prf}/search.json.mozlz4.tmp".source = pkgs.emptyFile; + home.file."${prf}/storage/default".source = pkgs.emptyDirectory; + home.file."${prf}/addonStartup.json.lz4".source = mozlz4 "addonStartup.json" {}; + home.file."${prf}/addonStartup.json.lz4.tmp".source = pkgs.emptyFile; + + home.file."${prf}/extension-preferences.json".text = builtins.toJSON { + "{3c078156-979c-498b-8990-85f7987dd929}" = { + origins = [""]; + permissions = ["proxy" "bookmarks" "tabHide" "clipboardWrite" "history" "downloads" ""]; + }; + "newtaboverride@agenedia.com" = { + origins = ["https://www.soeren-hentzschel.at/*"]; + permissions = []; + }; + }; + + home.file."${prf}/extension-settings.json".text = builtins.toJSON { + commands = {}; + default_search = {}; + homepageNotification = {}; + newTabNotification = { + "newtaboverride@agenedia.com" = { + initialValue = false; + precedenceList = [ + { + enabled = true; + id = "newtaboverride@agenedia.com"; + installDate = 1000; + value = true; + } + ]; + }; + }; + prefs = { + "network.networkPredictionEnabled" = { + initialValue = {}; + precedenceList = [ + { + enabled = true; + id = "uBlock0@raymondhill.net"; + installDate = 1000; + value = false; + } + ]; + }; + "privacy.containers" = { + initialValue = {}; + precedenceList = [ + { + enabled = true; + id = "CanvasBlocker@kkapsner.de"; + installDate = 1000; + value = "CanvasBlocker@kkapsner.de"; + } + ]; + }; + "websites.hyperlinkAuditingEnabled" = { + initialValue = {}; + precedenceList = [ + { + enabled = true; + id = "uBlock0@raymondhill.net"; + installDate = 1000; + value = false; + } + ]; + }; + }; + tabHideNotification = {}; + url_overrides = { + newTabURL = { + initialValue = "about:newtab"; + precedenceList = [ + { + enabled = true; + id = "newtaboverride@agenedia.com"; + installDate = 1000; + value = "moz-extension://5ba70e66-a52e-41b3-9364-b4f0a14f3854/html/newtab.html"; + } + ]; + }; + }; + version = 3; + }; + + home.file."${extstorage}/redirector@einaregilsson.com/storage.js".text = builtins.toJSON { + redirects = map ({ includePattern, redirectUrl, description }: { + appliesTo = ["main_frame"]; + inherit description; + disabled = false; + error = null; + exampleResult = ""; + exampleUrl = ""; + excludePattern = ""; + grouped = false; + inherit includePattern; + patternDesc = ""; + patternType = "W"; + processMatches = "noProcessing"; + inherit redirectUrl; + }) [ + { + includePattern = "https://*youtube.com/watch?*v=*"; + redirectUrl = "https://yewtu.be/watch?$2v=$3}"; + description = "invidious"; + } + { + includePattern = "https://*youtube.com/results?*search_query=*"; + redirectUrl = "https://yewtu.be/search?$2q=$3"; + description = "invidious search"; + } + ]; + enableNotifications = false; + }; + + home.file."${extstorage}/newtaboverride@agenedia.com/storage.js".text = builtins.toJSON { + url = "https://lobste.rs"; + }; + + programs.firefox = { enable = true; - # Enable WebGL, cookies and history - settings = { - "webgl.disabled" = false; - "privacy.resistFingerprinting" = true; - "privacy.clearOnShutdown.history" = true; - "privacy.clearOnShutdown.cookies" = false; - "network.cookie.lifetimePolicy" = 0; + package = pkgs.firefox.override { + extraPolicies = { + CaptivePortal = false; + DisableFirefoxStudies = true; + DisablePocket = true; + DisableTelemetry = true; + DisableFirefoxAccounts = true; + FirefoxHome = { + Pocket = false; + Snippets = false; + }; + UserMessaging = { + ExtensionRecommendations = false; + SkipOnboarding = true; + }; + OverrideFirstRunPage = ""; + Extensions.Install = map (x: x.src.outPath) config.programs.firefox.profiles."default".extensions.packages; + SearchEngines.Default = "DuckDuckGo"; + ExtensionSettings = { + "google@search.mozilla.org" = { installation_mode = "blocked"; }; + "amazondotcom@search.mozilla.org" = { installation_mode = "blocked"; }; + "wikipedia@search.mozilla.org" = { installation_mode = "blocked"; }; + "bing@search.mozilla.org" = { installation_mode = "blocked"; }; + }; + }; + }; + profiles.default = { + userChrome = '' + /* Catppuccin Mocha */ + :root { + --ctp-base: #1e1e2e; + --ctp-mantle: #181825; + --ctp-crust: #11111b; + --ctp-surface0:#313244; + --ctp-surface1:#45475a; + --ctp-surface2:#585b70; + --ctp-overlay0:#6c7086; + --ctp-overlay1:#7f849c; + --ctp-text: #cdd6f4; + --ctp-subtext0:#a6adc8; + --ctp-lavender:#b4befe; + --ctp-blue: #89b4fa; + --ctp-mauve: #cba6f7; + --ctp-pink: #f38ba8; + --ctp-peach: #fab387; + --ctp-green: #a6e3a1; + --ctp-teal: #94e2d5; + } + + #main-window, + #navigator-toolbox, + #TabsToolbar, + #nav-bar, + #PersonalToolbar { + background-color: var(--ctp-mantle) !important; + color: var(--ctp-text) !important; + border-color: var(--ctp-surface0) !important; + } + + .tabbrowser-tab .tab-background { + background-color: var(--ctp-surface0) !important; + border-radius: 6px !important; + } + + .tabbrowser-tab[selected] .tab-background { + background-color: var(--ctp-base) !important; + } + + .tabbrowser-tab .tab-label { + color: var(--ctp-subtext0) !important; + } + + .tabbrowser-tab[selected] .tab-label { + color: var(--ctp-text) !important; + } + + .tabbrowser-tab[selected] .tab-background::before { + content: ""; + display: block; + height: 2px; + background: var(--ctp-mauve) !important; + border-radius: 2px 2px 0 0; + position: absolute; + top: 0; + left: 0; + right: 0; + } + + #urlbar-background { + background-color: var(--ctp-surface0) !important; + border-color: var(--ctp-surface1) !important; + border-radius: 8px !important; + } + + #urlbar[focused] #urlbar-background { + border-color: var(--ctp-mauve) !important; + box-shadow: 0 0 0 1px var(--ctp-mauve) !important; + } + + #urlbar-input { + color: var(--ctp-text) !important; + } + + toolbar button, + toolbarbutton { + color: var(--ctp-text) !important; + } + + toolbar button:hover, + toolbarbutton:hover { + background-color: var(--ctp-surface1) !important; + border-radius: 4px !important; + } + + #sidebar-box { + background-color: var(--ctp-mantle) !important; + color: var(--ctp-text) !important; + } + + menupopup, + panel { + background-color: var(--ctp-surface0) !important; + color: var(--ctp-text) !important; + border-color: var(--ctp-surface1) !important; + border-radius: 8px !important; + } + + menuitem:hover { + background-color: var(--ctp-surface1) !important; + color: var(--ctp-text) !important; + border-radius: 4px !important; + } + + #PersonalToolbar toolbarbutton { + color: var(--ctp-subtext0) !important; + } + + #PersonalToolbar toolbarbutton:hover { + color: var(--ctp-text) !important; + background-color: var(--ctp-surface0) !important; + border-radius: 4px !important; + } + + scrollbar { + background-color: var(--ctp-mantle) !important; + } + + scrollbar thumb { + background-color: var(--ctp-surface2) !important; + border-radius: 4px !important; + } + ''; + search = { + default = "DuckDuckGo"; + force = true; + engines = { + "Nix Packages" = { + urls = [{ + template = "https://search.nixos.org/packages"; + params = [ + { name = "type"; value = "packages"; } + { name = "query"; value = "{searchTerms}"; } + ]; + }]; + icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg"; + definedAliases = ["!np"]; + }; + "Home Manager" = { + urls = [{ + template = "https://mipmip.github.io/home-manager-option-search/"; + params = [ + { name = "query"; value = "{searchTerms}"; } + ]; + }]; + icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg"; + definedAliases = ["!hm"]; + }; + "Invidious" = { + urls = [{ + template = "https://yewtu.be/search"; + params = [ + { name = "q"; value = "{searchTerms}"; } + ]; + }]; + iconUpdateURL = "https://invidious.io/favicon.ico"; + definedAliases = ["!yt"]; + }; + "Cyberchef" = { + urls = [{ + template = ''javascript:q="%s";location.href="https://cyberchef.org/#recipe=Magic(3,false,false,\'\')&input="+btoa(q)''; + params = [ + { name = "q"; value = "{searchTerms}"; } + ]; + }]; + iconUpdateURL = "https://cyberchef.org/favicon.ico"; + definedAliases = ["!cc"]; + }; + }; + }; + + extraConfig = + builtins.readFile ( + builtins.fetchurl { + url = "https://raw.githubusercontent.com/arkenfox/user.js/master/user.js"; + sha256 = "sha256:067bfw8zm6gi82a79cfb3y6hgqf5bsykx1k4z31nby320j4ch74g"; + } + ) + + '' + user_pref('keyword.enabled', true); + user_pref("browser.startup.homepage", "https://lobste.rs"); + user_pref("browser.startup.page", 1); + user_pref("privacy.resistFingerprinting", false); + user_pref("privacy.resistFingerprinting.letterboxing", false); + user_pref("browser.search.hiddenOneOffs","Google,Bing,Amazon.com,eBay,Twitter,Wikipedia (en)"); + ''; + + settings = { + "toolkit.legacyUserProfileCustomizations.stylesheets" = true; + "browser.newtabpage.pinned" = [{ url = "https://lobste.rs"; }]; + "extensions.activeThemeID" = "{e410fec2-1cbd-4098-9944-e21e708418af}"; + "svg.context-properties.content.enabled" = true; + "browser.toolbars.bookmarks.visibility" = "always"; + "browser.uidensity" = 1; + "browser.aboutConfig.showWarning" = false; + "browser.shell.checkDefaultBrowser" = false; + "browser.newtabpage.activity-stream.improvesearch.topSiteSearchShortcuts" = false; + "browser.search.hiddenOneOffs" = "Google,Bing,Amazon.com,eBay,Twitter,Wikipedia (en)"; + "browser.download.dir" = config.xdg.userDirs.download; + }; + + extensions.packages = [ + fa.ublock-origin + fa.clearurls + fa.privacy-possum + fa.skip-redirect + fa.canvasblocker + fa.darkreader + fa.vimium + (buildFirefoxXpiAddon { + pname = "sidebery"; + version = "v5.0.0rc4"; + addonId = "{3c078156-979c-498b-8990-85f7987dd929}"; + url = "https://github.com/mbnuqw/sidebery/releases/download/v5.0.0rc4/sidebery-5.0.0rc4.xpi"; + sha256 = "sha256-YsH9yYfGefClRS93dMV/eLMFuoPFKPrx0NL2hIv4dEk="; + meta = with lib; { + homepage = "https://github.com/mbnuqw/sidebery"; + description = "Tabs tree and bookmarks in sidebar with advanced containers configuration."; + license = licenses.mit; + platforms = platforms.all; + }; + }) + fa.redirector + fa.kristofferhagen-nord-theme + fa.new-tab-override + fa.snowflake + ]; }; }; } - diff --git a/navi/navi/bspwm.nix b/navi/navi/bspwm.nix index b8392ef..93ed2f4 100644 --- a/navi/navi/bspwm.nix +++ b/navi/navi/bspwm.nix @@ -12,35 +12,35 @@ window_gap = 2; }; rules."Zathura".state = "tiled"; + startupPrograms = [ "feh --bg-fill ~/Pictures/wp.png" ]; }; }; - services.sxhkd = { enable = true; keybindings = { "super + d" = "rofi -show drun"; "super + Return" = "alacritty"; "super + w" = "bspc node -c"; - "super + 1" = "bspc desktop -f '1'"; - "super + 2" = "bspc desktop -f '2'"; - "super + 3" = "bspc desktop -f '3'"; - "super + 4" = "bspc desktop -f '4'"; - "super + 5" = "bspc desktop -f '5'"; - "super + 6" = "bspc desktop -f '6'"; - "super + 7" = "bspc desktop -f '7'"; - "super + 8" = "bspc desktop -f '8'"; - "super + 9" = "bspc desktop -f '9'"; - "super + 0" = "bspc desktop -f '10'"; - "super + shift + 1" = "bspc node -d '1'"; - "super + shift + 2" = "bspc node -d '2'"; - "super + shift + 3" = "bspc node -d '3'"; - "super + shift + 4" = "bspc node -d '4'"; - "super + shift + 5" = "bspc node -d '5'"; - "super + shift + 6" = "bspc node -d '6'"; - "super + shift + 7" = "bspc node -d '7'"; - "super + shift + 8" = "bspc node -d '8'"; - "super + shift + 9" = "bspc node -d '9'"; - "super + shift + 0" = "bspc node -d '10'"; + "super + 1" = "bspc desktop -f '^1'"; + "super + 2" = "bspc desktop -f '^2'"; + "super + 3" = "bspc desktop -f '^3'"; + "super + 4" = "bspc desktop -f '^4'"; + "super + 5" = "bspc desktop -f '^5'"; + "super + 6" = "bspc desktop -f '^6'"; + "super + 7" = "bspc desktop -f '^7'"; + "super + 8" = "bspc desktop -f '^8'"; + "super + 9" = "bspc desktop -f '^9'"; + "super + 0" = "bspc desktop -f '^10'"; + "super + shift + 1" = "bspc node -d '^1'"; + "super + shift + 2" = "bspc node -d '^2'"; + "super + shift + 3" = "bspc node -d '^3'"; + "super + shift + 4" = "bspc node -d '^4'"; + "super + shift + 5" = "bspc node -d '^5'"; + "super + shift + 6" = "bspc node -d '^6'"; + "super + shift + 7" = "bspc node -d '^7'"; + "super + shift + 8" = "bspc node -d '^8'"; + "super + shift + 9" = "bspc node -d '^9'"; + "super + shift + 0" = "bspc node -d '^10'"; "super + h" = "bspc node -f west"; "super + j" = "bspc node -f south"; "super + k" = "bspc node -f north"; @@ -52,6 +52,5 @@ "super + shift + r" = "bspc wm -r"; }; }; - - home.packages = with pkgs; [ rofi ]; + home.packages = with pkgs; [ rofi feh ]; } diff --git a/navi/navi/default.nix b/navi/navi/default.nix index 3fba847..22853bb 100644 --- a/navi/navi/default.nix +++ b/navi/navi/default.nix @@ -12,6 +12,7 @@ ./git.nix ./launcher.nix ./keyboard.nix + ./bash.nix ./bspwm.nix ./notifications.nix ./polybar.nix diff --git a/navi/navi/keyboard.nix b/navi/navi/keyboard.nix index cba2fad..d91a9fd 100644 --- a/navi/navi/keyboard.nix +++ b/navi/navi/keyboard.nix @@ -80,7 +80,7 @@ "XF86AudioMicMute" = "pulsemixer --id source-42 --toggle-mute"; # Launch programs - "alt + 1" = "librewolf"; + "alt + 1" = "firefox"; "alt + 2" = "Discord";