82 lines
2.5 KiB
Nix
82 lines
2.5 KiB
Nix
{ pkgs ? import <nixpkgs> { }, proj ? pkgs.proj }:
|
|
|
|
let
|
|
# Fetch pnpm dependencies
|
|
pnpmDeps = pkgs.pnpm.fetchDeps {
|
|
pname = "nidus-sync-frontend";
|
|
version = "0.0.11";
|
|
src = ./.;
|
|
hash = "sha256-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="; # nix will tell you the correct hash
|
|
};
|
|
in
|
|
pkgs.buildGoModule rec {
|
|
meta = {
|
|
description = "Nidus Sync";
|
|
homepage = "https://github.com/Gleipnir-Technology/nidus-sync";
|
|
};
|
|
pname = "nidus-sync";
|
|
src = ./.;
|
|
subPackages = [];
|
|
version = "0.0.11";
|
|
vendorHash = "sha256-6g2gk7AyRmoqYfqwsTbzc5u5IKzlNFHjD3TeYXnf1zA=";
|
|
|
|
buildInputs = [ pkgs.proj ];
|
|
|
|
# Only inclue pkg-config here - it's needed for both phases
|
|
nativeBuildInputs = [
|
|
pkgs.pkg-config
|
|
pkgs.nodejs
|
|
pkgs.pnpm.configHook
|
|
];
|
|
|
|
# Override the go modules derivation to expclude pnpm stuff
|
|
overrideModAttrs = (_: {
|
|
preBuild = ""; # Don't run pnpm stuff during go modules fetch
|
|
});
|
|
|
|
pnpmDeps = pkgs.pnpm.fetchDeps {
|
|
inherit pname src version;
|
|
fetcherVersion = 2;
|
|
hash = "sha256-UvE49UmVw8zVFHywxRWyzL0EiZvuZjmm9hA1U98o2sA=";
|
|
};
|
|
|
|
preBuild = ''
|
|
# Add pnpm and nodejs to PATH for this phase only
|
|
pnpm install --offline --frozen-lockfile --ignore-scripts
|
|
|
|
# Icon generation
|
|
mkdir -p "./ts/gen"
|
|
pnpm generate-icons
|
|
|
|
# Remove static links
|
|
# Build frontend
|
|
pnpm build-rmo
|
|
pnpm build-sync
|
|
cp vite/rmo/index.html static/gen/rmo/index.html
|
|
cp vite/sync/index.html static/gen/sync/index.html
|
|
|
|
# Extract the hash from bundle.[hash].js
|
|
RMO_BUNDLE_FILE=$(ls vite/rmo/static/gen/js/bundle.*.js | grep -v '.map$' | head -n1)
|
|
RMO_BUNDLE_HASH=$(basename "$RMO_BUNDLE_FILE" | sed 's/bundle\.\(.*\)\.js/\1/')
|
|
SYNC_BUNDLE_FILE=$(ls vite/sync/static/gen/js/bundle.*.js | grep -v '.map$' | head -n1)
|
|
SYNC_BUNDLE_HASH=$(basename "$SYNC_BUNDLE_FILE" | sed 's/bundle\.\(.*\)\.js/\1/')
|
|
|
|
# Extract the hash from style.[hash].css
|
|
RMO_STYLE_FILE=$(ls vite/rmo/static/gen/css/style.*.css | head -n1)
|
|
RMO_STYLE_HASH=$(basename "$RMO_STYLE_FILE" | sed 's/style\.\(.*\)\.css/\1/')
|
|
SYNC_STYLE_FILE=$(ls vite/sync/static/gen/css/style.*.css | head -n1)
|
|
SYNC_STYLE_HASH=$(basename "$SYNC_STYLE_FILE" | sed 's/style\.\(.*\)\.css/\1/')
|
|
|
|
# Generate gen.go with bundle path
|
|
cat > static/gen.go <<EOF
|
|
package static
|
|
|
|
// Generated by Nix build - do not edit manually
|
|
const BundlePathRMOCSS = "/static/gen/css/style.$STYLE_HASH.css"
|
|
const BundlePathRMOJS = "/static/gen/js/bundle.$BUNDLE_HASH.js"
|
|
const BundlePathSyncCSS = "/static/gen/css/style.$STYLE_HASH.css"
|
|
const BundlePathSyncJS = "/static/gen/js/bundle.$BUNDLE_HASH.js"
|
|
EOF
|
|
echo "Generated static/gen.go"
|
|
'';
|
|
}
|