summaryrefslogtreecommitdiffhomepage
path: root/flake.nix
diff options
context:
space:
mode:
authorRalph Amissah <ralph.amissah@gmail.com>2023-01-24 12:38:39 -0500
committerRalph Amissah <ralph.amissah@gmail.com>2023-01-25 10:20:16 -0500
commit11a4034556f8611820025beee07672579b672389 (patch)
treef4ec1a3c2f940d7b3b30888f78c6fb9c6de0e933 /flake.nix
parent2023, year rollover, old habit (diff)
nix & build housekeeping, alternative D compilers
Diffstat (limited to 'flake.nix')
-rw-r--r--flake.nix150
1 files changed, 144 insertions, 6 deletions
diff --git a/flake.nix b/flake.nix
index 36050e1..b8a023e 100644
--- a/flake.nix
+++ b/flake.nix
@@ -4,8 +4,9 @@
inputs.flake-utils.url = "github:numtide/flake-utils";
outputs = { self, nixpkgs, flake-utils }:
let
+ pname = "spine_search";
version = "0.12.0";
- supportedSystems = [ "x86_64-linux" ]; # [ "x86_64-linux" "x86_64-darwin" "aarch64-linux" "aarch64-darwin" ];
+ supportedSystems = [ "x86_64-linux" ]; # [ "x86_64-linux" "x86_64-darwin" "aarch64-linux" "aarch64-darwin" ];
forAllSystems = nixpkgs.lib.genAttrs supportedSystems;
nixpkgsFor = forAllSystems (system: import nixpkgs { inherit system; }); # nixpkgs instantiated for supported system types.
in {
@@ -13,17 +14,16 @@
let pkgs = nixpkgsFor.${system};
in with pkgs; {
default = stdenv.mkDerivation {
- pname = "spine_search";
+ inherit pname;
inherit version;
executable = true;
src = self;
shell = ./default.nix;
devEnv = ./devenv.nix;
buildInputs = [ sqlite ];
- nativeBuildInputs = [ dub ldc ]; # [ dub dmd ]; [ dub ldc ]; [ dub gdc ];
+ nativeBuildInputs = [ dub dmd ldc gdc gnumake ]; # [ dub dmd ]; [ dub ldc ]; [ dub gdc ];
buildPhase = ''
runHook preBuild
- HOME="$PWD"
for DC_ in dmd ldmd2 ldc2 gdc gdmd; do
echo "- check for D compiler $DC_"
DC=$(type -P $DC_ || echo "")
@@ -36,7 +36,144 @@
'';
checkPhase = ''
runHook preCheck
- HOME="$PWD"
+ 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
+ runHook postInstall
+ '';
+ postInstall = ''
+ echo `ls -la $out/share/cgi-bin/spine_search`
+ echo "
+ nix build or nix develop? (suggestions):
+ - nix build
+ nix build .#default --print-build-logs
+ nix flake update; nix build .#default --print-build-logs
+ nix build --print-build-logs
+ - nix run
+ nix run .#default --print-build-logs
+ nix run default.nix --print-build-logs
+ - nix shell
+ nix shell .#default --print-build-logs --command spine -v
+ - nix develop
+ nix develop --profile .#default --print-build-logs --command spine -v
+ nix develop ; eval \"$buildPhase\"
+ nix develop --build -f derivation.nix -I .envrc --print-build-logs
+ - nix profile install . --print-build-logs
+ nix-instantiate | nix show-derivation | jq
+ "
+ '';
+ };
+ spine-search-dmd = stdenv.mkDerivation {
+ inherit pname;
+ inherit version;
+ meta.mainProgram = "spine_search-dmd";
+ executable = true;
+ src = self;
+ buildInputs = [ sqlite ];
+ nativeBuildInputs = [ dub dmd gnumake ];
+ buildPhase = ''
+ runHook preBuild
+ dub build --compiler=$(type -P dmd) --build=dmd --combined --skip-registry=all
+ runHook postBuild
+ '';
+ 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
+ runHook postInstall
+ '';
+ postInstall = ''
+ echo `ls -la $out/share/cgi-bin/spine_search`
+ echo "
+ nix build or nix develop? (suggestions):
+ - nix build
+ nix build .#default --print-build-logs
+ nix flake update; nix build .#default --print-build-logs
+ nix build --print-build-logs
+ - nix run
+ nix run .#default --print-build-logs
+ nix run default.nix --print-build-logs
+ - nix shell
+ nix shell .#default --print-build-logs --command spine -v
+ - nix develop
+ nix develop --profile .#default --print-build-logs --command spine -v
+ nix develop ; eval \"$buildPhase\"
+ nix develop --build -f derivation.nix -I .envrc --print-build-logs
+ - nix profile install . --print-build-logs
+ nix-instantiate | nix show-derivation | jq
+ "
+ '';
+ };
+ spine-search-ldc = stdenv.mkDerivation {
+ inherit pname;
+ inherit version;
+ meta.mainProgram = "spine_search-ldc";
+ executable = true;
+ src = self;
+ buildInputs = [ sqlite ];
+ nativeBuildInputs = [ dub ldc gnumake ];
+ buildPhase = ''
+ runHook preBuild
+ dub build --compiler=$(type -P ldc2) --build=ldc2 --combined --skip-registry=all
+ runHook postBuild
+ '';
+ 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
+ runHook postInstall
+ '';
+ postInstall = ''
+ echo `ls -la $out/share/cgi-bin/spine_search`
+ echo "
+ nix build or nix develop? (suggestions):
+ - nix build
+ nix build .#default --print-build-logs
+ nix flake update; nix build .#default --print-build-logs
+ nix build --print-build-logs
+ - nix run
+ nix run .#default --print-build-logs
+ nix run default.nix --print-build-logs
+ - nix shell
+ nix shell .#default --print-build-logs --command spine -v
+ - nix develop
+ nix develop --profile .#default --print-build-logs --command spine -v
+ nix develop ; eval \"$buildPhase\"
+ nix develop --build -f derivation.nix -I .envrc --print-build-logs
+ - nix profile install . --print-build-logs
+ nix-instantiate | nix show-derivation | jq
+ "
+ '';
+ };
+ spine-search-gdc = stdenv.mkDerivation {
+ inherit pname;
+ inherit version;
+ meta.mainProgram = "spine_search-gdc";
+ executable = true;
+ src = self;
+ buildInputs = [ sqlite ];
+ nativeBuildInputs = [ dub gdc gnumake ];
+ buildPhase = ''
+ runHook preBuild
+ dub build --compiler=$(type -P gdc) --build=gdc --combined --skip-registry=all
+ runHook postBuild
+ '';
+ checkPhase = ''
+ runHook preCheck
dub test --combined --skip-registry=all
runHook postCheck
'';
@@ -73,7 +210,8 @@
devShells = forAllSystems (system:
let pkgs = nixpkgsFor.${system};
in with pkgs; {
- devShell = mkShell { buildInputs = [ git dub dmd ldc gdc sqlite ]; };
+ devShell = mkShell { };
+ #devShell = mkShell { buildInputs = [ git dub dmd ldc gdc sqlite ]; };
});
};
}