ModulesBun
bun-app.proto.nix
Unified field definitions for Bun app configuration.
Unified field definitions for Bun app configuration.
This is the SINGLE SOURCE OF TRUTH for Bun module per-app options. It defines SpFields that simultaneously serve as:
1. Proto fields → BunAppConfig message (for Go/TS codegen)
2. Nix option source → bun/module.nix uses asOption to create lib.mkOption
3. UI panel source → bun/ui.nix uses fields for auto-generated panelsNOTE: Some Bun options (runtimeInputs) are Nix-only and cannot be represented as SpFields. These remain as manual lib.mkOption definitions in module.nix alongside the auto-generated ones.
Usage from module.nix:
let bunSchema = import ./schema.nix { inherit lib; };
in { options = lib.mapAttrs (_: sp.asOption) bunSchema.fields; }Usage from ui.nix:
let bunSchema = import ./schema.nix { inherit lib; };
in panelsLib.mkPanelFromSpFields { fields = bunSchema.fields; ... }Proto generation:
bunSchema.protoFile → rendered .proto file with BunAppConfig message