From d9d6647b2ddd4732719d1c4358df687844ac0b73 Mon Sep 17 00:00:00 2001 From: fredrikr79 Date: Thu, 4 Dec 2025 14:19:27 +0100 Subject: [PATCH] add firefox declaratively --- configuration.nix | 2 +- flake.lock | 23 ++++++++++++++++ flake.nix | 5 ++++ home.nix | 69 +++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 98 insertions(+), 1 deletion(-) diff --git a/configuration.nix b/configuration.nix index 46781a0..9418cb9 100644 --- a/configuration.nix +++ b/configuration.nix @@ -118,7 +118,7 @@ in # DVORAK + NO xkb.layout = "us,no"; xkb.variant = "dvp,"; - xkb.options = "compose:menu, grp:alt_shift_toggle, lv3:ralt_switch"; + xkb.options = "compose:alt,grp:alt_shift_toggle,lv3:menu"; exportConfiguration = true; diff --git a/flake.lock b/flake.lock index aea4305..2e253c3 100644 --- a/flake.lock +++ b/flake.lock @@ -1,5 +1,27 @@ { "nodes": { + "firefox-addons": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "dir": "pkgs/firefox-addons", + "lastModified": 1765080359, + "narHash": "sha256-BvAgmqgswcokD2eWoyO3uB1k1VTdpxDHGSx0RYRFjDg=", + "owner": "rycee", + "repo": "nur-expressions", + "rev": "35f8ab2ecd954b3a348aa0e253878211c48a0aa7", + "type": "gitlab" + }, + "original": { + "dir": "pkgs/firefox-addons", + "owner": "rycee", + "repo": "nur-expressions", + "type": "gitlab" + } + }, "flake-parts": { "inputs": { "nixpkgs-lib": [ @@ -151,6 +173,7 @@ }, "root": { "inputs": { + "firefox-addons": "firefox-addons", "home-manager": "home-manager", "nixpkgs": "nixpkgs", "nixvim": "nixvim", diff --git a/flake.nix b/flake.nix index 52ee8ab..0ebd682 100644 --- a/flake.nix +++ b/flake.nix @@ -36,6 +36,11 @@ # url = "git+file:///home/fredrikr/Programming/uiua/qotd"; # inputs.nixpkgs.follows = "nixpkgs"; # }; + + firefox-addons = { + url = "gitlab:rycee/nur-expressions?dir=pkgs/firefox-addons"; + inputs.nixpkgs.follows = "nixpkgs"; + }; }; outputs = diff --git a/home.nix b/home.nix index ad1a0de..2f32ede 100644 --- a/home.nix +++ b/home.nix @@ -135,6 +135,7 @@ in home.sessionVariables = { EDITOR = "nvim"; + MOZ_USE_XINPUT2 = "1"; }; programs.home-manager.enable = true; @@ -1207,4 +1208,72 @@ in "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36"; }; }; + + programs.firefox = { + enable = true; + + profiles.default = { + id = 0; + name = "default"; + isDefault = true; + + settings = { + # Memory optimization + "dom.ipc.processCount" = 1; + "dom.ipc.processCount.webIsolated" = 1; + "fission.autostart" = false; + "browser.cache.memory.capacity" = 2097152; + + # Hardware acceleration + "gfx.webrender.all" = true; + "media.hardware-video-decoding.force-enabled" = true; + "layers.acceleration.force-enabled" = true; + + # UI customization + "toolkit.legacyUserProfileCustomizations.stylesheets" = true; + "browser.compactmode.show" = true; + + # Clean interface + "browser.startup.homepage" = "about:blank"; + "browser.newtabpage.enabled" = false; + "browser.newtabpage.activity-stream.feeds.section.highlights" = false; + + # Privacy + "privacy.resistFingerprinting" = true; + "dom.security.https_only_mode" = true; + }; + + # Minimal userChrome.css + userChrome = '' + /* Hide tab bar when single tab */ + #tabbrowser-tabs { + visibility: collapse !important; + } + #tabbrowser-tabs[overflow="true"], + #tabbrowser-tabs:not([overflow]) { + visibility: visible !important; + } + + /* Auto-hide address bar */ + #nav-bar { + margin-top: -40px !important; + transition: margin-top 0.2s ease !important; + } + #navigator-toolbox:hover #nav-bar, + #nav-bar:focus-within { + margin-top: 0px !important; + } + + /* Clean minimal look */ + #identity-box, + #tracking-protection-icon-container, + #urlbar-zoom-button, + #star-button-box { display: none !important; } + ''; + + extensions = with inputs.firefox-addons.packages.${pkgs.system}; [ + ublock-origin + ]; + }; + }; }