nidus-sync/default.nix

53 lines
1.5 KiB
Nix
Raw Normal View History

2026-03-04 03:41:41 +00:00
{ 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 = [];
2026-01-09 20:08:49 +00:00
version = "0.0.11";
# Needs to be updated after every modification of go.mod/go.sum
2026-03-18 19:59:42 +00:00
vendorHash = "sha256-zXjryPAJYpc80cqYtrcp//i6OQi5V5QwhaKQYYfrlL8=";
2026-03-04 03:41:41 +00:00
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"
'';
}