Files
dotfiles/shells/next-web.nix
T
2026-03-04 18:24:10 +09:00

67 lines
1.9 KiB
Nix

{ pkgs }:
let
node = pkgs.nodejs_24;
in
pkgs.mkShell {
name = "next-web";
packages = with pkgs; [
node
nodePackages_latest.pnpm
nodePackages_latest.vercel
nodePackages_latest.prisma
zsh
openssl
pkg-config
jq
ngrok
];
NODE_ENV = "development";
shellHook = ''
# corepack store under repo (avoid polluting home)
export COREPACK_HOME="$PWD/.corepack"
# pnpm global bin dir (NixOS/zshでも確実に有効にする)
export PNPM_HOME="''${XDG_DATA_HOME:-$HOME/.local/share}/pnpm"
mkdir -p "$PNPM_HOME"
case ":$PATH:" in
*":$PNPM_HOME:"*) ;;
*) export PATH="$PNPM_HOME:$PATH" ;;
esac
# Prisma engines from nixpkgs (avoid binaries.prisma.sh fetch on NixOS)
export PKG_CONFIG_PATH="${pkgs.openssl.dev}/lib/pkgconfig"
export PRISMA_FMT_BINARY="${pkgs.prisma-engines}/bin/prisma-fmt"
# ---- show tool versions
if command -v node >/dev/null; then
echo "next-web shell -> node $(node -v)"
fi
if command -v pnpm >/dev/null; then
echo " pnpm $(pnpm --version)"
echo " PNPM_HOME=$PNPM_HOME"
fi
# Activate packageManager from package.json if present.
if command -v corepack >/dev/null 2>&1; then
if [ -f package.json ] && command -v jq >/dev/null 2>&1 && jq -e '.packageManager' package.json >/dev/null; then
COREPACK_ENABLE_DOWNLOADS=1 corepack prepare --activate || true
fi
fi
# ---- switch to zsh (interactive only). Don't break `nix develop -c ...`
if [ -z "''${ZSH_VERSION:-}" ] && [[ $- == *i* ]] && [ -t 1 ] && [ -z "''${NIX_SHELL_ZSH_ACTIVATED:-}" ]; then
export NIX_SHELL_ZSH_ACTIVATED=1
exec ${pkgs.zsh}/bin/zsh -i
fi
'';
env = {
PRISMA_QUERY_ENGINE_LIBRARY = "${pkgs.prisma-engines}/lib/libquery_engine.node";
PRISMA_QUERY_ENGINE_BINARY = "${pkgs.prisma-engines}/bin/query-engine";
PRISMA_SCHEMA_ENGINE_BINARY = "${pkgs.prisma-engines}/bin/schema-engine";
};
}