diff options
Diffstat (limited to 'flake.nix')
| -rw-r--r-- | flake.nix | 161 | 
1 files changed, 84 insertions, 77 deletions
@@ -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  | 
