firefox module
This commit is contained in:
parent
acc9c123df
commit
7539947bb0
110
home-modules/firefox/default.nix
Normal file
110
home-modules/firefox/default.nix
Normal file
@ -0,0 +1,110 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
inherit (lib) mkOption mkEnableOption mkPackageOption types;
|
||||||
|
|
||||||
|
defaultExtensions = with pkgs.nur.repos.rycee.firefox-addons; [
|
||||||
|
bitwarden
|
||||||
|
darkreader
|
||||||
|
i-dont-care-about-cookies
|
||||||
|
privacy-badger
|
||||||
|
ublock-origin
|
||||||
|
];
|
||||||
|
|
||||||
|
defaultSettings = {
|
||||||
|
"app.normandy.first_run" = false;
|
||||||
|
"app.shield.optoutstudies.enabled" = false;
|
||||||
|
|
||||||
|
# disable updates (pretty pointless with nix)
|
||||||
|
"app.update.channel" = "default";
|
||||||
|
|
||||||
|
"browser.contentblocking.category" = "standard"; # "strict"
|
||||||
|
"browser.ctrlTab.recentlyUsedOrder" = false;
|
||||||
|
|
||||||
|
"browser.download.viewableInternally.typeWasRegistered.svg" = true;
|
||||||
|
"browser.download.viewableInternally.typeWasRegistered.webp" = true;
|
||||||
|
"browser.download.viewableInternally.typeWasRegistered.xml" = true;
|
||||||
|
|
||||||
|
"browser.search.region" = "DE";
|
||||||
|
|
||||||
|
"browser.shell.checkDefaultBrowser" = false;
|
||||||
|
"browser.tabs.loadInBackground" = true;
|
||||||
|
"browser.urlbar.placeholderName" = "EnteEnteLauf";
|
||||||
|
"browser.urlbar.showSearchSuggestionsFirst" = false;
|
||||||
|
|
||||||
|
# disable all the annoying quick actions
|
||||||
|
"browser.urlbar.quickactions.enabled" = false;
|
||||||
|
"browser.urlbar.quickactions.showPrefs" = false;
|
||||||
|
"browser.urlbar.shortcuts.quickactions" = false;
|
||||||
|
"browser.urlbar.suggest.quickactions" = false;
|
||||||
|
|
||||||
|
"distribution.searchplugins.defaultLocale" = "en-US";
|
||||||
|
|
||||||
|
"doh-rollout.balrog-migration-done" = true;
|
||||||
|
"doh-rollout.doneFirstRun" = true;
|
||||||
|
|
||||||
|
"general.useragent.locale" = "en-US";
|
||||||
|
|
||||||
|
"extensions.activeThemeID" = "firefox-compact-dark@mozilla.org";
|
||||||
|
|
||||||
|
"extensions.extensions.activeThemeID" = "firefox-compact-dark@mozilla.org";
|
||||||
|
"extensions.update.enabled" = false;
|
||||||
|
"extensions.webcompat.enable_picture_in_picture_overrides" = true;
|
||||||
|
"extensions.webcompat.enable_shims" = true;
|
||||||
|
"extensions.webcompat.perform_injections" = true;
|
||||||
|
"extensions.webcompat.perform_ua_overrides" = true;
|
||||||
|
|
||||||
|
"privacy.donottrackheader.enabled" = true;
|
||||||
|
"browser.translations.enable" = false;
|
||||||
|
|
||||||
|
# Yubikey
|
||||||
|
"security.webauth.u2f" = true;
|
||||||
|
"security.webauth.webauthn" = true;
|
||||||
|
"security.webauth.webauthn_enable_softtoken" = false;
|
||||||
|
"security.webauth.webauthn_enable_usbtoken" = true;
|
||||||
|
|
||||||
|
"toolkit.legacyUserProfileCustomizations.stylesheets" = true;
|
||||||
|
"layout.word_select.stop_at_punctuation" = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
cfg = config.personal.firefox;
|
||||||
|
in {
|
||||||
|
options.personal.firefox = {
|
||||||
|
enable = mkEnableOption "Apply personal firefox defaults.";
|
||||||
|
package = mkPackageOption pkgs "firefox-bin" {};
|
||||||
|
|
||||||
|
extensions = mkOption {
|
||||||
|
type = types.listOf types.package;
|
||||||
|
default = defaultExtensions;
|
||||||
|
description = "Firefox extensions to install.";
|
||||||
|
};
|
||||||
|
|
||||||
|
settings = mkOption {
|
||||||
|
type = types.attrsOf (pkgs.formats.json.type
|
||||||
|
// {
|
||||||
|
description = "Preferences (int, bool, string, and also attrs, list, float as a JSON string)";
|
||||||
|
});
|
||||||
|
default = defaultSettings;
|
||||||
|
description = "Attribute set of preferences.";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = {
|
||||||
|
programs.firefox = lib.mkIf cfg.enable {
|
||||||
|
enable = true;
|
||||||
|
package = cfg.package;
|
||||||
|
|
||||||
|
profiles = {
|
||||||
|
default = {
|
||||||
|
isDefault = true;
|
||||||
|
id = 0;
|
||||||
|
userChrome = builtins.readFile ./userChrome.css;
|
||||||
|
inherit (cfg) extensions settings;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
76
home-modules/firefox/userChrome.css
Normal file
76
home-modules/firefox/userChrome.css
Normal file
@ -0,0 +1,76 @@
|
|||||||
|
/* Source file https://github.com/MrOtherGuy/firefox-csshacks/tree/master/chrome/toolbars_below_content_v2.css made available under Mozilla Public License v. 2.0
|
||||||
|
See the above repository for updates as well as full license text. */
|
||||||
|
|
||||||
|
/* This requires Firefox 133
|
||||||
|
* By default tabs will be the top-most toolbar, but you can set the following pref to move them to bottom:
|
||||||
|
* userchrome.toolbars-below-content.tabs-at-bottom.enabled
|
||||||
|
*/
|
||||||
|
|
||||||
|
#navigator-toolbox{
|
||||||
|
display: contents;
|
||||||
|
--uc-navbar-height: 40px;
|
||||||
|
}
|
||||||
|
:root[uidensity="compact"] #navigator-toolbox{
|
||||||
|
--uc-navbar-height: 34px;
|
||||||
|
}
|
||||||
|
#main-window > body > #browser,
|
||||||
|
.global-notificationbox,
|
||||||
|
#tab-notification-deck,
|
||||||
|
#toolbar-menubar{
|
||||||
|
order: -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
#TabsToolbar{
|
||||||
|
max-height: calc((var(--tab-min-height) + 2 * var(--tab-block-margin,0px)) * var(--multirow-n-rows,1));
|
||||||
|
}
|
||||||
|
#toolbar-menubar,
|
||||||
|
#TabsToolbar{
|
||||||
|
background: inherit !important;
|
||||||
|
}
|
||||||
|
@media (-moz-platform: linux){
|
||||||
|
:root[sizemode="normal"][customtitlebar] #toolbar-menubar{
|
||||||
|
border-top-left-radius: inherit;
|
||||||
|
border-top-right-radius: inherit;
|
||||||
|
}
|
||||||
|
#toolbar-menubar,
|
||||||
|
#TabsToolbar{
|
||||||
|
opacity: 1 !important;
|
||||||
|
will-change: unset !important;
|
||||||
|
}
|
||||||
|
#notification-popup[side="top"]{
|
||||||
|
margin-top: calc(-2 * var(--panel-padding-block) - 40px - 32px - 8.5em) !important;
|
||||||
|
}
|
||||||
|
#permission-popup[side="top"]{
|
||||||
|
margin-top: calc(-2 * var(--panel-padding-block) - 2.5em);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#nav-bar,
|
||||||
|
#PersonalToolbar{
|
||||||
|
background-image: linear-gradient(var(--toolbar-bgcolor),var(--toolbar-bgcolor)), var(--lwt-additional-images,var(--toolbar-bgimage)) !important;
|
||||||
|
background-position: top,var(--lwt-background-alignment);
|
||||||
|
background-position-y: calc(0px - var(--tab-min-height) - 2*var(--tab-block-margin,0px));
|
||||||
|
background-repeat: repeat,var(--lwt-background-tiling);
|
||||||
|
}
|
||||||
|
:root[lwtheme-image] #nav-bar,
|
||||||
|
:root[lwtheme-image] #PersonalToolbar{
|
||||||
|
background-image: linear-gradient(var(--toolbar-bgcolor),var(--toolbar-bgcolor)),var(--lwt-header-image), var(--lwt-additional-images,var(--toolbar-bgimage)) !important;
|
||||||
|
}
|
||||||
|
#PersonalToolbar{
|
||||||
|
background-position-y: calc(0px - var(--tab-min-height) - 2*var(--tab-block-margin,0px) - var( --uc-navbar-height));
|
||||||
|
}
|
||||||
|
#urlbar[breakout][breakout-extend]{
|
||||||
|
display: flex !important;
|
||||||
|
flex-direction: column-reverse !important;
|
||||||
|
transform: translateY(calc(var(--urlbar-container-height) - 100%));
|
||||||
|
}
|
||||||
|
#urlbar[breakout-extend]:not([usertyping]) > .urlbar-input-container::after{
|
||||||
|
display: flex;
|
||||||
|
content: "";
|
||||||
|
height: calc(var(--urlbar-min-height) - 2px - 2 * var(--urlbar-container-padding));
|
||||||
|
}
|
||||||
|
.urlbarView-body-inner{ border-top-style: none !important; }
|
||||||
|
|
||||||
|
#TabsToolbar{
|
||||||
|
order: 3
|
||||||
|
}
|
@ -1,5 +1,6 @@
|
|||||||
{...}: {
|
{...}: {
|
||||||
imports = [
|
imports = [
|
||||||
|
./firefox
|
||||||
./firefox-webapp.nix
|
./firefox-webapp.nix
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
}: let
|
}: let
|
||||||
pkgs = import nixpkgs rec {
|
pkgs = import nixpkgs rec {
|
||||||
system = "x86_64-linux";
|
system = "x86_64-linux";
|
||||||
overlays = [(final: prev: {nixvim = nixvim.packages.${system}.default;})];
|
overlays = [(final: prev: {nixvim = nixvim.packages.${system}.default;}) nurpkgs.overlay];
|
||||||
};
|
};
|
||||||
|
|
||||||
nur = import nurpkgs {
|
nur = import nurpkgs {
|
||||||
@ -33,12 +33,8 @@ in {
|
|||||||
framework = home-manager.lib.homeManagerConfiguration {
|
framework = home-manager.lib.homeManagerConfiguration {
|
||||||
inherit pkgs;
|
inherit pkgs;
|
||||||
|
|
||||||
extraSpecialArgs = {
|
|
||||||
ff-addons = nur.repos.rycee.firefox-addons;
|
|
||||||
};
|
|
||||||
|
|
||||||
modules = [
|
modules = [
|
||||||
# ../home-modules/modules-list.nix
|
../home-modules/modules-list.nix
|
||||||
./framework
|
./framework
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
@ -1,92 +1,5 @@
|
|||||||
{
|
{...}: {
|
||||||
pkgs,
|
personal.firefox = {
|
||||||
lib,
|
|
||||||
stdenv,
|
|
||||||
specialArgs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
extensions = with specialArgs.ff-addons; [
|
|
||||||
bitwarden
|
|
||||||
darkreader
|
|
||||||
i-dont-care-about-cookies
|
|
||||||
privacy-badger
|
|
||||||
ublock-origin
|
|
||||||
tree-style-tab
|
|
||||||
# tridactyl
|
|
||||||
];
|
|
||||||
|
|
||||||
customChrome = builtins.readFile ./userChrome.css;
|
|
||||||
|
|
||||||
userChrome = customChrome;
|
|
||||||
|
|
||||||
# ~/.mozilla/firefox/PROFILE_NAME/prefs.js | user.js
|
|
||||||
settings = {
|
|
||||||
"app.normandy.first_run" = false;
|
|
||||||
"app.shield.optoutstudies.enabled" = false;
|
|
||||||
|
|
||||||
# disable updates (pretty pointless with nix)
|
|
||||||
"app.update.channel" = "default";
|
|
||||||
|
|
||||||
"browser.contentblocking.category" = "standard"; # "strict"
|
|
||||||
"browser.ctrlTab.recentlyUsedOrder" = false;
|
|
||||||
|
|
||||||
"browser.download.viewableInternally.typeWasRegistered.svg" = true;
|
|
||||||
"browser.download.viewableInternally.typeWasRegistered.webp" = true;
|
|
||||||
"browser.download.viewableInternally.typeWasRegistered.xml" = true;
|
|
||||||
|
|
||||||
"browser.search.region" = "DE";
|
|
||||||
|
|
||||||
"browser.shell.checkDefaultBrowser" = false;
|
|
||||||
"browser.tabs.loadInBackground" = true;
|
|
||||||
"browser.urlbar.placeholderName" = "EnteEnteLauf";
|
|
||||||
"browser.urlbar.showSearchSuggestionsFirst" = false;
|
|
||||||
|
|
||||||
# disable all the annoying quick actions
|
|
||||||
"browser.urlbar.quickactions.enabled" = false;
|
|
||||||
"browser.urlbar.quickactions.showPrefs" = false;
|
|
||||||
"browser.urlbar.shortcuts.quickactions" = false;
|
|
||||||
"browser.urlbar.suggest.quickactions" = false;
|
|
||||||
|
|
||||||
"distribution.searchplugins.defaultLocale" = "en-US";
|
|
||||||
|
|
||||||
"doh-rollout.balrog-migration-done" = true;
|
|
||||||
"doh-rollout.doneFirstRun" = true;
|
|
||||||
|
|
||||||
"general.useragent.locale" = "en-US";
|
|
||||||
|
|
||||||
"extensions.activeThemeID" = "firefox-compact-dark@mozilla.org";
|
|
||||||
|
|
||||||
"extensions.extensions.activeThemeID" = "firefox-compact-dark@mozilla.org";
|
|
||||||
"extensions.update.enabled" = false;
|
|
||||||
"extensions.webcompat.enable_picture_in_picture_overrides" = true;
|
|
||||||
"extensions.webcompat.enable_shims" = true;
|
|
||||||
"extensions.webcompat.perform_injections" = true;
|
|
||||||
"extensions.webcompat.perform_ua_overrides" = true;
|
|
||||||
|
|
||||||
"privacy.donottrackheader.enabled" = true;
|
|
||||||
"browser.translations.enable" = false;
|
|
||||||
|
|
||||||
# Yubikey
|
|
||||||
"security.webauth.u2f" = true;
|
|
||||||
"security.webauth.webauthn" = true;
|
|
||||||
"security.webauth.webauthn_enable_softtoken" = false;
|
|
||||||
"security.webauth.webauthn_enable_usbtoken" = true;
|
|
||||||
|
|
||||||
"toolkit.legacyUserProfileCustomizations.stylesheets" = true;
|
|
||||||
"layout.word_select.stop_at_punctuation" = false;
|
|
||||||
};
|
|
||||||
in {
|
|
||||||
programs.firefox = {
|
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
||||||
package = pkgs.firefox-bin;
|
|
||||||
|
|
||||||
profiles = {
|
|
||||||
default = {
|
|
||||||
isDefault = true;
|
|
||||||
id = 0;
|
|
||||||
inherit extensions settings userChrome;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user