{stdenv, m4, yasm, cmark, groff}:

stdenv.mkDerivation {
  name = "libk";
  version = "0.0.0";

  src = stdenv.lib.cleanSource ../.;

  # Need to figure out how split builds work... but that also kinda needs
  # an install script first, so.
  nativeBuildInputs = [ m4 yasm cmark groff ];

  # TODO: maybe make this more generic? IIRC I couldn't use the
  # patch-everything whatever, for some reason. It also probably should be in
  # an earlier build step.
  buildPhase = ''
    substituteInPlace global/build-id.sh --replace "/usr/bin/env bash" "${stdenv.shell}"
    substituteInPlace global/build-manpage.sh --replace "/usr/bin/env bash" "${stdenv.shell}"
    env os=lin arch=x86 bits=64 to=$prefix debug=yes \
    bash build.sh
  '';

  # No proper install yet...
  dontInstall = true;

  # Not sure if these work or are needed, but better safe than sorry, here.
  dontStrip = true;
  dontPatchELF = true;

  # I think there's supposed to be a stack check fail fn now, so maybe this
  # is okay? TODO: test if this is still needed.
  hardeningDisable = [ "stackprotector" ];

  meta = with stdenv.lib; {
    description = "A modern replacement for libc";
    homepage = https://c.hale.su/libk;
    changelog = "https://c.hale.su/libk/timeline";
    license = licenses.agpl3;
    # Doesn't actually match w/ supported platforms, but...
    platforms = platforms.unix;
  };
}
