python312Packages.types-aiobotocore: 2.15.2 -> 2.15.2.post3 (#361801)
[NixPkgs.git] / pkgs / by-name / lx / lxd-lts / package.nix
blobef61e0a7bccebe09631e51b9a311d8efbf5a2f46
2   lib,
3   lxd-unwrapped-lts,
4   linkFarm,
5   makeWrapper,
6   stdenv,
7   symlinkJoin,
8   writeShellScriptBin,
9   acl,
10   apparmor-parser,
11   apparmor-profiles,
12   attr,
13   bash,
14   btrfs-progs,
15   cdrkit,
16   criu,
17   dnsmasq,
18   e2fsprogs,
19   getent,
20   gnutar,
21   gptfdisk,
22   gzip,
23   iproute2,
24   iptables,
25   kmod,
26   lvm2,
27   minio,
28   nftables,
29   OVMF,
30   qemu_kvm,
31   qemu-utils,
32   rsync,
33   spice-gtk,
34   squashfsTools,
35   thin-provisioning-tools,
36   util-linux,
37   virtiofsd,
38   xz,
40 let
41   binPath = lib.makeBinPath [
42     acl
43     attr
44     bash
45     btrfs-progs
46     cdrkit
47     criu
48     dnsmasq
49     e2fsprogs
50     getent
51     gnutar
52     gptfdisk
53     gzip
54     iproute2
55     iptables
56     kmod
57     lvm2
58     minio
59     nftables
60     qemu_kvm
61     qemu-utils
62     rsync
63     squashfsTools
64     thin-provisioning-tools
65     util-linux
66     virtiofsd
67     xz
69     (writeShellScriptBin "apparmor_parser" ''
70       exec '${apparmor-parser}/bin/apparmor_parser' -I '${apparmor-profiles}/etc/apparmor.d' "$@"
71     '')
72   ];
74   clientBinPath = [ spice-gtk ];
76   ovmf-2mb = OVMF.override {
77     secureBoot = true;
78     fdSize2MB = true;
79   };
81   ovmf-4mb = OVMF.override {
82     secureBoot = true;
83     fdSize4MB = true;
84   };
86   ovmf-prefix = if stdenv.hostPlatform.isAarch64 then "AAVMF" else "OVMF";
88   # mimic ovmf from https://github.com/canonical/lxd-pkg-snap/blob/3abebe1dfeb20f9b7729556960c7e9fe6ad5e17c/snapcraft.yaml#L378
89   # also found in /snap/lxd/current/share/qemu/ on a snap install
90   ovmf = linkFarm "lxd-ovmf" [
91     {
92       name = "OVMF_CODE.2MB.fd";
93       path = "${ovmf-2mb.fd}/FV/${ovmf-prefix}_CODE.fd";
94     }
95     {
96       name = "OVMF_CODE.4MB.fd";
97       path = "${ovmf-4mb.fd}/FV/${ovmf-prefix}_CODE.fd";
98     }
99     {
100       name = "OVMF_CODE.fd";
101       path = "${ovmf-2mb.fd}/FV/${ovmf-prefix}_CODE.fd";
102     }
104     {
105       name = "OVMF_VARS.2MB.fd";
106       path = "${ovmf-2mb.fd}/FV/${ovmf-prefix}_VARS.fd";
107     }
108     {
109       name = "OVMF_VARS.2MB.ms.fd";
110       path = "${ovmf-2mb.fd}/FV/${ovmf-prefix}_VARS.fd";
111     }
112     {
113       name = "OVMF_VARS.4MB.fd";
114       path = "${ovmf-4mb.fd}/FV/${ovmf-prefix}_VARS.fd";
115     }
116     {
117       name = "OVMF_VARS.4MB.ms.fd";
118       path = "${ovmf-4mb.fd}/FV/${ovmf-prefix}_VARS.fd";
119     }
120     {
121       name = "OVMF_VARS.fd";
122       path = "${ovmf-2mb.fd}/FV/${ovmf-prefix}_VARS.fd";
123     }
124     {
125       name = "OVMF_VARS.ms.fd";
126       path = "${ovmf-2mb.fd}/FV/${ovmf-prefix}_VARS.fd";
127     }
128   ];
130 symlinkJoin {
131   name = "lxd-${lxd-unwrapped-lts.version}";
133   paths = [ lxd-unwrapped-lts ];
135   nativeBuildInputs = [ makeWrapper ];
137   postBuild = ''
138     wrapProgram $out/bin/lxd --prefix PATH : ${lib.escapeShellArg binPath}:${qemu_kvm}/libexec:$out/bin --set LXD_OVMF_PATH ${ovmf}
140     wrapProgram $out/bin/lxc --prefix PATH : ${lib.makeBinPath clientBinPath}
141   '';
143   passthru = {
144     inherit (lxd-unwrapped-lts) tests;
145   };
147   inherit (lxd-unwrapped-lts) meta pname version;