treewide: null package support (#6582)
Can generate the config without installing application through home-manager. Helpful when a package is broken (or not provided) on a specific platform through nixpkgs and needs to be installed through other means but you still can benefit from the declarative configuration.
This commit is contained in:
parent
6c2b79403e
commit
d2c014e1c7
83 changed files with 269 additions and 222 deletions
|
|
@ -46,7 +46,7 @@ in {
|
|||
options.programs.nushell = {
|
||||
enable = lib.mkEnableOption "nushell";
|
||||
|
||||
package = lib.mkPackageOption pkgs "nushell" { };
|
||||
package = lib.mkPackageOption pkgs "nushell" { nullable = true; };
|
||||
|
||||
configFile = lib.mkOption {
|
||||
type = types.nullOr (linesOrSource "config.nu");
|
||||
|
|
@ -197,7 +197,13 @@ in {
|
|||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
home.packages = [ cfg.package ];
|
||||
warnings = lib.optional (cfg.package == null && cfg.plugins != [ ]) ''
|
||||
You have configured `plugins` for `nushell` but have not set `package`.
|
||||
|
||||
The listed plugins will not be installed.
|
||||
'';
|
||||
|
||||
home.packages = lib.mkIf (cfg.package != null) [ cfg.package ];
|
||||
|
||||
home.file = lib.mkMerge [
|
||||
(let
|
||||
|
|
@ -261,7 +267,7 @@ in {
|
|||
(map (plugin: "plugin add ${lib.getExe plugin}") cfg.plugins)
|
||||
}'
|
||||
'';
|
||||
in lib.mkIf (cfg.plugins != [ ]) {
|
||||
in lib.mkIf ((cfg.package != null) && (cfg.plugins != [ ])) {
|
||||
"${configDir}/plugin.msgpackz".source = "${msgPackz}/plugin.msgpackz";
|
||||
})
|
||||
];
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue