#!/bin/sh
: ${CMD:=./PolyMC}
if [ $# -gt 0 ] ; then
    CMD="$@"
fi

test -d home/ || mkdir home
set -ex

exec guix shell -C -F -N -E ^DISPLAY --share="$PWD/home=$HOME" --share="$PWD" \
     --expose=/dev/snd --expose=/etc/asound.conf --expose=/etc/machine-id \
     --expose=/dev/dri --expose=/dev/input --expose=/sys/class/input \
     --expose=/sys/dev --expose=/sys/devices --expose=/var/run/dbus \
     --share=/dev/shm --share=$HOME/.config/pulse --share=$HOME/.Xauthority \
     --share=/run/user/$UID/pulse --share=/run/user/$UID/pulse=/var/run/pulse \
     -m "$0" --pure -- env LD_LIBRARY_PATH=/lib ${CMD}
!#

(use-modules (gnu))

;; (specifications->manifest
;;  '("bash" ; always required
;;    "coreutils" ; always required
;;    "glibc" ; always required

;;    "gcc:lib"
;;    "qtbase@5.15"
;;    "qtcharts@5.15"
;;    "zlib"
;;    "glfw"
;;    "nss-certs"
;;    "openal"
;;    "openjdk@18"
;;    "pulseaudio"
;;    "unrar"
;;    "unzip"
;;    "zip"))

(manifest
 (map (lambda (spec)
        (apply package->manifest-entry
               (cond
                ((pair? spec) (let ((pkg (car spec))
                                    (output (cadr spec)))
                                (list
                                 (if (string? pkg)
                                     (specification->package pkg)
                                     pkg)
                                 output)))
                ((string? spec) (list (specification->package spec)))
                (else (list spec)))))
      `("bash" ; always required
        "coreutils" ; always required
        "glibc" ; always required

        (,(@@ (gnu packages gcc) gcc) "lib")
        "qtbase@5.15"
        "qtcharts@5.15"
        "zlib"
        "glfw"
        "nss-certs"
        "openal"
        "openjdk@18"
        "pulseaudio"
        "unrar"
        "unzip"
        "zip")))
