firefox: add profiles with extensions
This commit is contained in:
parent
56fc1bda1a
commit
eb99d0526c
4 changed files with 413 additions and 4 deletions
67
flake.lock
generated
67
flake.lock
generated
|
@ -280,6 +280,27 @@
|
|||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-parts_5": {
|
||||
"inputs": {
|
||||
"nixpkgs-lib": [
|
||||
"nur",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1733312601,
|
||||
"narHash": "sha256-4pDvzqnegAfRkPwO3wmwBhVi/Sye1mzps0zHWYnP88c=",
|
||||
"owner": "hercules-ci",
|
||||
"repo": "flake-parts",
|
||||
"rev": "205b12d8b7cd4802fbcb8e8ef6a0f1408781a4f9",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hercules-ci",
|
||||
"repo": "flake-parts",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-utils": {
|
||||
"locked": {
|
||||
"lastModified": 1659877975,
|
||||
|
@ -1157,6 +1178,28 @@
|
|||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nur": {
|
||||
"inputs": {
|
||||
"flake-parts": "flake-parts_5",
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
],
|
||||
"treefmt-nix": "treefmt-nix_4"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1737225765,
|
||||
"narHash": "sha256-wyJcROV/d6POpZRlfk79EWsRHZH0iP6aC5uhmM1cH98=",
|
||||
"owner": "nix-community",
|
||||
"repo": "NUR",
|
||||
"rev": "7c2500d3cc3a1d4f51493ba208721ea7c2a4380f",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"repo": "NUR",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nuschtosSearch": {
|
||||
"inputs": {
|
||||
"flake-utils": "flake-utils_9",
|
||||
|
@ -1259,6 +1302,7 @@
|
|||
"nixpkgs-vscodium": "nixpkgs-vscodium",
|
||||
"nixpkgs-wayland": "nixpkgs-wayland",
|
||||
"nixvim": "nixvim",
|
||||
"nur": "nur",
|
||||
"ofi-pass": "ofi-pass",
|
||||
"openvscode-server": "openvscode-server",
|
||||
"prs": "prs",
|
||||
|
@ -1268,7 +1312,7 @@
|
|||
"rperf": "rperf",
|
||||
"sops-nix": "sops-nix",
|
||||
"srvos": "srvos",
|
||||
"treefmt-nix": "treefmt-nix_4",
|
||||
"treefmt-nix": "treefmt-nix_5",
|
||||
"yofi": "yofi"
|
||||
}
|
||||
},
|
||||
|
@ -1519,6 +1563,27 @@
|
|||
}
|
||||
},
|
||||
"treefmt-nix_4": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"nur",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1733222881,
|
||||
"narHash": "sha256-JIPcz1PrpXUCbaccEnrcUS8jjEb/1vJbZz5KkobyFdM=",
|
||||
"owner": "numtide",
|
||||
"repo": "treefmt-nix",
|
||||
"rev": "49717b5af6f80172275d47a418c9719a31a78b53",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "treefmt-nix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"treefmt-nix_5": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
|
|
|
@ -106,6 +106,11 @@
|
|||
url = "github:jmgilman/nixago";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
nur = {
|
||||
url = "github:nix-community/NUR";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
};
|
||||
|
||||
outputs =
|
||||
|
|
|
@ -1,4 +1,274 @@
|
|||
{ pkgs, ... }:
|
||||
{
|
||||
repoFlake,
|
||||
pkgs,
|
||||
config,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
let
|
||||
# Search extension names with below command:
|
||||
# nix flake show --json "gitlab:rycee/nur-expressions?dir=pkgs/firefox-addons" --all-systems | jq -r '.packages."x86_64-linux" | keys[]' | rg QUERY
|
||||
ryceeAddons = with repoFlake.inputs.nur.legacyPackages.${pkgs.system}.repos.rycee.firefox-addons; [
|
||||
ublock-origin
|
||||
|
||||
# bypass-paywalls-clean (can't use, was creating popups)
|
||||
consent-o-matic
|
||||
terms-of-service-didnt-read
|
||||
|
||||
auto-tab-discard
|
||||
|
||||
# redirector # For nixos wiki
|
||||
darkreader
|
||||
|
||||
facebook-container
|
||||
control-panel-for-twitter
|
||||
# containerise
|
||||
facebook-tracking-removal
|
||||
vimium
|
||||
cookie-autodelete
|
||||
auto-tab-discard
|
||||
];
|
||||
|
||||
customAddons = [
|
||||
|
||||
];
|
||||
|
||||
search = {
|
||||
force = true;
|
||||
default = "DuckDuckGo";
|
||||
privateDefault = "DuckDuckGo";
|
||||
};
|
||||
|
||||
mkProfile =
|
||||
override:
|
||||
lib.recursiveUpdate {
|
||||
extensions = ryceeAddons ++ customAddons;
|
||||
inherit search;
|
||||
|
||||
settings = {
|
||||
# automatically enable extensions
|
||||
"extensions.autoDisableScopes" = 0;
|
||||
|
||||
"middlemouse.paste" = false;
|
||||
|
||||
"browser.download.useDownloadDir" = false;
|
||||
"browser.tabs.insertAfterCurrent" = true;
|
||||
"browser.tabs.warnOnClose" = true;
|
||||
"browser.toolbars.bookmarks.visibility" = "never";
|
||||
"browser.quitShortcut.disabled" = false;
|
||||
|
||||
# restore the previous session automatically
|
||||
"browser.startup.page" = 3;
|
||||
"browser.sessionstore.resume_from_crash" = true;
|
||||
"browser.sessionstore.restore_pinned_tabs_on_demand" = true;
|
||||
"browser.sessionstore.restore_on_demand" = true;
|
||||
|
||||
"browser.urlbar.suggest.bookmark" = true;
|
||||
"browser.urlbar.suggest.engines" = true;
|
||||
"browser.urlbar.suggest.history" = true;
|
||||
"browser.urlbar.suggest.openpage" = true;
|
||||
"browser.urlbar.suggest.topsites" = false;
|
||||
"browser.urlbar.trimHttps" = true;
|
||||
|
||||
"sidebar.position_start" = false;
|
||||
"findbar.highlightAll" = true;
|
||||
|
||||
"browser.tabs.hoverPreview.enabled" = true;
|
||||
|
||||
# Disable fx accounts
|
||||
"identity.fxaccounts.enabled" = false;
|
||||
# Disable "save password" prompt
|
||||
"signon.rememberSignons" = false;
|
||||
# Harden
|
||||
"privacy.trackingprotection.enabled" = true;
|
||||
"dom.security.https_only_mode" = true;
|
||||
|
||||
# Disable irritating first-run stuff
|
||||
"browser.disableResetPrompt" = true;
|
||||
"browser.download.panel.shown" = true;
|
||||
"browser.feeds.showFirstRunUI" = false;
|
||||
"browser.messaging-system.whatsNewPanel.enabled" = false;
|
||||
"browser.rights.3.shown" = true;
|
||||
"browser.shell.checkDefaultBrowser" = false;
|
||||
"browser.shell.defaultBrowserCheckCount" = 1;
|
||||
"browser.startup.homepage_override.mstone" = "ignore";
|
||||
"browser.uitour.enabled" = false;
|
||||
"startup.homepage_override_url" = "";
|
||||
"trailhead.firstrun.didSeeAboutWelcome" = true;
|
||||
"browser.bookmarks.restore_default_bookmarks" = false;
|
||||
"browser.bookmarks.addedImportButton" = true;
|
||||
|
||||
# Disable "Save to Pocket" or Pocket entirely
|
||||
"extensions.pocket.enabled" = false;
|
||||
|
||||
# Disable telemetry
|
||||
"toolkit.telemetry.enabled" = false;
|
||||
"toolkit.telemetry.unified" = false;
|
||||
"toolkit.telemetry.archive.enabled" = false;
|
||||
"datareporting.healthreport.uploadEnabled" = false;
|
||||
"app.shield.optoutstudies.enabled" = false;
|
||||
"browser.discovery.enabled" = false;
|
||||
"browser.newtabpage.activity-stream.feeds.telemetry" = false;
|
||||
"browser.newtabpage.activity-stream.telemetry" = false;
|
||||
"browser.ping-centre.telemetry" = false;
|
||||
"datareporting.healthreport.service.enabled" = false;
|
||||
"datareporting.policy.dataSubmissionEnabled" = false;
|
||||
"datareporting.sessions.current.clean" = true;
|
||||
"devtools.onboarding.telemetry.logged" = false;
|
||||
"toolkit.telemetry.bhrPing.enabled" = false;
|
||||
"toolkit.telemetry.firstShutdownPing.enabled" = false;
|
||||
"toolkit.telemetry.hybridContent.enabled" = false;
|
||||
"toolkit.telemetry.newProfilePing.enabled" = false;
|
||||
"toolkit.telemetry.prompted" = 2;
|
||||
"toolkit.telemetry.rejected" = true;
|
||||
"toolkit.telemetry.reportingpolicy.firstRun" = false;
|
||||
"toolkit.telemetry.server" = "";
|
||||
"toolkit.telemetry.shutdownPingSender.enabled" = false;
|
||||
"toolkit.telemetry.unifiedIsOptIn" = false;
|
||||
"toolkit.telemetry.updatePing.enabled" = false;
|
||||
|
||||
# Disable any feeds on the new tab page
|
||||
"browser.newtabpage.activity-stream.showTopSites" = false;
|
||||
"browser.newtabpage.activity-stream.default.sites" = lib.mkForce [ ];
|
||||
"browser.newtabpage.activity-stream.discoverystream.enabled" = false;
|
||||
"browser.newtabpage.activity-stream.feeds.topsites" = false;
|
||||
"browser.newtabpage.activity-stream.showSponsoredTopSites" = false;
|
||||
"browser.newtabpage.activity-stream.improvesearch.topSiteSearchShortcuts" = false;
|
||||
"browser.newtabpage.blocked" = lib.genAttrs [
|
||||
# Youtube
|
||||
"26UbzFJ7qT9/4DhodHKA1Q=="
|
||||
# Facebook
|
||||
"4gPpjkxgZzXPVtuEoAL9Ig=="
|
||||
# Wikipedia
|
||||
"eV8/WsSLxHadrTL1gAxhug=="
|
||||
# Reddit
|
||||
"gLv0ja2RYVgxKdp0I5qwvA=="
|
||||
# Amazon
|
||||
"K00ILysCaEq8+bEqV/3nuw=="
|
||||
# Twitter
|
||||
"T9nJot5PurhJSy8n038xGA=="
|
||||
] (_: 1);
|
||||
"browser.topsites.blockedSponsors" = [
|
||||
"adidas"
|
||||
"temuaffiliateprogram.pxf"
|
||||
"s.click.aliexpress"
|
||||
];
|
||||
|
||||
# enable userChrome
|
||||
"toolkit.legacyUserProfileCustomizations.stylesheets" = true;
|
||||
};
|
||||
|
||||
userChrome =
|
||||
let
|
||||
name = override.color or colors.grey;
|
||||
value = colorValues."${name}".normal;
|
||||
valueBright = colorValues."${name}".bright;
|
||||
valueDark = colorValues."${name}".dark;
|
||||
in
|
||||
''
|
||||
/* TODO: set regular toolbar background color */
|
||||
|
||||
/* default */
|
||||
#TabsToolbar {
|
||||
background: ${valueDark} !important;
|
||||
}
|
||||
|
||||
/* default tab */
|
||||
#TabsToolbar #tabbrowser-tabs .tabbrowser-tab .tab-content {
|
||||
background: ${value} !important;
|
||||
}
|
||||
|
||||
/* selected tab */
|
||||
#TabsToolbar #tabbrowser-tabs .tabbrowser-tab[selected] .tab-content {
|
||||
background: ${valueBright} !important;
|
||||
}
|
||||
|
||||
/* hovered tab */
|
||||
#TabsToolbar #tabbrowser-tabs .tabbrowser-tab:hover:not([selected]) .tab-content {
|
||||
background: ${valueBright} !important;
|
||||
}
|
||||
|
||||
/* unloaded/pending tab */
|
||||
#TabsToolbar #tabbrowser-tabs .tabbrowser-tab[pending] .tab-content {
|
||||
background: ${valueDark} !important;
|
||||
}
|
||||
'';
|
||||
|
||||
# /* new tab */
|
||||
# #TabsToolbar #tabbrowser-tabs #tabs-newtab-button .toolbarbutton-icon {
|
||||
# background: unset !important;
|
||||
# }
|
||||
|
||||
# #TabsToolbar #tabbrowser-tabs #tabs-newtab-button {
|
||||
# /* background: var(--default_tabs_bg_newtab) !important;
|
||||
# }
|
||||
|
||||
# /* hovered new tab */
|
||||
# #TabsToolbar #tabbrowser-tabs #tabs-newtab-button:hover {
|
||||
# background: var(--default_tabs_bg_newtab_hovered) !important;
|
||||
# }
|
||||
|
||||
} (builtins.removeAttrs override [ "color" ]);
|
||||
|
||||
# TODO: insert the id automatically
|
||||
mkProfiles = attrs: builtins.mapAttrs (_k: v: v) attrs;
|
||||
|
||||
colors = builtins.mapAttrs (name: _: name) colorValues;
|
||||
|
||||
colorValues = {
|
||||
blue = {
|
||||
normal = "#37adff";
|
||||
bright = "#00acff"; # Brighter blue
|
||||
dark = "#2c8dd3"; # Darker blue
|
||||
};
|
||||
green = {
|
||||
normal = "#51cd00";
|
||||
bright = "#5ae200"; # Brighter green
|
||||
dark = "#45ad00"; # Darker green
|
||||
};
|
||||
orange = {
|
||||
normal = "#ff9800";
|
||||
bright = "#ffb74d"; # Brighter orange
|
||||
dark = "#c76a00"; # Darker orange
|
||||
};
|
||||
red = {
|
||||
normal = "#f6685e";
|
||||
bright = "#ff4336"; # Brighter red
|
||||
dark = "#aa463f"; # Darker red
|
||||
};
|
||||
yellow = {
|
||||
normal = "#ffeb3b";
|
||||
bright = "#fff350"; # Brighter yellow
|
||||
dark = "#c6a700"; # Darker yellow
|
||||
};
|
||||
purple = {
|
||||
normal = "#9c27b0";
|
||||
bright = "#ab47bc"; # Brighter purple
|
||||
dark = "#7b1fa2"; # Darker purple
|
||||
};
|
||||
pink = {
|
||||
normal = "#e91e63";
|
||||
bright = "#ff6090"; # Brighter pink
|
||||
dark = "#c2185b"; # Darker pink
|
||||
};
|
||||
brown = {
|
||||
normal = "#795548";
|
||||
bright = "#a88b6f"; # Brighter brown
|
||||
dark = "#4e3b30"; # Darker brown
|
||||
};
|
||||
grey = {
|
||||
normal = "#9e9e9e";
|
||||
bright = "#bdbdbd"; # Brighter grey
|
||||
dark = "#757575"; # Darker grey
|
||||
};
|
||||
teal = {
|
||||
normal = "#009688";
|
||||
bright = "#26c6da"; # Brighter teal
|
||||
dark = "#00796b"; # Darker teal
|
||||
};
|
||||
};
|
||||
|
||||
in
|
||||
{
|
||||
programs.librewolf = {
|
||||
enable = false;
|
||||
|
@ -6,7 +276,77 @@
|
|||
programs.firefox = {
|
||||
enable = true;
|
||||
package = pkgs.firefox-esr-128;
|
||||
|
||||
profiles = mkProfiles {
|
||||
"personal" = mkProfile {
|
||||
id = 0;
|
||||
isDefault = true;
|
||||
color = colors.blue;
|
||||
};
|
||||
"personal-finance" = mkProfile {
|
||||
id = 1;
|
||||
color = colors.green;
|
||||
};
|
||||
"business" = mkProfile {
|
||||
id = 2;
|
||||
color = colors.teal;
|
||||
};
|
||||
"dev-admin" = mkProfile {
|
||||
id = 3;
|
||||
color = colors.teal;
|
||||
};
|
||||
"dev-holo" = mkProfile {
|
||||
id = 4;
|
||||
color = colors.red;
|
||||
};
|
||||
"dev-infra" = mkProfile {
|
||||
id = 5;
|
||||
color = colors.yellow;
|
||||
};
|
||||
"justyna" = mkProfile {
|
||||
id = 6;
|
||||
color = colors.pink;
|
||||
};
|
||||
"justyna-office" = mkProfile {
|
||||
id = 7;
|
||||
color = colors.pink;
|
||||
};
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
# home.file.".mozilla/native-messaging-hosts/passff.json".source = "${pkgs.passff-host}/share/passff-host/passff.json";
|
||||
# create one desktop entry for each profile
|
||||
xdg.desktopEntries = lib.mapAttrs' (
|
||||
k: _v:
|
||||
lib.nameValuePair "firefox-profile-${k}" {
|
||||
categories = [
|
||||
"Network"
|
||||
"WebBrowser"
|
||||
];
|
||||
exec = "${lib.getExe config.programs.firefox.package} -P ${k}";
|
||||
genericName = "Web Browser";
|
||||
icon =
|
||||
builtins.replaceStrings [ ".desktop" ] [ "" ]
|
||||
config.programs.firefox.package.desktopItem.name;
|
||||
mimeType = [
|
||||
"text/html"
|
||||
"text/xml"
|
||||
"application/xhtml+xml"
|
||||
"application/vnd.mozilla.xul+xml"
|
||||
"x-scheme-handler/http"
|
||||
"x-scheme-handler/https"
|
||||
];
|
||||
name = "Firefox: ${k}";
|
||||
startupNotify = true;
|
||||
settings.StartupWMClass =
|
||||
# To group windows of different profiles.
|
||||
# Set WM_CLASS on Xorg using --class, set app-id on Wayland using --name.
|
||||
#if profile.name == "default"
|
||||
#then "firefox"
|
||||
#else "firefox-${profile.name}";
|
||||
"firefox";
|
||||
terminal = false;
|
||||
type = "Application";
|
||||
}
|
||||
) config.programs.firefox.profiles;
|
||||
}
|
||||
|
|
|
@ -87,7 +87,6 @@
|
|||
# TODO: broken with: v4l2loopback-0.13.2-6.13.0-rc3.drv
|
||||
# make: *** [Makefile:53: v4l2loopback.ko] Error 2
|
||||
# ../../snippets/obs-studio.nix
|
||||
|
||||
{
|
||||
services.openssh.enable = true;
|
||||
services.openssh.settings.PermitRootLogin = "yes";
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue