Extension
Defined in: packages/core/src/kernel/types.ts:949
The atomic unit of composition. Everything — presets, packages, .use() args — is an Extension.
Remarks
Section titled “Remarks”Extensions are pure data: mounts, bins, env vars, seed files, and service declarations. No behavior, no callbacks, no lifecycle. Merge semantics: later wins for mounts/bins/env/files; services are collected in order. A preset is a function that returns an Extension.
Example
Section titled “Example”const myExt: Extension = { bins: { hello: async (proc) => { await proc.stdout.write('hi\n'); return exitCode(0) } }, env: { GREETING: 'hello' }, files: { '/etc/motd': 'Welcome to my system.\n' },}const image = await Unix().use(stdSystem()).use(myExt).build()Properties
Section titled “Properties”
optionalbins?:Record<string,BinFunction>
Defined in: packages/core/src/kernel/types.ts:953
Bin functions registered at /bin/<name>. Later wins per name.
optionalenv?:Record<string,string>
Defined in: packages/core/src/kernel/types.ts:955
Environment variables. Later wins per key.
files?
Section titled “files?”
optionalfiles?:Record<string,string>
Defined in: packages/core/src/kernel/types.ts:957
Seed files written after mounts are established. Later wins per path.
optionalman?:Record<string,BinHelp>
Defined in: packages/core/src/kernel/types.ts:961
Man page content for bins. Key is bin name. Later wins per name.
mounts?
Section titled “mounts?”
optionalmounts?:Record<string,Fileserver>
Defined in: packages/core/src/kernel/types.ts:951
Fileserver mounts. Key is the mount path (e.g., '/data'). Later wins per path.
services?
Section titled “services?”
optionalservices?:ServiceDef[]
Defined in: packages/core/src/kernel/types.ts:959
Service declarations for the init system. Collected in order across extensions.