vagrant-nixos-plugin 0.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: c737e0645fac2818dd42a92841b641922710b899
4
+ data.tar.gz: 4b2af76eac1964a5faddad7e5f375e1d337668b6
5
+ SHA512:
6
+ metadata.gz: 7b11d262f33643617ac54812edb26f3be635fdf21f17c6bc782ea9f185a3520ab6541105c0dc0083391525775706a395ac4ae833d3d2cf8f9771be76970f269f
7
+ data.tar.gz: 435f35e02644364e68a5f95655fe549047d5e2e8845797d173547f58a32bfee174c3f045123955d7280886ece3c0773806e207255ff234807603b7bddd352886
@@ -0,0 +1,5 @@
1
+ Vagrantfile
2
+ .vagrant/
3
+ Gemfile.lock
4
+ pkg/
5
+ vendor/
data/Gemfile ADDED
@@ -0,0 +1,11 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in vagrant-nixos.gemspec
4
+ gemspec
5
+
6
+ group :development do
7
+ # We depend on Vagrant for development, but we don't add it as a
8
+ # gem dependency because we expect to be installed within the
9
+ # Vagrant environment itself using `vagrant plugin`.
10
+ gem "vagrant", :git => "git://github.com/mitchellh/vagrant.git"
11
+ end
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2014 Chris Farmiloe
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,111 @@
1
+ # NixOS Vagrant Plugin
2
+
3
+ This plugin makes working with [NixOS](http://nixos.org) guests in [Vagrant](http://www.vagrantup.com) a bit nicer:
4
+
5
+ * Allow network configurations
6
+ * Allow hostname setting
7
+ * Provide nix provisioning
8
+
9
+ ## Install:
10
+
11
+ NOTE: this project is a fork of the `vagrant-nixos` gem. Both can't be
12
+ installed at the same time.
13
+
14
+ ```bash
15
+ $ vagrant plugin install vagrant-nixos-plugin
16
+ ```
17
+
18
+ ## Example Vagrantfile
19
+
20
+ ```ruby
21
+ Vagrant.configure("2") do |config|
22
+
23
+ # use a suitable NixOS base
24
+ # http://github.com/oxdi/nixos
25
+ config.vm.box = "nixos-14.02-x86_64"
26
+ config.vm.box_url = "http://s3.amazonaws.com/oxdi/nixos-14.02-x86_64-virtualbox.box"
27
+
28
+ # set hostname
29
+ config.vm.hostname = "nixy"
30
+
31
+ # Setup networking
32
+ config.vm.network "private_network", :ip => "172.16.16.16"
33
+
34
+ # Add the htop package
35
+ config.vm.provision :nixos, :expression => {
36
+ environment: {
37
+ systemPackages: [ :htop ]
38
+ }
39
+ }
40
+
41
+ end
42
+ ```
43
+
44
+ In the above `Vagrantfile` example we provision the box using the `:expression` method, which will perform a simple ruby -> nix conversion. `:expression` provisioning creates a nix module that executes with `pkgs` in scope. It is roughly equivilent to the below version that uses the `:inline` method.
45
+
46
+ ```ruby
47
+ config.vm.provision :nixos, :inline => %{
48
+ {config, pkgs, ...}: with pkgs; {
49
+ environment.systemPackages = [ htop ];
50
+ }
51
+ }, :NIX_PATH => "/custom/path/to/nixpkgs"
52
+ ```
53
+
54
+ The above example also shows the optional setting of a custom `NIX_PATH` path.
55
+
56
+ You can also use an external nix configuration file:
57
+
58
+ ```ruby
59
+ config.vm.provision :nixos, :path => “configuration.nix”
60
+ ```
61
+
62
+ If you need provisioning to be included explicitly during rebuild use:
63
+
64
+ ```ruby
65
+ config.vm.provision :nixos,
66
+ :path => “configuration.nix”,
67
+ :include => true
68
+ ```
69
+
70
+ You can enable verbose provision output during rebuild process with:
71
+
72
+ ```ruby
73
+ config.vm.provision :nixos,
74
+ :path => “configuration.nix”,
75
+ :verbose => true
76
+ ```
77
+
78
+ If you need to use functions or access values using dot syntax you can use the `Nix` module:
79
+
80
+ ```ruby
81
+ config.vm.provision :nixos, :expression => {
82
+ services: {
83
+ postgresql: {
84
+ enable: true,
85
+ package: Nix.pkgs.postgresql93,
86
+ enableTCPIP: true,
87
+ authentication: Nix.lib.mkForce(%{
88
+ local all all trust
89
+ host all all 127.0.0.1/32 trust
90
+ }),
91
+ initialScript: "/etc/nixos/postgres.sql"
92
+ }
93
+ }
94
+ }
95
+ ```
96
+
97
+
98
+ ## How it works
99
+
100
+ In nixos we don't mess around with the files in `/etc` instead we write expressions for the system configuration starting in `/etc/nixos/configuration.nix`.
101
+
102
+ This plugin sets some ground rules for nixos boxes to keep this configuration clean and provisioning possible.
103
+
104
+ Box creators should ensure that their `configuration.nix` file imports an nix module `/etc/nixos/vagrant.nix` which will be overwritten by `vagrant-nixos-plugin` during `vagrant up` or `vagrant provision`.
105
+
106
+ See the configuration in our [NixOS packer template](http://github.com/oxdi/nixos) for an example.
107
+
108
+ ## Issues
109
+
110
+ It's a bit slow on the initial boot/provision at the moment as it must run nixos-rebuild several times. This is far from ideal I'm sure I'll find a better place to hook in the rebuild step soon.
111
+
@@ -0,0 +1,3 @@
1
+ require 'rubygems'
2
+ require 'bundler/setup'
3
+ Bundler::GemHelper.install_tasks
@@ -0,0 +1,17 @@
1
+ require "vagrant-nixos/version"
2
+ require "vagrant-nixos/plugin"
3
+ require "vagrant-nixos/util"
4
+ require "vagrant-nixos/nix"
5
+
6
+ module VagrantPlugins
7
+ module Nixos
8
+ lib_path = Pathname.new(File.expand_path("../nixos", __FILE__))
9
+ autoload :Action, lib_path.join("action")
10
+ autoload :Errors, lib_path.join("errors")
11
+
12
+ # This returns the path to the source of this plugin.
13
+ def self.source_root
14
+ @source_root ||= Pathname.new(File.expand_path("../../../", __FILE__))
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,30 @@
1
+ require 'set'
2
+ require 'tempfile'
3
+
4
+
5
+ module VagrantPlugins
6
+ module Nixos
7
+ module Cap
8
+ class ChangeHostName
9
+ include Vagrant::Util
10
+
11
+ def self.nix_module(name)
12
+ <<-NIX
13
+ { config, pkgs, ... }:
14
+ {
15
+ networking.hostName = "#{name}";
16
+ }
17
+ NIX
18
+ end
19
+
20
+ def self.change_host_name(machine, name)
21
+ if Nixos.write_config(machine, "vagrant-hostname.nix", nix_module(name))
22
+ machine.env[:ui].info "Change host name to #{name}"
23
+ end
24
+ end
25
+
26
+ end
27
+ end
28
+ end
29
+ end
30
+
@@ -0,0 +1,56 @@
1
+ require 'set'
2
+ require 'tempfile'
3
+ require 'netaddr'
4
+
5
+ require "vagrant/util/template_renderer"
6
+
7
+ module VagrantPlugins
8
+ module Nixos
9
+ module Cap
10
+ class ConfigureNetworks
11
+ include Vagrant::Util
12
+
13
+ def self.nix_interface_expr(options)
14
+ addr = NetAddr::CIDR.create("#{options[:ip]} #{options[:netmask]}")
15
+ prefix_length = addr.netmask[1, addr.netmask.size]
16
+ <<-NIX
17
+ {
18
+ name = "eth#{options[:interface]}";
19
+ ipAddress = "#{options[:ip]}";
20
+ prefixLength = #{prefix_length};
21
+ }
22
+ NIX
23
+ end
24
+
25
+ def self.nix_module(networks)
26
+ exprs = networks.inject([]) do |exprs, network|
27
+ # Interfaces without an ip set will fallback to
28
+ # DHCP if useDHCP is set. So skip them.
29
+ if network[:ip].nil? or network[:ip].empty?
30
+ exprs
31
+ else
32
+ exprs << nix_interface_expr(network)
33
+ end
34
+ end
35
+ <<-NIX
36
+ { config, pkgs, ... }:
37
+ {
38
+ networking.usePredictableInterfaceNames = false;
39
+ networking.useDHCP = true;
40
+ networking.interfaces = [
41
+ #{exprs.join("\n")}
42
+ ];
43
+ }
44
+ NIX
45
+ end
46
+
47
+ def self.configure_networks(machine, networks)
48
+ if Nixos.write_config(machine, "vagrant-interfaces.nix", nix_module(networks))
49
+ machine.env.ui.info "Setting up network interfaces #{networks}"
50
+ end
51
+ end
52
+
53
+ end
54
+ end
55
+ end
56
+ end
@@ -0,0 +1,51 @@
1
+ module VagrantPlugins
2
+ module Nixos
3
+ class Config < Vagrant.plugin("2", :config)
4
+ attr_accessor :inline
5
+ attr_accessor :path
6
+ attr_accessor :expression
7
+ attr_accessor :include
8
+ attr_accessor :verbose
9
+ attr_accessor :NIX_PATH
10
+
11
+ def initialize
12
+ @inline = UNSET_VALUE
13
+ @path = UNSET_VALUE
14
+ @expression = UNSET_VALUE
15
+ @include = UNSET_VALUE
16
+ @verbose = UNSET_VALUE
17
+ @NIX_PATH = UNSET_VALUE
18
+ end
19
+
20
+ def finalize!
21
+ @inline = nil if @inline == UNSET_VALUE
22
+ @path = nil if @path == UNSET_VALUE
23
+ @expression = nil if @expression == UNSET_VALUE
24
+ @include = nil if @include == UNSET_VALUE
25
+ @verbose = nil if @verbose == UNSET_VALUE
26
+ @NIX_PATH = nil if @NIX_PATH == UNSET_VALUE
27
+ end
28
+
29
+ def expression=(v)
30
+ @expression = v.to_nix
31
+ end
32
+
33
+ def validate(machine)
34
+ errors = _detected_errors
35
+
36
+ if (path && inline) or (path && expression) or (inline && expression)
37
+ errors << "You can have one and only one of :path, :expression or :inline for nixos provisioner"
38
+ elsif !path && !inline && !expression
39
+ errors << "Missing :inline, :expression or :path for nixos provisioner"
40
+ end
41
+
42
+ if path && !File.exist?(path)
43
+ errors << "Invalid path #{path}"
44
+ end
45
+
46
+ { "nixos provisioner" => errors }
47
+ end
48
+
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,13 @@
1
+ module VagrantPlugins
2
+ module Nixos
3
+ class Guest < Vagrant.plugin("2", :guest)
4
+
5
+ attr_accessor :nix_imports
6
+
7
+ def detect?(machine)
8
+ machine.communicate.test("test -d /etc/nixos")
9
+ end
10
+
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,94 @@
1
+ #################################################
2
+ # Naughty extending of builtins.
3
+ # Add to_nix functions to convert ruby2nix (ish).
4
+ #################################################
5
+
6
+ module Nix
7
+ INDENT_STRING=" "
8
+
9
+ def self.method_missing(m, *args, &block)
10
+ NixBuilder.new(nil, m.to_sym, *args)
11
+ end
12
+
13
+ class NixBuilder
14
+
15
+ attr_accessor :exprs
16
+ attr_accessor :parent
17
+
18
+ def initialize(parent, expr, *args)
19
+ @parent = parent
20
+ @exprs = args.inject([expr]){|exs, e| exs << e}
21
+ end
22
+
23
+ def method_missing(m, *args, &block)
24
+ NixBuilder.new(self, m.to_sym, *args)
25
+ end
26
+
27
+ def to_nix(indent = 0)
28
+ s = ""
29
+ s << "(" if @exprs[0] == :import
30
+ if @parent
31
+ s = @parent.to_nix << "."
32
+ end
33
+ s << @exprs.map{|e| e.to_nix}.join(" ")
34
+ s << ")" if @exprs[0] == :import
35
+ s
36
+ end
37
+ end
38
+ end
39
+
40
+ class Symbol
41
+ def to_nix(indent = 0)
42
+ to_s
43
+ end
44
+ end
45
+
46
+ class NilClass
47
+ def to_nix(indent = 0)
48
+ "null"
49
+ end
50
+ end
51
+
52
+ class Hash
53
+ def to_nix(indent = 0)
54
+ "{\n" +
55
+ sort {|a, b| a[0].to_s <=> b[0].to_s}.map do |key, value|
56
+ raise "Key must be a Symbol, not #{key.class}" unless key.is_a?(Symbol)
57
+ Nix::INDENT_STRING * (indent + 1)+ key.to_nix +
58
+ " = " + value.to_nix(indent + 1) + ";"
59
+ end.join("\n") + "\n" +
60
+ Nix::INDENT_STRING * indent + "}"
61
+ end
62
+ end
63
+
64
+ class Array
65
+ def to_nix(indent = 0)
66
+ "[ " + map(&:to_nix).join(" ") + " ]"
67
+ end
68
+ end
69
+
70
+ class String
71
+ def to_nix(indent = 0)
72
+ return self if self.slice(0,2) == "./"
73
+ return %{''#{self}''} if self =~ /\n/
74
+ %{"#{self}"}
75
+ end
76
+ end
77
+
78
+ class Fixnum
79
+ def to_nix(indent = 0)
80
+ to_s
81
+ end
82
+ end
83
+
84
+ class TrueClass
85
+ def to_nix(indent = 0)
86
+ to_s
87
+ end
88
+ end
89
+
90
+ class FalseClass
91
+ def to_nix(indent = 0)
92
+ to_s
93
+ end
94
+ end
@@ -0,0 +1,52 @@
1
+ begin
2
+ require "vagrant"
3
+ rescue LoadError
4
+ raise "The Nixos plugin must be run within Vagrant."
5
+ end
6
+
7
+ # This is a sanity check to make sure no one is attempting to install
8
+ # this into an early Vagrant version.
9
+ if Vagrant::VERSION < "1.2.0"
10
+ raise "The Nixos plugin is only compatible with Vagrant 1.2+"
11
+ end
12
+
13
+ module VagrantPlugins
14
+ module Nixos
15
+
16
+ @@nix_imports = {}
17
+
18
+ class Plugin < Vagrant.plugin("2")
19
+ name "nixos"
20
+ description <<-DESC
21
+ This plugin installs nixos guest capabilities.
22
+ DESC
23
+
24
+ guest("nixos", "linux") do
25
+ require_relative "guest"
26
+ Guest
27
+ end
28
+
29
+ guest_capability("nixos", "configure_networks") do
30
+ require_relative "cap/configure_networks"
31
+ Cap::ConfigureNetworks
32
+ end
33
+
34
+ guest_capability("nixos", "change_host_name") do
35
+ require_relative "cap/change_host_name"
36
+ Cap::ChangeHostName
37
+ end
38
+
39
+ config :nixos, :provisioner do
40
+ require_relative "config"
41
+ Config
42
+ end
43
+
44
+ provisioner :nixos do
45
+ require_relative "provisioner"
46
+ Provisioner
47
+ end
48
+
49
+ end
50
+
51
+ end
52
+ end
@@ -0,0 +1,27 @@
1
+ module VagrantPlugins
2
+ module Nixos
3
+ class NixosConfigError < Vagrant::Errors::VagrantError
4
+ end
5
+
6
+ class Provisioner < Vagrant.plugin("2", :provisioner)
7
+ # This is the method called when the actual provisioning should be
8
+ # done. The communicator is guaranteed to be ready at this point,
9
+ # and any shared folders or networks are already setup.
10
+ #
11
+ # No return value is expected.
12
+ def provision
13
+ conf = if @config.inline
14
+ @config.inline
15
+ elsif @config.path
16
+ File.read(@config.path)
17
+ elsif @config.expression
18
+ "{config, pkgs, ...}: with pkgs; #{@config.expression}"
19
+ else
20
+ raise NixosConfigError, "Mising :path, :inline or :expression"
21
+ end
22
+ Nixos.write_config(machine, "vagrant-provision.nix", conf)
23
+ Nixos.rebuild!(machine, @config)
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,122 @@
1
+ module VagrantPlugins
2
+ module Nixos
3
+ ##############################################
4
+ # Not sure if this is legit. But We'll use this module
5
+ # to store the state of the nix configuration and handle
6
+ # sending it to the machine.
7
+ #############################################
8
+
9
+ @@imports = {}
10
+
11
+ # Send file to machine and report if it changed
12
+ # See _write_config
13
+ def self.write_config(machine, filename, conf)
14
+ include_config(machine, filename)
15
+ _write_config(machine, filename, conf)
16
+ end
17
+
18
+ # mark a file that should be imported to the main config
19
+ def self.include_config(machine, filename)
20
+ if @@imports[machine.id].nil?
21
+ @@imports[machine.id] = {}
22
+ end
23
+ @@imports[machine.id][filename] = true
24
+ end
25
+
26
+ def imports
27
+ end
28
+
29
+ # rebuild the base vagrant.nix configuration
30
+ def self.prepare(machine, config)
31
+ # build
32
+ conf = "{ config, pkgs, ... }:\n{"
33
+ # Add a mock provision file if it is missing as during boot the
34
+ # provisioning file may not be deployed yet.
35
+ if !machine.communicate.test("test -f /etc/nixos/vagrant-provision.nix")
36
+ _write_config(machine, "vagrant-provision.nix", "{ config, pkgs, ... }: {}")
37
+ end
38
+ # imports
39
+ include_config(machine, 'vagrant-provision.nix')
40
+ conf_paths =
41
+ @@imports[machine.id].keys.inject([]) do |paths, filename|
42
+ paths << "./#{filename}"
43
+ end
44
+ # construct the nix module
45
+ conf << %{
46
+ imports = [
47
+ #{conf_paths.join("\n\t\t")}
48
+ ];
49
+ }
50
+ # default NIX_PATH
51
+ if config.NIX_PATH
52
+ conf << %{
53
+ config.environment.shellInit = ''
54
+ export NIX_PATH=#{config.NIX_PATH}:$NIX_PATH
55
+ '';
56
+ }
57
+ end
58
+ conf << "}"
59
+ # output / build the config
60
+ _write_config(machine, "vagrant.nix", conf)
61
+ end
62
+
63
+ # just do nixos-rebuild
64
+ def self.rebuild!(machine, config)
65
+ self.prepare(machine, config)
66
+ # Add a tmp vagreant.nix file if it is missing
67
+ if !machine.communicate.test("grep 'provision' </etc/nixos/vagrant.nix")
68
+ _write_config(machine, "vagrant.nix", %{{ config, pkgs, ... }: { imports = [ ./vagrant-provision.nix ];}})
69
+ end
70
+ # rebuild
71
+ rebuild_cmd = "nixos-rebuild switch"
72
+ rebuild_cmd = "#{rebuild_cmd} -I nixos-config=/etc/nixos/vagrant.nix" if config.include
73
+ rebuild_cmd = "NIX_PATH=#{config.NIX_PATH}:$NIX_PATH #{rebuild_cmd}" if config.NIX_PATH
74
+
75
+ machine.communicate.tap do |comm|
76
+ comm.execute(rebuild_cmd, sudo: true) do |type, data|
77
+ if [:stderr, :stdout].include?(type)
78
+ # Output the data with the proper color based on the stream.
79
+ color = type == :stdout ? :green : :red
80
+
81
+ options = {
82
+ new_line: false,
83
+ prefix: false,
84
+ }
85
+ options[:color] = color
86
+
87
+ machine.env.ui.info(data, options) if config.verbose
88
+ end
89
+ end
90
+ end
91
+ end
92
+
93
+ def self.same?(machine, f1, f2)
94
+ machine.communicate.test("cmp --silent #{f1} #{f2}")
95
+ end
96
+
97
+ protected
98
+
99
+ # Send file to machine.
100
+ # Returns true if the uploaded file if different from any
101
+ # preexisting file, false if the file is indentical
102
+ def self._write_config(machine, filename, conf)
103
+ temp = Tempfile.new("vagrant")
104
+ temp.binmode
105
+ temp.write(conf)
106
+ temp.close
107
+ changed = true
108
+ machine.communicate.tap do |comm|
109
+ source = "/tmp/#{filename}"
110
+ target = "/etc/nixos/#{filename}"
111
+ comm.upload(temp.path, source)
112
+ if same?(machine, source, target)
113
+ changed = false
114
+ else
115
+ comm.sudo("mv #{source} #{target}")
116
+ end
117
+ end
118
+ return changed
119
+ end
120
+ end
121
+ end
122
+
@@ -0,0 +1,5 @@
1
+ module VagrantPlugins
2
+ module Nixos
3
+ VERSION = "0.0.6"
4
+ end
5
+ end
@@ -0,0 +1,24 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'vagrant-nixos/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "vagrant-nixos-plugin"
8
+ spec.version = VagrantPlugins::Nixos::VERSION
9
+ spec.authors = ["Chris Farmiloe"]
10
+ spec.email = ["chrisfarms@gmail.com"]
11
+ spec.summary = %q{Guest capabilities and nix provisioning for NixOS}
12
+ spec.description = %q{Add capabilities and basic nix configuration provisioning for NixOS guests in Vagrant}
13
+ spec.homepage = ""
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files -z`.split("\x0")
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_development_dependency "bundler", "~> 1.5"
22
+ spec.add_development_dependency "rake"
23
+ spec.add_dependency "netaddr"
24
+ end
metadata ADDED
@@ -0,0 +1,103 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: vagrant-nixos-plugin
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.6
5
+ platform: ruby
6
+ authors:
7
+ - Chris Farmiloe
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-09-01 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: '1.5'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: '1.5'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: netaddr
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ description: Add capabilities and basic nix configuration provisioning for NixOS guests
56
+ in Vagrant
57
+ email:
58
+ - chrisfarms@gmail.com
59
+ executables: []
60
+ extensions: []
61
+ extra_rdoc_files: []
62
+ files:
63
+ - .gitignore
64
+ - Gemfile
65
+ - LICENSE.txt
66
+ - README.md
67
+ - Rakefile
68
+ - lib/vagrant-nixos-plugin.rb
69
+ - lib/vagrant-nixos/cap/change_host_name.rb
70
+ - lib/vagrant-nixos/cap/configure_networks.rb
71
+ - lib/vagrant-nixos/config.rb
72
+ - lib/vagrant-nixos/guest.rb
73
+ - lib/vagrant-nixos/nix.rb
74
+ - lib/vagrant-nixos/plugin.rb
75
+ - lib/vagrant-nixos/provisioner.rb
76
+ - lib/vagrant-nixos/util.rb
77
+ - lib/vagrant-nixos/version.rb
78
+ - vagrant-nixos-plugin.gemspec
79
+ homepage: ''
80
+ licenses:
81
+ - MIT
82
+ metadata: {}
83
+ post_install_message:
84
+ rdoc_options: []
85
+ require_paths:
86
+ - lib
87
+ required_ruby_version: !ruby/object:Gem::Requirement
88
+ requirements:
89
+ - - '>='
90
+ - !ruby/object:Gem::Version
91
+ version: '0'
92
+ required_rubygems_version: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - '>='
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ requirements: []
98
+ rubyforge_project:
99
+ rubygems_version: 2.0.14
100
+ signing_key:
101
+ specification_version: 4
102
+ summary: Guest capabilities and nix provisioning for NixOS
103
+ test_files: []