diff --git a/pkgs/by-name/td/tdnf/package.nix b/pkgs/by-name/td/tdnf/package.nix new file mode 100644 index 000000000000..e6c339d1e1d2 --- /dev/null +++ b/pkgs/by-name/td/tdnf/package.nix @@ -0,0 +1,77 @@ +{ lib +, stdenv +, fetchFromGitHub +, cmake +, curl +, gpgme +, libsolv +, libxml2 +, pkg-config +, python3 +, rpm +, sqlite +}: + +stdenv.mkDerivation (finalAttrs: { + pname = "tdnf"; + version = "3.5.6"; + + src = fetchFromGitHub { + owner = "vmware"; + repo = "tdnf"; + rev = "v${finalAttrs.version}"; + hash = "sha256-gj0IW0EwWBXi2s7xFdghop8f1lMhkUJVAkns5nnl7sg="; + }; + + nativeBuildInputs = [ + cmake + pkg-config + python3 + ]; + + buildInputs = [ + curl.dev + gpgme.dev + libsolv + libxml2.dev + sqlite.dev + ]; + + propagatedBuildInputs = [ + rpm + ]; + + cmakeFlags = [ + "-DCMAKE_INSTALL_PREFIX=$out" + "-DCMAKE_INSTALL_FULL_SYSCONDIR=$out/etc" + "-DCMAKE_INSTALL_SYSCONFDIR=$out/etc" + "-DSYSTEMD_DIR=$out/lib/systemd/system" + ]; + + # error: format not a string literal and no format arguments [-Werror=format-security] + hardeningDisable = [ "format" ]; + + postPatch = '' + substituteInPlace CMakeLists.txt \ + --replace-fail 'SYSCONFDIR /etc' 'SYSCONFDIR $out/etc' \ + --replace-fail '/etc/motdgen.d' '$out/etc/motdgen.d' + substituteInPlace client/tdnf.pc.in \ + --replace-fail 'libdir=''${prefix}/@CMAKE_INSTALL_LIBDIR@' 'libdir=@CMAKE_INSTALL_FULL_LIBDIR@' + substituteInPlace tools/cli/lib/tdnf-cli-libs.pc.in \ + --replace-fail 'libdir=''${prefix}/@CMAKE_INSTALL_LIBDIR@' 'libdir=@CMAKE_INSTALL_FULL_LIBDIR@' + ''; + + # remove binaries used for testing from the final output + postInstall = "rm $out/bin/*test"; + + meta = { + description = "Tiny Dandified Yum"; + homepage = "https://github.com/vmware/tdnf"; + changelog = "https://github.com/vmware/tdnf/releases/tag/v${finalAttrs.version}"; + license = with lib.licenses; [ gpl2 lgpl21 ]; + maintainers = [ lib.maintainers.malt3 ]; + mainProgram = "tdnf"; + # rpm only supports linux + platforms = lib.platforms.linux; + }; +})