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