diff --git a/maintainers/maintainer-list.nix b/maintainers/maintainer-list.nix index e2d13c3b6b2..884dfbf2c19 100644 --- a/maintainers/maintainer-list.nix +++ b/maintainers/maintainer-list.nix @@ -822,6 +822,16 @@ githubId = 1771266; name = "Vo Anh Duy"; }; + Anillc = { + name = "Anillc"; + email = "i@anillc.cn"; + github = "Anillc"; + githubId = 23411248; + keys = [{ + longkeyid = "ed25519/0x0BE8A88F47B2145C"; + fingerprint = "6141 1E4F FE10 CE7B 2E14 CD76 0BE8 A88F 47B2 145C"; + }]; + }; anirrudh = { email = "anik597@gmail.com"; github = "anirrudh"; diff --git a/pkgs/applications/graphics/rnote/default.nix b/pkgs/applications/graphics/rnote/default.nix index a496c4221a3..f1d809388a2 100644 --- a/pkgs/applications/graphics/rnote/default.nix +++ b/pkgs/applications/graphics/rnote/default.nix @@ -22,20 +22,20 @@ stdenv.mkDerivation rec { pname = "rnote"; - version = "0.5.0-hotfix-2"; + version = "0.5.1-hotfix-1"; src = fetchFromGitHub { owner = "flxzt"; repo = "rnote"; rev = "v${version}"; fetchSubmodules = true; - hash = "sha256-8sv7GQopUbKv8JS1/UXRFeK++UZKk3CJBOzUMx9vZDU="; + hash = "sha256-Oq/RKeKICyImSPr4GSNjPXZWtuRQ7+9nRfl9MmC+UYI="; }; cargoDeps = rustPlatform.fetchCargoTarball { inherit src; name = "${pname}-${version}"; - hash = "sha256-N0qsph68FAkwOpyr9QUw0bDQKn7t22Hbz9BYYOs4pCM="; + hash = "sha256-gdVy+7xSQVkI84Ta6KLOLR9UUsDoD2Cd0cuNU+OXf2M="; }; nativeBuildInputs = [ diff --git a/pkgs/applications/networking/browsers/firefox/wrapper.nix b/pkgs/applications/networking/browsers/firefox/wrapper.nix index d5055f04ed8..235794dd421 100644 --- a/pkgs/applications/networking/browsers/firefox/wrapper.nix +++ b/pkgs/applications/networking/browsers/firefox/wrapper.nix @@ -1,5 +1,5 @@ { stdenv, lib, makeDesktopItem, makeWrapper, lndir, config -, replace, fetchurl, zip, unzip, jq, xdg-utils, writeText +, fetchurl, zip, unzip, jq, xdg-utils, writeText ## various stuff that can be plugged in , ffmpeg, xorg, alsa-lib, libpulseaudio, libcanberra-gtk3, libglvnd, libnotify, opensc @@ -176,7 +176,7 @@ let startupWMClass = wmClass; }; - nativeBuildInputs = [ makeWrapper lndir replace jq ]; + nativeBuildInputs = [ makeWrapper lndir jq ]; buildInputs = [ browser.gtk3 ]; @@ -206,48 +206,50 @@ let done # fix links and absolute references - cd "${browser}" find . -type l -print0 | while read -d $'\0' l; do - target="$(readlink "$l" | replace-literal -es -- "${browser}" "$out")" + target="$(readlink "$l")" + target=''${target/#"${browser}"/"$out"} ln -sfT "$target" "$out/$l" done - # This will not patch binaries, only "text" files. - # Its there for the wrapper mostly. - cd "$out" - replace-literal -esfR -- "${browser}" "$out" - # create the wrapper executablePrefix="$out/bin" executablePath="$executablePrefix/${applicationName}" + oldWrapperArgs=() - if [ ! -x "$executablePath" ] - then - echo "cannot find executable file \`${browser}/bin/${applicationName}'" - exit 1 - fi - - if [ ! -L "$executablePath" ] - then - # Careful here, the file at executablePath may already be - # a wrapper. That is why we postfix it with -old instead - # of -wrapped. - oldExe="$executablePrefix"/".${applicationName}"-old - mv "$executablePath" "$oldExe" - else + if [[ -L $executablePath ]]; then + # Symbolic link: wrap the link's target. oldExe="$(readlink -v --canonicalize-existing "$executablePath")" - fi - - if [ ! -x "${browser}/bin/${applicationName}" ] - then - echo "cannot find executable file \`${browser}/bin/${applicationName}'" - exit 1 + rm "$executablePath" + elif wrapperCmd=$(strings -dw "$executablePath" | sed -n '/^makeCWrapper/,/^$/ p'); [[ $wrapperCmd ]]; then + # If the executable is a binary wrapper, we need to update its target to + # point to $out, but we can't just edit the binary in-place because of length + # issues. So we extract the command used to create the wrapper and add the + # arguments to our wrapper. + parseMakeCWrapperCall() { + shift # makeCWrapper + oldExe=$1; shift + for arg do case $arg in + --inherit-argv0) oldWrapperArgs+=(--argv0 '$0');; # makeWrapper doesn't understand --inherit-argv0 + *) oldWrapperArgs+=("$arg");; + esac done + } + eval "parseMakeCWrapperCall ''${wrapperCmd//"${browser}"/"$out"}" + rm "$executablePath" + else + if read -rn2 shebang < "$executablePath" && [[ $shebang == '#!' ]]; then + # Shell wrapper: patch in place to point to $out. + sed -i "s@${browser}@$out@g" "$executablePath" + fi + # Suffix the executable with -old, because -wrapped might already be used by the old wrapper. + oldExe="$executablePrefix/.${applicationName}"-old + mv "$executablePath" "$oldExe" fi makeWrapper "$oldExe" \ - "$out/bin/${applicationName}${nameSuffix}" \ + "''${executablePath}${nameSuffix}" \ --prefix LD_LIBRARY_PATH ':' "$libs" \ --suffix-each GTK_PATH ':' "$gtk_modules" \ --prefix PATH ':' "${xdg-utils}/bin" \ @@ -258,9 +260,8 @@ let --set MOZ_ALLOW_DOWNGRADE 1 \ --prefix XDG_DATA_DIRS : "$GSETTINGS_SCHEMAS_PATH" \ --suffix XDG_DATA_DIRS : '${gnome.adwaita-icon-theme}/share' \ - ${lib.optionalString forceWayland '' - --set MOZ_ENABLE_WAYLAND "1" \ - ''} + ${lib.optionalString forceWayland "--set MOZ_ENABLE_WAYLAND 1"} \ + "''${oldWrapperArgs[@]}" ############################# # # # END EXTRA PREF CHANGES # diff --git a/pkgs/data/misc/cldr-annotations/default.nix b/pkgs/data/misc/cldr-annotations/default.nix index 14c8d36f28b..cdc7a978e6b 100644 --- a/pkgs/data/misc/cldr-annotations/default.nix +++ b/pkgs/data/misc/cldr-annotations/default.nix @@ -1,18 +1,18 @@ { lib, fetchzip }: let - version = "40.0"; + version = "41.0"; in fetchzip rec { name = "cldr-annotations-${version}"; - url = "https://unicode.org/Public/cldr/40/cldr-common-${version}.zip"; + url = "https://unicode.org/Public/cldr/${lib.versions.major version}/cldr-common-${version}.zip"; postFetch = '' mkdir -p $out/share/unicode/cldr unzip -d $out/share/unicode/cldr $downloadedFile 'common/annotations/*' 'common/annotationsDerived/*' ''; - sha256 = "sha256-L4NSMNFYKJWV3qKQhio9eMABtDlLieT9VeMZfzeAkbM="; + sha256 = "sha256-3dHVZGx3FmR97fzhlTSx/xp6YTAV+sMExl6gpLzl1MY="; meta = with lib; { description = "Names and keywords for Unicode characters from the Common Locale Data Repository"; diff --git a/pkgs/development/libraries/libyang/default.nix b/pkgs/development/libraries/libyang/default.nix index cedc24909bc..8cc4ad06e35 100644 --- a/pkgs/development/libraries/libyang/default.nix +++ b/pkgs/development/libraries/libyang/default.nix @@ -15,13 +15,13 @@ stdenv.mkDerivation rec { pname = "libyang"; - version = "2.0.164"; + version = "2.0.194"; src = fetchFromGitHub { owner = "CESNET"; repo = "libyang"; rev = "v${version}"; - sha256 = "sha256-0Ou0j9KaNkX/SFmid+wphvtu3wDTXkw+8xdck6lEE3w="; + sha256 = "sha256-5dgSBXJIeGXT+jGqT2MFqtsEFcIn+ULjybnyXz+95Gk="; }; nativeBuildInputs = [ diff --git a/pkgs/development/python-modules/peaqevcore/default.nix b/pkgs/development/python-modules/peaqevcore/default.nix index c24886d7101..4b11263017d 100644 --- a/pkgs/development/python-modules/peaqevcore/default.nix +++ b/pkgs/development/python-modules/peaqevcore/default.nix @@ -6,14 +6,14 @@ buildPythonPackage rec { pname = "peaqevcore"; - version = "0.0.22"; + version = "0.0.23"; format = "setuptools"; disabled = pythonOlder "3.7"; src = fetchPypi { inherit pname version; - hash = "sha256-ye8evqkOy08wHYohVOpXB2pfPN/vsK9GnPnL/nbVZU0="; + hash = "sha256-z59TJ+P7WNMcTyevi4etWUFUnBJXAVhDOnO4GXjjuR0="; }; postPatch = '' diff --git a/pkgs/development/python-modules/py3exiv2/default.nix b/pkgs/development/python-modules/py3exiv2/default.nix index ef056d296b2..60a8ee7f17f 100644 --- a/pkgs/development/python-modules/py3exiv2/default.nix +++ b/pkgs/development/python-modules/py3exiv2/default.nix @@ -1,24 +1,46 @@ -{ lib, buildPythonPackage, isPy3k, fetchPypi, stdenv, exiv2, boost, libcxx }: +{ lib +, stdenv +, boost +, buildPythonPackage +, exiv2 +, fetchPypi +, libcxx +, pythonOlder +}: buildPythonPackage rec { pname = "py3exiv2"; - version = "0.9.3"; - disabled = !(isPy3k); + version = "0.11.0"; + format = "setuptools"; + + disabled = pythonOlder "3.7"; src = fetchPypi { inherit pname version; - sha256 = "838836e58ca22557d83d1f0ef918bcce899b4c2666340b924b940dcdebf1d18c"; + hash = "sha256-ZgDaa4lxmdTaZhkblgRfPMxfVwENp2s6xdKSuD/MqEQ="; }; - buildInputs = [ exiv2 boost ]; + buildInputs = [ + boost + exiv2 + ]; + + # Work around Python distutils compiling C++ with $CC (see issue #26709) + NIX_CFLAGS_COMPILE = lib.optionalString stdenv.isDarwin [ + "-I${lib.getDev libcxx}/include/c++/v1" + ]; + + pythonImportsCheck = [ + "pyexiv2" + ]; - # work around python distutils compiling C++ with $CC (see issue #26709) - NIX_CFLAGS_COMPILE = lib.optionalString stdenv.isDarwin "-I${lib.getDev libcxx}/include/c++/v1"; + # Tests are not shipped + doCheck = false; meta = with lib; { + description = "Python binding to the library exiv2"; homepage = "https://launchpad.net/py3exiv2"; - description = "A Python3 binding to the library exiv2"; - license = licenses.gpl3; + license = licenses.gpl3Plus; maintainers = with maintainers; [ vinymeuh ]; platforms = with platforms; linux ++ darwin; }; diff --git a/pkgs/development/python-modules/txaio/default.nix b/pkgs/development/python-modules/txaio/default.nix index 23c24f3e514..0aaffe34c2d 100644 --- a/pkgs/development/python-modules/txaio/default.nix +++ b/pkgs/development/python-modules/txaio/default.nix @@ -21,7 +21,6 @@ buildPythonPackage rec { }; propagatedBuildInputs = [ - six twisted zope_interface ]; diff --git a/pkgs/development/python-modules/zope_event/default.nix b/pkgs/development/python-modules/zope_event/default.nix index 2ebf6e017b5..118a3a2c44a 100644 --- a/pkgs/development/python-modules/zope_event/default.nix +++ b/pkgs/development/python-modules/zope_event/default.nix @@ -14,7 +14,7 @@ buildPythonPackage rec { meta = with lib; { description = "An event publishing system"; - homepage = "https://pypi.python.org/pypi/zope.event"; + homepage = "https://pypi.org/project/zope.event/"; license = licenses.zpl20; maintainers = with maintainers; [ goibhniu ]; }; diff --git a/pkgs/development/tools/compile-daemon/default.nix b/pkgs/development/tools/compile-daemon/default.nix index 79f5a447888..959beea1fbc 100644 --- a/pkgs/development/tools/compile-daemon/default.nix +++ b/pkgs/development/tools/compile-daemon/default.nix @@ -1,26 +1,25 @@ -{ lib, buildGoPackage, fetchFromGitHub }: +{ lib, buildGoModule, fetchFromGitHub }: -buildGoPackage rec { - pname = "compile-daemon-unstable"; - version = "2017-03-08"; - rev = "d447e567232bcb84cedd3b2be012c7127f31f469"; - - goPackagePath = "github.com/githubnemo/CompileDaemon"; +buildGoModule rec { + pname = "compile-daemon"; + version = "1.4.0"; src = fetchFromGitHub { owner = "githubnemo"; repo = "CompileDaemon"; - inherit rev; - sha256 = "0jfbipp3gd89n6d7gds1qvfkqvz80qdlqqhijxffh8z8ss0xinqc"; + rev = "v${version}"; + sha256 = "sha256-gpyXy7FO7ZVXJrkzcKHFez4S/dGiijXfZ9eSJtNlm58="; }; - goDeps = ./deps.nix; + vendorSha256 = "sha256-UDPOeg8jQbDB+Fr4x6ehK7UyQa8ySZy6yNxS1xotkgA="; + + ldflags = [ "-s" "-w" ]; meta = with lib; { description = "Very simple compile daemon for Go"; + homepage = "https://github.com/githubnemo/CompileDaemon"; license = licenses.bsd2; maintainers = with maintainers; [ ]; mainProgram = "CompileDaemon"; - inherit (src.meta) homepage; }; } diff --git a/pkgs/development/tools/compile-daemon/deps.nix b/pkgs/development/tools/compile-daemon/deps.nix deleted file mode 100644 index 53771ddad9f..00000000000 --- a/pkgs/development/tools/compile-daemon/deps.nix +++ /dev/null @@ -1,48 +0,0 @@ -# This file was generated by https://github.com/kamilchm/go2nix v1.2.0-devel -[ - { - goPackagePath = "github.com/fatih/color"; - fetch = { - type = "git"; - url = "https://github.com/fatih/color"; - rev = "9131ab34cf20d2f6d83fdc67168a5430d1c7dc23"; - sha256 = "111x6rhpxfjhwkjrmrirqqh6nc68q5g7air9fl5kgr3bg85hybr5"; - }; - } - { - goPackagePath = "github.com/mattn/go-colorable"; - fetch = { - type = "git"; - url = "https://github.com/mattn/go-colorable"; - rev = "a392f450ea64cee2b268dfaacdc2502b50a22b18"; - sha256 = "1msiq5nb1sdhwfjv65hjnvr2s4pfsp8mv6f5z8aa8n9bjf0cksyc"; - }; - } - { - goPackagePath = "github.com/mattn/go-isatty"; - fetch = { - type = "git"; - url = "https://github.com/mattn/go-isatty"; - rev = "57fdcb988a5c543893cc61bce354a6e24ab70022"; - sha256 = "1fkhmi3nhz6vasfvjzjjwxkbpwsb9hzc0g5h1rygqrnzjykl2r39"; - }; - } - { - goPackagePath = "golang.org/x/sys"; - fetch = { - type = "git"; - url = "https://go.googlesource.com/sys"; - rev = "99f16d856c9836c42d24e7ab64ea72916925fa97"; - sha256 = "0g2x5krfhnraq03v0b48y3xv3ffg92pbgvps0npj9l7wq8q9hkmx"; - }; - } - { - goPackagePath = "gopkg.in/fsnotify.v1"; - fetch = { - type = "git"; - url = "https://gopkg.in/fsnotify.v1"; - rev = "629574ca2a5df945712d3079857300b5e4da0236"; - sha256 = "06wfg1mmzjj04z7d0q1x2fai9k6hm957brngsaf02fa9a3qqanv3"; - }; - } -] diff --git a/pkgs/development/tools/go-junit-report/default.nix b/pkgs/development/tools/go-junit-report/default.nix index 110cdbfabc9..af6b72c65fd 100644 --- a/pkgs/development/tools/go-junit-report/default.nix +++ b/pkgs/development/tools/go-junit-report/default.nix @@ -1,23 +1,24 @@ -{ lib, buildGoPackage, fetchFromGitHub }: +{ lib, buildGoModule, fetchFromGitHub }: -buildGoPackage rec { - pname = "go-junit-report-unstable"; - version = "2018-06-14"; - rev = "385fac0ced9acaae6dc5b39144194008ded00697"; - - goPackagePath = "github.com/jstemmer/go-junit-report"; +buildGoModule rec { + pname = "go-junit-report"; + version = "1.0.0"; src = fetchFromGitHub { - inherit rev; owner = "jstemmer"; repo = "go-junit-report"; - sha256 = "109zs8wpdmc2ijc2khyqija8imay88ka6v50xvrpnnwnd3ywckxi"; + rev = "v${version}"; + sha256 = "sha256-/ER99EmYrERBjcJeYeV3GBq6lDjACM0loICg41hUuPQ="; }; + vendorSha256 = "sha256-pQpattmS9VmO3ZIQUFn66az8GSmB4IvYhTTCFn6SUmo="; + + ldflags = [ "-s" "-w" ]; + meta = with lib; { - description = "Converts go test output to an xml report, suitable for applications that expect junit xml reports (e.g. Jenkins)"; - homepage = "https://${goPackagePath}"; + description = "Convert go test output to junit xml"; + homepage = "https://github.com/jstemmer/go-junit-report"; + license = licenses.mit; maintainers = with maintainers; [ cryptix ]; - license = licenses.mit; }; } diff --git a/pkgs/development/tools/rgp/default.nix b/pkgs/development/tools/rgp/default.nix index 2ac48148c78..30c6dee23bf 100644 --- a/pkgs/development/tools/rgp/default.nix +++ b/pkgs/development/tools/rgp/default.nix @@ -19,15 +19,15 @@ }: let - buildNum = "2022-01-18-884"; + buildNum = "2022-04-20-920"; in stdenv.mkDerivation rec { pname = "rgp"; - version = "1.12"; + version = "1.13"; src = fetchurl { url = "https://gpuopen.com/download/radeon-developer-tool-suite/RadeonDeveloperToolSuite-${buildNum}.tgz"; - sha256 = "88ot16N8XtRlDCP+zIaOqG5BuR0OyG/0u1NEXsun/nY="; + hash = "sha256-/Z7mSZVAvaTAY9RU7suK/gA0RJIeeLdN6LWiseVq9Js="; }; nativeBuildInputs = [ makeWrapper autoPatchelfHook ]; diff --git a/pkgs/servers/telegram-bot-api/default.nix b/pkgs/servers/telegram-bot-api/default.nix new file mode 100644 index 00000000000..3d52ccc96f8 --- /dev/null +++ b/pkgs/servers/telegram-bot-api/default.nix @@ -0,0 +1,25 @@ +{ lib, stdenv, fetchFromGitHub, cmake, gperf, openssl, zlib }: + +stdenv.mkDerivation { + pname = "telegram-bot-api"; + version = "5.7"; + + src = fetchFromGitHub { + repo = "telegram-bot-api"; + owner = "tdlib"; + rev = "c57b04c4c8c4e8d8bb6fdd0bd3bfb5b93b9d8f05"; + sha256 = "sha256-WetzX8GBdwQAnnZjek+W4v+QN1aUFdlvs+Jv6n1B+eY="; + fetchSubmodules = true; + }; + + nativeBuildInputs = [ cmake gperf ]; + buildInputs = [ openssl zlib ]; + + meta = with lib; { + description = "Telegram Bot API server"; + homepage = "https://github.com/tdlib/telegram-bot-api"; + license = licenses.boost; + maintainers = with maintainers; [ Anillc ]; + platforms = platforms.all; + }; +} diff --git a/pkgs/tools/misc/kak-lsp/default.nix b/pkgs/tools/misc/kak-lsp/default.nix index d2b79c4d011..d4b4012cde0 100644 --- a/pkgs/tools/misc/kak-lsp/default.nix +++ b/pkgs/tools/misc/kak-lsp/default.nix @@ -2,16 +2,16 @@ rustPlatform.buildRustPackage rec { pname = "kak-lsp"; - version = "12.1.0"; + version = "12.2.0"; src = fetchFromGitHub { owner = pname; repo = pname; rev = "v${version}"; - sha256 = "sha256-5sPw95lSbswIUbNIZ4mpA3WeZt7u+a5s4KxkTnN14Sw="; + sha256 = "sha256-Il3eF9bVrAaJkTDPB1DzEjROnJxIAnnk27qdT9qsp1k"; }; - cargoSha256 = "sha256-rPsiMeoc8cWUgmqAxdDGrAQdurIH3bzNq5tpocnnegA="; + cargoSha256 = "sha256-wRjPjCKsvqnJkybNVAdVMgBA9RaviFyCJPv3D5hipSs"; buildInputs = lib.optionals stdenv.isDarwin [ Security SystemConfiguration ]; diff --git a/pkgs/tools/virtualization/ovftool/default.nix b/pkgs/tools/virtualization/ovftool/default.nix new file mode 100644 index 00000000000..c4b4acdbb48 --- /dev/null +++ b/pkgs/tools/virtualization/ovftool/default.nix @@ -0,0 +1,186 @@ +{ lib, stdenv, system ? builtins.currentSystem, ovftoolBundles ? {} +, requireFile, buildFHSUserEnv, autoPatchelfHook, makeWrapper, unzip +, glibc, c-ares, libressl, curl, expat, icu60, xercesc, zlib +}: + +let + version = "4.4.1-16812187"; + + # FHS environment required to unpack ovftool on x86. + ovftoolX86Unpacker = buildFHSUserEnv rec { + name = "ovftool-unpacker"; + targetPkgs = pkgs: [ pkgs.bash ]; + multiPkgs = targetPkgs; + runScript = "bash"; + }; + + # unpackPhase for i686 and x86_64 ovftool self-extracting bundles. + ovftoolX86UnpackPhase = '' + runHook preUnpack + # This is a self-extracting shell script and needs a FHS environment to run. + # In reality, it could be doing anything, which is bad for reproducibility. + # Our postUnpack uses nix-hash to verify the hash to prevent problems. + # + # Note that the Arch PKGBUILD at + # https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=vmware-ovftool + # appears to use xvfb-run - this hasn't been proven necessary so far. + # + cp ${ovftoolSource} ./ovftool.bundle + chmod +x ./ovftool.bundle + ${ovftoolX86Unpacker}/bin/ovftool-unpacker ./ovftool.bundle -x ovftool + rm ovftool.bundle + extracted=ovftool/vmware-ovftool/ + if [ -d "$extracted" ]; then + # Move the directory we care about to ovftool/ + mv "$extracted" . + rm -r ovftool + mv "$(basename -- "$extracted")" ovftool + echo "ovftool extracted successfully" >&2 + else + echo "Could not find $extracted - are you sure this is ovftool?" >&2 + rm -r ovftool + exit 1 + fi + runHook postUnpack + ''; + + # unpackPhase for aarch64 .zip. + ovftoolAarch64UnpackPhase = '' + runHook preUnpack + unzip ${ovftoolSource} + extracted=ovftool/ + if [ -d "$extracted" ]; then + echo "ovftool extracted successfully" >&2 + else + echo "Could not find $extracted - are you sure this is ovftool?" >&2 + exit 1 + fi + runHook postUnpack + ''; + + # When the version is bumped, postUnpackHash will change + # for all these supported systems. Update it from the printed error on build. + # + # This is just a sanity check, since ovftool is a self-extracting bundle + # that could be doing absolutely anything on 2/3 of the supported platforms. + ovftoolSystems = { + "i686-linux" = { + filename = "VMware-ovftool-${version}-lin.i386.bundle"; + sha256 = "0gx78g3s77mmpir7jbiskna10i6262ihal1ywivlb6xxxxbhqzwj"; + unpackPhase = ovftoolX86UnpackPhase; + postUnpackHash = "1k8rp8ywhs0cl9aad37v1p0493bdvkxrsvwg5pgv2bhvjs4hqk7n"; + }; + "x86_64-linux" = { + filename = "VMware-ovftool-${version}-lin.x86_64.bundle"; + sha256 = "1kp2bp4d9i8y7q25yqff2bn62mh292lws7b66lyn8ka9b35kvnzc"; + unpackPhase = ovftoolX86UnpackPhase; + postUnpackHash = "0zvyakwi4iishqxxisihgh91bmdsfvj5vchm2c192hia03a143py"; + }; + "aarch64-linux" = { + filename = "VMware-ovftool-${version}-lin.aarch64.zip"; + sha256 = "0all8bwv5p5adnzqvrly6nzmxmfpywvlbfr0finr4n100yv0v1xy"; + unpackPhase = ovftoolAarch64UnpackPhase; + postUnpackHash = "16vyyzrmryi8b7mrd6nxnhywvvj2pw0ban4qfiqfahw763fn6971"; + }; + }; + + ovftoolSystem = if builtins.hasAttr system ovftoolSystems then + ovftoolSystems.${system} + else throw "System '${system}' is unsupported by ovftool"; + + ovftoolSource = if builtins.hasAttr system ovftoolBundles then + ovftoolBundles.${system} + else + requireFile { + name = ovftoolSystem.filename; + url = "https://my.vmware.com/group/vmware/downloads/get-download?downloadGroup=OVFTOOL441"; + sha256 = ovftoolSystem.sha256; + }; +in +stdenv.mkDerivation rec { + pname = "ovftool"; + inherit version; + + src = ovftoolSource; + + buildInputs = [ + glibc + libressl + c-ares + (curl.override { openssl = libressl; }) + expat + icu60 + xercesc + zlib + ]; + + nativeBuildInputs = [ autoPatchelfHook makeWrapper unzip ]; + + sourceRoot = "."; + + unpackPhase = ovftoolSystem.unpackPhase; + + postUnpackHash = ovftoolSystem.postUnpackHash; + + # Expects a directory named 'ovftool' containing the ovftool install. + # Based on https://aur.archlinux.org/packages/vmware-ovftool/ + # with the addition of a libexec directory and a Nix-style binary wrapper. + installPhase = '' + runHook preInstall + if [ -d ovftool ]; then + # Ensure we're in the staging directory + cd ovftool + fi + # libraries + install -m 755 -d "$out/lib/${pname}" + # These all appear to be VMWare proprietary except for libgoogleurl. + # The rest of the libraries that the installer extracts are omitted here, + # and provided in buildInputs. + # + # FIXME: can we replace libgoogleurl? Possibly from Chromium? + # + install -m 644 -t "$out/lib/${pname}" \ + libgoogleurl.so.59 \ + libssoclient.so \ + libvim-types.so libvmacore.so libvmomi.so + # ovftool specifically wants 1.0.2 but our libcrypto is named 1.0.0 + ln -s "${lib.getLib libressl}/lib/libcrypto.so" \ + "$out/lib/${pname}/libcrypto.so.1.0.2" + ln -s "${lib.getLib libressl}/lib/libssl.so" \ + "$out/lib/${pname}/libssl.so.1.0.2" + # libexec + install -m 755 -d "$out/libexec/${pname}" + install -m 755 -t "$out/libexec/${pname}" ovftool.bin + install -m 644 -t "$out/libexec/${pname}" icudt44l.dat + # libexec resources + for subdir in "certs" "env" "env/en" "schemas/DMTF" "schemas/vmware"; do + install -m 755 -d "$out/libexec/${pname}/$subdir" + install -m 644 -t "$out/libexec/${pname}/$subdir" "$subdir"/*.* + done + # EULA/OSS files + install -m 755 -d "$out/share/licenses/${pname}" + install -m 644 -t "$out/share/licenses/${pname}" \ + "vmware.eula" "vmware-eula.rtf" "open_source_licenses.txt" + # documentation files + install -m 755 -d "$out/share/doc/${pname}" + install -m 644 -t "$out/share/doc/${pname}" "README.txt" + # binary wrapper; note that LC_CTYPE is defaulted to en_US.UTF-8 by + # VMWare's wrapper script. We use C.UTF-8 instead. + install -m 755 -d "$out/bin" + makeWrapper "$out/libexec/${pname}/ovftool.bin" "$out/bin/ovftool" \ + --set-default LC_CTYPE C.UTF-8 \ + --prefix LD_LIBRARY_PATH : "$out/lib" + runHook postInstall + ''; + + preFixup = '' + addAutoPatchelfSearchPath "$out/lib" + ''; + + meta = with lib; { + description = "VMWare tools for working with OVF, OVA, and VMX images"; + license = licenses.unfree; + maintainers = with maintainers; [ numinit wolfangaukang ]; + platforms = builtins.attrNames ovftoolSystems; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index f2e4d8a8933..f514a3501be 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -9101,6 +9101,8 @@ with pkgs; otpw = callPackage ../os-specific/linux/otpw { }; + ovftool = callPackage ../tools/virtualization/ovftool { }; + overcommit = callPackage ../development/tools/overcommit { }; overmind = callPackage ../applications/misc/overmind { }; @@ -29871,6 +29873,8 @@ with pkgs; abseil-cpp = abseil-cpp_202111; }; + telegram-bot-api = callPackage ../servers/telegram-bot-api { }; + tektoncd-cli = callPackage ../applications/networking/cluster/tektoncd-cli { }; telegram-cli = callPackage ../applications/networking/instant-messengers/telegram/telegram-cli { };