summaryrefslogtreecommitdiffhomepage
path: root/org/config_nix.org
diff options
context:
space:
mode:
authorRalph Amissah <ralph.amissah@gmail.com>2026-04-09 10:46:52 -0400
committerRalph Amissah <ralph.amissah@gmail.com>2026-04-09 10:47:30 -0400
commitf806fb0da0f3810c7f941e64fc592c01137212bd (patch)
tree2ec450cffe9e503876652d150936718fbe35d2f1 /org/config_nix.org
parentpackage housekeeping, minor (diff)
flake.nix dmd build fix overlay: revert to GCC14
- revert to using GCC14: (current) GCC 15 introduced nullptr in its headers, and DMD's ImportC parser needs update to handle it, monitor and update - spine_search build to result/cgi-bin/spine_search instead of result/share/cgi-bin/spine_search - (nix ldc overlay, minor comsetic)
Diffstat (limited to 'org/config_nix.org')
-rw-r--r--org/config_nix.org299
1 files changed, 107 insertions, 192 deletions
diff --git a/org/config_nix.org b/org/config_nix.org
index 142964e..2044cfa 100644
--- a/org/config_nix.org
+++ b/org/config_nix.org
@@ -24,35 +24,28 @@
{
description = "a sisu like document parser search form";
inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
- #inputs.flake-utils.url = "github:numtide/flake-utils";
inputs.spine-d-overlay = {
url = "<<sisudoc_dlang_nix_overlay_src>>";
inputs.nixpkgs.follows = "nixpkgs";
- flake = true;
};
outputs = {
self,
nixpkgs,
- #flake-utils,
spine-d-overlay,
...
}@inputs: let
pname = "spine_search";
version = "<<spine_version>>";
- shell = ./shell.nix;
- devEnv = ./nixDevEnv.sh;
+ #shell = ./shell.nix;
+ #devEnv = ./nixDevEnv.sh;
supportedSystems = ["x86_64-linux"];
forAllSystems = nixpkgs.lib.genAttrs supportedSystems;
nixpkgsFor = forAllSystems (system: import nixpkgs {inherit system;}); # nixpkgs instantiated for supported system types
- checkPhase = ''
- runHook preCheck
- dub test --combined --skip-registry=all
- runHook postCheck
- '';
localOverlay = (final: prev: {
- ldc = prev.callPackage ./nix-overlays/ldc { };
- dmd = prev.callPackage ./nix-overlays/dmd { };
- dub = prev.callPackage ./nix-overlays/dub { };
+ ldc = prev.callPackage ./nix-overlays/ldc { }; # -> ok <<ldc_version>>
+ # dmd overlay: revert to GCC14; (current) GCC 15 introduced nullptr in its headers, and DMD's ImportC parser needs update to handle it, monitor and update:
+ dmd = prev.callPackage ./nix-overlays/dmd { stdenv = prev.gcc14Stdenv; }; # -> ok <<dmd_version>>
+ dub = prev.callPackage ./nix-overlays/dub { }; # -> ? <<dub_version>>
#gdc = prev.callPackage ./nix-overlays/gdc { };
});
pkgsForSystem = system: import nixpkgs {
@@ -64,165 +57,79 @@
preBuild = ''
export HOME=$(pwd)
'';
+ checkPhase = ''
+ runHook preCheck
+ dub test --combined --skip-registry=all
+ runHook postCheck
+ '';
installPhase = ''
runHook preInstall
- mkdir -p $out/share/cgi-bin
- install -m755 -D ./cgi-bin/spine_search $out/share/cgi-bin/spine_search
+ mkdir -p $out/cgi-bin
+ install -m755 -D ./cgi-bin/spine_search $out/cgi-bin/spine_search
runHook postInstall
'';
postInstall = ''
- echo `ls -la $out/share/cgi-bin/spine_search`
+ echo `ls -la $out/cgi-bin/spine_search`
'';
+ # Helper to reduce duplication across build variants
+ mkSpineSearch = {pkgs, compiler, compilerCmd, dubConfig}: pkgs.stdenv.mkDerivation {
+ inherit pname version;
+ meta.mainProgram = "spine_search";
+ src = self;
+ buildInputs = [pkgs.sqlite];
+ nativeBuildInputs = [pkgs.dub compiler pkgs.gnumake];
+ buildPhase = ''
+ runHook preBuild
+ buildCMD="dub run --cache=local --compiler=$(type -P ${compilerCmd}) --build=${dubConfig} --combined --skip-registry=all"
+ echo $buildCMD
+ $buildCMD
+ echo $buildCMD
+ runHook postBuild
+ '';
+ inherit preBuild;
+ inherit checkPhase;
+ inherit installPhase;
+ inherit postInstall;
+ };
in {
packages = forAllSystems (system: let
pkgs-ovl = pkgsForSystem system;
pkgs-nix = nixpkgsFor.${system};
- in
- with pkgs-nix; {
- default = stdenv.mkDerivation {
- inherit pname;
- inherit version;
- meta.mainProgram = "spine-search";
- executable = true;
- src = self;
- inherit shell;
- inherit devEnv;
- buildInputs = [sqlite];
- nativeBuildInputs = [dub ldc gnumake];
- buildPhase = ''
- runHook preBuild
- for DC_ in dmd ldmd2 ldc2 gdc gdmd; do
- echo "- check for D compiler $DC_"
- DC=$(type -P $DC_ || echo "")
- if [ ! "$DC" == "" ]; then break; fi
- done
- if [ "$DC" == "" ]; then exit "Error: could not find D compiler"; fi
- echo "$DC_ used as D compiler to build $pname"
- buildCMD="dub run --cache=local --compiler=$DC --build=$DC_ --combined --skip-registry=all"
- echo $buildCMD
- $buildCMD
- echo $buildCMD
- runHook postBuild
- '';
- inherit preBuild;
- inherit checkPhase;
- inherit installPhase;
- inherit postInstall;
- };
- spine-search-nixpkgs-dmd = stdenv.mkDerivation {
- inherit pname;
- inherit version;
- meta.mainProgram = "spine_search-dmd";
- executable = true;
- src = self;
- inherit shell;
- inherit devEnv;
- buildInputs = with pkgs-nix; [sqlite];
- nativeBuildInputs = with pkgs-nix; [dub dmd gnumake];
- buildPhase = ''
- runHook preBuild
- buildCMD="dub run --cache=local --compiler=$(type -P dmd) --build=dmd --combined --skip-registry=all"
- echo $buildCMD
- $buildCMD
- echo $buildCMD
- runHook postBuild
- '';
- inherit preBuild;
- inherit checkPhase;
- inherit installPhase;
- inherit postInstall;
- };
- spine-search-nixpkgs-ldc = stdenv.mkDerivation {
- inherit pname;
- inherit version;
- meta.mainProgram = "spine_search-ldc";
- executable = true;
- src = self;
- inherit shell;
- inherit devEnv;
- buildInputs = with pkgs-nix; [sqlite];
- nativeBuildInputs = with pkgs-nix; [dub ldc gnumake];
- buildPhase = ''
- runHook preBuild
- buildCMD="dub run --cache=local --compiler=$(type -P ldmd2) --build=ldmd2 --combined --skip-registry=all"
- echo $buildCMD
- $buildCMD
- echo $buildCMD
- runHook postBuild
- '';
- inherit preBuild;
- inherit checkPhase;
- inherit installPhase;
- inherit postInstall;
- };
- spine-search-overlay-dmd = stdenv.mkDerivation {
- inherit pname;
- inherit version;
- meta.mainProgram = "spine_search-dmd";
- executable = true;
- src = self;
- inherit shell;
- inherit devEnv;
- buildInputs = with pkgs-ovl; [sqlite];
- nativeBuildInputs = with pkgs-ovl; [dub dmd gnumake];
- buildPhase = ''
- runHook preBuild
- buildCMD="dub run --cache=local --compiler=$(type -P dmd) --build=dmd --combined --skip-registry=all"
- echo $buildCMD
- $buildCMD
- echo $buildCMD
- runHook postBuild
- '';
- inherit preBuild;
- inherit checkPhase;
- inherit installPhase;
- inherit postInstall;
- };
- spine-search-overlay-ldc = stdenv.mkDerivation {
- inherit pname;
- inherit version;
- meta.mainProgram = "spine_search-ldc";
- executable = true;
- src = self;
- inherit shell;
- inherit devEnv;
- buildInputs = with pkgs-ovl; [sqlite];
- nativeBuildInputs = with pkgs-ovl; [dub ldc gnumake];
- buildPhase = ''
- runHook preBuild
- buildCMD="dub run --cache=local --compiler=$(type -P ldmd2) --build=ldmd2 --combined --skip-registry=all"
- echo $buildCMD
- $buildCMD
- echo $buildCMD
- runHook postBuild
- '';
- inherit preBuild;
- inherit checkPhase;
- inherit installPhase;
- inherit postInstall;
- };
- #spine-search-overlay-gdc = stdenv.mkDerivation {
- # inherit pname;
- # inherit version;
- # meta.mainProgram = "spine_search-gdc";
- # executable = true;
- # src = self;
- # inherit shell;
- # inherit devEnv;
- # buildInputs = with pkgs-ovl; [ sqlite ];
- # nativeBuildInputs = with pkgs-ovl; [ dub gdc gnumake ];
- # buildPhase = ''
- # runHook preBuild
- # dub run --cache=local --compiler=$(type -P gdc) --build=gdc --combined --skip-registry=all
- # runHook postBuild
- # '';
- # inherit preBuild;
- # inherit checkPhase;
- # inherit installPhase;
- # inherit postInstall;
- #};
- #vendorSha256 = "sha256-0Q00000000000000000000000000000000000000000=";
- });
+ in {
+ default = self.packages.${system}.spine-search-nixpkgs-ldc;
+ spine-search-nixpkgs-dmd = mkSpineSearch {
+ pkgs = pkgs-nix;
+ # nixpkgs dmd: revert to GCC14 (same nullptr/ImportC fix as overlay dmd)
+ compiler = pkgs-nix.dmd.override { stdenv = pkgs-nix.gcc14Stdenv; };
+ #compiler = pkgs-nix.dmd;
+ compilerCmd = "dmd";
+ dubConfig = "dmd";
+ };
+ spine-search-nixpkgs-ldc = mkSpineSearch {
+ pkgs = pkgs-nix;
+ compiler = pkgs-nix.ldc;
+ compilerCmd = "ldmd2";
+ dubConfig = "ldmd2";
+ };
+ spine-search-overlay-dmd = mkSpineSearch {
+ pkgs = pkgs-ovl;
+ compiler = pkgs-ovl.dmd;
+ compilerCmd = "dmd";
+ dubConfig = "dmd";
+ };
+ spine-search-overlay-ldc = mkSpineSearch {
+ pkgs = pkgs-ovl;
+ compiler = pkgs-ovl.ldc;
+ compilerCmd = "ldmd2";
+ dubConfig = "ldmd2";
+ };
+ #spine-search-overlay-gdc = mkSpineSearch {
+ # pkgs = pkgs-ovl;
+ # compiler = pkgs-ovl.gdc;
+ # compilerCmd = "gdc";
+ # dubConfig = "gdc";
+ #};
+ });
devShells = forAllSystems (system: let
pkgs-ovl = pkgsForSystem system;
pkgs-nix = nixpkgsFor.${system};
@@ -234,9 +141,7 @@
with pkgs-nix; {
dsh-d-overlay = spine-d-overlay.devShells.${system}.default;
dsh-overlay = mkShell {
- name = "spine-<<spine_version>> base dev shell, ldc-<<ldc_version>>, dub-<<dub_version>>";
- inherit shell;
- inherit devEnv;
+ name = "${pname}-${version} dev shell (overlay)";
packages = with pkgs-ovl; [
ldc
#dmd
@@ -246,10 +151,8 @@
];
inherit shellHook;
};
- dsh-nixpkgs-dmd-dub = mkShell {
- name = "spine-<<spine_version>> base dev shell";
- inherit shell;
- inherit devEnv;
+ dsh-nixpkgs-dmd = mkShell {
+ name = "${pname}-${version} dev shell (nixpkgs dmd)";
packages = [
dmd
dub
@@ -258,10 +161,8 @@
];
inherit shellHook;
};
- dsh-nixpkgs-ldc-dub = mkShell {
- name = "spine-<<spine_version>> base dev shell";
- inherit shell;
- inherit devEnv;
+ dsh-nixpkgs-ldc = mkShell {
+ name = "${pname}-${version} dev shell (nixpkgs ldc)";
packages = [
ldc
dub
@@ -270,10 +171,9 @@
];
inherit shellHook;
};
- dsh-overlay-dmd-dub = mkShell {
- name = "spine-<<spine_version>> base dev shell, dmd-<<dmd_version>>, dub-<<dub_version>>";
- inherit shell;
- inherit devEnv;
+ dsh-overlay-dmd = mkShell {
+ name = "${pname}-${version} dev shell (overlay dmd)";
+ # "spine-<<spine_version>> base dev shell, dmd-<<dmd_version>>, dub-<<dub_version>>";
packages = with pkgs-ovl; [
dmd
dub
@@ -282,10 +182,9 @@
];
inherit shellHook;
};
- dsh-overlay-ldc-dub = mkShell {
- name = "spine-<<spine_version>> base dev shell, ldc-<<ldc_version>>, dub-<<dub_version>>";
- inherit shell;
- inherit devEnv;
+ dsh-overlay-ldc = mkShell {
+ name = "${pname}-${version} dev shell (overlay ldc)";
+ # "spine-<<spine_version>> base dev shell, ldc-<<ldc_version>>, dub-<<dub_version>>";
packages = with pkgs-ovl; [
ldc
dub
@@ -295,9 +194,7 @@
inherit shellHook;
};
dsh-sqlite = mkShell {
- name = "spine dev shell for latex & pdf output";
- inherit shell;
- inherit devEnv;
+ name = "${pname}-${version} dev shell (sqlite)";
packages = [
ldc
#dmd
@@ -316,14 +213,32 @@
** shell.nix :shell:
#+HEADER: :tangle ../shell.nix
-#+HEADER: :tangle-mode (identity #o755)
-#+HEADER: :shebang "#!/usr/bin/env -S nix-shell --pure\n#!nix-shell -i bash"
#+HEADER: :noweb yes
#+BEGIN_SRC nix
{pkgs-nix ? import <nixpkgs> {}}:
with pkgs-nix;
mkShell {
buildInputs = [
+ # nix workflow
+ direnv
+ nix-direnv
+ nix-prefetch-git
+ nix-output-monitor
+ nix-tree
+ jq
+ git
+ # project build
+ gnumake
+ sqlite
+ ];
+ }
+#+END_SRC
+
+#+BEGIN_SRC nix
+{pkgs-nix ? import <nixpkgs> {}}:
+with pkgs-nix;
+ mkShell {
+ buildInputs = [
# ❯❯❯ nix_related
#nix
direnv
@@ -486,7 +401,7 @@ with (
src = lib.cleanSource src;
};
preFixup = ''
- find $out/share/cgi-bin -type f -exec ${removeExpr (disallowedReferences deps)} '{}' + || true
+ find $out/cgi-bin -type f -exec ${removeExpr (disallowedReferences deps)} '{}' + || true
'';
buildPhase = ''
runHook preBuild
@@ -514,14 +429,14 @@ with (
'';
installPhase = ''
runHook preInstall
- mkdir -p $out/share/cgi-bin
- cp -r "${targetOf package}" $out/share/cgi-bin
- install -m755 -D $out/share/cgi-bin/spine_search spine_search
+ mkdir -p $out/cgi-bin
+ cp -r "${targetOf package}" $out/cgi-bin
+ install -m755 -D $out/cgi-bin/spine_search spine_search
runHook postInstall
'';
postInstall = ''
- echo "HERE ${targetOf package} $out/share/cgi-bin"
- echo `ls -la $out/share/cgi-bin/spine_search`
+ echo "HERE ${targetOf package} $out/cgi-bin"
+ echo `ls -la $out/cgi-bin/spine_search`
'';
meta =
lib.optionalAttrs (package ? description) {