hjem/collection: add firefox module

This commit is contained in:
Anthony Rodriguez 2025-02-13 23:59:20 +01:00
parent 876153ba2c
commit 9774000f64
Signed by: nezia
SSH key fingerprint: SHA256:Ihfpl0rUpqDevYqnzSR34OYfVLbDNkBiUjs3CpX4ykA
2 changed files with 216 additions and 151 deletions

View file

@ -4,8 +4,8 @@
config, config,
... ...
}: let }: let
inherit (builtins) readFile;
inherit (config.local.systemVars) username; inherit (config.local.systemVars) username;
toINI = lib.generators.toINI {};
betterfox = pkgs.fetchFromGitHub { betterfox = pkgs.fetchFromGitHub {
owner = "yokoffing"; owner = "yokoffing";
@ -13,9 +13,14 @@
rev = "e026ed7d3a763c5d3f96c2680d7bc3340831af4f"; rev = "e026ed7d3a763c5d3f96c2680d7bc3340831af4f";
hash = "sha256-hpkEO5BhMVtINQG8HN4xqfas/R6q5pYPZiFK8bilIDs="; hash = "sha256-hpkEO5BhMVtINQG8HN4xqfas/R6q5pYPZiFK8bilIDs=";
}; };
in {
config = lib.mkIf config.local.profiles.desktop.enable {
hjem.users.${username} = {
programs.firefox = {
enable = true;
inherit username;
firefox = pkgs.wrapFirefox pkgs.firefox-esr-unwrapped { policies = {
extraPolicies = {
DisableTelemetry = true; DisableTelemetry = true;
DisablePocket = true; DisablePocket = true;
DisableFeedbackCommands = true; DisableFeedbackCommands = true;
@ -147,27 +152,13 @@
}; };
}; };
}; };
};
in { extraConfig = builtins.concatStringsSep "\n" [
config = lib.mkIf config.local.profiles.desktop.enable { (readFile "${betterfox}/user.js")
hjem.users.${username} = { (readFile "${betterfox}/Securefox.js")
packages = [firefox]; (readFile "${betterfox}/Fastfox.js")
files = { (readFile "${betterfox}/Peskyfox.js")
".mozilla/firefox/profiles.ini".text = toINI { (readFile "${betterfox}/Smoothfox.js")
Profile0 = {
# creates user profile and sets it as default
Name = "${username}";
IsRelative = 1;
Path = "${username}";
Default = 1;
};
};
".mozilla/firefox/${username}/user.js".text = builtins.concatStringsSep "\n" [
(builtins.readFile "${betterfox}/user.js")
(builtins.readFile "${betterfox}/Securefox.js")
(builtins.readFile "${betterfox}/Fastfox.js")
(builtins.readFile "${betterfox}/Peskyfox.js")
(builtins.readFile "${betterfox}/Smoothfox.js")
]; ];
}; };
}; };

View file

@ -0,0 +1,74 @@
{
lib,
pkgs,
config,
...
}: let
inherit (lib.options) mkEnableOption mkOption;
inherit (lib.types) attrs lines package str;
toINI = lib.generators.toINI {};
cfg = config.programs.firefox;
firefox = pkgs.wrapFirefox cfg.package {
extraPolicies = cfg.policies;
};
in {
options.programs.firefox = {
enable = mkEnableOption "firefox module.";
package = mkOption {
type = package;
default = pkgs.firefox-esr-unwrapped;
example = pkgs.firefox-unwrapped;
description = ''
The Firefox package to use. As hjem's module implementation of Firefox uses wrapping, this package
is expected to be one of the unwrapped versions. Changing this is not recommended, as some policies
(i.e. SearchEngines) are only available on the ESR version of Firefox.
'';
};
policies = mkOption {
type = attrs;
default = {};
example = {
CaptivePortal = false;
DisableFirefoxStudies = true;
DisablePocket = true;
DisableTelemetry = true;
DisableFirefoxAccounts = true;
};
description = ''
An attribute set of policies to add to Firefox. The full list of policies can be found
[here](https://mozilla.github.io/policy-templates/).
'';
};
extraConfig = mkOption {
type = lines;
default = "";
description = ''
Extra preferences to add to user.js.
'';
};
username = mkOption {
type = str;
example = "user";
description = ''
Name of the Firefox profile to be created.
'';
};
};
config = lib.mkIf cfg.enable {
packages = [firefox];
files = {
".mozilla/firefox/profiles.ini".text = toINI {
Profile0 = {
Name = "${cfg.username}";
IsRelative = 1;
Path = "${cfg.username}";
Default = 1;
};
};
".mozilla/firefox/${cfg.username}/user.js".text = cfg.extraConfig;
};
};
}