diff options
Diffstat (limited to 'pkgs/by-name/lx/lxd-lts/package.nix')
-rw-r--r-- | pkgs/by-name/lx/lxd-lts/package.nix | 148 |
1 files changed, 148 insertions, 0 deletions
diff --git a/pkgs/by-name/lx/lxd-lts/package.nix b/pkgs/by-name/lx/lxd-lts/package.nix new file mode 100644 index 0000000000000..67dda7437b8fd --- /dev/null +++ b/pkgs/by-name/lx/lxd-lts/package.nix @@ -0,0 +1,148 @@ +{ + lib, + lxd-unwrapped-lts, + linkFarm, + makeWrapper, + stdenv, + symlinkJoin, + writeShellScriptBin, + acl, + apparmor-parser, + apparmor-profiles, + attr, + bash, + btrfs-progs, + cdrkit, + criu, + dnsmasq, + e2fsprogs, + getent, + gnutar, + gptfdisk, + gzip, + iproute2, + iptables, + kmod, + lvm2, + minio, + nftables, + OVMF, + qemu_kvm, + qemu-utils, + rsync, + spice-gtk, + squashfsTools, + thin-provisioning-tools, + util-linux, + virtiofsd, + xz, +}: +let + binPath = lib.makeBinPath [ + acl + attr + bash + btrfs-progs + cdrkit + criu + dnsmasq + e2fsprogs + getent + gnutar + gptfdisk + gzip + iproute2 + iptables + kmod + lvm2 + minio + nftables + qemu_kvm + qemu-utils + rsync + squashfsTools + thin-provisioning-tools + util-linux + virtiofsd + xz + + (writeShellScriptBin "apparmor_parser" '' + exec '${apparmor-parser}/bin/apparmor_parser' -I '${apparmor-profiles}/etc/apparmor.d' "$@" + '') + ]; + + clientBinPath = [ spice-gtk ]; + + ovmf-2mb = OVMF.override { + secureBoot = true; + fdSize2MB = true; + }; + + ovmf-4mb = OVMF.override { + secureBoot = true; + fdSize4MB = true; + }; + + ovmf-prefix = if stdenv.hostPlatform.isAarch64 then "AAVMF" else "OVMF"; + + # mimic ovmf from https://github.com/canonical/lxd-pkg-snap/blob/3abebe1dfeb20f9b7729556960c7e9fe6ad5e17c/snapcraft.yaml#L378 + # also found in /snap/lxd/current/share/qemu/ on a snap install + ovmf = linkFarm "lxd-ovmf" [ + { + name = "OVMF_CODE.2MB.fd"; + path = "${ovmf-2mb.fd}/FV/${ovmf-prefix}_CODE.fd"; + } + { + name = "OVMF_CODE.4MB.fd"; + path = "${ovmf-4mb.fd}/FV/${ovmf-prefix}_CODE.fd"; + } + { + name = "OVMF_CODE.fd"; + path = "${ovmf-2mb.fd}/FV/${ovmf-prefix}_CODE.fd"; + } + + { + name = "OVMF_VARS.2MB.fd"; + path = "${ovmf-2mb.fd}/FV/${ovmf-prefix}_VARS.fd"; + } + { + name = "OVMF_VARS.2MB.ms.fd"; + path = "${ovmf-2mb.fd}/FV/${ovmf-prefix}_VARS.fd"; + } + { + name = "OVMF_VARS.4MB.fd"; + path = "${ovmf-4mb.fd}/FV/${ovmf-prefix}_VARS.fd"; + } + { + name = "OVMF_VARS.4MB.ms.fd"; + path = "${ovmf-4mb.fd}/FV/${ovmf-prefix}_VARS.fd"; + } + { + name = "OVMF_VARS.fd"; + path = "${ovmf-2mb.fd}/FV/${ovmf-prefix}_VARS.fd"; + } + { + name = "OVMF_VARS.ms.fd"; + path = "${ovmf-2mb.fd}/FV/${ovmf-prefix}_VARS.fd"; + } + ]; +in +symlinkJoin { + name = "lxd-${lxd-unwrapped-lts.version}"; + + paths = [ lxd-unwrapped-lts ]; + + nativeBuildInputs = [ makeWrapper ]; + + postBuild = '' + wrapProgram $out/bin/lxd --prefix PATH : ${lib.escapeShellArg binPath}:${qemu_kvm}/libexec:$out/bin --set LXD_OVMF_PATH ${ovmf} + + wrapProgram $out/bin/lxc --prefix PATH : ${lib.makeBinPath clientBinPath} + ''; + + passthru = { + inherit (lxd-unwrapped-lts) tests ui; + }; + + inherit (lxd-unwrapped-lts) meta pname version; +} |