Skip to content

Commit

Permalink
fix: don't override derivation
Browse files Browse the repository at this point in the history
  • Loading branch information
deemp committed Dec 13, 2023
1 parent 63d3006 commit d18e475
Show file tree
Hide file tree
Showing 2 changed files with 69 additions and 50 deletions.
41 changes: 26 additions & 15 deletions drv-tools/flake.nix
Original file line number Diff line number Diff line change
Expand Up @@ -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 ()
Expand Down
78 changes: 43 additions & 35 deletions language-tools/haskell/flake.nix
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down Expand Up @@ -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 =
Expand Down

0 comments on commit d18e475

Please sign in to comment.