{ config , lib , inputs , ... }: with lib; let cfg = config.my.programs.firefox; arkenfox = builtins.readFile "${inputs.arkenfox-userjs}/user.js"; in { options.my.programs.firefox = { enable = mkEnableOption "firefox"; arkenfox = { enable = mkEnableOption "arkenfox"; overrides = mkOption { default = { }; type = with types; attrsOf (oneOf [ str bool int ]); apply = overrides: concatStrings ( mapAttrsToList ( name: value: '' user_pref("${name}", ${builtins.toJSON value}); '' ) overrides ); }; }; }; config = mkIf cfg.enable { home-manager.users.moritz.programs.firefox = { enable = true; profiles."default".extraConfig = mkIf cfg.arkenfox.enable '' // Arkenfox user.js ${arkenfox} // Overrides ${cfg.arkenfox.overrides} ''; }; }; }