{ lib, flake-parts-lib, inputs, ... }: let inherit (lib) mkOption mkPackageOption types; inherit (flake-parts-lib) mkPerSystemOption; in { options.perSystem = mkPerSystemOption ({ pkgs, config, ... }: { options = { weznix = { wezterm = mkPackageOption pkgs "wezterm" {}; configDirectory = mkOption { type = types.str; default = "~/.config/wezterm"; }; luaPath = mkOption { type = types.path; description = "Path to wezterm config directory"; }; wrapConfig = mkOption { type = types.either types.bool types.str; default = "WEZDEV"; }; extraPATH = mkOption { type = types.listOf types.package; default = []; description = "Extra packages to add to wezterm's $PATH"; }; extraWrapperArgs = mkOption { type = types.listOf types.str; default = []; description = "Extra arguments to pass to `wrapProgram`"; }; pass = mkOption { type = types.lazyAttrsOf types.anything; default = {}; description = "Anything else to pass into the lua config"; }; }; }; config = { packages = { weznix = pkgs.callPackage ../pkgs/weznix.nix { inherit (config.weznix) wezterm; nixToLua = import inputs.nixToLua; } { inherit (config.weznix) configDirectory luaPath wrapConfig extraPATH extraWrapperArgs pass; }; }; }; }); }