diff options
Diffstat (limited to '')
-rw-r--r-- | modules/by-name/fi/firefox/module.nix | 248 |
1 files changed, 0 insertions, 248 deletions
diff --git a/modules/by-name/fi/firefox/module.nix b/modules/by-name/fi/firefox/module.nix deleted file mode 100644 index b5c1ff9a..00000000 --- a/modules/by-name/fi/firefox/module.nix +++ /dev/null @@ -1,248 +0,0 @@ -# nixos-config - My current NixOS configuration -# -# Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de> -# SPDX-License-Identifier: GPL-3.0-or-later -# -# This file is part of my nixos-config. -# -# You should have received a copy of the License along with this program. -# If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>. -{ - lib, - config, - pkgs, - modules, - ... -}: let - cfg = config.soispha.programs.firefox; - - mkAllowedExtension = extension: - lib.attrsets.nameValuePair extension.addonId { - installation_mode = "normal_installed"; - updates_disabled = true; - inherit (extension) default_area; - install_url = "file://${builtins.fetchurl { - inherit - (extension) - url - sha256 - ; - }}"; - }; - - allowedExtensions = - builtins.listToAttrs - (builtins.map mkAllowedExtension (builtins.attrValues - cfg.extensions)); - - mkBlockedExtension = id: - lib.attrsets.nameValuePair id { - install_mode = "blocked"; - }; - blockedExtensions = builtins.listToAttrs (builtins.map mkBlockedExtension [ - # these are the default search engines - "addons-search-detection@mozilla.com" - "amazon@search.mozilla.org" - "bing@search.mozilla.org" - "ddg@search.mozilla.org" - "google@search.mozilla.org" - "wikipedia@search.mozilla.org" - ]); - - mkProfile = import ./profile.nix {inherit config pkgs;}; -in { - options.soispha.programs.firefox = { - enable = lib.mkEnableOption "firefox"; - - profiles = lib.mkOption { - type = lib.types.attrsOf (lib.types.submodule { - options = { - id = lib.mkOption { - type = lib.types.int; - description = "The id of this profile."; - }; - name = lib.mkOption { - type = lib.types.str; - description = "The name of this profile"; - }; - }; - }); - description = "A list of profies to create besides the default `default` profile."; - default = {}; - apply = value: - lib.attrsets.mapAttrs' (name: value: lib.attrsets.nameValuePair name (mkProfile value)) - value; - }; - - extensions = lib.mkOption { - type = lib.types.attrsOf ( - lib.types.submodule { - options = { - addonId = lib.mkOption { - type = lib.types.str; - example = "addon@darkreader.org"; - description = "The addon id of this extension"; - }; - default_area = lib.mkOption { - type = lib.types.enum ["navbar" "menupanel"]; - example = "navbar"; - description = '' - Where to put this extension by default. - `navbar` means into the top-left bar as icon. - `menupanel` means hidden behind a “all extensions” button. - ''; - }; - pname = lib.mkOption { - type = lib.types.str; - example = "darkreader"; - description = "The package name of this extension"; - }; - sha256 = lib.mkOption { - type = lib.types.str; - example = "sha256:f565b2263a71626a0310380915b7aef90be8cc6fe16ea43ac1a0846efedc2e4c"; - description = "The fetchurl copatible hash of this extension"; - }; - url = lib.mkOption { - type = lib.types.str; - example = "https://addons.mozilla.org/firefox/downloads/file/4439735/darkreader-4.9.103.xpi"; - description = "The download url of this extension."; - }; - version = lib.mkOption { - type = lib.types.str; - example = "4.9.103"; - description = "The version of this extension"; - }; - }; - } - ); - - default = builtins.fromJSON (builtins.readFile ./extensions.json); - - description = '' - A list of the extensions that should be installed. - You can use a tool like `generate_extensions` to generate this config. - ''; - }; - }; - - config = lib.mkIf cfg.enable { - programs.firefox = { - enable = true; - preferencesStatus = "locked"; - - languagePacks = ["en-CA" "de" "sv-SE"]; - - nativeMessagingHosts.packages = [ - pkgs.tridactyl-native - pkgs.keepassxc - ]; - - # NOTE: See https://mozilla.github.io/policy-templates for documentation <2023-10-21> - policies = { - # NixOS manages this already - DisableAppUpdate = true; - - DisableFirefoxAccounts = true; - DisableFirefoxScreenshots = true; - - # KeepassXC does this for me - DisableMasterPasswordCreation = true; - - # I use a self-hosted services for that - DisablePocket = true; - - # I don't want to lose my data - DisableProfileRefresh = true; - - DisableDeveloperTools = false; - - DisplayBookmarksToolbar = "newtab"; - DisplayMenuBar = "default-off"; - - DNSOverHTTPS = { - Enabled = true; - Locked = false; - }; - # The concept of a "default browser" does not apply to my NixOS config - DontCheckDefaultBrowser = true; - - ExtensionSettings = - { - "*" = { - # Blocking the extension install here, also blocks the 'about:debugging' page - - # blocked_install_message = '' - # You can't install a extension manually, - # please specify it in your NixOS configuration - # ''; - installation_mode = "allowed"; - }; - } - // allowedExtensions - // blockedExtensions; - RequestedLocales = config.programs.firefox.languagePacks; - - ExtensionUpdate = false; - - HardwareAcceleration = true; - - # KeepassXC and such things - OfferToSaveLogins = false; - PasswordManagerEnabled = false; - - PDFjs = { - Enabled = true; - # Don't honor documents right to be un-copy-able - EnablePermissions = false; - }; - - SearchBar = "unified"; - }; - - # Beware, that we already set them per-profile in the home-manager config. - preferences = {}; - }; - - home-manager.users.soispha = { - imports = [ - modules.arkenfox-nixos.hmModules.arkenfox - ]; - - home.sessionVariables = { - # Improve touch input and make scrolling smother - MOZ_USE_XINPUT2 = "1"; - - # Tell Firefox to use Wayland - MOZ_ENABLE_WAYLAND = 1; - - # Tell GTK to use portals - GTK_USE_PORTAL = 1; - - BROWSER = "firefox"; - }; - - programs.firefox = { - enable = true; - arkenfox = { - enable = true; - version = "133.0"; - }; - - # We use the NixOS module to provide us a package. - # HACK: Extract the package from the system-path to get a version for - # arkenfox-nixos to compare to. <2025-04-02> - package = lib.lists.findSingle (x: builtins.hasAttr "pname" x && x.pname == "firefox") "none" "multiple" config.environment.systemPackages; - - profiles = - { - default = mkProfile { - isDefault = true; - id = 0; - name = "default"; - }; - } - // cfg.profiles; - }; - }; - }; -} |