aboutsummaryrefslogtreecommitdiff
path: root/flake.nix
diff options
context:
space:
mode:
authorXe Iaso <me@xeiaso.net>2023-04-01 17:54:07 -0400
committerXe Iaso <me@xeiaso.net>2023-04-01 17:54:07 -0400
commit06070a820f5a92c2671242b044cec5f6b3dacff5 (patch)
tree257be786bee080c0eb76941df827680eec9912f0 /flake.nix
parentc78d291679a0b054e20ad35784dd5a8f9238f0a9 (diff)
downloadxesite-06070a820f5a92c2671242b044cec5f6b3dacff5.tar.xz
xesite-06070a820f5a92c2671242b044cec5f6b3dacff5.zip
build javascript files with esbuild
Signed-off-by: Xe Iaso <me@xeiaso.net>
Diffstat (limited to 'flake.nix')
-rw-r--r--flake.nix96
1 files changed, 53 insertions, 43 deletions
diff --git a/flake.nix b/flake.nix
index 3000fa9..0e51a2b 100644
--- a/flake.nix
+++ b/flake.nix
@@ -4,7 +4,7 @@
inputs = {
nixpkgs.url = "nixpkgs/nixos-unstable";
flake-utils.url = "github:numtide/flake-utils";
-
+
flake-compat = {
url = "github:edolstra/flake-compat";
flake = false;
@@ -93,50 +93,60 @@
'';
};
- frontend = let
- build = { entrypoint, name ? entrypoint, minify ? true }:
- pkgs.deno2nix.mkBundled {
- pname = "xesite-frontend-${name}";
- inherit (bin) version;
-
- src = ./src/frontend;
- lockfile = ./src/frontend/deno.lock;
-
- output = "${entrypoint}.js";
- outPath = "static/js";
- entrypoint = "./${entrypoint}.tsx";
- importMap = "./import_map.json";
- inherit minify;
- };
- share-button = build { entrypoint = "mastodon_share_button"; };
- wasiterm = build { entrypoint = "wasiterm"; };
- in pkgs.symlinkJoin {
- name = "xesite-frontend-${bin.version}";
- paths = [ share-button wasiterm ];
+ frontend = pkgs.stdenv.mkDerivation rec {
+ pname = "xesite-frontend";
+ inherit (bin) version;
+ dontUnpack = true;
+ src = ./src/frontend;
+ buildInputs = with pkgs; [ deno jq nodePackages.uglify-js ];
+ ESBUILD_BINARY_PATH = "${pkgs.esbuild}/bin/esbuild";
+
+ buildPhase = ''
+ export DENO_DIR="$(pwd)/.deno2nix"
+ mkdir -p $DENO_DIR
+ ln -s "${pkgs.deno2nix.internal.mkDepsLink ./src/frontend/deno.lock}" $(deno info --json | jq -r .modulesCache)
+
+ mkdir -p dist
+ export WRITE_TO=$(pwd)/dist
+
+ pushd $(pwd)
+ cd $src
+ deno run -A ./build.ts
+ popd
+ '';
+
+ installPhase = ''
+ mkdir -p $out/static/xeact
+ cp -vrf dist/* $out/static/xeact
+ '';
};
iosevka = pkgs.stdenvNoCC.mkDerivation {
name = "xesite-iosevka";
- buildInputs = with pkgs; [ python311Packages.brotli python311Packages.fonttools ];
+ buildInputs = with pkgs; [
+ python311Packages.brotli
+ python311Packages.fonttools
+ ];
dontUnpack = true;
- buildPhase =
- ''
- mkdir -p out
- ${pkgs.unzip}/bin/unzip ${self.inputs.iosevka.packages.${system}.default}/ttf.zip
- for ttf in ttf/*.ttf; do
- cp $ttf out
- name=`basename -s .ttf $ttf`
- pyftsubset \
- $ttf \
- --output-file=out/"$name".woff2 \
- --flavor=woff2 \
- --layout-features=* \
- --no-hinting \
- --desubroutinize \
- --unicodes="U+0000-00A0,U+00A2-00A9,U+00AC-00AE,U+00B0-00B7,U+00B9-00BA,U+00BC-00BE,U+00D7,U+00F7,U+2000-206F,U+2074,U+20AC,U+2122,U+2190-21BB,U+2212,U+2215,U+F8FF,U+FEFF,U+FFFD"
- done
-
- '';
+ buildPhase = ''
+ mkdir -p out
+ ${pkgs.unzip}/bin/unzip ${
+ self.inputs.iosevka.packages.${system}.default
+ }/ttf.zip
+ for ttf in ttf/*.ttf; do
+ cp $ttf out
+ name=`basename -s .ttf $ttf`
+ pyftsubset \
+ $ttf \
+ --output-file=out/"$name".woff2 \
+ --flavor=woff2 \
+ --layout-features=* \
+ --no-hinting \
+ --desubroutinize \
+ --unicodes="U+0000-00A0,U+00A2-00A9,U+00AC-00AE,U+00B0-00B7,U+00B9-00BA,U+00BC-00BE,U+00D7,U+00F7,U+2000-206F,U+2074,U+20AC,U+2122,U+2190-21BB,U+2212,U+2215,U+F8FF,U+FEFF,U+FFFD"
+ done
+
+ '';
installPhase = ''
mkdir -p $out/static/css/iosevka
cp out/* $out/static/css/iosevka
@@ -212,9 +222,8 @@
# frontend
deno
nodePackages.uglify-js
-
- # dependency manager
- niv
+ esbuild
+ zig
# tools
ispell
@@ -224,6 +233,7 @@
SITE_PREFIX = "devel.";
CLACK_SET = "Ashlynn,Terry Davis,Dennis Ritchie";
+ ESBUILD_BINARY_PATH = "${pkgs.esbuild}/bin/esbuild";
RUST_LOG = "debug";
RUST_BACKTRACE = "1";
GITHUB_SHA = "devel";