From 6897ad63c9afd6a3d4e0d5b96bc87b2caf2f903d Mon Sep 17 00:00:00 2001 From: Mohammad Rafiq Date: Sat, 14 Jun 2025 11:52:50 +0800 Subject: [PATCH] feat(desktop): move firefox config to homes and use home-manager modules --- homes/x86_64-linux/rafiq/default.nix | 2 + homes/x86_64-linux/rafiq/desktop/browser.nix | 39 ++++++++++++++ homes/x86_64-linux/rafiq/desktop/default.nix | 12 +++++ .../home/desktop/browser/firefox/default.nix | 52 ------------------- modules/home/system/default.nix | 27 +++++++--- modules/nixos/desktop/browser/default.nix | 25 --------- .../nixos/desktop/browser/firefox/default.nix | 20 +++++++ systems/x86_64-linux/desktop.nix | 8 +-- 8 files changed, 95 insertions(+), 90 deletions(-) create mode 100644 homes/x86_64-linux/rafiq/desktop/browser.nix create mode 100644 homes/x86_64-linux/rafiq/desktop/default.nix delete mode 100644 modules/home/desktop/browser/firefox/default.nix delete mode 100644 modules/nixos/desktop/browser/default.nix create mode 100644 modules/nixos/desktop/browser/firefox/default.nix diff --git a/homes/x86_64-linux/rafiq/default.nix b/homes/x86_64-linux/rafiq/default.nix index 8c5ec62..07d8c02 100644 --- a/homes/x86_64-linux/rafiq/default.nix +++ b/homes/x86_64-linux/rafiq/default.nix @@ -3,6 +3,7 @@ inputs, osConfig, lib, + system, ... }: let @@ -26,6 +27,7 @@ let in { config = mkMerge [ + (mkIf osConfig.desktop.enable (import ./desktop { inherit lib inputs system; })) (mkIf osConfig.desktop.enable { home.persistence."/persist/home/rafiq".directories = [ "docs" diff --git a/homes/x86_64-linux/rafiq/desktop/browser.nix b/homes/x86_64-linux/rafiq/desktop/browser.nix new file mode 100644 index 0000000..e156c8a --- /dev/null +++ b/homes/x86_64-linux/rafiq/desktop/browser.nix @@ -0,0 +1,39 @@ +{ + lib, + inputs, + system, +}: +let + inherit (builtins) map listToAttrs; + inherit (lib.lists) findFirstIndex; + inherit (inputs.nur.legacyPackages.${system}.repos.rycee) firefox-addons; + profiles = listToAttrs ( + map (name: { + inherit name; + # If there are duplicate profile names, findFirstIndex will cause issues. + value = profileCfg (findFirstIndex (x: x == name) null syncedProfiles); + }) syncedProfiles + ); + syncedProfiles = [ + "rafiq" + "test" + ]; + profileCfg = id: { + inherit id; + settings."extensions.autoDisableScopes" = 0; # Auto enable extensions + extensions = { + force = true; + packages = with firefox-addons; [ + darkreader + gesturefy + sponsorblock + ublock-origin + ]; + }; + }; +in +{ + home.sessionVariables.BROWSER = "firefox"; + programs.firefox = { inherit profiles; }; + stylix.targets.firefox.profileNames = syncedProfiles; +} diff --git a/homes/x86_64-linux/rafiq/desktop/default.nix b/homes/x86_64-linux/rafiq/desktop/default.nix new file mode 100644 index 0000000..3c5d58d --- /dev/null +++ b/homes/x86_64-linux/rafiq/desktop/default.nix @@ -0,0 +1,12 @@ +{ + lib, + inputs, + system, + ... +}: +let + inherit (lib) mkMerge; +in +mkMerge [ + (import ./browser.nix { inherit lib inputs system; }) +] diff --git a/modules/home/desktop/browser/firefox/default.nix b/modules/home/desktop/browser/firefox/default.nix deleted file mode 100644 index 1605bcb..0000000 --- a/modules/home/desktop/browser/firefox/default.nix +++ /dev/null @@ -1,52 +0,0 @@ -{ - osConfig, - lib, - inputs, - system, - ... -}: -let - inherit (builtins) map listToAttrs; - inherit (lib) mkIf; - inherit (lib.lists) findFirstIndex; - inherit (inputs.nur.legacyPackages.${system}.repos.rycee) firefox-addons; - cfg = osConfig.desktop.browser.firefox; - profileCfg = id: { - inherit id; - #TODO: move this into an option? - settings = { - "extensions.autoDisableScopes" = 0; # Auto enable extensions - }; - extensions = { - force = true; - packages = with firefox-addons; [ - darkreader - gesturefy - sponsorblock - ublock-origin - ]; - }; - }; - profiles = listToAttrs ( - map (name: { - inherit name; - # If there are duplicate profile names, findFirstIndex will cause issues. - # We sanitize the input in nixosModules.desktop to avoid this. - value = profileCfg (findFirstIndex (x: x == name) null cfg.syncedProfiles); - }) cfg.syncedProfiles - ); -in -{ - config = mkIf cfg.enable { - home.persistence."/persist/home/rafiq".directories = [ ".mozilla/firefox" ]; - home.sessionVariables.BROWSER = "firefox"; - programs.firefox = { - enable = true; - inherit profiles; - }; - stylix.targets.firefox = { - profileNames = cfg.syncedProfiles; - colorTheme.enable = true; - }; - }; -} diff --git a/modules/home/system/default.nix b/modules/home/system/default.nix index 3996e00..d061d19 100644 --- a/modules/home/system/default.nix +++ b/modules/home/system/default.nix @@ -1,12 +1,27 @@ -{ config, ... }: +{ config, lib, ... }: +let + inherit (lib) mkOption; + inherit (lib.types) listOf str; +in { - home.persistence."/persist/home/${config.snowfallorg.user.name}" = { - directories = [ + options = { + persistDirs = mkOption { + type = listOf str; + default = [ ]; + }; + }; + + config = { + home.persistence."/persist/home/${config.snowfallorg.user.name}" = { + directories = config.persistDirs; + allowOther = true; + }; + + persistDirs = [ ".ssh" ".config/sops/age" ]; - allowOther = true; - }; - home.stateVersion = "24.11"; + home.stateVersion = "24.11"; + }; } diff --git a/modules/nixos/desktop/browser/default.nix b/modules/nixos/desktop/browser/default.nix deleted file mode 100644 index 2122f44..0000000 --- a/modules/nixos/desktop/browser/default.nix +++ /dev/null @@ -1,25 +0,0 @@ -{ lib, config, ... }: -let - inherit (lib) mkEnableOption mkOption; - inherit (lib.types) listOf str; - inherit (lib.lists) allUnique; - cfg = config.desktop.browser; -in -{ - options.desktop.browser = { - firefox = { - enable = mkEnableOption ""; - syncedProfiles = mkOption { - type = listOf str; - default = [ ]; - }; - }; - }; - - config.assertions = [ - { - assertion = allUnique cfg.firefox.syncedProfiles; - message = "desktop.browser.firefox.syncedProfiles has duplicate elements."; - } - ]; -} diff --git a/modules/nixos/desktop/browser/firefox/default.nix b/modules/nixos/desktop/browser/firefox/default.nix new file mode 100644 index 0000000..7a5de17 --- /dev/null +++ b/modules/nixos/desktop/browser/firefox/default.nix @@ -0,0 +1,20 @@ +{ lib, config, ... }: +let + inherit (lib) + mkEnableOption + mkIf + singleton + ; + cfg = config.desktop.browser.firefox; +in +{ + options.desktop.browser.firefox.enable = mkEnableOption ""; + + config = mkIf cfg.enable { + home-manager.sharedModules = singleton { + persistDirs = singleton ".mozilla/firefox"; + programs.firefox.enable = true; + stylix.targets.firefox.colorTheme.enable = true; + }; + }; +} diff --git a/systems/x86_64-linux/desktop.nix b/systems/x86_64-linux/desktop.nix index b004fd7..4cd3726 100644 --- a/systems/x86_64-linux/desktop.nix +++ b/systems/x86_64-linux/desktop.nix @@ -1,13 +1,7 @@ { desktop = { enable = true; - browser.firefox = { - enable = true; - syncedProfiles = [ - "rafiq" - "test" - ]; - }; + browser.firefox.enable = true; lockscreen.hyprlock.enable = true; windowManager = "hyprland"; terminal = "ghostty";