Commit 48a99192 authored by Anderson Torres's avatar Anderson Torres
Browse files

ventoy-bin: 1.0.76 -> 1.0.77

Also, create a ventoy-bin-full (with all filesystems but no gui).
parent a19f2c68
Loading
Loading
Loading
Loading
+97 −45
Original line number Diff line number Diff line
{ lib, stdenv, fetchurl, fetchpatch
, autoPatchelfHook, makeWrapper
, bash, coreutils, dosfstools, exfat, gawk, gnugrep, gnused, hexdump, parted
, procps, util-linux, which, xz
, withCryptsetup ? false, cryptsetup
, withXfs ? false, xfsprogs
, withExt4 ? false, e2fsprogs
, withNtfs ? false, ntfs3g
, withGtk3 ? false, gtk3
, withQt5 ? false, qt5
{ lib
, stdenv
, fetchurl
, fetchpatch
, autoPatchelfHook
, bash
, coreutils
, cryptsetup
, dosfstools
, e2fsprogs
, exfat
, gawk
, gnugrep
, gnused
, gtk3
, hexdump
, makeWrapper
, ntfs3g
, parted
, procps
, qt5
, util-linux
, which
, xfsprogs
, xz
, defaultGuiType ? ""
, withCryptsetup ? false
, withXfs ? false
, withExt4 ? false
, withNtfs ? false
, withGtk3 ? false
, withQt5 ? false
}:

assert lib.elem defaultGuiType [ "" "gtk3" "qt5" ];
@@ -21,37 +42,30 @@ let
    i686-linux = "i386";
    aarch64-linux = "aarch64";
    mipsel-linux = "mips64el";
  }.${stdenv.hostPlatform.system} or (throw "Unsupported platform ${stdenv.hostPlatform.system}");
  }.${stdenv.hostPlatform.system}
    or (throw "Unsupported platform ${stdenv.hostPlatform.system}");

