{ lib, config, pkgs, ... }: let cfg = config.this.overlays; mapOverlays = f: lib.mapAttrsToList (ov: _: f ov) (lib.filterAttrs (ov: c: c.enable) cfg); overlayDir = pkgs.linkFarm "nixpkgs-overlays" (mapOverlays (ov: { name = "${ov}.nix"; path = ./${ov}.nix; })); in { options.this.overlays = { emacs.enable = lib.mkEnableOption "custom-built Emacs overlay"; g45_h264.enable = lib.mkEnableOption "intel-vaapi-driver with h264 support on gm45"; marsironpi.enable = lib.mkEnableOption "custom repository of packages" // { default = true; }; }; config = { nixpkgs.overlays = mapOverlays (ov: import ./${ov}.nix); nix.nixPath = lib.mkAfter ["nixpkgs-overlays=${overlayDir}"]; }; }