1
0
Fork 0
mirror of https://github.com/nix-community/home-manager.git synced 2025-12-07 09:31:04 +01:00

chromium: allow nullable package (#7149)

This commit is contained in:
Hoang Nguyen 2025-05-29 02:58:20 +00:00 committed by GitHub
parent 02077149e2
commit 115344f32b
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -7,19 +7,18 @@
let let
inherit (lib) literalExpression mkOption types; inherit (lib) literalExpression mkOption types;
supportedBrowsers = [ supportedBrowsers = {
"chromium" chromium = "Chromium";
"google-chrome" google-chrome = "Google Chrome";
"google-chrome-beta" google-chrome-beta = "Google Chrome Beta";
"google-chrome-dev" google-chrome-dev = "Google Chrome Dev";
"brave" brave = "Brave Browser";
"vivaldi" vivaldi = "Vivaldi Browser";
]; };
browserModule = browserModule =
defaultPkg: name: visible: browser: name: visible:
let let
browser = (builtins.parseDrvName defaultPkg.name).name;
isProprietaryChrome = lib.hasPrefix "Google Chrome" name; isProprietaryChrome = lib.hasPrefix "Google Chrome" name;
in in
{ {
@ -33,8 +32,8 @@ let
package = mkOption { package = mkOption {
inherit visible; inherit visible;
type = types.package; type = types.nullOr types.package;
default = defaultPkg; default = pkgs.${browser};
defaultText = literalExpression "pkgs.${browser}"; defaultText = literalExpression "pkgs.${browser}";
description = "The ${name} package to use."; description = "The ${name} package to use.";
}; };
@ -163,12 +162,10 @@ let
}; };
browserConfig = browserConfig =
cfg: browser: cfg:
let let
drvName = (builtins.parseDrvName cfg.package.name).name; isProprietaryChrome = lib.hasPrefix "google-chrome" browser;
browser = if drvName == "ungoogled-chromium" then "chromium" else drvName;
isProprietaryChrome = lib.hasPrefix "google-chrome" drvName;
darwinDirs = { darwinDirs = {
chromium = "Chromium"; chromium = "Chromium";
@ -213,21 +210,22 @@ let
}; };
nativeMessagingHostsJoined = pkgs.symlinkJoin { nativeMessagingHostsJoined = pkgs.symlinkJoin {
name = "${drvName}-native-messaging-hosts"; name = "${browser}-native-messaging-hosts";
paths = cfg.nativeMessagingHosts; paths = cfg.nativeMessagingHosts;
}; };
package = in
lib.mkIf cfg.enable {
home.packages = lib.mkIf (cfg.package != null) [
(
if cfg.commandLineArgs != [ ] then if cfg.commandLineArgs != [ ] then
cfg.package.override { cfg.package.override {
commandLineArgs = lib.concatStringsSep " " cfg.commandLineArgs; commandLineArgs = lib.concatStringsSep " " cfg.commandLineArgs;
} }
else else
cfg.package; cfg.package
)
in ];
lib.mkIf cfg.enable {
home.packages = [ package ];
home.file = lib.optionalAttrs (!isProprietaryChrome) ( home.file = lib.optionalAttrs (!isProprietaryChrome) (
lib.listToAttrs ((map extensionJson cfg.extensions) ++ (map dictionary cfg.dictionaries)) lib.listToAttrs ((map extensionJson cfg.extensions) ++ (map dictionary cfg.dictionaries))
// { // {
@ -264,14 +262,13 @@ in
] ]
]; ];
options.programs = { options.programs = builtins.mapAttrs (
chromium = browserModule pkgs.chromium "Chromium" true; browser: name: browserModule browser name (if browser == "chromium" then true else false)
google-chrome = browserModule pkgs.google-chrome "Google Chrome" false; ) supportedBrowsers;
google-chrome-beta = browserModule pkgs.google-chrome-beta "Google Chrome Beta" false;
google-chrome-dev = browserModule pkgs.google-chrome-dev "Google Chrome Dev" false;
brave = browserModule pkgs.brave "Brave Browser" false;
vivaldi = browserModule pkgs.vivaldi "Vivaldi Browser" false;
};
config = lib.mkMerge (map (browser: browserConfig config.programs.${browser}) supportedBrowsers); config = lib.mkMerge (
builtins.map (browser: browserConfig browser config.programs.${browser}) (
builtins.attrNames supportedBrowsers
)
);
} }