---
services:
  steam-headless:
    image: josh5/steam-headless:latest
    restart: unless-stopped
    runtime: ${DOCKER_RUNTIME}
    ## NOTE: This config uses privileged to access to host to be able to access the required devices
    privileged: true
    shm_size: ${SHM_SIZE}
    ipc: host # Could also be set to 'shareable'
    ulimits:
      nofile:
        soft: 1024
        hard: 524288

    # NETWORK:
    ## NOTE:  With this configuration, if we do not use the host network, then physical device input
    ##        is not possible and your USB connected controllers will not work in steam games.
    network_mode: host
    hostname: ${NAME}
    extra_hosts:
      - "${NAME}:127.0.0.1"
    
    # ENVIRONMENT:
    ## Read all config variables from the .env file
    env_file: .env

    # VOLUMES:
    volumes:
      # The location of your home directory.
      - /opt/container-data/steam-headless/home/:/home/default/:rw

      # The location where all games should be installed.
      # This path needs to be set as a library path in Steam after logging in.
      # Otherwise, Steam will store games in the home directory above.
      - /mnt/games/:/mnt/games/:rw

      # The Xorg socket. This will be shared with other containers so they can access the X server.
      # Select only one option:
      #   Option #1) Start a X server in the container to share with any other containers.
      #- /opt/container-data/steam-headless/.X11-unix/:/tmp/.X11-unix/:rw
      #   Option #2) Use an existing X server running on the host.
      #- /tmp/.X11-unix/:/tmp/.X11-unix/:rw

      # Pulse audio socket. This will be shared with other containers so they can access the audio sink.
      # Leave commented out to not share the pulse socket with any other Docker containers.
      #- /opt/container-data/steam-headless/pulse/:/tmp/pulse/:rw

      # Input devices used for mouse and joypad support inside the container.
      - /dev/input/:/dev/input/:ro

