# A flake-parts module containing definition for my custom wrapper-manager # packages which should have its own flake output attribute at # `wrapperManagerPackages` containing the derivations that can be run or build. { config, lib, flake-parts-lib, ... }: let inherit (flake-parts-lib) mkSubmoduleOptions mkPerSystemOption; in { options = { flake = mkSubmoduleOptions { wrapperManagerPackages = lib.mkOption { type = with lib.types; lazyAttrsOf (attrsOf package); default = { }; description = '' An attribute set of per-system wrapper-manager configurations. ''; }; }; perSystem = mkPerSystemOption { options = { wrapperManagerPackages = lib.mkOption { type = with lib.types; attrsOf package; default = { }; description = '' An attribute set of wrapper-manager configurations. ''; }; }; }; }; config = { flake.wrapperManagerPackages = lib.mapAttrs (k: v: v.wrapperManagerPackages) (lib.filterAttrs (k: v: v.wrapperManagerPackages != { }) config.allSystems ); perInput = system: flake: lib.optionalAttrs (flake ? wrapperManagerPackages.${system}) { wrapperManagerPackages = flake.wrapperManagerPackages.${system}; }; }; }