HexName-Frontend/flake.nix
Luka Dekanozishvili f16c483ee7 fix: typo
2026-01-28 22:32:27 +01:00

98 lines
2.2 KiB
Nix

{
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
flake-utils.url = "github:numtide/flake-utils";
gitignore = {
url = "github:hercules-ci/gitignore.nix";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs = { self, nixpkgs, flake-utils, gitignore, ... }:
flake-utils.lib.eachDefaultSystem (system:
let
pkgs = nixpkgs.legacyPackages.${system};
lib = pkgs.lib;
packageJSON = lib.importJSON ./package.json;
gitignoreSource = gitignore.lib.gitignoreSource;
pname = packageJSON.name;
version = packageJSON.version;
src = gitignoreSource ./.;
in
{
packages = rec {
hexname-frontend = pkgs.stdenv.mkDerivation {
inherit pname version src;
nativeBuildInputs = [
pkgs.deno
# pkgs.nodejs
];
# Deno wants a writable cache
DENO_DIR = "$TMPDIR/deno";
# Ensure reproducibility
DENO_NO_UPDATE_CHECK = "1";
DENO_NO_PROMPT = "1";
buildPhase = ''
runHook preBuild
export HOME=$TMPDIR
deno install --lock=deno.lock --frozen-lockfile --offline
deno task build
runHook postBuild
'';
installPhase = ''
runHook preInstall
mkdir -p $out
cp -r build $out/
cp -r .svelte-kit $out/ || true
cp package.json $out/
runHook postInstall
'';
# No runtime deps
dontFixup = true;
};
runtime = pkgs.writeShellApplication {
name = pname;
runtimeInputs = [
pkgs.nodejs
];
text = ''
export NODE_ENV=production
exec node ${hexname-frontend}/build/index.js
'';
};
# default = hexname-frontend;
default = runtime;
};
devShells.default = pkgs.mkShell {
buildInputs = [
pkgs.deno
# pkgs.nodejs
];
DENO_DIR = ".deno";
DENO_NO_UPDATE_CHECK = "1";
};
}
);
}