From 6780874d2e397fe056d198ff50f6c5d28af7e59a Mon Sep 17 00:00:00 2001 From: Matthieu Coudron Date: Sun, 5 Sep 2021 01:08:22 +0200 Subject: [PATCH] nix flake: make it more idiomatic so that one can pass attributes directly to buildIdris instead of the convoluted. buildIdris (...).build.overrideAttrs(oldAttrs: {}) --- flake.nix | 4 +--- nix/buildIdris.nix | 22 ++++++++++++++++------ 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/flake.nix b/flake.nix index 2e34c9555..1a23056c7 100644 --- a/flake.nix +++ b/flake.nix @@ -35,9 +35,7 @@ inherit idris2-version chez; srcRev = self.shortRev or "dirty"; }; - buildIdris = { projectName, src, idrisLibraries }: - pkgs.callPackage ./nix/buildIdris.nix - { inherit src projectName idrisLibraries idris2-version; idris2 = idris2Pkg; }; + buildIdris = pkgs.callPackage ./nix/buildIdris.nix { inherit idris2-version; idris2 = idris2Pkg; }; in rec { checks = import ./nix/test.nix { inherit (pkgs) system stdenv runCommand lib; diff --git a/nix/buildIdris.nix b/nix/buildIdris.nix index a04b8b90e..105ec5641 100644 --- a/nix/buildIdris.nix +++ b/nix/buildIdris.nix @@ -1,34 +1,44 @@ { stdenv , lib -, projectName -, src -, idris2 , idris2-version -, idrisLibraries +, idris2 }: +{ +src +, projectName +, idrisLibraries +, ... +}@attrs: let ipkgName = projectName + ".ipkg"; idrName = "idris2-${idris2-version}"; libSuffix = "lib/${idrName}"; lib-dirs = lib.strings.concatMapStringsSep ":" (p: "${p}/${libSuffix}") idrisLibraries; + drvAttrs = builtins.removeAttrs attrs [ "idrisLibraries" ]; in rec { - build = stdenv.mkDerivation { + build = stdenv.mkDerivation (drvAttrs // { name = projectName; src = src; nativeBuildInputs = [ idris2 ]; configurePhase = '' + runHook preConfigure export IDRIS2_PACKAGE_PATH=${lib-dirs} + runHook postConfigure ''; buildPhase = '' + runHook preBuild idris2 --build ${ipkgName} + runHook postBuild ''; installPhase = '' + runHook preInstall mkdir -p $out/bin mv build/exec/* $out/bin + runHook postInstall ''; - }; + }); installLibrary = build.overrideAttrs (_: { buildPhase = ""; installPhase = ''