wrap loom into a Nix package

This commit is contained in:
EatThePooh 2025-10-14 12:41:15 +07:00
parent 30e97f5b8e
commit 67d13d8634
6 changed files with 58 additions and 26 deletions

6
flake.lock generated
View file

@ -2,11 +2,11 @@
"nodes": {
"deno-with-packages": {
"locked": {
"lastModified": 1757917630,
"narHash": "sha256-zK0p0oq7NhBUUsfcPYS+iu2A0+HzzHJ4WxZ5MDd+Lis=",
"lastModified": 1759993728,
"narHash": "sha256-qZNehYgtNCB7YpMqZww4kgjlWDTPxqxivaHuCxMrGtA=",
"owner": "voleum-org",
"repo": "deno-with-packages",
"rev": "26f60eb96b0d092373e4fbe0ceae1a080b8f00b6",
"rev": "6af05b2c5104339767126fa968ce9c62ec9ee352",
"type": "github"
},
"original": {

View file

@ -19,7 +19,7 @@
shelf = import ./shelf {
inherit pkgs system lib;
};
in {
in rec {
deno = {
enable = true;
lockfiles = shelf.lockfiles ++ [ ./platform/loom/deno.lock ];
@ -28,8 +28,10 @@
packages.website =
import ./nix/website.nix { inherit pkgs; root = ./.; };
packages.loom = import ./platform { inherit pkgs; denoCache = config.packages.deno-cache; };
devShells.default = pkgs.mkShell {
buildInputs = with pkgs; [ config.packages.deno pandoc reuse ];
buildInputs = with pkgs; [ config.packages.deno pandoc reuse packages.loom ];
inputsFrom = [ config.flake-root.devShell ];
shellHook = ''
echo "Available scrolls:"

31
platform/default.nix Normal file
View file

@ -0,0 +1,31 @@
{ pkgs, denoCache }:
pkgs.stdenv.mkDerivation {
name = "loom";
src = ./loom;
buildPhase = ''
export DENO_DIR=$TMPDIR/.deno_cache
echo "Deno cache is ${denoCache}"
cp -rL "${denoCache}" "$DENO_DIR"/ 2>/dev/null || true
chmod -R u+w "$DENO_DIR" 2>/dev/null || true
echo "DENO_DIR is $DENO_DIR"
${pkgs.deno}/bin/deno task build:editor
'';
installPhase = ''
mkdir -p $out/bin $out/editor
cp -r editor/dist $out/editor/dist
cp -r mod.ts deno.json deno.lock $out
cp -r cli $out
# This is meant to be executed from inside a devShell with Deno set up
cat > $out/bin/loom <<EOF
#!/bin/sh
cd $out
exec deno task run "\$@"
EOF
chmod +x $out/bin/loom
'';
}

View file

@ -3,7 +3,7 @@
"dev:editor": "cd editor && deno run --cached-only -A --node-modules-dir npm:vite dev",
"build:editor": "cd editor && deno run --cached-only -A --node-modules-dir npm:vite build",
"check:editor": "cd editor && deno run --cached-only -A --node-modules-dir npm:svelte-check --tsconfig ./tsconfig.app.json && tsc -p tsconfig.node.json"
"run": "deno run --cached-only -A mod.ts serve"
"run": "deno run --cached-only -A mod.ts"
"compile": "deno compile --cached-only --no-config --no-check --include ./editor/dist/ --allow-read --allow-env --allow-net mod.ts"
},
"imports": {

View file

@ -2,15 +2,15 @@
"version": "5",
"specifiers": {
"npm:@stricli/core@*": "1.2.0",
"npm:@sveltejs/vite-plugin-svelte@^6.2.1": "6.2.1_svelte@5.39.9__acorn@8.15.0_vite@7.1.9__@types+node@24.6.2__picomatch@4.0.3_@types+node@24.6.2",
"npm:@sveltejs/vite-plugin-svelte@^6.2.1": "6.2.1_svelte@5.39.11__acorn@8.15.0_vite@7.1.9__@types+node@24.7.0__picomatch@4.0.3_@types+node@24.7.0",
"npm:@tsconfig/svelte@^5.0.5": "5.0.5",
"npm:@types/node@^24.6.0": "24.6.2",
"npm:@types/node@^24.6.0": "24.7.0",
"npm:express@*": "5.1.0",
"npm:rolldown-vite@7.1.14": "7.1.14_@types+node@24.6.2_picomatch@4.0.3",
"npm:svelte-check@^4.3.2": "4.3.2_svelte@5.39.9__acorn@8.15.0_typescript@5.9.3",
"npm:svelte@^5.39.6": "5.39.9_acorn@8.15.0",
"npm:rolldown-vite@7.1.14": "7.1.14_@types+node@24.7.0_picomatch@4.0.3",
"npm:svelte-check@^4.3.2": "4.3.3_svelte@5.39.11__acorn@8.15.0_typescript@5.9.3",
"npm:svelte@^5.39.6": "5.39.11_acorn@8.15.0",
"npm:typescript@~5.9.3": "5.9.3",
"npm:vite@*": "7.1.9_@types+node@24.6.2_picomatch@4.0.3"
"npm:vite@*": "7.1.9_@types+node@24.7.0_picomatch@4.0.3"
},
"npm": {
"@emnapi/core@1.5.0": {
@ -397,7 +397,7 @@
"acorn"
]
},
"@sveltejs/vite-plugin-svelte-inspector@5.0.1_@sveltejs+vite-plugin-svelte@6.2.1__svelte@5.39.9___acorn@8.15.0__vite@7.1.9___@types+node@24.6.2___picomatch@4.0.3__@types+node@24.6.2_svelte@5.39.9__acorn@8.15.0_vite@7.1.9__@types+node@24.6.2__picomatch@4.0.3_@types+node@24.6.2": {
"@sveltejs/vite-plugin-svelte-inspector@5.0.1_@sveltejs+vite-plugin-svelte@6.2.1__svelte@5.39.11___acorn@8.15.0__vite@7.1.9___@types+node@24.7.0___picomatch@4.0.3__@types+node@24.7.0_svelte@5.39.11__acorn@8.15.0_vite@7.1.9__@types+node@24.7.0__picomatch@4.0.3_@types+node@24.7.0": {
"integrity": "sha512-ubWshlMk4bc8mkwWbg6vNvCeT7lGQojE3ijDh3QTR6Zr/R+GXxsGbyH4PExEPpiFmqPhYiVSVmHBjUcVc1JIrA==",
"dependencies": [
"@sveltejs/vite-plugin-svelte",
@ -406,7 +406,7 @@
"vite"
]
},
"@sveltejs/vite-plugin-svelte@6.2.1_svelte@5.39.9__acorn@8.15.0_vite@7.1.9__@types+node@24.6.2__picomatch@4.0.3_@types+node@24.6.2": {
"@sveltejs/vite-plugin-svelte@6.2.1_svelte@5.39.11__acorn@8.15.0_vite@7.1.9__@types+node@24.7.0__picomatch@4.0.3_@types+node@24.7.0": {
"integrity": "sha512-YZs/OSKOQAQCnJvM/P+F1URotNnYNeU3P2s4oIpzm1uFaqUEqRxUB0g5ejMjEb5Gjb9/PiBI5Ktrq4rUUF8UVQ==",
"dependencies": [
"@sveltejs/vite-plugin-svelte-inspector",
@ -430,8 +430,8 @@
"@types/estree@1.0.8": {
"integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w=="
},
"@types/node@24.6.2": {
"integrity": "sha512-d2L25Y4j+W3ZlNAeMKcy7yDsK425ibcAOO2t7aPTz6gNMH0z2GThtwENCDc0d/Pw9wgyRqE5Px1wkV7naz8ang==",
"@types/node@24.7.0": {
"integrity": "sha512-IbKooQVqUBrlzWTi79E8Fw78l8k1RNtlDDNWsFZs7XonuQSJ8oNYfEeclhprUldXISRMLzBpILuKgPlIxm+/Yw==",
"dependencies": [
"undici-types"
]
@ -914,7 +914,7 @@
"readdirp@4.1.2": {
"integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg=="
},
"rolldown-vite@7.1.14_@types+node@24.6.2_picomatch@4.0.3": {
"rolldown-vite@7.1.14_@types+node@24.7.0_picomatch@4.0.3": {
"integrity": "sha512-eSiiRJmovt8qDJkGyZuLnbxAOAdie6NCmmd0NkTC0RJI9duiSBTfr8X2mBYJOUFzxQa2USaHmL99J9uMxkjCyw==",
"dependencies": [
"@oxc-project/runtime",
@ -1086,8 +1086,8 @@
"statuses@2.0.2": {
"integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw=="
},
"svelte-check@4.3.2_svelte@5.39.9__acorn@8.15.0_typescript@5.9.3": {
"integrity": "sha512-71udP5w2kaSTcX8iV0hn3o2FWlabQHhJTJLIQrCqMsrcOeDUO2VhCQKKCA8AMVHSPwdxLEWkUWh9OKxns5PD9w==",
"svelte-check@4.3.3_svelte@5.39.11__acorn@8.15.0_typescript@5.9.3": {
"integrity": "sha512-RYP0bEwenDXzfv0P1sKAwjZSlaRyqBn0Fz1TVni58lqyEiqgwztTpmodJrGzP6ZT2aHl4MbTvWP6gbmQ3FOnBg==",
"dependencies": [
"@jridgewell/trace-mapping",
"chokidar",
@ -1099,8 +1099,8 @@
],
"bin": true
},
"svelte@5.39.9_acorn@8.15.0": {
"integrity": "sha512-sVOie0sbU9F/Lh0IoUfaq9hLzujRKxiL7xTMbG0y8ROx/qErtbfmm6sLSlJUbUMW4NcIgqHQPFiHX4LakA8fzA==",
"svelte@5.39.11_acorn@8.15.0": {
"integrity": "sha512-8MxWVm2+3YwrFbPaxOlT1bbMi6OTenrAgks6soZfiaS8Fptk4EVyRIFhJc3RpO264EeSNwgjWAdki0ufg4zkGw==",
"dependencies": [
"@jridgewell/remapping",
"@jridgewell/sourcemap-codec",
@ -1143,8 +1143,8 @@
"integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==",
"bin": true
},
"undici-types@7.13.0": {
"integrity": "sha512-Ov2Rr9Sx+fRgagJ5AX0qvItZG/JKKoBRAVITs1zk7IqZGTJUwgUr7qoYBpWwakpWilTZFM98rG/AFRocu10iIQ=="
"undici-types@7.14.0": {
"integrity": "sha512-QQiYxHuyZ9gQUIrmPo3IA+hUl4KYk8uSA7cHrcKd/l3p1OTpZcM0Tbp9x7FAtXdAYhlasd60ncPpgu6ihG6TOA=="
},
"unpipe@1.0.0": {
"integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ=="
@ -1152,7 +1152,7 @@
"vary@1.1.2": {
"integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg=="
},
"vite@7.1.9_@types+node@24.6.2_picomatch@4.0.3": {
"vite@7.1.9_@types+node@24.7.0_picomatch@4.0.3": {
"integrity": "sha512-4nVGliEpxmhCL8DslSAUdxlB6+SMrhB0a1v5ijlh1xB1nEPuy1mxaHxysVucLHuWryAxLWg6a5ei+U4TLn/rFg==",
"dependencies": [
"@types/node",
@ -1171,7 +1171,7 @@
],
"bin": true
},
"vitefu@1.1.1_vite@7.1.9__@types+node@24.6.2__picomatch@4.0.3_@types+node@24.6.2": {
"vitefu@1.1.1_vite@7.1.9__@types+node@24.7.0__picomatch@4.0.3_@types+node@24.7.0": {
"integrity": "sha512-B/Fegf3i8zh0yFbpzZ21amWzHmuNlLlmJT6n7bu5e+pCHUKQIfXSYokrqOBGEMMe9UG2sostKQF9mml/vYaWJQ==",
"dependencies": [
"vite"

View file

@ -1 +0,0 @@
todo