omegon 0.6.21 → 0.6.23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/bin/omegon.mjs CHANGED
@@ -63,6 +63,12 @@ function injectBundledResourceArgs(argv) {
63
63
  return injected;
64
64
  }
65
65
 
66
+ if (process.argv.includes("--version") || process.argv.includes("-v")) {
67
+ const pkg = JSON.parse(readFileSync(join(omegonRoot, "package.json"), "utf8"));
68
+ process.stdout.write(pkg.version + "\n");
69
+ process.exit(0);
70
+ }
71
+
66
72
  if (process.argv.includes("--where")) {
67
73
  process.stdout.write(JSON.stringify({
68
74
  omegonRoot,
@@ -133,11 +133,21 @@ function hasCmd(cmd: string): boolean {
133
133
  /** Get the best install command for the current platform */
134
134
  export function bestInstallCmd(dep: Dep): string | undefined {
135
135
  const plat = process.platform === "darwin" ? "darwin" : "linux";
136
- return (
137
- dep.install.find((o) => o.platform === plat)?.cmd ??
138
- dep.install.find((o) => o.platform === "any")?.cmd ??
139
- dep.install[0]?.cmd
140
- );
136
+ const candidates = dep.install.filter((o) => o.platform === plat || o.platform === "any");
137
+ if (candidates.length === 0) return dep.install[0]?.cmd;
138
+
139
+ // If nix is available, prefer nix commands. Otherwise prefer brew.
140
+ const hasNix = hasCmd("nix");
141
+ const hasBrew = hasCmd("brew");
142
+ if (hasNix) {
143
+ const nix = candidates.find((o) => o.cmd.startsWith("nix "));
144
+ if (nix) return nix.cmd;
145
+ }
146
+ if (hasBrew) {
147
+ const brew = candidates.find((o) => o.cmd.startsWith("brew "));
148
+ if (brew) return brew.cmd;
149
+ }
150
+ return candidates[0]?.cmd;
141
151
  }
142
152
 
143
153
  /** Get all install options formatted for display */
@@ -154,28 +164,22 @@ export function installHints(dep: Dep): string[] {
154
164
  * Order matters: displayed in this order during bootstrap.
155
165
  */
156
166
  export const DEPS: Dep[] = [
157
- // --- Core: most users want these ---
167
+ // --- Core: package manager + essential tools ---
158
168
  {
159
169
  id: "nix",
160
170
  name: "Nix",
161
171
  purpose: "Universal package manager — installs all other dependencies on any OS",
162
172
  usedBy: ["bootstrap"],
163
173
  tier: "core",
164
- check: () => hasCmd("nix"),
165
- install: [
166
- // Immutable ostree-based Linux (Bazzite, Silverblue, Bluefin, etc.)
167
- // needs root.transient enabled and --persistence=/var/lib/nix so the
168
- // nix store lives on a writable partition. The upstream installer uses
169
- // the ostree planner automatically when it detects ostree.
170
- { platform: "linux", cmd: isOstree()
171
- ? "curl -sSfL https://install.determinate.systems/nix | sh -s -- install --no-confirm --persistence=/var/lib/nix"
172
- : "curl --proto '=https' --tlsv1.2 -sSf -L https://install.determinate.systems/nix | sh -s -- install --no-confirm" },
173
- { platform: "darwin", cmd: "curl --proto '=https' --tlsv1.2 -sSf -L https://install.determinate.systems/nix | sh -s -- install --no-confirm" },
174
- ],
174
+ // Either nix or brew satisfies this — we just need a working package manager
175
+ check: () => hasCmd("nix") || hasCmd("brew"),
176
+ install: isOstree()
177
+ ? [{ platform: "linux", cmd: '/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"' }]
178
+ : [
179
+ { platform: "any", cmd: "curl --proto '=https' --tlsv1.2 -sSf -L https://install.determinate.systems/nix | sh -s -- install --no-confirm" },
180
+ { platform: "any", cmd: '/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"' },
181
+ ],
175
182
  url: "https://zero-to-nix.com",
176
- // On ostree systems, root.transient must be enabled first for /nix to be created.
177
- // preflight returns instructions if the system isn't ready.
178
- preflight: isOstree() ? checkOstreeReadyForNix : undefined,
179
183
  },
180
184
  {
181
185
  id: "ollama",
@@ -187,6 +191,7 @@ export const DEPS: Dep[] = [
187
191
  requires: ["nix"],
188
192
  install: [
189
193
  { platform: "any", cmd: "nix profile install nixpkgs#ollama" },
194
+ { platform: "any", cmd: "brew install ollama" },
190
195
  ],
191
196
  url: "https://ollama.com",
192
197
  },
@@ -200,24 +205,12 @@ export const DEPS: Dep[] = [
200
205
  requires: ["nix"],
201
206
  install: [
202
207
  { platform: "any", cmd: "nix profile install nixpkgs#d2" },
208
+ { platform: "any", cmd: "brew install d2" },
203
209
  ],
204
210
  url: "https://d2lang.com",
205
211
  },
206
212
 
207
213
  // --- Recommended: common workflows ---
208
- {
209
- id: "vault",
210
- name: "Vault CLI",
211
- purpose: "HashiCorp Vault authentication status checking and secret management",
212
- usedBy: ["01-auth"],
213
- tier: "optional",
214
- check: () => hasCmd("vault"),
215
- requires: ["nix"],
216
- install: [
217
- { platform: "any", cmd: "nix profile install nixpkgs#vault" },
218
- ],
219
- url: "https://developer.hashicorp.com/vault/install",
220
- },
221
214
  {
222
215
  id: "gh",
223
216
  name: "GitHub CLI",
@@ -228,6 +221,7 @@ export const DEPS: Dep[] = [
228
221
  requires: ["nix"],
229
222
  install: [
230
223
  { platform: "any", cmd: "nix profile install nixpkgs#gh" },
224
+ { platform: "any", cmd: "brew install gh" },
231
225
  ],
232
226
  url: "https://cli.github.com",
233
227
  },
@@ -241,6 +235,7 @@ export const DEPS: Dep[] = [
241
235
  requires: ["nix"],
242
236
  install: [
243
237
  { platform: "any", cmd: "nix profile install nixpkgs#pandoc" },
238
+ { platform: "any", cmd: "brew install pandoc" },
244
239
  ],
245
240
  url: "https://pandoc.org",
246
241
  },
@@ -253,6 +248,7 @@ export const DEPS: Dep[] = [
253
248
  check: () => hasCmd("cargo"),
254
249
  install: [
255
250
  { platform: "any", cmd: "nix profile install nixpkgs#rustup && rustup default stable" },
251
+ { platform: "any", cmd: "curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y" },
256
252
  ],
257
253
  url: "https://rustup.rs",
258
254
  },
@@ -281,6 +277,7 @@ export const DEPS: Dep[] = [
281
277
  requires: ["nix"],
282
278
  install: [
283
279
  { platform: "any", cmd: "nix profile install nixpkgs#librsvg" },
280
+ { platform: "any", cmd: "brew install librsvg" },
284
281
  ],
285
282
  },
286
283
  {
@@ -293,6 +290,7 @@ export const DEPS: Dep[] = [
293
290
  requires: ["nix"],
294
291
  install: [
295
292
  { platform: "any", cmd: "nix profile install nixpkgs#poppler_utils" },
293
+ { platform: "any", cmd: "brew install poppler" },
296
294
  ],
297
295
  },
298
296
  {
@@ -305,6 +303,7 @@ export const DEPS: Dep[] = [
305
303
  requires: ["nix"],
306
304
  install: [
307
305
  { platform: "any", cmd: "nix profile install nixpkgs#uv" },
306
+ { platform: "any", cmd: "brew install uv" },
308
307
  ],
309
308
  url: "https://docs.astral.sh/uv/",
310
309
  },
@@ -318,6 +317,7 @@ export const DEPS: Dep[] = [
318
317
  requires: ["nix"],
319
318
  install: [
320
319
  { platform: "any", cmd: "nix profile install nixpkgs#awscli2" },
320
+ { platform: "any", cmd: "brew install awscli" },
321
321
  ],
322
322
  },
323
323
  {
@@ -330,7 +330,22 @@ export const DEPS: Dep[] = [
330
330
  requires: ["nix"],
331
331
  install: [
332
332
  { platform: "any", cmd: "nix profile install nixpkgs#kubectl" },
333
+ { platform: "any", cmd: "brew install kubectl" },
334
+ ],
335
+ },
336
+ {
337
+ id: "vault",
338
+ name: "Vault CLI",
339
+ purpose: "HashiCorp Vault authentication status checking and secret management",
340
+ usedBy: ["01-auth"],
341
+ tier: "optional",
342
+ check: () => hasCmd("vault"),
343
+ requires: ["nix"],
344
+ install: [
345
+ { platform: "any", cmd: "nix profile install nixpkgs#vault" },
346
+ { platform: "any", cmd: "brew install hashicorp/tap/vault" },
333
347
  ],
348
+ url: "https://developer.hashicorp.com/vault/install",
334
349
  },
335
350
  ];
336
351
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "omegon",
3
- "version": "0.6.21",
3
+ "version": "0.6.23",
4
4
  "description": "Omegon — an opinionated distribution of pi (by Mario Zechner) with extensions for lifecycle management, memory, orchestration, and visualization",
5
5
  "bin": {
6
6
  "omegon": "bin/omegon.mjs",
@@ -40,6 +40,9 @@
40
40
  "url": "https://github.com/styrene-lab/omegon/issues"
41
41
  },
42
42
  "homepage": "https://github.com/styrene-lab/omegon#readme",
43
+ "optionalDependencies": {
44
+ "@mariozechner/clipboard": "0.3.2"
45
+ },
43
46
  "engines": {
44
47
  "node": ">=20.0.0"
45
48
  },