aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--flake.lock69
-rw-r--r--flake.nix40
-rwxr-xr-xsrc/frontend/build.sh7
-rw-r--r--src/frontend/deps.ts6
-rw-r--r--src/frontend/import_map.json4
-rw-r--r--src/frontend/lock.json11
6 files changed, 115 insertions, 22 deletions
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"
+ }
+}