aboutsummaryrefslogtreecommitdiffhomepage
path: root/flake.nix
diff options
context:
space:
mode:
authorRalph Amissah <ralph.amissah@gmail.com>2022-12-15 19:55:49 -0500
committerRalph Amissah <ralph.amissah@gmail.com>2022-12-31 11:50:22 -0500
commit3d78a7541b6bdeca09496c92387fc74f77b70962 (patch)
tree72ed59a14753385ce9ae08b783694bef96e22e35 /flake.nix
parentremoved old ruby utility scripts (diff)
nix and build housekeeping
Diffstat (limited to 'flake.nix')
-rw-r--r--flake.nix161
1 files changed, 84 insertions, 77 deletions
diff --git a/flake.nix b/flake.nix
index c188d21..e615ae9 100644
--- a/flake.nix
+++ b/flake.nix
@@ -1,81 +1,88 @@
{
- description = "a sisu like parser and document generator";
- inputs.flake-utils.url = "github:numtide/flake-utils";
- inputs.nixpkgs.url = "github:nixos/nixpkgs";
- #inputs.nixpkgs.url = "/nixpkgs-ra/nixpkgs";
- outputs = { self, nixpkgs, flake-utils }: {
- packages.x86_64-linux.spine =
- let
- pkgs = import nixpkgs {
- system = "x86_64-linux";
+ description = "a sisu like parser & document generator";
+ inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; # "github:nixos/nixpkgs"; "github:NixOS/nixpkgs/nixpkgs-unstable"; "nixpkgs/nixos-unstable"; "nixpkgs/nixos-21.11";
+ inputs.flake-utils.url = "github:numtide/flake-utils";
+ outputs = { self, nixpkgs, flake-utils }:
+ let
+ version = "0.12.0";
+ 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 {
+ packages = forAllSystems (system:
+ let pkgs = nixpkgsFor.${system};
+ in with pkgs; {
+ default = stdenv.mkDerivation {
+ pname = "spine";
+ inherit version;
+ meta.mainProgram = "spine";
+ executable = true;
+ src = self;
+ shell = ./default.nix;
+ devEnv = ./devenv.nix;
+ buildInputs = [ sqlite ];
+ nativeBuildInputs = [ dub dmd ]; # [ 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 "")
+ 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"
+ dub build --compiler=$DC --build=$DC_ --combined --skip-registry=all
+ runHook postBuild
+ '';
+ checkPhase = ''
+ runHook preCheck
+ HOME="$PWD"
+ dub test --combined --skip-registry=all
+ runHook postCheck
+ '';
+ installPhase = ''
+ runHook preInstall
+ mkdir -p $out/bin
+ install -m755 ./bin/spine $out/bin/spine
+ runHook postInstall
+ '';
+ postInstall = ''
+ echo `ls -la $out/bin/spine`
+ 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
+ spine -v
+ nix-instantiate | nix show-derivation | jq
+ "
+ $out/bin/spine -v
+ '';
+ };
+ #vendorSha256 = "sha256-0Q00000000000000000000000000000000000000000=";
+ });
+ apps = forAllSystems (system: {
+ default = {
+ type = "app";
+ program = "${self.packages.${system}.default}/bin/spine";
};
- #targetOf = package: "${package.targetPath or "."}/${package.targetName or package.name}";
- in pkgs.stdenv.mkDerivation {
- pname = "spine";
- version = "0.12.0";
- description = "a sisu like parser and document generator";
- inherit self;
- src = self;
- shell = ./shell.nix;
- buildPhase = ''
- runHook preBuild
- HOME="$PWD"
- DFLAGS="-O2 -inline"
- for DC_ in dmd ldmd2 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"
- dub build --compiler=$DC --build=release --combined --skip-registry=all
- runHook postBuild
- '';
- checkPhase = ''
- runHook preCheck
- HOME="$PWD"
- dub test --combined --skip-registry=all
- runHook postCheck
- '';
- installPhase = ''
- runHook preInstall
- mkdir -p $out/bin
- install -m755 ./bin/spine $out/bin/spine
- #cp -r bin/spine $out/bin/.
- runHook postInstall
- '';
- postInstall = ''
- echo `ls -la $out/bin/spine`
- echo ""
- echo "nix build or nix develop? (suggestions):"
- echo '- nix build'
- echo ' nix build .#spine --print-build-logs'
- echo ' nix build --print-build-logs'
- echo '- nix run'
- echo ' nix run .#spine --print-build-logs'
- echo ' nix run default.nix --print-build-logs'
- echo '- nix shell'
- echo ' nix shell --print-build-logs --command spine -v'
- echo '- nix develop'
- echo ' nix develop --build -f derivation.nix -I .envrc --print-build-logs'
- echo ' nix develop ; eval "$buildPhase"'
- echo 'spine -v'
- echo 'nix-instantiate | nix show-derivation | jq'
- echo `ls -la $out/bin/spine`
- echo "built:"
- $out/bin/spine -v
- '';
- nativeBuildInputs = with pkgs; [ ldc dub ];
- buildInputs = with pkgs; [ sqlite ];
- };
- packages.x86_64-linux.default = self.packages.x86_64-linux.spine;
+ });
+ devShells = forAllSystems (system:
+ let pkgs = nixpkgsFor.${system};
+ in with pkgs; {
+ devShell = mkShell { buildInputs = [ git dub dmd ldc gdc sqlite ]; };
+ });
};
}
-
-#nix flake update
-#nix flake check
-#nix flake show
-#nix develop
-#nix build .#default --print-build-logs