Class: VagrantPlugins::Nixos::Cap::ConfigureNetworks

Inherits:
Object
  • Object
show all
Includes:
Vagrant::Util
Defined in:
lib/vagrant-nix/cap/configure_networks.rb

Class Method Summary collapse

Class Method Details

.configure_networks(machine, networks) ⇒ Object



47
48
49
50
51
# File 'lib/vagrant-nix/cap/configure_networks.rb', line 47

def self.configure_networks(machine, networks)
    if Nixos.write_config(machine, "vagrant-interfaces.nix", nix_module(networks))
        machine.env.ui.info "Setting up network interfaces #{networks}"
    end
end

.nix_interface_expr(options) ⇒ Object



13
14
15
16
17
18
19
20
21
22
23
# File 'lib/vagrant-nix/cap/configure_networks.rb', line 13

def self.nix_interface_expr(options)
    addr = NetAddr::CIDR.create("#{options[:ip]} #{options[:netmask]}")
    prefix_length = addr.netmask[1, addr.netmask.size]
    "{\n    name = \"eth\#{options[:interface]}\";\n    ipAddress = \"\#{options[:ip]}\";\n    prefixLength = \#{prefix_length};\n}\n    NIX\nend\n"

.nix_module(networks) ⇒ Object



25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/vagrant-nix/cap/configure_networks.rb', line 25

def self.nix_module(networks)
    exprs = networks.inject([]) do |exprs, network|
        # Interfaces without an ip set will fallback to
        # DHCP if useDHCP is set. So skip them.
        if network[:ip].nil? or network[:ip].empty?
            exprs
        else
            exprs << nix_interface_expr(network)
        end
    end
    "{ config, pkgs, ... }:\n{\n    networking.usePredictableInterfaceNames = false;\n    networking.useDHCP = true;\n    networking.interfaces = [\n    \#{exprs.join(\"\\n\")}\n    ];\n}\n    NIX\nend\n"