firefox config

This commit is contained in:
itamar 2026-04-11 08:37:04 +03:00
parent 4bbdb92401
commit 6a4bf43560
No known key found for this signature in database
GPG key ID: D8277CDCD4F544E9
8 changed files with 468 additions and 59 deletions

View file

@ -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 ];
}

26
navi/flake.lock generated
View file

@ -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
}

View file

@ -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

20
navi/navi/bash.nix Normal file
View file

@ -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)";
};
};
};
}

View file

@ -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 = ["<all_urls>"];
permissions = ["proxy" "bookmarks" "tabHide" "clipboardWrite" "history" "downloads" "<all_urls>"];
};
"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
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 = {
"webgl.disabled" = false;
"privacy.resistFingerprinting" = true;
"privacy.clearOnShutdown.history" = true;
"privacy.clearOnShutdown.cookies" = false;
"network.cookie.lifetimePolicy" = 0;
"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
];
};
};
}

View file

@ -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 ];
}

View file

@ -12,6 +12,7 @@
./git.nix
./launcher.nix
./keyboard.nix
./bash.nix
./bspwm.nix
./notifications.nix
./polybar.nix

View file

@ -80,7 +80,7 @@
"XF86AudioMicMute" = "pulsemixer --id source-42 --toggle-mute";
# Launch programs
"alt + 1" = "librewolf";
"alt + 1" = "firefox";
"alt + 2" = "Discord";