# A template to run ubuntu using display: vnc
# This template requires Lima v0.20.0 or later.
images:
# Try to use release-yyyyMMdd image if available. Note that release-yyyyMMdd will be removed after several months.
- location: "https://cloud-images.ubuntu.com/releases/24.04/release-20241119/ubuntu-24.04-server-cloudimg-amd64.img"
  arch: "x86_64"
  digest: "sha256:b63f266fa4bdf146dea5b0938fceac694cb3393688fb12a048ba2fc72e7bfe1b"
- location: "https://cloud-images.ubuntu.com/releases/24.04/release-20241119/ubuntu-24.04-server-cloudimg-arm64.img"
  arch: "aarch64"
  digest: "sha256:6e1f90d3e81b90202b46c3573590867e575e504af2c63dd5c9b529f174e3d793"
# Fallback to the latest release image.
# Hint: run `limactl prune` to invalidate the cache
- location: "https://cloud-images.ubuntu.com/releases/24.04/release/ubuntu-24.04-server-cloudimg-amd64.img"
  arch: "x86_64"
- location: "https://cloud-images.ubuntu.com/releases/24.04/release/ubuntu-24.04-server-cloudimg-arm64.img"
  arch: "aarch64"

mounts:
- location: "~"
- location: "/tmp/lima"
  writable: true

vmType: "qemu"
video:
  display: "vnc"

provision:
- mode: system
  script: |
    #!/bin/bash
    set -eux -o pipefail
    command -v Xorg >/dev/null 2>&1 && exit 0
    export DEBIAN_FRONTEND=noninteractive
    # x-terminal-emulator x-session-manager x-window-manager
    apt-get install -y xorg xterm openbox hsetroot tint2 slim
    printf "auto_login yes\ndefault_user {{.User}}\n" >>/etc/slim.conf
    # configure some nice lima green, set up panel and apps
    printf "hsetroot -solid \"#32CD32\" &\ntint2 &\n" >>/etc/xdg/openbox/autostart
    sed -i 's/Clearlooks/Clearlooks-Olive/' /etc/xdg/openbox/rc.xml # go for green
    apt-get install -y --no-install-recommends dillo xfe # x-www-browser +explorer
- mode: system
  script: |
    #!/bin/bash
    set -eux -o pipefail
    systemctl set-default graphical.target
    systemctl isolate graphical.target
probes:
- description: "Xorg to be installed"
  script: |
    #!/bin/bash
    set -eux -o pipefail
    if ! timeout 30s bash -c "until command -v Xorg >/dev/null 2>&1; do sleep 3; done"; then
      echo >&2 "Xorg is not installed yet"
      exit 1
    fi
  hint: See "/var/log/cloud-init-output.log" in the guest
message: |
  Use a VNC viewer or noVNC, to connect to the display:

  * VNC Display:    see <file://{{.Dir}}/vncdisplay>
  * VNC Password:   see <file://{{.Dir}}/vncpassword>
