如何将模块(开关)的写法进一步简化?

我有一个基于 snowfall配置

它定义一个 home-manager 的模块,或者说是开关,如下:

# cli/audio/cava/default.nix
{ ... }@args:
args.module (
  args
  // {
    path = ./.;
    progs = "cava";
  }
)

=>

{ lib, config, namespace ... }:
with lib;
let
  cfg = config.${namespace}.cli.audio.cava; # 就是上面 path 的相对路径转换而来。
in
{
  options.${namespace}.cli.audio.cava.enable = mkEnableOption "";

  config = mkIf cfg.enable { programs.cava.enable = true; };
}

它非常简单,就是在 specicalArgs 中加入生成模块的函数,每个文件都调用它,加上必要的参数后传出去。
但这样每个文件都要写 path = ./.
有什么更好的方法,或者框架,可以进一步简化模块(开关)的写法?

还是没看懂这是啥,不过你可能会喜欢 GitHub - nix-community/haumea: Filesystem-based module system for Nix [maintainer=@figsoda]