gnu: Add VMware open-vm-tools.

* gnu/packages/virtualization.scm (vmware-open-vm-tools,
vmware-open-vm-tools-gtk): New variables.

Signed-off-by: Andrew Tropin <andrew@trop.in>
This commit is contained in:
Sharlatan Hellseher 2023-09-17 12:06:28 +01:00 committed by Andrew Tropin
parent 6fff96434d
commit 0648e20c09
No known key found for this signature in database
GPG key ID: 2208D20958C1DEB0

View file

@ -30,6 +30,7 @@
;;; Copyright © 2022 Zhu Zihao <all_but_last@163.com>
;;; Copyright © 2023 Juliana Sims <juli@incana.org>
;;; Copyright © 2023 Ahmad Draidi <a.r.draidi@redscript.org>
;;; Copyright © 2023 Sharlatan Hellseher <sharlatanus@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@ -65,6 +66,7 @@ (define-module (gnu packages virtualization)
#:use-module (gnu packages compression)
#:use-module (gnu packages containers)
#:use-module (gnu packages cross-base)
#:use-module (gnu packages crypto)
#:use-module (gnu packages cryptsetup)
#:use-module (gnu packages curl)
#:use-module (gnu packages cyrus-sasl)
@ -1722,6 +1724,156 @@ (define-public virt-manager
domains, their live performance and resource utilization statistics.")
(license license:gpl2+)))
(define-public vmware-open-vm-tools
(package
(name "vmware-open-vm-tools")
(version "12.3.0")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/vmware/open-vm-tools")
(commit (string-append "stable-" version))))
(file-name (git-file-name name version))
(sha256
(base32 "1hbimhady0v1kd45azknl1lgzgldhgdjd7bj540rn3y4cai5cnk1"))))
(build-system gnu-build-system)
(arguments
(list
#:configure-flags
#~(list "--with-fuse=fuse3"
"--without-kernel-modules"
"--without-x"
(string-append
"--with-udev-rules-dir=" #$output "/lib/udev/rules.d"))
;; TODO: Add iproute2 dbus which commands wrap.
#:phases
#~(modify-phases %standard-phases
(add-after 'unpack 'chdir
(lambda _
(chdir "open-vm-tools")))
(replace 'bootstrap
(lambda _
(system* "autoreconf" "-if")))
(add-after 'bootstrap 'patch-paths
(lambda _
(substitute* "Makefile.am"
(("/etc/vmware-tools/")
(string-append #$output "/etc/vmware-tools/")))
(substitute* "scripts/Makefile.am"
(("/etc/vmware-tools")
(string-append #$output "/etc/vmware-tools"))
(("/usr/bin")
(string-append #$output "/bin")))
(substitute* "services/vmtoolsd/Makefile.am"
(("/etc/vmware-tools")
(string-append #$output "/etc/vmware-tools"))
(("\\$\\(PAM_PREFIX\\)")
(string-append #$output "/$(PAM_PREFIX)")))
(substitute* "vgauth/service/Makefile.am"
(("/etc/vmware-tools/vgauth/schemas")
(string-append #$output "/etc/vmware-tools/vgauth/schemas"))
(("etc/vmware-tools/vgauth.conf")
(string-append #$output "/etc/vmware-tools/vgauth.conf")))
(substitute* "vmhgfs-fuse/config.c"
(("/bin/fusermount3")
(string-append
#$(this-package-input "fuse") "/bin/fusermount3")))
;; XXX: This part might need more testing with shutdown and halt
;; commands provided by Shepherd.
(substitute* "lib/system/systemLinux.c"
(("/sbin/shutdown")
(string-append
#$(this-package-input "shepherd") "/sbin/shutdown"))
(("/bin/reboot")
(string-append
#$(this-package-input "shepherd") "/sbin/reboot")))
(substitute* "services/plugins/vix/foundryToolsDaemon.c"
(("/bin/mount")
(string-append
#$(this-package-input "util-linux") "/bin/mount"))
(("/usr/bin/vmhgfs-fuse")
(string-append #$output "/bin/vmhgfs-fuse"))))))))
(native-inputs
(list `(,glib "bin") ; for glib-genmarshal
autoconf
automake
libltdl
libtool
pkg-config))
(inputs
(list eudev
fuse
glib
xmlsec
libmspack
;; libdnet ; Not packed
libtirpc
libxcrypt
libxml2
linux-pam
openssl
procps
rpcsvc-proto
shepherd ;for 'halt' and 'reboot', invoked from VMWare host.
util-linux
xmlsec))
(home-page "https://github.com/vmware/open-vm-tools")
(synopsis "Tools for VMWare guest VM to enhance host-guest integration")
(description
"@code{open-vm-tools} is a set of services and modules that enable several
features in VMware products for better management of, and seamless user
interactions with, guests.
@code{open-vm-tools} enables the following features in VMware products:
@itemize
@item The ability to perform virtual machine power operations gracefully.
@item Execution of VMware provided or user configured scripts in guests during
various power operations.
@item The ability to run programs, commands and file system operation in guests
to enhance guest automation.
@item Authentication for guest operations.
@item Periodic collection of network, disk, and memory usage information from
the guest.
@item Generation of heartbeat from guests to hosts so VMware's HA solution can
determine guests' availability.
@item Clock synchronization between guests and hosts or client desktops.
@item Quiescing guest file systems to allow hosts to capture
file-system-consistent guest snapshots.
@item Execution of pre-freeze and post-thaw scripts while quiescing guest file
systems.
@item The ability to customize guest operating systems immediately after
powering on virtual machines.
@item Enabling shared folders between host and guest file systems on VMware
Workstation and VMware Fusion.
@item Copying and pasting text, graphics, and files between guests and hosts or
client desktops.
@end itemize")
(license license:gpl2)))
(define-public vmware-open-vm-tools-gtk
(package/inherit vmware-open-vm-tools
(name "vmware-open-vm-tools-gtk")
(inputs
(modify-inputs (package-inputs vmware-open-vm-tools)
(prepend gdk-pixbuf-xlib
gtk+
gtkmm-3
libdrm
libx11
libxext
libxi
libxinerama
libxrandr
libxrender
libxtst)))
(arguments
(substitute-keyword-arguments (package-arguments vmware-open-vm-tools)
((#:configure-flags flags)
#~(delete "--without-x" #$flags))))
(description "This package provides a GTK+ support for @code{open-vm-tools}.")))
(define-public criu
(package
(name "criu")