bottom: add gpu recognition, new apple sdk, refactor (#360568)
[NixPkgs.git] / pkgs / by-name / qu / quickemu / package.nix
blobcfd3838c9c514914ca9fe0f0f92cbb082f8353d5
2   lib,
3   fetchFromGitHub,
4   stdenv,
5   makeWrapper,
6   cdrtools,
7   curl,
8   gawk,
9   mesa-demos,
10   gnugrep,
11   gnused,
12   jq,
13   pciutils,
14   procps,
15   python3,
16   qemu_full,
17   socat,
18   spice-gtk,
19   swtpm,
20   usbutils,
21   util-linux,
22   unzip,
23   xdg-user-dirs,
24   xrandr,
25   zsync,
26   OVMF,
27   OVMFFull,
28   testers,
29   installShellFiles,
31 let
32   runtimePaths =
33     [
34       cdrtools
35       curl
36       gawk
37       gnugrep
38       gnused
39       jq
40       pciutils
41       procps
42       python3
43       qemu_full
44       socat
45       swtpm
46       util-linux
47       unzip
48       xrandr
49       zsync
50     ]
51     ++ lib.optionals stdenv.hostPlatform.isLinux [
52       mesa-demos
53       usbutils
54       xdg-user-dirs
55     ];
58 stdenv.mkDerivation (finalAttrs: {
59   pname = "quickemu";
60   version = "4.9.6";
62   src = fetchFromGitHub {
63     owner = "quickemu-project";
64     repo = "quickemu";
65     rev = finalAttrs.version;
66     hash = "sha256-VaA39QNZNaomvSBMzJMjYN0KOTwWw2798KE8VnM+1so=";
67   };
69   postPatch = ''
70     sed -i \
71       -e '/OVMF_CODE_4M.secboot.fd/s|ovmfs=(|ovmfs=("${OVMFFull.firmware}","${OVMFFull.variables}" |' \
72       -e '/OVMF_CODE_4M.fd/s|ovmfs=(|ovmfs=("${OVMF.firmware}","${OVMF.variables}" |' \
73       -e '/cp "''${VARS_IN}" "''${VARS_OUT}"/a chmod +w "''${VARS_OUT}"' \
74       -e 's/Icon=.*qemu.svg/Icon=qemu/' \
75       -e 's,\[ -x "\$(command -v smbd)" \],true,' \
76       quickemu
77   '';
79   nativeBuildInputs = [
80     makeWrapper
81     installShellFiles
82   ];
84   installPhase = ''
85     runHook preInstall
87     installManPage docs/quickget.1 docs/quickemu.1 docs/quickemu_conf.1
88     install -Dm755 -t "$out/bin" chunkcheck quickemu quickget quickreport windowskey
90     # spice-gtk needs to be put in suffix so that when virtualisation.spiceUSBRedirection
91     # is enabled, the wrapped spice-client-glib-usb-acl-helper is used
92     for f in chunkcheck quickget quickemu quickreport windowskey; do
93       wrapProgram $out/bin/$f \
94         --prefix PATH : "${lib.makeBinPath runtimePaths}" \
95         --suffix PATH : "${lib.makeBinPath [ spice-gtk ]}"
96     done
98     runHook postInstall
99   '';
101   passthru.tests = testers.testVersion { package = finalAttrs.finalPackage; };
103   meta = {
104     description = "Quickly create and run optimised Windows, macOS and Linux virtual machines";
105     homepage = "https://github.com/quickemu-project/quickemu";
106     changelog = "https://github.com/quickemu-project/quickemu/releases/tag/${finalAttrs.version}";
107     mainProgram = "quickemu";
108     license = lib.licenses.mit;
109     maintainers = with lib.maintainers; [
110       fedx-sudo
111       flexiondotorg
112     ];
113   };