{ lib, pkgs, config, ... }: let inherit (lib) mkOption mkIf mkPackageOption types; in { options = { type = mkOption { type = types.enum [ "klipper" ]; }; klipper = { klipper-firmware = mkPackageOption pkgs "klipper-firmware" {}; mcu = mkOption { type = types.str; }; firmwareConfig = mkOption { type = types.path; }; build = { bin = mkOption { type = types.path; default = "${config.klipper.klipper-firmware.override { inherit (config.klipper) mcu firmwareConfig; }}/klipper.bin"; }; flash = mkOption { type = types.functionTo <| types.either types.str types.package; }; }; }; }; config = mkIf (config.type == "klipper") { }; }