diff options
| author | Ralph Amissah <ralph.amissah@gmail.com> | 2026-04-10 21:30:13 -0400 |
|---|---|---|
| committer | Ralph Amissah <ralph.amissah@gmail.com> | 2026-04-10 21:30:13 -0400 |
| commit | 9dd16085ce740af9244e00839da364ecd4f722b8 (patch) | |
| tree | c1dcbdcccdb93f74a8d74a30d2749f82c6db41f5 /shell.nix | |
| parent | flake.nix dmd build fix overlay: revert to GCC14 (diff) | |
nix keeping: nix-shell, nix-build derivation.nix
Diffstat (limited to 'shell.nix')
| -rwxr-xr-x | shell.nix | 61 |
1 files changed, 54 insertions, 7 deletions
@@ -1,17 +1,64 @@ -{pkgs-nix ? import <nixpkgs> {}}: -with pkgs-nix; +#!/usr/bin/env -S nix-shell --pure +#!nix-shell -i bash +# Development environment for sisudoc-spine-search-cgi. +# Builds the spine_search CGI binary via ./package.nix. +# +# Build logic for the spine_search derivation lives in ./package.nix - +# this file only describes the dev shell. +# +# Usage: +# nix-shell # enters shell, builds spine_search +# nix-shell --run 'echo $SPINE_SEARCH_BIN' +{ + pkgs ? import <nixpkgs> {}, + spine-search ? pkgs.callPackage ./package.nix {}, + # captured at eval time - nix-shell rewrites $SHELL at runtime, + # so we must remember the user's real login shell here. + userShell ? builtins.getEnv "SHELL", +}: +with pkgs; mkShell { - buildInputs = [ - # nix workflow + name = "spine_search base dev shell"; + packages = [ + # ❯❯❯ spine_search CGI binary built from ./package.nix + spine-search + # ❯❯❯ d_build_related + ldc + #dmd + dub + # ❯❯❯ dev + gnumake + git + # ❯❯❯ nix workflow direnv nix-direnv nix-prefetch-git nix-output-monitor nix-tree jq - git - # project build - gnumake + # ❯❯❯ sqlite sqlite ]; + shellHook = '' + export Date=$(date "+%Y%m%d") + ## set local values in .envrc-local (or here if you must) + ## spine_search lives under cgi-bin, not bin - expose it via env + ## var and prepend cgi-bin to PATH for convenience. + export SPINE_SEARCH_BIN="${spine-search}/cgi-bin/spine_search" + export PATH="${spine-search}/cgi-bin:$PATH" + echo "spine_search: $SPINE_SEARCH_BIN" + ## hand off to the user's login shell (e.g. zsh) only when this + ## is an interactive nix-shell entry - not under `nix-shell --run` + ## or `--command`, where exec would swallow the command. Guard env + ## var prevents re-entry loops. + __spine_user_shell=${if userShell == "" then "" else "\"" + userShell + "\""} + if [ -z "$__SPINE_SEARCH_SHELL_HANDOFF" ] \ + && [ -n "$__spine_user_shell" ] \ + && [ "$(basename "$__spine_user_shell")" != "bash" ] \ + && [[ $- == *i* ]]; then + export __SPINE_SEARCH_SHELL_HANDOFF=1 + exec "$__spine_user_shell" + fi + unset __spine_user_shell + ''; } |
