diff --git a/drv-tools/flake.nix b/drv-tools/flake.nix index e08b8e8a..6ba5e0ce 100644 --- a/drv-tools/flake.nix +++ b/drv-tools/flake.nix @@ -252,28 +252,39 @@ let longDescription = fLongDescription drv; man = '' - ${executableName}(1) -- ${drv.meta.description} + ${executableName}(1) -- ${drv.meta.description or "no description provided :("} ============ ${longDescription} ''; ronn = "${executableName}.1.ronn"; manPath = "$out/share/man/man1"; - drv_ = drv.overrideAttrs (prev: { - buildInputs = (prev.buildInputs or [ ]) ++ [ pkgs.ronn ]; - postInstall = (prev.postInstall or "") + '' - printf "Creating a man page.\n" - rm -rf ${manPath} 2> /dev/null - mkdir -p ${manPath} - chmod +w . - printf '%s' ${escapeShellArg man} > ${ronn} - ronn ${ronn} --roff -o ${manPath} - rm ${ronn} - ''; - }); in - withMeta drv_ (_: drv.meta // { inherit longDescription; }); - + pkgs.stdenv.mkDerivation { + pname = drv.pname or null; + name = drv.name or null; + version = drv.version or null; + + phases = [ "installPhase" ]; + buildInputs = [ pkgs.ronn ]; + installPhase = '' + runHook preInstall + + mkdir -p $out + cp -rs --no-preserve=mode,ownership ${drv}/* $out + + printf "Creating a man page.\n" + rm -rf ${manPath} 2> /dev/null + mkdir -p ${manPath} + chmod +w . + printf '%s' ${escapeShellArg man} > ${ronn} + ronn ${ronn} --roff -o ${manPath} + rm ${ronn} + + runHook postInstall + ''; + meta = drv.meta // { inherit longDescription; }; + }; withMan = drv: withMan_ (builtins.baseNameOf (getExe drv)) drv; # String -> String -> Any -> IO () diff --git a/language-tools/haskell/flake.nix b/language-tools/haskell/flake.nix index fc0da557..10a6a335 100644 --- a/language-tools/haskell/flake.nix +++ b/language-tools/haskell/flake.nix @@ -29,26 +29,31 @@ ] ++ runtimeDependencies; flags_ = concatMapStringsNewline (x: x + " \\") flags; in - withAttrs - ( - pkgs.runCommand name - { buildInputs = [ pkgs.makeBinaryWrapper ]; } - '' - mkdir $out - cp -rs --no-preserve=mode,ownership ${drv}/* $out - rm -rf $out/bin - mkdir $out/bin - - makeWrapper ${drv}/bin/${name} $out/bin/${name} \ - --add-flags "\ - ${flags_} - " ${addBinDeps runtimeDependencies_} - '' - ) - { - pname = name; - inherit (drv) meta; - }; + pkgs.stdenv.mkDerivation { + pname = drv.pname or null; + name = drv.name or null; + version = drv.version or null; + + phases = [ "installPhase" ]; + buildInputs = [ pkgs.makeBinaryWrapper ]; + installPhase = '' + runHook preInstall + + mkdir $out + cp -rs --no-preserve=mode,ownership ${drv}/* $out + rm -rf $out/bin + mkdir $out/bin + + makeWrapper ${drv}/bin/${name} $out/bin/${name} \ + --add-flags "\ + ${flags_} + " ${addBinDeps runtimeDependencies_} + + runHook postInstall + ''; + + meta = drv.meta // { mainProgram = name; }; + }; # get deps for a Haskell package getHaskellPackageDeps = drv: concatLists (attrValues drv.getCabalDeps); @@ -95,25 +100,28 @@ description ? "no description provided :(" }: let exe = pkgs.haskell.lib.justStaticExecutables package; in - withAttrs - (pkgs.runCommand binaryName - { buildInputs = [ pkgs.makeBinaryWrapper ]; } - '' - mkdir $out + pkgs.stdenv.mkDerivation { + pname = package.pname or null; + name = package.name or null; + version = package.version or null; + + phases = [ "installPhase" ]; + buildInputs = [ pkgs.makeBinaryWrapper ]; + installPhase = '' + runHook preInstall + + mkdir $out cp -rs --no-preserve=mode,ownership ${exe}/* $out/ rm -rf $out/bin mkdir $out/bin - makeWrapper ${exe}/bin/${executableName} \ - $out/bin/${binaryName} \ + makeWrapper ${exe}/bin/${executableName} $out/bin/${binaryName} \ ${addBinDeps runtimeDependencies} - '' - ) - { - pname = binaryName; - name = "${binaryName}-${package.version}"; - meta = { inherit description; }; - } - ; + + runHook postInstall + ''; + + meta = package.meta // { mainProgram = binaryName; inherit description; }; + }; # Tools for a specific `GHC` version and overriden haskell packages for this `GHC` toolsGHC =