nixnew/modules/user/modules/firefox/default.nix
2023-06-26 21:16:43 -07:00

106 lines
2.8 KiB
Nix
Executable file

{ lib, pkgs, ... }@inputs:
let
inherit (import ./prefgroups.nix inputs) modules prefgroups;
extra-addons = let
buildFirefoxXpiAddon = lib.makeOverridable ({
stdenv ? pkgs.stdenv,
fetchurl ? pkgs.fetchurl,
pname,
version,
addonId,
url,
sha256,
...
}: stdenv.mkDerivation {
name = "${pname}-${version}";
src = fetchurl { inherit url sha256; };
preferLocalBuild = true;
allowSubstitutes = true;
buildCommand = ''
dst="$out/share/mozilla/extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}"
mkdir -p "$dst"
install -v -m644 "$src" "$dst/${addonId}.xpi"
'';
});
in {
github-reposize = buildFirefoxXpiAddon {
pname = "github-reposize";
version = "1.7.0";
addonId = "github-repo-size@mattelrah.com";
url = "https://addons.mozilla.org/firefox/downloads/file/3854469/github_repo_size-1.7.0.xpi";
sha256 = "2zGY12esYusaw2IzXM+1kP0B/0Urxu0yj7xXlDlutto=";
};
vencord = buildFirefoxXpiAddon {
pname = "vencord";
version = "1.2.7";
addonId = "vencord-firefox@vendicated.dev";
url = "https://addons.mozilla.org/firefox/downloads/file/4123132/vencord_web-1.2.7.xpi";
sha256 = "A/XKdT0EuDHsQ7mcK9hsXAoAJYUt4Uvp/rtCf/9dAS0=";
};
};
in {
programs.firefox = {
enable = true;
package = pkgs.firefox.overrideAttrs (pkg: let
imEntry = pkg.desktopItem.override (entry: {
name = "discord-firefox";
desktopName = "IMs (Firefox)";
exec = "${entry.exec} -no-remote -P Im";
mimeTypes = [];
});
in {
buildCommand = ''
${pkg.buildCommand}
cp ${imEntry}/share/applications/* $out/share/applications
'';
});
profiles = {
base = {
id = 1;
name = "BaseFF";
userChrome = builtins.readFile ./sideberry_chrome.css;
};
default = {
id = 0;
name = "Default";
userChrome = ''
${builtins.readFile ./sideberry_chrome.css}
${builtins.readFile ./sideberry_hide_ext_button.css}
'';
settings = with modules; {}
// base
// minor-1
// annoying;
extensions = with pkgs.nur.repos.rycee.firefox-addons; with extra-addons; [
bitwarden
darkreader
github-reposize
sidebery
simplelogin
sponsorblock
ublock-origin
umatrix
];
};
im = {
id = 2;
name = "Im";
userChrome = builtins.readFile ./inline_tabs_chrome.css;
settings = modules.base
// prefgroups.misc.restore-pages;
extensions = with pkgs.nur.repos.rycee.firefox-addons; with extra-addons; [
ublock-origin
vencord
];
};
};
};
}