about summary refs log tree commit diff
path: root/nixos/modules/virtualisation
diff options
context:
space:
mode:
authorMatthew Bauer <mjbauer95@gmail.com>2020-06-11 10:49:40 -0500
committerGitHub <noreply@github.com>2020-06-11 10:49:40 -0500
commit656783a3d1864fc94ed4183c267f641e644640d0 (patch)
treeb097fa2f314b9fa498170661b524ac0efc821d78 /nixos/modules/virtualisation
parent2c7ec299fa29903cf0c93cb1d090dc2c85011c47 (diff)
parent8ae7ac9e8c959cf0524331550f858549edd5152e (diff)
downloadnixlib-656783a3d1864fc94ed4183c267f641e644640d0.tar
nixlib-656783a3d1864fc94ed4183c267f641e644640d0.tar.gz
nixlib-656783a3d1864fc94ed4183c267f641e644640d0.tar.bz2
nixlib-656783a3d1864fc94ed4183c267f641e644640d0.tar.lz
nixlib-656783a3d1864fc94ed4183c267f641e644640d0.tar.xz
nixlib-656783a3d1864fc94ed4183c267f641e644640d0.tar.zst
nixlib-656783a3d1864fc94ed4183c267f641e644640d0.zip
Merge pull request #89540 from Patryk27/fixes/lxd-lxcfs
Fix `lxd`, so that it works with `lxcfs`
Diffstat (limited to 'nixos/modules/virtualisation')
-rw-r--r--nixos/modules/virtualisation/lxd.nix17
1 files changed, 14 insertions, 3 deletions
diff --git a/nixos/modules/virtualisation/lxd.nix b/nixos/modules/virtualisation/lxd.nix
index 53b89a9f55b1..3958fc2c1d7c 100644
--- a/nixos/modules/virtualisation/lxd.nix
+++ b/nixos/modules/virtualisation/lxd.nix
@@ -15,7 +15,6 @@ in
   ###### interface
 
   options = {
-
     virtualisation.lxd = {
       enable = mkOption {
         type = types.bool;
@@ -25,12 +24,18 @@ in
           containers. Users in the "lxd" group can interact with
           the daemon (e.g. to start or stop containers) using the
           <command>lxc</command> command line tool, among others.
+
+          Most of the time, you'll also want to start lxcfs, so
+          that containers can "see" the limits:
+          <code>
+            virtualisation.lxc.lxcfs.enable = true;
+          </code>
         '';
       };
 
       package = mkOption {
         type = types.package;
-        default = pkgs.lxd;
+        default = pkgs.lxd.override { nftablesSupport = config.networking.nftables.enable; };
         defaultText = "pkgs.lxd";
         description = ''
           The LXD package to use.
@@ -65,6 +70,7 @@ in
           with nixos.
         '';
       };
+
       recommendedSysctlSettings = mkOption {
         type = types.bool;
         default = false;
@@ -83,7 +89,6 @@ in
   ###### implementation
 
   config = mkIf cfg.enable {
-
     environment.systemPackages = [ cfg.package ];
 
     security.apparmor = {
@@ -115,6 +120,12 @@ in
         LimitNOFILE = "1048576";
         LimitNPROC = "infinity";
         TasksMax = "infinity";
+
+        # By default, `lxd` loads configuration files from hard-coded
+        # `/usr/share/lxc/config` - since this is a no-go for us, we have to
+        # explicitly tell it where the actual configuration files are
+        Environment = mkIf (config.virtualisation.lxc.lxcfs.enable)
+          "LXD_LXC_TEMPLATE_CONFIG=${pkgs.lxcfs}/share/lxc/config";
       };
     };