diff --git a/templates/guests/nixos/network.erb b/templates/guests/nixos/network.erb index f919fab90..9fb88b308 100644 --- a/templates/guests/nixos/network.erb +++ b/templates/guests/nixos/network.erb @@ -1,16 +1,15 @@ { config, pkgs, ... }: { - networking.interfaces = [ + networking.interfaces = { <% networks.select {|n| n[:device]}.each do |network| %> - { - name = "<%= network[:device] %>"; + <%= network[:device] %>.ipv4.addresses = [{ <% if network[:type] == :static %> - ipAddress = "<%= network[:ip] %>"; + address = "<%= network[:ip] %>"; <% end %> <% if network[:prefix_length] %> prefixLength = <%= network[:prefix_length] %>; <% end %> - } + }]; <% end %> - ]; + }; } diff --git a/test/unit/templates/guests/nixos/network_test.rb b/test/unit/templates/guests/nixos/network_test.rb new file mode 100644 index 000000000..f2536f900 --- /dev/null +++ b/test/unit/templates/guests/nixos/network_test.rb @@ -0,0 +1,27 @@ +require_relative "../../../base" + +require "vagrant/util/template_renderer" + +describe "templates/guests/nixos/network" do + let(:template) { "guests/nixos/network" } + + it "renders the template" do + result = Vagrant::Util::TemplateRenderer.render(template, networks: [{ + device: "en0", + ip: "1.1.1.1", + prefix_length: "24", + type: :static, + }]) + expect(result).to eq <<-EOH.gsub(/^ {6}/, "") + { config, pkgs, ... }: + { + networking.interfaces = { + en0.ipv4.addresses = [{ + address = "1.1.1.1"; + prefixLength = 24; + }]; + }; + } + EOH + end +end