From e8d057aae475e4b2d1f078db0bf3d9f3b135f222 Mon Sep 17 00:00:00 2001 From: Xe Iaso Date: Fri, 9 Dec 2022 00:15:58 -0500 Subject: use deno2nix to build the frontend, prepare wasi executor shitpost Signed-off-by: Xe Iaso --- flake.lock | 69 +++++++++++++++++++++++++++++++++++++++++++- flake.nix | 40 +++++++++++++------------ src/frontend/build.sh | 7 ++++- src/frontend/deps.ts | 6 ++++ src/frontend/import_map.json | 4 +-- src/frontend/lock.json | 11 +++++++ 6 files changed, 115 insertions(+), 22 deletions(-) create mode 100644 src/frontend/deps.ts create mode 100644 src/frontend/lock.json diff --git a/flake.lock b/flake.lock index 7e0fc62..2413879 100644 --- a/flake.lock +++ b/flake.lock @@ -1,5 +1,55 @@ { "nodes": { + "deno2nix": { + "inputs": { + "devshell": "devshell", + "flake-compat": "flake-compat", + "flake-utils": [ + "flake-utils" + ], + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1670562741, + "narHash": "sha256-13PVEXOYrbsGn05bIp/WWhG6lREgfcQtRTQU9Jd4g8w=", + "owner": "Xe", + "repo": "deno2nix", + "rev": "db3563f20f74eab34e2c268e2a159325df315085", + "type": "github" + }, + "original": { + "owner": "Xe", + "repo": "deno2nix", + "type": "github" + } + }, + "devshell": { + "inputs": { + "flake-utils": [ + "deno2nix", + "flake-utils" + ], + "nixpkgs": [ + "deno2nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1667210711, + "narHash": "sha256-IoErjXZAkzYWHEpQqwu/DeRNJGFdR7X2OGbkhMqMrpw=", + "owner": "numtide", + "repo": "devshell", + "rev": "96a9dd12b8a447840cc246e17a47b81a4268bba7", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "devshell", + "type": "github" + } + }, "flake-compat": { "flake": false, "locked": { @@ -16,6 +66,22 @@ "type": "github" } }, + "flake-compat_2": { + "flake": false, + "locked": { + "lastModified": 1668681692, + "narHash": "sha256-Ht91NGdewz8IQLtWZ9LCeNXMSXHUss+9COoqu6JLmXU=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "009399224d5e398d03b22badca40a37ac85412a1", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, "flake-utils": { "locked": { "lastModified": 1667395993, @@ -68,7 +134,8 @@ }, "root": { "inputs": { - "flake-compat": "flake-compat", + "deno2nix": "deno2nix", + "flake-compat": "flake-compat_2", "flake-utils": "flake-utils", "naersk": "naersk", "nixpkgs": "nixpkgs" diff --git a/flake.nix b/flake.nix index 4bfd22a..533d245 100644 --- a/flake.nix +++ b/flake.nix @@ -12,12 +12,21 @@ url = "github:nix-community/naersk"; inputs.nixpkgs.follows = "nixpkgs"; }; + + deno2nix = { + url = "github:Xe/deno2nix"; + inputs.nixpkgs.follows = "nixpkgs"; + inputs.flake-utils.follows = "flake-utils"; + }; }; - outputs = { self, nixpkgs, flake-utils, naersk, ... }: + outputs = { self, nixpkgs, flake-utils, naersk, deno2nix, ... }: flake-utils.lib.eachSystem [ "x86_64-linux" "aarch64-linux" ] (system: let - pkgs = import nixpkgs { inherit system; }; + pkgs = import nixpkgs { + inherit system; + overlays = [ deno2nix.overlays.default ]; + }; naersk-lib = naersk.lib."${system}"; src = ./.; @@ -78,23 +87,18 @@ ''; }; - frontend = pkgs.stdenv.mkDerivation { - pname = "xesite-frontend"; - inherit (bin) version; - src = ./src/frontend; - buildInputs = with pkgs; [ deno nodePackages.uglify-js ]; - - phases = "installPhase"; - - installPhase = '' - mkdir -p $out/static/js - mkdir -p .deno - export HOME=./.deno + frontend.share-button = pkgs.deno2nix.mkBundled { + pname = "xesite-frontend-mastodon-share-button"; + inherit (bin) version; - deno bundle --config $src/deno.json $src/mastodon_share_button.tsx ./mastodon_share_button.js + src = ./src/frontend; + lockfile = ./src/frontend/lock.json; - uglifyjs ./mastodon_share_button.js -c -m > $out/static/js/mastodon_share_button.js - ''; + output = "mastodon_share_button.js"; + outPath = "static/js"; + entrypoint = "./mastodon_share_button.tsx"; + importMap = "./import_map.json"; + minify = true; }; static = pkgs.stdenv.mkDerivation { @@ -129,7 +133,7 @@ default = pkgs.symlinkJoin { name = "xesite-${bin.version}"; - paths = [ config posts static bin frontend resumePDF ]; + paths = [ config posts static bin frontend.share-button resumePDF ]; }; docker = pkgs.dockerTools.buildLayeredImage { diff --git a/src/frontend/build.sh b/src/frontend/build.sh index ad31763..0f5859a 100755 --- a/src/frontend/build.sh +++ b/src/frontend/build.sh @@ -1,6 +1,11 @@ #!/usr/bin/env bash +denobuild() { + deno cache --import-map=./import_map.json --lock lock.json --lock-write *.tsx deps.ts + deno bundle --import-map=./import_map.json --lock lock.json $1 $2 +} + set -e export RUST_LOG=info -deno bundle ./mastodon_share_button.tsx ../../static/js/mastodon_share_button.js +denobuild ./mastodon_share_button.tsx ../../static/js/mastodon_share_button.js diff --git a/src/frontend/deps.ts b/src/frontend/deps.ts new file mode 100644 index 0000000..db03865 --- /dev/null +++ b/src/frontend/deps.ts @@ -0,0 +1,6 @@ +import * as wasi from "https://deno.land/x/wasm@v1.2.2/wasi.ts"; +import * as xeact from "xeact"; + +await wasi.init(); + +export { wasi, xeact }; diff --git a/src/frontend/import_map.json b/src/frontend/import_map.json index 20cfc64..9e87d14 100644 --- a/src/frontend/import_map.json +++ b/src/frontend/import_map.json @@ -1,7 +1,7 @@ { "imports": { - "xeact": "./xeact/xeact.ts", - "xeact/jsx-runtime": "./xeact/jsx-runtime.js", + "xeact": "https://xena.greedo.xeserv.us/pkg/xeact/v0.69.71/xeact.ts", + "xeact/jsx-runtime": "https://xena.greedo.xeserv.us/pkg/xeact/v0.69.71/jsx-runtime.js", "/": "./", "./": "./" } diff --git a/src/frontend/lock.json b/src/frontend/lock.json new file mode 100644 index 0000000..01f35a5 --- /dev/null +++ b/src/frontend/lock.json @@ -0,0 +1,11 @@ +{ + "version": "2", + "remote": { + "https://deno.land/x/wasm@v1.2.2/pkg/wasmer_wasi_js.d.ts": "0e202696f693f922ed63e1f372dd7b4641ce587d357fcf32de3d09cb48785867", + "https://deno.land/x/wasm@v1.2.2/pkg/wasmer_wasi_js.js": "33c58765ded371211b754157955a7ab1d2de921a9c8fee8748112d25605726dd", + "https://deno.land/x/wasm@v1.2.2/wasi.ts": "4fde34f8fa8c52af06adcc241f1b18fabf2df0d8b1f1b62d05e70377688a8fcb", + "https://xena.greedo.xeserv.us/pkg/xeact/v0.69.71/jsx-runtime.js": "a8e0e04c44bbc80bb0a8c59e1d3ee338dd799e25e89792cadb67f00bf4f6ceca", + "https://xena.greedo.xeserv.us/pkg/xeact/v0.69.71/xeact.js": "4b943b147cddd20b514b0cf85c68438e585712e809d8da4283ee5f0b8ac1ab8d", + "https://xena.greedo.xeserv.us/pkg/xeact/v0.69.71/xeact.ts": "b6def4bebff19548539f4708cff028cd1fd7abdf6bfd7b3cd8dd5025b97d676e" + } +} -- cgit v1.2.3