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:
parent
02077149e2
commit
115344f32b
1 changed files with 32 additions and 35 deletions
|
|
@ -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
|
||||||
|
)
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue