about summary refs log tree commit diff
path: root/pkgs/tools/cd-dvd/ventoy-bin/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/tools/cd-dvd/ventoy-bin/default.nix')
-rw-r--r--pkgs/tools/cd-dvd/ventoy-bin/default.nix142
1 files changed, 97 insertions, 45 deletions
diff --git a/pkgs/tools/cd-dvd/ventoy-bin/default.nix b/pkgs/tools/cd-dvd/ventoy-bin/default.nix
index f272a1d6bb657..4e88ac1864834 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 <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" ];