Subject: [bug#65131] [PATCH 24/32] gnu: Add vagrant-vai.

From: Hartmut Goebel <[email-masked]>
Date: Mon, 7 Aug 2023 20:26:28 +0200

* gnu/packages/virtualization.scm (vagrant-vai): New variable.
---
 gnu/packages/virtualization.scm | 48 +++++++++++++++++++++++++++++++++
 1 file changed, 48 insertions(+)

diff --git a/gnu/packages/virtualization.scm b/gnu/packages/virtualization.scm
index d0b51a960d..d37844904c 100644
--- a/gnu/packages/virtualization.scm
+++ b/gnu/packages/virtualization.scm
@@ -87,6 +87,7 @@
   #:use-module (gnu packages golang)
   #:use-module (gnu packages graphviz)
   #:use-module (gnu packages gtk)
+  #:use-module (gnu packages guile)
   #:use-module (gnu packages haskell)
   #:use-module (gnu packages haskell-apps)
   #:use-module (gnu packages haskell-check)
@@ -2324,6 +2325,53 @@ conflicts when running on a `foreign distribution'.")
     (home-page "https://www.vagrantup.com")
     (license license:bsd-3)))
 
+(define-public vagrant-vai
+  (package
+    (name "vagrant-vai")
+    (version "0.9.3")
+    (source (origin
+              (method url-fetch)
+              (uri (rubygems-uri "vai" version))
+              (sha256
+               (base32
+                "041bi8hk03ybhacqzhw153j3knqhwvxn8aczzq6nikmpklcs4m4a"))))
+    (build-system ruby-build-system)
+    (arguments
+     (list
+      #:tests? #f ; tests involve running vagrant and downloading a box
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'install 'install-plugin.json
+            (lambda _
+              (let* ((plugins.d (string-append
+                                 #$output "/share/vagrant-plugins/plugins.d"))
+                     (plugin.json (string-append
+                                   plugins.d "/" #$name ".json")))
+                (mkdir-p plugins.d)
+                #$(with-extensions (list guile-json-4)
+                    #~(begin
+                        (use-modules (json))
+                        (call-with-output-file plugin.json
+                          (lambda (port)
+                            (scm->json
+                             '(("vai" ;; #$name
+                                .
+                                (("ruby_version"
+                                  . #$(package-version (this-package-input "ruby")))
+                                 ("vagrant_version"
+                                  . #$(package-version (this-package-input "vagrant")))
+                                 ("gem_version" .  "")
+                                 ("require" . "")
+                                 ("installed_gem_version" . #$version)
+                                 ("sources" . #()))))
+                             port)))))))))))
+    (inputs (list ruby vagrant))
+    (synopsis "Vagrant provisioning plugin to output an Ansible inventory")
+    (description "This plugin creates an Ansible inventory file containing the
+created virtual machines and the respective ssh-parameters.")
+    (home-page "https://github.com/MatthewMi11er/vai")
+    (license license:expat)))
+
 (define-public python-vagrant
   (package
     (name "python-vagrant")
-- 
2.30.9