summary refs log tree commit diff
path: root/nixos/modules/tasks
diff options
context:
space:
mode:
authorVolth <volth@webmaster.ms>2017-07-27 05:49:18 +0000
committerVolth <volth@webmaster.ms>2017-07-27 05:58:25 +0000
commit10cbb52ae7b79ca6e9d25abf9d8b103847924d76 (patch)
tree2570287476fe090f37e44a2031d427736c2ac563 /nixos/modules/tasks
parent07e7527fdb14769b6ecb39a787fa2c053895f9f0 (diff)
downloadnixlib-10cbb52ae7b79ca6e9d25abf9d8b103847924d76.tar
nixlib-10cbb52ae7b79ca6e9d25abf9d8b103847924d76.tar.gz
nixlib-10cbb52ae7b79ca6e9d25abf9d8b103847924d76.tar.bz2
nixlib-10cbb52ae7b79ca6e9d25abf9d8b103847924d76.tar.lz
nixlib-10cbb52ae7b79ca6e9d25abf9d8b103847924d76.tar.xz
nixlib-10cbb52ae7b79ca6e9d25abf9d8b103847924d76.tar.zst
nixlib-10cbb52ae7b79ca6e9d25abf9d8b103847924d76.zip
nixos/networking-scripted: restore bridge slaves dynamically added by libvirt
Diffstat (limited to 'nixos/modules/tasks')
-rw-r--r--nixos/modules/tasks/network-interfaces-scripted.nix7
1 files changed, 7 insertions, 0 deletions
diff --git a/nixos/modules/tasks/network-interfaces-scripted.nix b/nixos/modules/tasks/network-interfaces-scripted.nix
index f6f104ce7a68..8328eed076ec 100644
--- a/nixos/modules/tasks/network-interfaces-scripted.nix
+++ b/nixos/modules/tasks/network-interfaces-scripted.nix
@@ -251,6 +251,13 @@ let
                 ${i}
               '')}" > /run/${n}.interfaces
 
+              ${optionalString config.virtualisation.libvirtd.enable ''
+                  # Enslave dynamically added interfaces which may be lost on nixos-rebuild
+                  for dom in $(${pkgs.libvirt}/bin/virsh list --name); do
+                    ${pkgs.libvirt}/bin/virsh dumpxml "$dom" | ${pkgs.xmlstarlet}/bin/xmlstarlet sel -t -m "//domain/devices/interface[@type='bridge']"  -v "concat('ip link set ',target/@dev,' master ',source/@bridge)" | ${pkgs.bash}/bin/bash
+                  done
+                ''}
+
               # Enable stp on the interface
               ${optionalString v.rstp ''
                 echo 2 >/sys/class/net/${n}/bridge/stp_state