nidus-sync/default.nix
Eli Ribble 31947c848a
Move static outside HTML. Start work on TypeScript bundle
It's not strictly HTML, so that's just correct.

This is just worth doing while building the new TypeScript bundle
2026-03-21 03:06:59 +00:00

52 lines
1.5 KiB
Nix

{ pkgs ? import <nixpkgs> { }, proj ? pkgs.proj }:
pkgs.buildGoModule rec {
meta = {
description = "Nidus Sync";
homepage = "https://github.com/Gleipnir-Technology/nidus-sync";
};
pname = "nidus-sync";
src = ./.;
subPackages = [];
version = "0.0.11";
# Needs to be updated after every modification of go.mod/go.sum
vendorHash = "sha256-zXjryPAJYpc80cqYtrcp//i6OQi5V5QwhaKQYYfrlL8=";
buildInputs = [ pkgs.proj ];
nativeBuildInputs = [
pkgs.pkg-config
pkgs.dart-sass
pkgs.esbuild
];
preBuild = ''
# Compile SCSS
SASS_SRC_DIR="./scss"
CSS_OUTPUT_DIR="./html/static/css/"
mkdir -p "$CSS_OUTPUT_DIR"
echo "Compiling $SASS_SRC_DIR/custom.scss to $CSS_OUTPUT_DIR/bootstrap.css..."
sass --style=compressed --trace "$SASS_SRC_DIR/custom.scss":"$CSS_OUTPUT_DIR/bootstrap.css"
# Bundle TypeScript
JS_OUTPUT_DIR="./html/static/gen/js/"
mkdir -p "$JS_OUTPUT_DIR"
echo "Bundling TypeScript..."
esbuild ts/main.ts --bundle --minify --outfile="$JS_OUTPUT_DIR/bundle.js"
# Generate hash and rename bundle
BUNDLE_HASH=$(sha256sum "$JS_OUTPUT_DIR/bundle.js" | cut -c1-12)
mv "$JS_OUTPUT_DIR/bundle.js" "$JS_OUTPUT_DIR/bundle.$BUNDLE_HASH.js"
# Generate gen.go with bundle path
cat > gen.go <<EOF
package main
// Generated by Nix build - do not edit manually
const JsBundlePath = "/static/js/bundel.$BUNDLE_HASH.js"
EOF
echo "Generated JS bundle with hash: $BUNDLE_HASH"
'';
}