diff options
| author | Raghuram Subramani <raghus2247@gmail.com> | 2024-06-08 13:47:01 +0530 | 
|---|---|---|
| committer | Raghuram Subramani <raghus2247@gmail.com> | 2024-06-08 13:47:01 +0530 | 
| commit | b192347b02fd0e4070a6d2e17cce97718d261594 (patch) | |
| tree | aed340d7eb9035b536e9d38a70b50627d3cccd1f | |
| parent | 145d1c7b4fa2e521711f018593771e18aa6644cf (diff) | |
update
| -rw-r--r-- | flake.lock | 12 | ||||
| -rw-r--r-- | machines/x/home.nix | 2 | ||||
| -rw-r--r-- | modules/virtualization.nix | 33 | ||||
| -rw-r--r-- | packages/vagrant/0001-Revert-Merge-pull-request-12225-from-chrisroberts-re.patch | 349 | ||||
| -rw-r--r-- | packages/vagrant/0004-Support-system-installed-plugins.patch | 93 | ||||
| -rw-r--r-- | packages/vagrant/default.nix | 122 | ||||
| -rw-r--r-- | packages/vagrant/gemset.nix | 652 | ||||
| -rw-r--r-- | packages/vagrant/gemset_libvirt.nix | 199 | ||||
| -rw-r--r-- | packages/vagrant/unofficial-installation-nowarn.patch | 16 | ||||
| -rw-r--r-- | packages/vagrant/use-system-bundler-version.patch | 13 | ||||
| -rw-r--r-- | packages/vagrant/vagrant-libvirt.json.in | 9 | 
11 files changed, 1462 insertions, 38 deletions
| @@ -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 <maximilian@mbosch.me> +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<Gem::Specification>, 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 <terceiro@debian.org> +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 `<module:I18n>': 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":[] +  } +} | 
