(define-module (home-packages virtualization)
               #:use-module (guix packages)
               #:use-module (guix utils)
               #:use-module (gnu packages)
               #:use-module (gnu packages package-management)
               #:use-module (gnu packages build-tools)
               #:use-module (gnu packages virtualization)
               #:use-module (gnu packages firmware)
               #:use-module (home-packages firmware)
               #:use-module (guix gexp))

(define-public libvirt-new
  (package
    (inherit libvirt)
    (inputs
      (modify-inputs (package-inputs libvirt)
                     (append ovmf-new)))
    (arguments
      (substitute-keyword-arguments (package-arguments libvirt)
        ((#:phases phases)
         #~(modify-phases #$phases
            (add-after 'install 'ovmf
                (lambda _
                    (let ((fmw (string-append #$output "/usr/share/OVMF")))
                        (mkdir-p fmw)
                        (copy-recursively #$(file-append ovmf-new "/share/firmware") fmw))
                    (let ((fmw (string-append #$output "/share/qemu")))
                        (mkdir-p fmw)
                        (copy-recursively #$(file-append qemu "/share/qemu") fmw))
                ))
        ))))))

(define-public virt-manager-new
    (package
      (inherit virt-manager)
      (name "virt-manager-new")
      (arguments
        (substitute-keyword-arguments (package-arguments virt-manager)
         ((#:phases phases)
          #~(modify-phases #$phases
             (add-after 'install 'ovmf
                 (lambda _
                   (let ((fmw (string-append #$output "/usr/share/OVMF")))
                     (mkdir-p fmw)
                     (copy-recursively #$(file-append ovmf-new "/share/firmware") fmw)
                 )))
        ))))))