diff --git a/pkgs/tools/cd-dvd/ventoy-bin/add-mips64.patch b/pkgs/tools/cd-dvd/ventoy-bin/001-add-mips64.diff similarity index 100% rename from pkgs/tools/cd-dvd/ventoy-bin/add-mips64.patch rename to pkgs/tools/cd-dvd/ventoy-bin/001-add-mips64.diff diff --git a/pkgs/tools/cd-dvd/ventoy-bin/fix-for-read-only-file-system.patch b/pkgs/tools/cd-dvd/ventoy-bin/002-fix-for-read-only-file-system.diff similarity index 100% rename from pkgs/tools/cd-dvd/ventoy-bin/fix-for-read-only-file-system.patch rename to pkgs/tools/cd-dvd/ventoy-bin/002-fix-for-read-only-file-system.diff diff --git a/pkgs/tools/cd-dvd/ventoy-bin/default.nix b/pkgs/tools/cd-dvd/ventoy-bin/default.nix index f272a1d6bb65..4e88ac186483 100644 --- a/pkgs/tools/cd-dvd/ventoy-bin/default.nix +++ b/pkgs/tools/cd-dvd/ventoy-bin/default.nix @@ -1,17 +1,38 @@ -{ 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"]; +assert lib.elem defaultGuiType [ "" "gtk3" "qt5" ]; assert defaultGuiType == "gtk3" -> withGtk3; assert defaultGuiType == "qt5" -> withQt5; @@ -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 . + '' + # VentoGUI uses the `ventoy_gui_type` file to determine the type of GUI. + # See . + + 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 - 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" ]; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 8a5f96617499..c9c8879c894d 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -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 { };