btrbk: add mainProgram
[NixPkgs.git] / pkgs / by-name / wi / win-spice / package.nix
blobff3364b1ae923f3e7313e9aafbb7415dcee893c1
1 { lib, stdenv, fetchurl, p7zip, virtio-win }:
3 let
4   version_usbdk = "1.0.22";
5   src_usbdk_x86 = fetchurl {
6     url = "https://www.spice-space.org/download/windows/UsbDk/UsbDk_${version_usbdk}_x86.msi";
7     sha256 = "1vr8kv37wz6p3xhawyhwxv0g7y89igkvx30zwmyvlgnkv3h5i317";
8   };
9   src_usbdk_amd64 = fetchurl {
10     url = "https://www.spice-space.org/download/windows/UsbDk/UsbDk_${version_usbdk}_x64.msi";
11     sha256 = "19b64jv6pfimd54y0pphbs1xh25z41bbblz64ih6ag71w6azdxli";
12   };
14   version_qxlwddm = "0.21";
15   src_qxlwddm = fetchurl {
16     url = "https://www.spice-space.org/download/windows/qxl-wddm-dod/qxl-wddm-dod-${version_qxlwddm}/spice-qxl-wddm-dod-${version_qxlwddm}.zip";
17     sha256 = "0yjq54gxw3lcfghsfs4fzwipa9sgx5b1sn3fss6r5dm7pdvjp20q";
18   };
20   version_vdagent = "0.10.0";
21   src_vdagent_x86 = fetchurl {
22     url = "https://www.spice-space.org/download/windows/vdagent/vdagent-win-${version_vdagent}/vdagent-win-${version_vdagent}-x86.zip";
23     sha256 = "142c0lqsqry9dclji2225ppclkn13gbjl1j0pzx8fp6hgy4i02c1";
24   };
25   src_vdagent_amd64 = fetchurl {
26     url = "https://www.spice-space.org/download/windows/vdagent/vdagent-win-${version_vdagent}/vdagent-win-${version_vdagent}-x64.zip";
27     sha256 = "1x2wcvld531kv17a4ks7sh67nhzxzv7nkhpx391n5vj6d12i8g3i";
28   };
31 stdenv.mkDerivation  {
32   # use version number of qxlwddm as qxlwddm is the most important component
33   pname = "win-spice";
34   version = version_qxlwddm;
36   dontUnpack = true;
38   buildPhase = ''
39     runHook preBuild
41     mkdir -p usbdk/x86 usbdk/amd64
42     (cd usbdk/x86; ${p7zip}/bin/7z x -y ${src_usbdk_x86})
43     (cd usbdk/amd64; ${p7zip}/bin/7z x -y ${src_usbdk_amd64})
45     mkdir -p vdagent/x86 vdagent/amd64
46     (cd vdagent/x86; ${p7zip}/bin/7z x -y ${src_vdagent_x86}; mv vdagent-win-${version_vdagent}-x86/* .; rm -r vdagent-win-${version_vdagent}-x86)
47     (cd vdagent/amd64; ${p7zip}/bin/7z x -y ${src_vdagent_amd64}; mv vdagent-win-${version_vdagent}-x64/* .; rm -r vdagent-win-${version_vdagent}-x64)
49     mkdir -p qxlwddm
50     (cd qxlwddm; ${p7zip}/bin/7z x -y ${src_qxlwddm}; cd w10)
52     runHook postBuild
53   '';
55   installPhase =
56     let
57       copy_qxl = arch: version: "mkdir -p $out/${arch}/qxl; cp qxlwddm/${version}/${arch}/* $out/${arch}/qxl/. \n";
58       copy_usbdk = arch: "mkdir -p $out/${arch}/usbdk; cp usbdk/${arch}/* $out/${arch}/usbdk/. \n";
59       copy_vdagent = arch: "mkdir -p $out/${arch}/vdagent; cp vdagent/${arch}/* $out/${arch}/vdagent/. \n";
60       # SPICE needs vioserial
61       # TODO: Link windows version in win-spice (here) to version used in virtio-win.
62       #       That way it would never matter whether vioserial is installed from virtio-win or win-spice.
63       copy_vioserial = arch: version: "mkdir -p $out/${arch}/vioserial; cp ${virtio-win}/vioserial/${version}/${arch}/* $out/${arch}/vioserial/. \n";
64       copy = arch: version: (copy_qxl arch version) + (copy_usbdk arch) + (copy_vdagent arch) + (copy_vioserial arch version);
65     in ''
66       runHook preInstall
67       ${(copy "amd64" "w10") + (copy "x86" "w10")}
68       runHook postInstall
69     '';
71   meta = with lib; {
72     description = "Windows SPICE Drivers";
73     homepage = "https://www.spice-space.org/";
74     license = [ licenses.asl20 ]; # See https://github.com/vrozenfe/qxl-dod
75     maintainers = [ ];
76     sourceProvenance = with sourceTypes; [ binaryNativeCode ];
77     platforms = platforms.linux;
78   };