Compare commits

...

12 Commits

Author SHA1 Message Date
Quixos Subtree Publisher b6cd2f3cd7 Publish quixos-nix-helpers from b384206b9c01a9ac50030a583d028b71291bc8c5 2026-09-06 07:07:06 +00:00
timothy 2f66f25153 Build workspace agent, capability graph, and versioned cutovers 2026-09-06 00:07:06 -07:00
Quixos Subtree Publisher 2ee30c177c Publish quixos-nix-helpers from fa363fa2f4e83d0996c1229ab1ecf9e0541d5d4f 2026-09-05 04:28:56 +00:00
timothy 7177130c03 Introduce repository-backed capability workspaces
- define and validate the capability and resource-lock languages
- provision workspace source repositories through Central Gitea
- build package runtimes from pinned standalone sources
- replace legacy schema compilation with workspace persistence plans
- add stable optimistic registers and Automerge CRDT documents
- modernize TypeScript/Nix package builds and runtime activation readiness
2026-09-04 19:08:10 -07:00
Quixos Subtree Publisher 1965741625 Publish quixos-nix-helpers from ce0dd80f56df35bf3db1be01236a949a704cb4c2 2026-09-04 17:41:38 +00:00
timothy 220aaaa08c Host workspace repositories on Central Gitea 2026-09-04 10:41:38 -07:00
Quixos Subtree Publisher 56bbcd22d1 Publish quixos-nix-helpers from b5db4f65b59842ba912cb89d11237d0ce428ea95 2026-09-04 17:30:53 +00:00
timothy bb57488dbc Host workspace repositories on Central Gitea 2026-09-04 10:30:53 -07:00
Timothy J. Aveni 2413926ad8 Fix Automerge bundling for Camino runtimes 2026-07-12 20:41:42 -07:00
Quixos Subtree Publisher 1f0c39b015 Publish quixos-nix-helpers from 8354a2e04f56eea0a647e878ca19c5398c1e1f89 2026-07-13 03:41:42 +00:00
Timothy J. Aveni fc0fdb09a4 Add Camino React visualizer runtime path 2026-07-12 17:22:49 -07:00
Quixos Subtree Publisher f85b2e3d7b Publish quixos-nix-helpers from 398fd9e0d723c3fe7a511c2c35702874fd7342d0 2026-07-13 00:22:49 +00:00
2 changed files with 30 additions and 13 deletions
+1 -1
View File
@@ -1,7 +1,7 @@
{
"version": 1,
"sourceRepo": "https://gitea-external.egads.tutti.syntaxblitz.net/quixos/quixos.git",
"sourceCommit": "eb407e5a3bbd4ae2f810a0cee0d45b5c7e8d7db1",
"sourceCommit": "b384206b9c01a9ac50030a583d028b71291bc8c5",
"sourcePath": "quixos-instance/quixos-nix-helpers",
"exportName": "quixos-nix-helpers",
"mirrorRemote": "https://gitea-external.egads.tutti.syntaxblitz.net/quixos/quixos-nix-helpers.git"
+29 -12
View File
@@ -521,7 +521,6 @@ EOF
promptName ? null,
nodejsAttr ? "nodejs_24",
buildCommand ? "yarn build",
sourcePortals ? { },
buildEnv ? { },
nativeBuildInputs ? [ ],
devShellPackages ? [ ],
@@ -561,19 +560,20 @@ EOF
attrs
);
portalLinksFor = attrs:
lib.concatStringsSep "\n" (
lib.mapAttrsToList
(target: source: "ln -sfn ${source} ${lib.escapeShellArg target}")
attrs
);
bundleConfig = if bundle == null then { } else bundle;
bundleOutfile = bundleConfig.outfile or "server.mjs";
bundlePlatform = bundleConfig.platform or "node";
bundleTarget = bundleConfig.target or "node24";
bundleFormat = bundleConfig.format or "esm";
bundleBanner = bundleConfig.banner or nodeRequireBanner;
bundleAliases = bundleConfig.aliases or {
"@automerge/automerge" = "./node_modules/@automerge/automerge/dist/mjs/entrypoints/fullfat_base64.js";
};
bundleAliasArgs = lib.concatStringsSep " " (
lib.mapAttrsToList
(from: to: "--alias:${from}=${lib.escapeShellArg to}")
bundleAliases
);
nodeRequireBanner = "import { createRequire } from 'module';const require = createRequire(import.meta.url);";
bundleCommand =
if bundle == null
@@ -584,6 +584,7 @@ EOF
--platform=${bundlePlatform} \
--target=${bundleTarget} \
--format=${bundleFormat} \
${bundleAliasArgs} \
${lib.optionalString (bundleConfig.preserveSymlinks or true) "--preserve-symlinks \\"}
--banner:js=${lib.escapeShellArg bundleBanner} \
--outfile=${lib.escapeShellArg bundleOutfile}
@@ -595,12 +596,31 @@ EOF
installConfig.libexecName or (lib.strings.sanitizeDerivationName packageNameFinal);
serverFile = installConfig.serverFile or bundleOutfile;
descriptorPath = installConfig.descriptorPath or "descriptor.quixos-package.txtpb";
extraFiles = installConfig.extraFiles or [ ];
installExtraFile = file:
let
source = toString file.source;
target = file.target or (baseNameOf source);
mode = file.mode or "0644";
in ''
install -Dm${toString mode} ${lib.escapeShellArg source} "$out/libexec/${serverLibexecName}/${target}"
'';
installServerPhase =
if installServer == null
then null
else ''
runHook preInstall
install -Dm755 ${lib.escapeShellArg serverFile} "$out/libexec/${serverLibexecName}/${serverFile}"
# Browser entrypoints are runtime artifacts too. Package build scripts
# conventionally emit them as top-level .mjs files in dist/. Install
# the complete set so adding an entrypoint cannot produce a descriptor
# that resolves successfully but fails when Web Studio opens the file.
for browserModule in dist/*.mjs; do
if [ -f "$browserModule" ]; then
install -Dm644 "$browserModule" "$out/libexec/${serverLibexecName}/$(basename "$browserModule")"
fi
done
${lib.concatMapStringsSep "\n" installExtraFile extraFiles}
mkdir -p "$out/bin"
cat > "$out/bin/${serverBin}" <<EOF
#!${pkgs.runtimeShell}
@@ -620,9 +640,6 @@ EOF
(old.nativeBuildInputs or [ ])
++ lib.optional (bundle != null) pkgs.esbuild
++ callOption nativeBuildInputs;
preConfigure = (old.preConfigure or "") + ''
${portalLinksFor (callOption sourcePortals)}
'';
buildPhase = ''
runHook preBuild
${exportsFor (callOption buildEnv)}
@@ -662,7 +679,7 @@ EOF
devShells.default = pkgs.mkShell {
packages = [
nodejs
pkgs.yarn-berry_4
project.yarn-freestanding
] ++ callOption devShellPackages;
shellHook = devShellHookBase + callOption devShellHook;
};