|
|
|
@ -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 <https://github.com/ventoy/Ventoy/blob/471432fc50ffad80bde5de0b22e4c30fa3aac41b/LinuxGUI/Ventoy2Disk/ventoy_gui.c#L1044>. |
|
|
|
|
'' |
|
|
|
|
# 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" ]; |
|
|
|
|