in stdenv.mkDerivation rec {
  pname = "ventoy-bin";
  version = "1.0.76";

  nativeBuildInputs = [ autoPatchelfHook makeWrapper ]
    ++ lib.optional withQt5 qt5.wrapQtAppsHook;
  buildInputs = [
    bash coreutils dosfstools exfat gawk gnugrep gnused hexdump parted procps
    util-linux which xz
  ] ++ lib.optional withCryptsetup cryptsetup
    ++ lib.optional withXfs xfsprogs
    ++ lib.optional withExt4 e2fsprogs
    ++ lib.optional withNtfs ntfs3g
    ++ lib.optional withGtk3 gtk3
    ++ lib.optional withQt5 qt5.qtbase;
  version = "1.0.77";

  src = fetchurl {
    url = "https://github.com/ventoy/Ventoy/releases/download/v${version}/ventoy-${version}-linux.tar.gz";
    sha256 = "f13c3c81eafe15ae4b3de3d98d240d94eabba7cda8e3330ff1769502ecfa33c0";
    hash = "sha256-DmDWt06gjrAEZ9Qvb7qbKbfJr/u84qmQ44kfDA3HDp0=";
  };

  patches = [
    (fetchpatch {
      name = "sanitize.patch";
      url = "https://aur.archlinux.org/cgit/aur.git/plain/sanitize.patch?h=057f2d1eb496c7a3aaa8229e99a7f709428fa4c5";
      sha256 = "sha256-iAtLtM+Q4OsXDK83eCnPNomeNSEqdRLFfK2x7ybPSpk=";
    })
    ./fix-for-read-only-file-system.patch
    ./add-mips64.patch
    ./001-add-mips64.diff
    ./002-fix-for-read-only-file-system.diff
  ];

  patchFlags = [ "-p0" ];

  postPatch = ''
    # Fix permissions.
    find -type f -name \*.sh -exec chmod a+x '{}' \;
@@ -60,7 +74,38 @@ in stdenv.mkDerivation rec {
    sed -i 's:log\.txt:/var/log/ventoy\.log:g' \
        WebUI/static/js/languages.js tool/languages.json
  '';

  nativeBuildInputs = [
    autoPatchelfHook
    makeWrapper
  ]
  ++ lib.optional withQt5 qt5.wrapQtAppsHook;

  buildInputs = [
    bash
    coreutils
    dosfstools
    exfat
    gawk
    gnugrep
    gnused
    hexdump
    parted
    procps
    util-linux
    which
    xz
  ]
  ++ lib.optional withCryptsetup cryptsetup
  ++ lib.optional withExt4 e2fsprogs
  ++ lib.optional withGtk3 gtk3
  ++ lib.optional withNtfs ntfs3g
  ++ lib.optional withXfs xfsprogs
  ++ lib.optional withQt5 qt5.qtbase;

  installPhase = ''
    runHook preInstall

    # Setup variables.
    local VENTOY_PATH="$out"/share/ventoy
    local ARCH='${arch}'
@@ -99,9 +144,10 @@ in stdenv.mkDerivation rec {
                    --prefix PATH : "${lib.makeBinPath buildInputs}" \
                    --chdir "$VENTOY_PATH"
    done
  '' + lib.optionalString (withGtk3 || withQt5) ''
  ''
  # VentoGUI uses the `ventoy_gui_type` file to determine the type of GUI.
  # See <https://github.com/ventoy/Ventoy/blob/471432fc50ffad80bde5de0b22e4c30fa3aac41b/LinuxGUI/Ventoy2Disk/ventoy_gui.c#L1044>.
  + lib.optionalString (withGtk3 || withQt5) ''
    echo "${defaultGuiType}" > "$VENTOY_PATH/ventoy_gui_type"
    makeWrapper "$VENTOY_PATH/VentoyGUI.$ARCH" "$out/bin/ventoy-gui" \
                --prefix PATH : "${lib.makeBinPath buildInputs}" \
@@ -109,31 +155,37 @@ in stdenv.mkDerivation rec {
    mkdir "$out"/share/{applications,pixmaps}
    ln -s "$VENTOY_PATH"/WebUI/static/img/VentoyLogo.png "$out"/share/pixmaps/
    cp ${./ventoy-gui.desktop} "$out"/share/applications/
  '' + lib.optionalString (!withGtk3) ''
  ''
  + lib.optionalString (!withGtk3) ''
    rm "$VENTOY_PATH"/tool/{"$ARCH"/Ventoy2Disk.gtk3,VentoyGTK.glade}
  '' + lib.optionalString (!withQt5) ''
  ''
  + lib.optionalString (!withQt5) ''
    rm "$VENTOY_PATH/tool/$ARCH/Ventoy2Disk.qt5"
  '' + lib.optionalString (!withGtk3 && !withQt5) ''
  ''
  + lib.optionalString (!withGtk3 && !withQt5) ''
    rm "$VENTOY_PATH"/VentoyGUI.*
  '' +
  ''

    runHook postInstall
  '';

  meta = with lib; {
    description = "An open source tool to create bootable USB drive for ISO/WIM/IMG/VHD(x)/EFI files";
    description = "A New Bootable USB Solution";
    longDescription = ''
      An open source tool to create bootable USB drive for
    homepage = "https://www.ventoy.net";
      Ventoy is an open source tool to create bootable USB drive for
      ISO/WIM/IMG/VHD(x)/EFI files.  With ventoy, you don't need to format the
      disk over and over, you just need to copy the ISO/WIM/IMG/VHD(x)/EFI
      files to the USB drive and boot them directly.  You can copy many files
      at a time and ventoy will give you a boot menu to select them.  You can
      also browse ISO/WIM/IMG/VHD(x)/EFI files in local disk and boot them.
      x86 Legacy BIOS, IA32 UEFI, x86_64 UEFI, ARM64 UEFI and MIPS64EL UEFI are
      supported in the same way.  Most type of OS supported
      disk over and over, you just need to copy the ISO/WIM/IMG/VHD(x)/EFI files
      to the USB drive and boot them directly. You can copy many files at a time
      and ventoy will give you a boot menu to select them. You can also browse
      ISO/WIM/IMG/VHD(x)/EFI files in local disk and boot them. x86 Legacy
      BIOS, IA32 UEFI, x86_64 UEFI, ARM64 UEFI and MIPS64EL UEFI are supported
      in the same way.  Most type of OS supported
      (Windows/WinPE/Linux/ChromeOS/Unix/VMware/Xen...).  With ventoy you can
      also browse ISO/WIM/IMG/VHD(x)/EFI files in local disk and boot them.
      800+ image files are tested.  90%+ distros in <distrowatch.com>
      supported.
      800+ image files are tested.  90%+ distros in DistroWatch supported.
    '';
    homepage = "https://www.ventoy.net";
    changelog = "https://www.ventoy.net/doc_news.html";
    license = licenses.gpl3Plus;
    platforms = [ "x86_64-linux" "i686-linux" "aarch64-linux" "mipsel-linux" ];
+6 −0
Original line number Diff line number Diff line
@@ -1244,6 +1244,12 @@ with pkgs;
  veikk-linux-driver-gui = libsForQt5.callPackage ../tools/misc/veikk-linux-driver-gui { };
  ventoy-bin = callPackage ../tools/cd-dvd/ventoy-bin { };
  ventoy-bin-full = ventoy-bin.override {
    withCryptsetup = true;
    withXfs = true;
    withExt4 = true;
    withNtfs = true;
  };
  voms = callPackage ../tools/networking/voms { };