From b192347b02fd0e4070a6d2e17cce97718d261594 Mon Sep 17 00:00:00 2001 From: Raghuram Subramani Date: Sat, 8 Jun 2024 13:47:01 +0530 Subject: update --- flake.lock | 12 +- machines/x/home.nix | 2 - modules/virtualization.nix | 33 +- ...e-pull-request-12225-from-chrisroberts-re.patch | 349 +++++++++++ .../0004-Support-system-installed-plugins.patch | 93 +++ packages/vagrant/default.nix | 122 ++++ packages/vagrant/gemset.nix | 652 +++++++++++++++++++++ packages/vagrant/gemset_libvirt.nix | 199 +++++++ .../vagrant/unofficial-installation-nowarn.patch | 16 + packages/vagrant/use-system-bundler-version.patch | 13 + packages/vagrant/vagrant-libvirt.json.in | 9 + 11 files changed, 1462 insertions(+), 38 deletions(-) create mode 100644 packages/vagrant/0001-Revert-Merge-pull-request-12225-from-chrisroberts-re.patch create mode 100644 packages/vagrant/0004-Support-system-installed-plugins.patch create mode 100644 packages/vagrant/default.nix create mode 100644 packages/vagrant/gemset.nix create mode 100644 packages/vagrant/gemset_libvirt.nix create mode 100644 packages/vagrant/unofficial-installation-nowarn.patch create mode 100644 packages/vagrant/use-system-bundler-version.patch create mode 100644 packages/vagrant/vagrant-libvirt.json.in diff --git a/flake.lock b/flake.lock index 2e552d9..538dee2 100644 --- a/flake.lock +++ b/flake.lock @@ -7,11 +7,11 @@ ] }, "locked": { - "lastModified": 1717097707, - "narHash": "sha256-HC5vJ3oYsjwsCaSbkIPv80e4ebJpNvFKQTBOGlHvjLs=", + "lastModified": 1717525419, + "narHash": "sha256-5z2422pzWnPXHgq2ms8lcCfttM0dz+hg+x1pCcNkAws=", "owner": "nix-community", "repo": "home-manager", - "rev": "0eb314b4f0ba337e88123e0b1e57ef58346aafd9", + "rev": "a7117efb3725e6197dd95424136f79147aa35e5b", "type": "github" }, "original": { @@ -22,11 +22,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1716948383, - "narHash": "sha256-SzDKxseEcHR5KzPXLwsemyTR/kaM9whxeiJohbL04rs=", + "lastModified": 1717602782, + "narHash": "sha256-pL9jeus5QpX5R+9rsp3hhZ+uplVHscNJh8n8VpqscM0=", "owner": "nixos", "repo": "nixpkgs", - "rev": "ad57eef4ef0659193044870c731987a6df5cf56b", + "rev": "e8057b67ebf307f01bdcc8fba94d94f75039d1f6", "type": "github" }, "original": { diff --git a/machines/x/home.nix b/machines/x/home.nix index 958a951..114faef 100644 --- a/machines/x/home.nix +++ b/machines/x/home.nix @@ -34,8 +34,6 @@ in { ccls nodePackages.pyright git-lfs - - vagrant ] ++ [ tlauncher ]; imports = (map (path: ../../config/${path}) [ diff --git a/modules/virtualization.nix b/modules/virtualization.nix index caf9046..17b5a36 100644 --- a/modules/virtualization.nix +++ b/modules/virtualization.nix @@ -21,38 +21,11 @@ systemd.tmpfiles.rules = [ "f /dev/shm/looking-glass 0660 compromyse kvm -" ]; + environment.extraOutputsToInstall = [ "dev" ]; environment.systemPackages = [ pkgs.looking-glass-client - - (pkgs.writeShellScriptBin "bind-vfio" '' - modprobe -r nvidia_drm nvidia_modeset nvidia_uvm i2c_nvidia_gpu nvidia - - modprobe vfio - modprobe vfio_iommu_type1 - modprobe vfio_pci - - systemctl --user -M compromyse@ stop pipewire.service pipewire.socket - - virsh nodedev-detach pci_0000_01_00_0 - virsh nodedev-detach pci_0000_01_00_1 - - systemctl --user -M compromyse@ restart pipewire.service pipewire.socket - '') - - (pkgs.writeShellScriptBin "unbind-vfio" '' - systemctl --user -M compromyse@ stop pipewire.service pipewire.socket - - virsh nodedev-reattach pci_0000_01_00_0 - virsh nodedev-reattach pci_0000_01_00_1 - - systemctl --user -M compromyse@ restart pipewire.service pipewire.socket - - modprobe -r vfio_pci - modprobe -r vfio_iommu_type1 - modprobe -r vfio - - modprobe nvidia_drm nvidia_modeset nvidia_uvm i2c_nvidia_gpu nvidia - '') + pkgs.libvirt + pkgs.vagrant (pkgs.writeShellScriptBin "pin-cpu" '' if [[ $1 == "" ]]; then diff --git a/packages/vagrant/0001-Revert-Merge-pull-request-12225-from-chrisroberts-re.patch b/packages/vagrant/0001-Revert-Merge-pull-request-12225-from-chrisroberts-re.patch new file mode 100644 index 0000000..ae0b3f3 --- /dev/null +++ b/packages/vagrant/0001-Revert-Merge-pull-request-12225-from-chrisroberts-re.patch @@ -0,0 +1,349 @@ +From dc7156d8951242231cfd9142b3d5628815dc6589 Mon Sep 17 00:00:00 2001 +From: Maximilian Bosch +Date: Wed, 31 Mar 2021 14:30:01 +0200 +Subject: [PATCH] Revert "Merge pull request #12225 from + chrisroberts/resolution-isolation" + +This reverts commit 8a69d0c4dae035a4b1aa789bc4ec3db69c210df2, reversing +changes made to 5dd0a8c8acc36b654c13a5102e4327eedf1858f2. + +----- + +Rationale: NixOS-specific patch. The changes in here break our current +implementation of declarative plugins (only `vagrant-libvirt` atm). +--- + bin/vagrant | 28 +-------------- + lib/vagrant.rb | 2 +- + lib/vagrant/bundler.rb | 17 +++------ + lib/vagrant/errors.rb | 12 ------- + lib/vagrant/plugin/manager.rb | 22 ++---------- + templates/locales/en.yml | 23 ++---------- + test/unit/bin/vagrant_test.rb | 1 - + test/unit/vagrant/bundler_test.rb | 58 ++++++++++++++----------------- + 8 files changed, 39 insertions(+), 124 deletions(-) + +diff --git a/bin/vagrant b/bin/vagrant +index c019f30ff..ba7e40076 100755 +--- a/bin/vagrant ++++ b/bin/vagrant +@@ -23,9 +23,9 @@ if idx = argv.index("--") + argv = argv.slice(0, idx) + end + +-require_relative "../lib/vagrant/version" + # Fast path the version of Vagrant + if argv.include?("-v") || argv.include?("--version") ++ require_relative "../lib/vagrant/version" + puts "Vagrant #{Vagrant::VERSION}" + exit 0 + end +@@ -82,29 +82,6 @@ end + $stdout.sync = true + $stderr.sync = true + +-# Before we start activate all our dependencies +-# so we can provide correct resolutions later +-builtin_specs = [] +- +-vagrant_spec = Gem::Specification.find_all_by_name("vagrant").detect do |spec| +- spec.version == Gem::Version.new(Vagrant::VERSION) +-end +- +-dep_activator = proc do |spec| +- spec.runtime_dependencies.each do |dep| +- gem(dep.name, *dep.requirement.as_list) +- dep_spec = Gem::Specification.find_all_by_name(dep.name).detect(&:activated?) +- if dep_spec +- builtin_specs << dep_spec +- dep_activator.call(dep_spec) +- end +- end +-end +- +-if vagrant_spec +- dep_activator.call(vagrant_spec) +-end +- + env = nil + begin + require 'log4r' +@@ -114,9 +91,6 @@ begin + require 'vagrant/util/platform' + require 'vagrant/util/experimental' + +- # Set our list of builtin specs +- Vagrant::Bundler.instance.builtin_specs = builtin_specs +- + # Schedule the cleanup of things + at_exit(&Vagrant::Bundler.instance.method(:deinit)) + +diff --git a/lib/vagrant.rb b/lib/vagrant.rb +index f790039d3..97e67e3b8 100644 +--- a/lib/vagrant.rb ++++ b/lib/vagrant.rb +@@ -59,7 +59,7 @@ require "vagrant/plugin/manager" + # See https://github.com/rest-client/rest-client/issues/34#issuecomment-290858 + # for more information + class VagrantLogger < Log4r::Logger +- def << msg ++ def << (msg) + debug(msg.strip) + end + end +diff --git a/lib/vagrant/bundler.rb b/lib/vagrant/bundler.rb +index eb2caabb0..d75f54362 100644 +--- a/lib/vagrant/bundler.rb ++++ b/lib/vagrant/bundler.rb +@@ -189,11 +189,8 @@ module Vagrant + attr_reader :env_plugin_gem_path + # @return [Pathname] Vagrant environment data path + attr_reader :environment_data_path +- # @return [Array, nil] List of builtin specs +- attr_accessor :builtin_specs + + def initialize +- @builtin_specs = [] + @plugin_gem_path = Vagrant.user_data_path.join("gems", RUBY_VERSION).freeze + @logger = Log4r::Logger.new("vagrant::bundler") + end +@@ -290,6 +287,7 @@ module Vagrant + # Never allow dependencies to be remotely satisfied during init + request_set.remote = false + ++ repair_result = nil + begin + @logger.debug("resolving solution from available specification set") + # Resolve the request set to ensure proper activation order +@@ -652,6 +650,7 @@ module Vagrant + self_spec.activate + @logger.info("Activated vagrant specification version - #{self_spec.version}") + end ++ self_spec.runtime_dependencies.each { |d| gem d.name, *d.requirement.as_list } + # discover all the gems we have available + list = {} + if Gem.respond_to?(:default_specifications_dir) +@@ -660,16 +659,10 @@ module Vagrant + spec_dir = Gem::Specification.default_specifications_dir + end + directories = [spec_dir] +- if Vagrant.in_bundler? +- Gem::Specification.find_all{true}.each do |spec| +- list[spec.full_name] = spec +- end +- else +- builtin_specs.each do |spec| +- list[spec.full_name] = spec +- end ++ Gem::Specification.find_all{true}.each do |spec| ++ list[spec.full_name] = spec + end +- if Vagrant.in_installer? ++ if(!Object.const_defined?(:Bundler)) + directories += Gem::Specification.dirs.find_all do |path| + !path.start_with?(Gem.user_dir) + end +diff --git a/lib/vagrant/errors.rb b/lib/vagrant/errors.rb +index 5cb861c06..782615bc4 100644 +--- a/lib/vagrant/errors.rb ++++ b/lib/vagrant/errors.rb +@@ -636,18 +636,6 @@ module Vagrant + error_key(:provisioner_winrm_unsupported) + end + +- class PluginNeedsDeveloperTools < VagrantError +- error_key(:plugin_needs_developer_tools) +- end +- +- class PluginMissingLibrary < VagrantError +- error_key(:plugin_missing_library) +- end +- +- class PluginMissingRubyDev < VagrantError +- error_key(:plugin_missing_ruby_dev) +- end +- + class PluginGemNotFound < VagrantError + error_key(:plugin_gem_not_found) + end +diff --git a/lib/vagrant/plugin/manager.rb b/lib/vagrant/plugin/manager.rb +index b73f07f9c..9058e68b3 100644 +--- a/lib/vagrant/plugin/manager.rb ++++ b/lib/vagrant/plugin/manager.rb +@@ -179,26 +179,8 @@ module Vagrant + result + rescue Gem::GemNotFoundException + raise Errors::PluginGemNotFound, name: name +- rescue Gem::Exception => err +- @logger.warn("Failed to install plugin: #{err}") +- @logger.debug("#{err.class}: #{err}\n#{err.backtrace.join("\n")}") +- # Try and determine a cause for the failure +- case err.message +- when /install development tools first/ +- raise Errors::PluginNeedsDeveloperTools +- when /library not found in default locations/ +- lib = err.message.match(/(\w+) library not found in default locations/) +- if lib.nil? +- raise Errors::BundlerError, message: err.message +- end +- raise Errors::PluginMissingLibrary, +- library: lib.captures.first, +- name: name +- when /find header files for ruby/ +- raise Errors::PluginMissingRubyDev +- else +- raise Errors::BundlerError, message: err.message +- end ++ rescue Gem::Exception => e ++ raise Errors::BundlerError, message: e.to_s + end + + # Uninstalls the plugin with the given name. +diff --git a/templates/locales/en.yml b/templates/locales/en.yml +index edae9b477..782904f49 100644 +--- a/templates/locales/en.yml ++++ b/templates/locales/en.yml +@@ -794,9 +794,9 @@ en: + matching this provider. For example, if you're using VirtualBox, + the clone environment must also be using VirtualBox. + cloud_init_not_found: |- +- cloud-init is not found. Please ensure that cloud-init is installed and ++ cloud-init is not found. Please ensure that cloud-init is installed and + available on path for guest '%{guest_name}'. +- cloud_init_command_failed: |- ++ cloud_init_command_failed: |- + cloud init command '%{cmd}' failed on guest '%{guest_name}'. + command_deprecated: |- + The command 'vagrant %{name}' has been deprecated and is no longer functional +@@ -1245,30 +1245,6 @@ en: + following command: + + vagrant plugin install --local +- plugin_needs_developer_tools: |- +- Vagrant failed to install the requested plugin because development tools +- are required for installation but are not currently installed on this +- machine. Please install development tools and then try this command +- again. +- plugin_missing_library: |- +- Vagrant failed to install the requested plugin because it depends +- on development files for a library which is not currently installed +- on this system. The following library is required by the '%{name}' +- plugin: +- +- %{library} +- +- If a package manager is used on this system, please install the development +- package for the library. The name of the package will be similar to: +- +- %{library}-dev or %{library}-devel +- +- After the library and development files have been installed, please +- run the command again. +- plugin_missing_ruby_dev: |- +- Vagrant failed to install the requested plugin because the Ruby header +- files could not be found. Install the ruby development package for your +- system and then run this command again. + powershell_not_found: |- + Failed to locate the powershell executable on the available PATH. Please + ensure powershell is installed and available on the local PATH, then +@@ -3015,7 +2998,7 @@ en: + pushes: + file: + no_destination: "File destination must be specified." +- ++ + autocomplete: + installed: |- + Autocomplete installed at paths: +diff --git a/test/unit/bin/vagrant_test.rb b/test/unit/bin/vagrant_test.rb +index dbbd52112..bc11309aa 100644 +--- a/test/unit/bin/vagrant_test.rb ++++ b/test/unit/bin/vagrant_test.rb +@@ -30,7 +30,6 @@ describe "vagrant bin" do + allow(Kernel).to receive(:exit) + allow(Vagrant::Environment).to receive(:new).and_return(env) + allow(Vagrant).to receive(:in_installer?).and_return(true) +- allow(self).to receive(:require_relative) + end + + after { expect(run_vagrant).to eq(exit_code) } +diff --git a/test/unit/vagrant/bundler_test.rb b/test/unit/vagrant/bundler_test.rb +index 69f425c66..00cedc021 100644 +--- a/test/unit/vagrant/bundler_test.rb ++++ b/test/unit/vagrant/bundler_test.rb +@@ -778,46 +778,42 @@ describe Vagrant::Bundler do + end + end + +- context "when bundler is not defined" do +- before { expect(Vagrant).to receive(:in_bundler?).and_return(false) } ++ context "when run time dependencies are defined" do ++ let(:vagrant_dep_specs) { [double("spec", name: "vagrant-dep", requirement: double("spec-req", as_list: []))] } + +- context "when running inside the installer" do +- before { expect(Vagrant).to receive(:in_installer?).and_return(true) } ++ it "should call #gem to activate the dependencies" do ++ expect(subject).to receive(:gem).with("vagrant-dep", any_args) ++ subject.send(:vagrant_internal_specs) ++ end ++ end + +- it "should load gem specification directories" do +- expect(Gem::Specification).to receive(:dirs).and_return(spec_dirs) +- subject.send(:vagrant_internal_specs) +- end ++ context "when bundler is not defined" do ++ before { expect(Object).to receive(:const_defined?).with(:Bundler).and_return(false) } + +- context "when checking paths" do +- let(:spec_dirs) { [double("spec-dir", start_with?: in_user_dir)] } +- let(:in_user_dir) { true } +- let(:user_dir) { double("user-dir") } ++ it "should load gem specification directories" do ++ expect(Gem::Specification).to receive(:dirs).and_return(spec_dirs) ++ subject.send(:vagrant_internal_specs) ++ end + +- before { allow(Gem).to receive(:user_dir).and_return(user_dir) } ++ context "when checking paths" do ++ let(:spec_dirs) { [double("spec-dir", start_with?: in_user_dir)] } ++ let(:in_user_dir) { true } ++ let(:user_dir) { double("user-dir") } + +- it "should check if path is within local user directory" do +- expect(spec_dirs.first).to receive(:start_with?).with(user_dir).and_return(false) +- subject.send(:vagrant_internal_specs) +- end +- +- context "when path is not within user directory" do +- let(:in_user_dir) { false } ++ before { allow(Gem).to receive(:user_dir).and_return(user_dir) } + +- it "should use path when loading specs" do +- expect(Gem::Specification).to receive(:each_spec) { |arg| expect(arg).to include(spec_dirs.first) } +- subject.send(:vagrant_internal_specs) +- end +- end ++ it "should check if path is within local user directory" do ++ expect(spec_dirs.first).to receive(:start_with?).with(user_dir).and_return(false) ++ subject.send(:vagrant_internal_specs) + end +- end + +- context "when running outside the installer" do +- before { expect(Vagrant).to receive(:in_installer?).and_return(false) } ++ context "when path is not within user directory" do ++ let(:in_user_dir) { false } + +- it "should not load gem specification directories" do +- expect(Gem::Specification).not_to receive(:dirs) +- subject.send(:vagrant_internal_specs) ++ it "should use path when loading specs" do ++ expect(Gem::Specification).to receive(:each_spec) { |arg| expect(arg).to include(spec_dirs.first) } ++ subject.send(:vagrant_internal_specs) ++ end + end + end + end +-- +2.29.3 + diff --git a/packages/vagrant/0004-Support-system-installed-plugins.patch b/packages/vagrant/0004-Support-system-installed-plugins.patch new file mode 100644 index 0000000..fa6555c --- /dev/null +++ b/packages/vagrant/0004-Support-system-installed-plugins.patch @@ -0,0 +1,93 @@ +From: Antonio Terceiro +Date: Wed, 27 May 2015 09:36:17 -0300 +Subject: Support system-installed plugins +Source: https://salsa.debian.org/ruby-team/vagrant/-/blob/9d86f222/debian/patches/0004-Support-system-installed-plugins.patch + +Plugins must be installed as regular Ruby libraries, and they must +contain /usr/share/vagrant-plugins/plugins.d/$PLUGINNAME.json with the +following content: + +{ + "${PLUGINNAME}": { + "ruby_version":"$(ruby -e 'puts RUBY_VERSION')", + "vagrant_version":"$(cat /usr/share/vagrant/version.txt)", + "gem_version":"", + "require":"", + "sources":[] + } +} +--- + lib/vagrant/plugin/manager.rb | 4 ++-- + lib/vagrant/plugin/state_file.rb | 22 +++++++++++++++++++++- + 2 files changed, 23 insertions(+), 3 deletions(-) + +diff --git a/lib/vagrant/plugin/manager.rb b/lib/vagrant/plugin/manager.rb +index 9058e68..2772131 100644 +--- a/lib/vagrant/plugin/manager.rb ++++ b/lib/vagrant/plugin/manager.rb +@@ -18,7 +18,7 @@ module Vagrant + + # Returns the path to the [StateFile] for system plugins. + def self.system_plugins_file +- dir = Vagrant.installer_embedded_dir ++ dir = '@system_plugin_dir@' + return nil if !dir + Pathname.new(dir).join("plugins.json") + end +@@ -38,7 +38,7 @@ module Vagrant + + system_path = self.class.system_plugins_file + @system_file = nil +- @system_file = StateFile.new(system_path) if system_path && system_path.file? ++ @system_file = StateFile.new(system_path, true) if system_path && system_path.file? + + @local_file = nil + @globalized = @localized = false +diff --git a/lib/vagrant/plugin/state_file.rb b/lib/vagrant/plugin/state_file.rb +index c6872d4..935d431 100644 +--- a/lib/vagrant/plugin/state_file.rb ++++ b/lib/vagrant/plugin/state_file.rb +@@ -11,8 +11,9 @@ module Vagrant + # @return [Pathname] path to file + attr_reader :path + +- def initialize(path) ++ def initialize(path, system = false) + @path = path ++ @system = system + + @data = {} + if @path.exist? +@@ -28,6 +29,21 @@ module Vagrant + + @data["version"] ||= "1" + @data["installed"] ||= {} ++ load_extra_plugins ++ end ++ ++ def load_extra_plugins ++ extra_plugins = Dir.glob(@path.dirname.join('plugins.d', '*.json')) ++ extra_plugins.each do |filename| ++ json = File.read(filename) ++ begin ++ plugin_data = JSON.parse(json) ++ @data["installed"].merge!(plugin_data) ++ rescue JSON::ParserError => e ++ raise Vagrant::Errors::PluginStateFileParseError, ++ path: filename, message: e.message ++ end ++ end + end + + # Add a plugin that is installed to the state file. +@@ -107,6 +123,10 @@ module Vagrant + f.close + FileUtils.mv(f.path, @path) + end ++ rescue Errno::EACCES ++ # Ignore permission denied against system-installed plugins; regular ++ # users are not supposed to write there. ++ raise unless @system + end + + protected diff --git a/packages/vagrant/default.nix b/packages/vagrant/default.nix new file mode 100644 index 0000000..d8a8777 --- /dev/null +++ b/packages/vagrant/default.nix @@ -0,0 +1,122 @@ +{ stdenv, lib, fetchurl, buildRubyGem, bundlerEnv, ruby, libarchive +, libguestfs, qemu, writeText, withLibvirt ? stdenv.isLinux +, openssl +}: + +let + # NOTE: bumping the version and updating the hash is insufficient; + # you must use bundix to generate a new gemset.nix in the Vagrant source. + version = "2.4.1"; + url = "https://github.com/hashicorp/vagrant/archive/v${version}.tar.gz"; + hash = "sha256-Gc+jBuP/rl3b8wUE9hoaMSSqmodyGxMKFAmNTqH+v4k="; + + deps = bundlerEnv rec { + name = "${pname}-${version}"; + pname = "vagrant"; + inherit version; + + inherit ruby; + gemfile = writeText "Gemfile" ""; + lockfile = writeText "Gemfile.lock" ""; + gemset = lib.recursiveUpdate (import ./gemset.nix) ({ + vagrant = { + source = { + type = "url"; + inherit url hash; + }; + inherit version; + }; + } // lib.optionalAttrs withLibvirt (import ./gemset_libvirt.nix)); + + # This replaces the gem symlinks with directories, resolving this + # error when running vagrant (I have no idea why): + # /nix/store/p4hrycs0zaa9x0gsqylbk577ppnryixr-vagrant-2.2.6/lib/ruby/gems/2.6.0/gems/i18n-1.1.1/lib/i18n/config.rb:6:in `': uninitialized constant I18n::Config (NameError) + postBuild = '' + for gem in "$out"/lib/ruby/gems/*/gems/*; do + cp -a "$gem/" "$gem.new" + rm "$gem" + # needed on macOS, otherwise the mv yields permission denied + chmod +w "$gem.new" + mv "$gem.new" "$gem" + done + ''; + }; + +in buildRubyGem rec { + name = "${gemName}-${version}"; + gemName = "vagrant"; + inherit version; + + doInstallCheck = true; + dontBuild = false; + src = fetchurl { inherit url hash; }; + + # Some reports indicate that some connection types, particularly + # WinRM, suffer from "Digest initialization failed" errors. Adding + # openssl as a build input resolves this runtime error. + buildInputs = [ openssl ]; + + patches = [ + ./unofficial-installation-nowarn.patch + ./use-system-bundler-version.patch + ./0004-Support-system-installed-plugins.patch + ./0001-Revert-Merge-pull-request-12225-from-chrisroberts-re.patch + ]; + + postPatch = '' + substituteInPlace lib/vagrant/plugin/manager.rb --subst-var-by \ + system_plugin_dir "$out/vagrant-plugins" + ''; + + # PATH additions: + # - libarchive: Make `bsdtar` available for extracting downloaded boxes + # withLibvirt only: + # - libguestfs: Make 'virt-sysprep' available for 'vagrant package' + # - qemu: Make 'qemu-img' available for 'vagrant package' + postInstall = + let + pathAdditions = lib.makeSearchPath "bin" + (map (x: lib.getBin x) ([ + libarchive + ] ++ lib.optionals withLibvirt [ + libguestfs + qemu + ])); + in '' + wrapProgram "$out/bin/vagrant" \ + --set GEM_PATH "${deps}/lib/ruby/gems/${ruby.version.libDir}" \ + --prefix PATH ':' ${pathAdditions} \ + --set-default VAGRANT_CHECKPOINT_DISABLE 1 + + mkdir -p "$out/vagrant-plugins/plugins.d" + echo '{}' > "$out/vagrant-plugins/plugins.json" + + # install bash completion + mkdir -p $out/share/bash-completion/completions/ + cp -av contrib/bash/completion.sh $out/share/bash-completion/completions/vagrant + # install zsh completion + mkdir -p $out/share/zsh/site-functions/ + cp -av contrib/zsh/_vagrant $out/share/zsh/site-functions/ + '' + + lib.optionalString withLibvirt '' + substitute ${./vagrant-libvirt.json.in} $out/vagrant-plugins/plugins.d/vagrant-libvirt.json \ + --subst-var-by ruby_version ${ruby.version} \ + --subst-var-by vagrant_version ${version} + ''; + + installCheckPhase = '' + HOME="$(mktemp -d)" $out/bin/vagrant init --output - > /dev/null + ''; + + passthru = { + inherit ruby deps; + }; + + meta = with lib; { + description = "A tool for building complete development environments"; + homepage = "https://www.vagrantup.com/"; + license = licenses.bsl11; + maintainers = with maintainers; [ tylerjl ]; + platforms = with platforms; linux ++ darwin; + }; +} diff --git a/packages/vagrant/gemset.nix b/packages/vagrant/gemset.nix new file mode 100644 index 0000000..d69322b --- /dev/null +++ b/packages/vagrant/gemset.nix @@ -0,0 +1,652 @@ +{ + bcrypt_pbkdf = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0ndamfaivnkhc6hy0yqyk2gkwr6f3bz6216lh74hsiiyk3axz445"; + type = "gem"; + }; + version = "1.1.0"; + }; + bigdecimal = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "00db5v09k1z3539g1zrk7vkjrln9967k08adh6qx33ng97a2gg5w"; + type = "gem"; + }; + version = "3.1.6"; + }; + builder = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "045wzckxpwcqzrjr353cxnyaxgf0qg22jh00dcx7z38cys5g1jlr"; + type = "gem"; + }; + version = "3.2.4"; + }; + childprocess = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1lvcp8bsd35g57f7wz4jigcw2sryzzwrpcgjwwf3chmjrjcww5in"; + type = "gem"; + }; + version = "4.1.0"; + }; + concurrent-ruby = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1qh1b14jwbbj242klkyz5fc7npd4j0mvndz62gajhvl1l3wd7zc2"; + type = "gem"; + }; + version = "1.2.3"; + }; + date = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "149jknsq999gnhy865n33fkk22s0r447k76x9pmcnnwldfv2q7wp"; + type = "gem"; + }; + version = "3.3.4"; + }; + diff-lcs = { + groups = ["default" "development"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1znxccz83m4xgpd239nyqxlifdb7m8rlfayk6s259186nkgj6ci7"; + type = "gem"; + }; + version = "1.5.1"; + }; + ed25519 = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0zb2dr2ihb1qiknn5iaj1ha1w9p7lj9yq5waasndlfadz225ajji"; + type = "gem"; + }; + version = "1.3.0"; + }; + erubi = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "08s75vs9cxlc4r1q2bjg4br8g9wc5lc5x5vl0vv4zq5ivxsdpgi7"; + type = "gem"; + }; + version = "1.12.0"; + }; + excon = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1kmmwgjzlrnc3nnrdnw1z67c95nbw0hv54a73yj8jw6pcvl9585x"; + type = "gem"; + }; + version = "0.109.0"; + }; + fake_ftp = { + groups = ["development"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1zl9q9m4x7lz9890g0h1qqj7hcxnwzpjfnfbxadjblps7b5054q4"; + type = "gem"; + }; + version = "0.3.0"; + }; + ffi = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1yvii03hcgqj30maavddqamqy50h7y6xcn2wcyq72wn823zl4ckd"; + type = "gem"; + }; + version = "1.16.3"; + }; + google-protobuf = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1mnxzcq8kmyfb9bkzqnp019d1hx1vprip3yzdkkha6b3qz5rgg9r"; + type = "gem"; + }; + version = "3.25.3"; + }; + googleapis-common-protos-types = { + dependencies = ["google-protobuf"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1zrxnv9s2q39f2nh32x7nbfi8lpwzmmn3ji4adglg8dlfr1xrz16"; + type = "gem"; + }; + version = "1.13.0"; + }; + grpc = { + dependencies = ["google-protobuf" "googleapis-common-protos-types"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1ndyis4hyq5wyypvy5j2pxaax73k9xd9cdsc5hyvpk3vbnn26rdb"; + type = "gem"; + }; + version = "1.56.2"; + }; + grpc-tools = { + groups = ["development"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0pwwsmw402y8f8l3s3v433lx1f3cahzh2bj3i6jhkg1z87z83pqm"; + type = "gem"; + }; + version = "1.62.0"; + }; + gssapi = { + dependencies = ["ffi"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1qdfhj12aq8v0y961v4xv96a1y2z80h3xhvzrs9vsfgf884g6765"; + type = "gem"; + }; + version = "1.3.1"; + }; + gyoku = { + dependencies = ["builder" "rexml"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1kd2q59xpm39hpvmmvyi6g3f1fr05xjbnxwkrdqz4xy7hirqi79q"; + type = "gem"; + }; + version = "1.4.0"; + }; + hashicorp-checkpoint = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1z6mwzvd7p2wqhmk07dwrhvm0ncgqm7pxn0pr2k025rwsspp9bsd"; + type = "gem"; + }; + version = "0.1.5"; + }; + httpclient = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "19mxmvghp7ki3klsxwrlwr431li7hm1lczhhj8z4qihl2acy8l99"; + type = "gem"; + }; + version = "2.8.3"; + }; + i18n = { + dependencies = ["concurrent-ruby"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0qaamqsh5f3szhcakkak8ikxlzxqnv49n2p7504hcz2l0f4nj0wx"; + type = "gem"; + }; + version = "1.14.1"; + }; + ipaddr = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0p98v9b6rn5ma04qwvzs0nrg0hmnwpm70s9jshzdsrkqapcw4sh2"; + type = "gem"; + }; + version = "1.2.6"; + }; + listen = { + dependencies = ["rb-fsevent" "rb-inotify"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0rwwsmvq79qwzl6324yc53py02kbrcww35si720490z5w0j497nv"; + type = "gem"; + }; + version = "3.9.0"; + }; + little-plugger = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1frilv82dyxnlg8k1jhrvyd73l6k17mxc5vwxx080r4x1p04gwym"; + type = "gem"; + }; + version = "1.1.4"; + }; + log4r = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0ri90q0frfmigkirqv5ihyrj59xm8pq5zcmf156cbdv4r4l2jicv"; + type = "gem"; + }; + version = "1.1.10"; + }; + logging = { + dependencies = ["little-plugger" "multi_json"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1zflchpx4g8c110gjdcs540bk5a336nq6nmx379rdg56xw0pjd02"; + type = "gem"; + }; + version = "2.3.1"; + }; + mime-types = { + dependencies = ["mime-types-data"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1r64z0m5zrn4k37wabfnv43wa6yivgdfk6cf2rpmmirlz889yaf1"; + type = "gem"; + }; + version = "3.5.2"; + }; + mime-types-data = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0zpn5brxdf5akh7ij511bkrd30fxd7697shmxxszahqj9m62zvn5"; + type = "gem"; + }; + version = "3.2024.0206"; + }; + multi_json = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0pb1g1y3dsiahavspyzkdy39j4q377009f6ix0bh1ag4nqw43l0z"; + type = "gem"; + }; + version = "1.15.0"; + }; + net-ftp = { + dependencies = ["net-protocol" "time"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1pi67ywf8yvv18vr8kvyb1igdv8nsjafyy9c86fny5wvi10qcwqv"; + type = "gem"; + }; + version = "0.3.4"; + }; + net-protocol = { + dependencies = ["timeout"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1a32l4x73hz200cm587bc29q8q9az278syw3x6fkc9d1lv5y0wxa"; + type = "gem"; + }; + version = "0.2.2"; + }; + net-scp = { + dependencies = ["net-ssh"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1si2nq9l6jy5n2zw1q59a5gaji7v9vhy8qx08h4fg368906ysbdk"; + type = "gem"; + }; + version = "4.0.0"; + }; + net-sftp = { + dependencies = ["net-ssh"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0r33aa2d61hv1psm0l0mm6ik3ycsnq8symv7h84kpyf2b7493fv5"; + type = "gem"; + }; + version = "4.0.0"; + }; + net-ssh = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1i01340c4i144vvn3x54lc2rb77ch829qipl1rh6rqwm3yxzml9w"; + type = "gem"; + }; + version = "7.2.1"; + }; + nori = { + dependencies = ["bigdecimal"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "12wfv36jzc0978ij5c56nnfh5k8ax574njawigs98ysmp1x5s2ql"; + type = "gem"; + }; + version = "2.7.0"; + }; + pairing_heap = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "059kqpw53cancnp0bp7y1s74y1955riw33w3lqfbnms4b4mdh5zj"; + type = "gem"; + }; + version = "3.1.0"; + }; + rake = { + groups = ["development"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1ilr853hawi09626axx0mps4rkkmxcs54mapz9jnqvpnlwd3wsmy"; + type = "gem"; + }; + version = "13.1.0"; + }; + rake-compiler = { + dependencies = ["rake"]; + groups = ["development"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1vhdkwblhzp4wp1jh95qiibly2zsnmg3659r6d5xp1mzgd9ghxji"; + type = "gem"; + }; + version = "1.2.7"; + }; + rb-fsevent = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1zmf31rnpm8553lqwibvv3kkx0v7majm1f341xbxc0bk5sbhp423"; + type = "gem"; + }; + version = "0.11.2"; + }; + rb-inotify = { + dependencies = ["ffi"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1jm76h8f8hji38z3ggf4bzi8vps6p7sagxn3ab57qc0xyga64005"; + type = "gem"; + }; + version = "0.10.1"; + }; + rb-kqueue = { + dependencies = ["ffi"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0vpq1dmmlbggfk399s7jq2rrnjp6r8774amfli75bqhjn1sk2bxg"; + type = "gem"; + }; + version = "0.2.8"; + }; + rexml = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "05i8518ay14kjbma550mv0jm8a6di8yp5phzrd8rj44z9qnrlrp0"; + type = "gem"; + }; + version = "3.2.6"; + }; + rgl = { + dependencies = ["pairing_heap" "rexml" "stream"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0jjc2v9hg42bzg6w5yg3azrsdr31qmc6ff93xb5adfjqg337vzz3"; + type = "gem"; + }; + version = "0.5.10"; + }; + rspec = { + dependencies = ["rspec-core" "rspec-expectations" "rspec-mocks"]; + groups = ["development"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "14xrp8vq6i9zx37vh0yp4h9m0anx9paw200l1r5ad9fmq559346l"; + type = "gem"; + }; + version = "3.13.0"; + }; + rspec-core = { + dependencies = ["rspec-support"]; + groups = ["default" "development"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0k252n7s80bvjvpskgfm285a3djjjqyjcarlh3aq7a4dx2s94xsm"; + type = "gem"; + }; + version = "3.13.0"; + }; + rspec-expectations = { + dependencies = ["diff-lcs" "rspec-support"]; + groups = ["default" "development"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0bhhjzwdk96vf3gq3rs7mln80q27fhq82hda3r15byb24b34h7b2"; + type = "gem"; + }; + version = "3.13.0"; + }; + rspec-its = { + dependencies = ["rspec-core" "rspec-expectations"]; + groups = ["development"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "15zafd70gxly5i0s00nky14sj2n92dnj3xpj83ysl3c2wx0119ad"; + type = "gem"; + }; + version = "1.3.0"; + }; + rspec-mocks = { + dependencies = ["diff-lcs" "rspec-support"]; + groups = ["default" "development"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0rkzkcfk2x0qjr5fxw6ib4wpjy0hqbziywplnp6pg3bm2l98jnkk"; + type = "gem"; + }; + version = "3.13.0"; + }; + rspec-support = { + groups = ["default" "development"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "03z7gpqz5xkw9rf53835pa8a9vgj4lic54rnix9vfwmp2m7pv1s8"; + type = "gem"; + }; + version = "3.13.1"; + }; + rubyntlm = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0b8hczk8hysv53ncsqzx4q6kma5gy5lqc7s5yx8h64x3vdb18cjv"; + type = "gem"; + }; + version = "0.6.3"; + }; + rubyzip = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0grps9197qyxakbpw02pda59v45lfgbgiyw48i0mq9f2bn9y6mrz"; + type = "gem"; + }; + version = "2.3.2"; + }; + stream = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "016m9v81vpj14d8g5ins91zc4pzl7vf5f1gxl7jhfsfy601k7cv2"; + type = "gem"; + }; + version = "0.5.5"; + }; + thor = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0d1g37j6sc7fkidf8rqlm3wh9zgyg3g7y8h2x1y34hmil5ywa8c3"; + type = "gem"; + }; + version = "0.18.1"; + }; + time = { + dependencies = ["date"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0c15v19hyxjcfzaviqlwhgajgyrrlb0pjilza6mkv49bhspy6av6"; + type = "gem"; + }; + version = "0.3.0"; + }; + timeout = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "16mvvsmx90023wrhf8dxc1lpqh0m8alk65shb7xcya6a9gflw7vg"; + type = "gem"; + }; + version = "0.4.1"; + }; + vagrant-spec = { + dependencies = ["childprocess" "log4r" "rspec" "thor"]; + groups = ["default"]; + platforms = []; + source = { + fetchSubmodules = false; + rev = "2a5afa7512753288b4ec1e26ec13bc6479b2fabb"; + sha256 = "08l0qc7566126pqwn3cr91j5wgd2zqij8sacngr5yfsk2anl8fw0"; + type = "git"; + url = "https://github.com/hashicorp/vagrant-spec.git"; + }; + version = "0.0.1"; + }; + vagrant_cloud = { + dependencies = ["excon" "log4r" "rexml"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0jhwciki5i8hjbgv2f1p544bi92s9wdsfrjympzslysdzk95djpg"; + type = "gem"; + }; + version = "3.1.1"; + }; + wdm = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0x5l2pn4x92734k6i2wcjbn2klmwgkiqaajvxadh35k74dgnyh18"; + type = "gem"; + }; + version = "0.1.1"; + }; + webrick = { + groups = ["development"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1d4cvgmxhfczxiq5fr534lmizkhigd15bsx5719r5ds7k7ivisc7"; + type = "gem"; + }; + version = "1.7.0"; + }; + winrm = { + dependencies = ["builder" "erubi" "gssapi" "gyoku" "httpclient" "logging" "nori" "rubyntlm"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0nxf6a47d1xf1nvi7rbfbzjyyjhz0iakrnrsr2hj6y24a381sd8i"; + type = "gem"; + }; + version = "2.3.6"; + }; + winrm-elevated = { + dependencies = ["erubi" "winrm" "winrm-fs"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1lmlaii8qapn84wxdg5d82gbailracgk67d0qsnbdnffcg8kswzd"; + type = "gem"; + }; + version = "1.2.3"; + }; + winrm-fs = { + dependencies = ["erubi" "logging" "rubyzip" "winrm"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0gb91k6s1yjqw387x4w1nkpnxblq3pjdqckayl0qvz5n3ygdsb0d"; + type = "gem"; + }; + version = "1.3.5"; + }; +} diff --git a/packages/vagrant/gemset_libvirt.nix b/packages/vagrant/gemset_libvirt.nix new file mode 100644 index 0000000..16b88ff --- /dev/null +++ b/packages/vagrant/gemset_libvirt.nix @@ -0,0 +1,199 @@ +{ + builder = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "045wzckxpwcqzrjr353cxnyaxgf0qg22jh00dcx7z38cys5g1jlr"; + type = "gem"; + }; + version = "3.2.4"; + }; + excon = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1rv2hq29lx2337214a1p2qy70fi77ch6p0p77nw9h6x84q028qr0"; + type = "gem"; + }; + version = "0.92.3"; + }; + fog-core = { + dependencies = ["builder" "excon" "formatador" "mime-types"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "06m6hxq8vspx9h9bgc2s19m56jzasvl45vblrfv1q5h1qg1k6amw"; + type = "gem"; + }; + version = "2.3.0"; + }; + fog-json = { + dependencies = ["fog-core" "multi_json"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1zj8llzc119zafbmfa4ai3z5s7c4vp9akfs0f9l2piyvcarmlkyx"; + type = "gem"; + }; + version = "1.2.0"; + }; + fog-libvirt = { + dependencies = ["fog-core" "fog-json" "fog-xml" "json" "ruby-libvirt"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "sha256-z0VkRqFk3JU02ULQ+xQbywekzrJgz1YPDul//Ov5ajU="; + type = "gem"; + }; + version = "0.11.0"; + }; + fog-xml = { + dependencies = ["fog-core" "nokogiri"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1vyyb2429xqzys39xyk2r3fal80qqn397aj2kqsjrgg2y6m59i41"; + type = "gem"; + }; + version = "0.1.4"; + }; + formatador = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1l06bv4avphbdmr1y4g0rqlczr38k6r65b3zghrbj2ynyhm3xqjl"; + type = "gem"; + }; + version = "1.1.0"; + }; + json = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1z9grvjyfz16ag55hg522d3q4dh07hf391sf9s96npc0vfi85xkz"; + type = "gem"; + }; + version = "2.6.1"; + }; + mime-types = { + dependencies = ["mime-types-data"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0ipw892jbksbxxcrlx9g5ljq60qx47pm24ywgfbyjskbcl78pkvb"; + type = "gem"; + }; + version = "3.4.1"; + }; + mime-types-data = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "003gd7mcay800k2q4pb2zn8lwwgci4bhi42v2jvlidm8ksx03i6q"; + type = "gem"; + }; + version = "3.2022.0105"; + }; + mini_portile2 = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "sha256-RrLSRMxv8BqJv2EnRpDAn9vcpHqErp6sOQOegSMa7nw="; + type = "gem"; + }; + version = "2.8.2"; + }; + multi_json = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0pb1g1y3dsiahavspyzkdy39j4q377009f6ix0bh1ag4nqw43l0z"; + type = "gem"; + }; + version = "1.15.0"; + }; + nokogiri = { + dependencies = ["mini_portile2" "racc"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "sha256-INyAC4++TE9LWxZOaqOrgqNxvLJ+toXBZpYcNN2KItc="; + type = "gem"; + }; + version = "1.15.2"; + }; + racc = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "sha256-r2QSSDb908AOgwcD1/hz6l3qvekj83AGo59aXg2hY4c="; + type = "gem"; + }; + version = "1.7.1"; + }; + rexml = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "08ximcyfjy94pm1rhcx04ny1vx2sk0x4y185gzn86yfsbzwkng53"; + type = "gem"; + }; + version = "3.2.5"; + }; + xml-simple = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "sha256-0hEx5RnIbxpbwrbS1X1G5pmOR/GO0kmyXK2GQz29aV0="; + type = "gem"; + }; + version = "1.1.9"; + }; + diffy = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "sha256-NrQv++UTjdxWGCEHwkrY1rBm7P0odoKfOR46SZPYmuE="; + type = "gem"; + }; + version = "3.4.2"; + }; + ruby-libvirt = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0rnmbfhdz270fky0cm8w1i73gkrnlf3s1hdkm5yxjkdbvapwvjsd"; + type = "gem"; + }; + version = "0.8.0"; + }; + vagrant-libvirt = { + dependencies = ["fog-core" "fog-libvirt" "nokogiri" "rexml" "xml-simple" "diffy"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.pkg.github.com/compromyse"]; + sha256 = ""; + type = "gem"; + }; + version = "1.0.0"; + }; +} diff --git a/packages/vagrant/unofficial-installation-nowarn.patch b/packages/vagrant/unofficial-installation-nowarn.patch new file mode 100644 index 0000000..0ea8b51 --- /dev/null +++ b/packages/vagrant/unofficial-installation-nowarn.patch @@ -0,0 +1,16 @@ +diff --git a/bin/vagrant b/bin/vagrant +index 7ca30b391..d3f4ea61a 100755 +--- a/bin/vagrant ++++ b/bin/vagrant +@@ -221,11 +221,6 @@ begin + end + end + +- if !Vagrant.in_installer? && !Vagrant.very_quiet? +- # If we're not in the installer, warn. +- env.ui.warn(I18n.t("vagrant.general.not_in_installer") + "\n", prefix: false) +- end +- + # Acceptable experimental flag values include: + # + # Unset - Disables experimental features diff --git a/packages/vagrant/use-system-bundler-version.patch b/packages/vagrant/use-system-bundler-version.patch new file mode 100644 index 0000000..8262220 --- /dev/null +++ b/packages/vagrant/use-system-bundler-version.patch @@ -0,0 +1,13 @@ +diff --git a/lib/vagrant/bundler.rb b/lib/vagrant/bundler.rb +index 336ac1e05..1bfd84c0d 100644 +--- a/lib/vagrant/bundler.rb ++++ b/lib/vagrant/bundler.rb +@@ -470,7 +470,7 @@ module Vagrant + source_list = {} + system_plugins = plugins.map do |plugin_name, plugin_info| + plugin_name if plugin_info["system"] +- end.compact ++ end.compact << "bundler" + installer_set = VagrantSet.new(:both) + installer_set.system_plugins = system_plugins + diff --git a/packages/vagrant/vagrant-libvirt.json.in b/packages/vagrant/vagrant-libvirt.json.in new file mode 100644 index 0000000..22060e1 --- /dev/null +++ b/packages/vagrant/vagrant-libvirt.json.in @@ -0,0 +1,9 @@ +{ + "vagrant-libvirt": { + "ruby_version":"@ruby_version@", + "vagrant_version":"@vagrant_version@", + "gem_version":"", + "require":"", + "sources":[] + } +} -- cgit v1.2.3