nixos/lxc: add package option and use for incus/lxd

Changed files
+16 -9
nixos
modules
virtualisation
+6 -1
nixos/modules/virtualisation/incus.nix
···
package = lib.mkPackageOption pkgs "incus-lts" { };
-
lxcPackage = lib.mkPackageOption pkgs "lxc" { };
+
lxcPackage = lib.mkOption {
+
type = lib.types.package;
+
default = config.virtualisation.lxc.package;
+
defaultText = lib.literalExpression "config.virtualisation.lxc.package";
+
description = "The lxc package to use.";
+
};
clientPackage = lib.mkOption {
type = lib.types.package;
+5 -4
nixos/modules/virtualisation/lxc.nix
···
{manpage}`lxc.system.conf(5)`.
'';
};
+
package = lib.mkPackageOption pkgs "lxc" { };
defaultConfig =
lib.mkOption {
···
###### implementation
config = lib.mkIf cfg.enable {
-
environment.systemPackages = [ pkgs.lxc ];
+
environment.systemPackages = [ cfg.package ];
environment.etc."lxc/lxc.conf".text = cfg.systemConfig;
environment.etc."lxc/lxc-usernet".text = cfg.usernetConfig;
environment.etc."lxc/default.conf".text = cfg.defaultConfig;
systemd.tmpfiles.rules = [ "d /var/lib/lxc/rootfs 0755 root root -" ];
-
security.apparmor.packages = [ pkgs.lxc ];
+
security.apparmor.packages = [ cfg.package ];
security.apparmor.policies = {
"bin.lxc-start".profile = ''
-
include ${pkgs.lxc}/etc/apparmor.d/usr.bin.lxc-start
+
include ${cfg.package}/etc/apparmor.d/usr.bin.lxc-start
'';
"lxc-containers".profile = ''
-
include ${pkgs.lxc}/etc/apparmor.d/lxc-containers
+
include ${cfg.package}/etc/apparmor.d/lxc-containers
'';
};
};
+5 -4
nixos/modules/virtualisation/lxd.nix
···
package = lib.mkPackageOption pkgs "lxd-lts" { };
-
lxcPackage = lib.mkPackageOption pkgs "lxc" {
-
extraDescription = ''
-
Required for AppArmor profiles.
-
'';
+
lxcPackage = lib.mkOption {
+
type = lib.types.package;
+
default = config.virtualisation.lxc.package;
+
defaultText = lib.literalExpression "config.virtualisation.lxc.package";
+
description = "The lxc package to use.";
};
zfsSupport = lib.mkOption {