parent
9ef1af9aa3
commit
fc2255fffa
@ -1,115 +0,0 @@ |
|||||||
{ fetchFromGitHub, libxcb, mtools, p7zip, parted, procps, qemu, unzip, zip, |
|
||||||
coreutils, gnugrep, which, gnused, e2fsprogs, autoPatchelfHook, gptfdisk, |
|
||||||
python3Packages, qt5, runtimeShell, lib, util-linux, wrapQtAppsHook }: |
|
||||||
|
|
||||||
# Note: Multibootusb is tricky to maintain. It relies on the |
|
||||||
# $PYTHONPATH variable containing some of their code, so that |
|
||||||
# something like: |
|
||||||
# |
|
||||||
# from scripts import config |
|
||||||
# |
|
||||||
# works. It also relies on the current directory to find some runtime |
|
||||||
# resources thanks to a use of __file__. |
|
||||||
# |
|
||||||
# https://github.com/mbusb/multibootusb/blob/0d34d70c3868f1d7695cfd141141b17c075de967/scripts/osdriver.py#L59 |
|
||||||
|
|
||||||
python3Packages.buildPythonApplication rec { |
|
||||||
pname = "multibootusb"; |
|
||||||
name = "${pname}-${version}"; |
|
||||||
version = "9.2.0"; |
|
||||||
|
|
||||||
nativeBuildInputs = [ |
|
||||||
wrapQtAppsHook |
|
||||||
autoPatchelfHook |
|
||||||
unzip |
|
||||||
zip |
|
||||||
]; |
|
||||||
|
|
||||||
runTimeDeps = [ |
|
||||||
coreutils |
|
||||||
gnugrep |
|
||||||
which |
|
||||||
parted |
|
||||||
util-linux |
|
||||||
qemu |
|
||||||
p7zip |
|
||||||
gnused |
|
||||||
mtools |
|
||||||
procps |
|
||||||
e2fsprogs |
|
||||||
gptfdisk |
|
||||||
]; |
|
||||||
|
|
||||||
buildInputs = [ |
|
||||||
libxcb |
|
||||||
python3Packages.python |
|
||||||
qt5.full |
|
||||||
]; |
|
||||||
|
|
||||||
src = fetchFromGitHub { |
|
||||||
owner = "mbusb"; |
|
||||||
repo = pname; |
|
||||||
rev = "v${version}"; |
|
||||||
|
|
||||||
sha256 = "0wlan0cp6c2i0nahixgpmkm0h4n518gj8rc515d579pqqp91p2h3"; |
|
||||||
}; |
|
||||||
|
|
||||||
# Tests can't run inside the NixOS sandbox |
|
||||||
# "Failed to connect to socket /run/dbus/system_bus_socket: No such file or directory" |
|
||||||
doCheck = false; |
|
||||||
|
|
||||||
pythonPath = with python3Packages; [ |
|
||||||
dbus-python |
|
||||||
pyqt5 |
|
||||||
pytest-shutil |
|
||||||
pyudev |
|
||||||
six |
|
||||||
]; |
|
||||||
|
|
||||||
# multibootusb ships zips with various versions of syslinux, we need to patchelf them |
|
||||||
postPatch = '' |
|
||||||
for zip in $(find . -name "*.zip"); do |
|
||||||
zip=$(readlink -f $zip) |
|
||||||
target="$(mktemp -d)" |
|
||||||
pushd $target |
|
||||||
unzip $zip |
|
||||||
rm $zip |
|
||||||
autoPatchelf . |
|
||||||
zip -r $zip * |
|
||||||
popd |
|
||||||
done |
|
||||||
''; |
|
||||||
|
|
||||||
postInstall = '' |
|
||||||
# This script doesn't work and it doesn't add much anyway |
|
||||||
rm $out/bin/multibootusb-pkexec |
|
||||||
|
|
||||||
# The installed data isn't sufficient for whatever reason, missing gdisk/gdisk.exe |
|
||||||
mkdir -p "$out/share/${pname}" |
|
||||||
cp -r data "$out/share/${pname}/data" |
|
||||||
''; |
|
||||||
|
|
||||||
preFixup = '' |
|
||||||
makeWrapperArgs+=( |
|
||||||
# Firstly, add all necessary QT variables |
|
||||||
"''${qtWrapperArgs[@]}" |
|
||||||
|
|
||||||
# Then, add the installed scripts/ directory to the python path |
|
||||||
--prefix "PYTHONPATH" ":" "$out/lib/${python3Packages.python.libPrefix}/site-packages" |
|
||||||
|
|
||||||
# Add some runtime dependencies |
|
||||||
--prefix "PATH" ":" "${lib.makeBinPath runTimeDeps}" |
|
||||||
|
|
||||||
# Finally, move to directory that contains data |
|
||||||
--chdir "$out/share/${pname}" |
|
||||||
) |
|
||||||
''; |
|
||||||
|
|
||||||
meta = with lib; { |
|
||||||
description = "Multiboot USB creator for Linux live disks"; |
|
||||||
homepage = "http://multibootusb.org/"; |
|
||||||
license = licenses.gpl2; |
|
||||||
maintainers = []; # Looking for a maintainer! |
|
||||||
broken = true; # "name 'config' is not defined", added 2021-02-06 |
|
||||||
}; |
|
||||||
} |
|
Loading…
Reference in new issue