Add option for extending default overlay

This commit is contained in:
Archit Gupta 2023-08-26 23:46:37 -07:00
parent 981351cfe2
commit 9672921de0
2 changed files with 22 additions and 7 deletions

View File

@ -4,15 +4,30 @@
{ config, lib, flakelight, ... }:
let
inherit (lib) mkOption mkIf;
inherit (lib.types) lazyAttrsOf;
inherit (lib) mkMerge mkOption mkIf;
inherit (lib.types) lazyAttrsOf nullOr;
inherit (flakelight.types) overlay;
in
{
options.overlays = mkOption {
type = lazyAttrsOf overlay;
default = { };
options = {
overlay = mkOption {
type = nullOr overlay;
default = null;
};
overlays = mkOption {
type = lazyAttrsOf overlay;
default = { };
};
};
config.outputs = mkIf (config.overlays != { }) { inherit (config) overlays; };
config = mkMerge [
(mkIf (config.overlay != null) {
overlays.default = config.overlay;
})
(mkIf (config.overlays != { }) {
outputs = { inherit (config) overlays; };
})
];
}

View File

@ -47,7 +47,7 @@ in
}) //
(genAttrs pkgNames' (n: final.callPackage config.packages.${n} { })));
overlays.default = final: prev:
overlay = final: prev:
let
pkgs' = fix (composeManyExtensions config.withOverlays) prev;
defaultName = getName (callPkg pkgs' config.packages.default);