Setup Lima on a Mac

🗓 Previously on Mac2net – I intoduced Lima Linux Machines

Setup Lima on a Mac

Before we dive into creating a new VM – which BTW is as easy as this…


# Create a VM with the default configuration
$ limactl create
...
# Start the default configuration 
$ limactl start
...
INFO[0029] READY. Run `lima` to open the shell.

$ lima uname
Linux


…it is advisable to follow along here for a few pointers. First of all, ask yourself, what was created above, how is it accessed, how is it configured and where is it stored? After all this is a full-fledged VM – or at least a cloud-ready version!


Frankly, Lima puts its stuff in weird places and where they are it is a pain to work with, so I recommend creating symlinks from where these things are stored to where you would like them to be. Personally, I have split my internal SSD and created a folder called VM at the top level of the second volume.

Make symlinks from Lima’s directories

The first symlink is from Brew’s Lima install. Sadly, Brew creates a directory inside the package install which is hard coded to the release version, so the symlink has to be from the top level which means even with a symlink there is a bit of extra navigation🤷🏻.


# Lima stores the template folder inside its installation directory which is in different locations depending on which type of Mac you are using.

# If you are installing a Lima VM on an Intel Mac, this is the command to create a symlink from the templates folder:
$ ln -s /usr/local/Cellar/lima /Volumes/[volume-name]/[folder-name]/lima-brew

# If you are installing a Lima VM on a Mac M[x],  this is the command to create a symlink from the templates folder:
$ ln -s /opt/homebrew/Cellar/lima /Volumes/[volume-name]/[folder-name]/lima-brew 


Lima stores VMs inside a hidden folder in the home directory. The second symlink is from the .lima folder to another location on different volume.


Don’t create this symlink until after the first VM is created because this directory is not added until that point.


# Lima stores VMs inside a hidden folder in the home directory. This will create a symlink from the .lima folder to another location on different volume.
$ ln -s ~/.lima /Volumes/[volume-name]/[directory-name]/lima 


While Lima basically works the same for Intel and Apple Silicon Macs, there are differences in features and some options in the YAML templates provided by Lima may not work on both hardware platforms. Except where specifically noted, assume the steps I outline going forward work on both Mac hardware platforms.

Lima’s installation

Below is a directory printout of the Lima package for your reference. Of specific interest are the files in the Templates directory. Notice that inside this there is an Images directory. The developers of Lima have recently decided to abstract out the image urls which are referenced by the YAML files in the main folder.


├── [ 352]  Lima
│   ├── [ 288]  bin
│   │   ├── [ 764]  apptainer.lima
│   │   ├── [ 900]  docker.lima
│   │   ├── [1.6K]  kubectl.lima
│   │   ├── [1.6K]  lima
│   │   ├── [ 28M]  limactl
│   │   ├── [  41]  nerdctl.lima
│   │   └── [ 803]  podman.lima
│   ├── [  96]  etc
│   │   └── [  96]  bash_completion.d
│   │       └── [ 16K]  limactl
│   ├── [ 870]  INSTALL_RECEIPT.json
│   ├── [ 11K]  LICENSE
│   ├── [ 963]  NOTICE
│   ├── [3.4K]  README.md
│   ├── [2.5K]  sbom.spdx.json
│   └── [ 160]  share
│       ├── [  96]  fish
│       │   └── [  96]  vendor_completions.d
│       │       └── [9.6K]  limactl.fish
│       ├── [ 128]  lima
│       │   ├── [ 12M]  lima-guestagent.Linux-aarch64.gz
│       │   └── [1.6K]  templates
│       │       ├── [  96]  _default
│       │       │   └── [ 104]  mounts.yaml
│       │       ├── [ 928]  _images
│       │       │   ├── [1.6K]  almalinux-10.yaml
│       │       │   ├── [1.8K]  almalinux-8.yaml
│       │       │   ├── [1.5K]  almalinux-9.yaml
│       │       │   ├── [1.6K]  almalinux-kitten-10.yaml
│       │       │   ├── [ 646]  alpine-iso.yaml
│       │       │   ├── [ 592]  alpine.yaml
│       │       │   ├── [ 825]  archlinux.yaml
│       │       │   ├── [1.8K]  centos-stream-10.yaml
│       │       │   ├── [1.8K]  centos-stream-9.yaml
│       │       │   ├── [1.5K]  debian-11.yaml
│       │       │   ├── [1.4K]  debian-12.yaml
│       │       │   ├── [ 932]  fedora-41.yaml
│       │       │   ├── [ 883]  fedora-42.yaml
│       │       │   ├── [ 883]  fedora.yaml
│       │       │   ├── [ 580]  opensuse-leap.yaml
│       │       │   ├── [ 985]  oraclelinux-8.yaml
│       │       │   ├── [ 729]  oraclelinux-9.yaml
│       │       │   ├── [1.5K]  rocky-10.yaml
│       │       │   ├── [1.1K]  rocky-8.yaml
│       │       │   ├── [1.5K]  rocky-9.yaml
│       │       │   ├── [1.9K]  ubuntu-20.04.yaml
│       │       │   ├── [2.2K]  ubuntu-22.04.yaml
│       │       │   ├── [2.2K]  ubuntu-24.04.yaml
│       │       │   ├── [2.4K]  ubuntu-24.10.yaml
│       │       │   ├── [2.4K]  ubuntu-25.04.yaml
│       │       │   ├── [2.2K]  ubuntu-lts.yaml
│       │       │   └── [2.4K]  ubuntu.yaml
│       │       ├── [  96]  almalinux-10.yaml
│       │       ├── [  95]  almalinux-8.yaml
│       │       ├── [  95]  almalinux-9.yaml
│       │       ├── [ 103]  almalinux-kitten-10.yaml
│       │       ├── [ 103]  almalinux-kitten.yaml
│       │       ├── [  96]  almalinux.yaml
│       │       ├── [ 282]  alpine-iso.yaml
│       │       ├── [ 278]  alpine.yaml
│       │       ├── [ 886]  apptainer-rootful.yaml
│       │       ├── [1.0K]  apptainer.yaml
│       │       ├── [  93]  archlinux.yaml
│       │       ├── [ 697]  buildkit.yaml
│       │       ├── [ 100]  centos-stream-10.yaml
│       │       ├── [  99]  centos-stream-9.yaml
│       │       ├── [  99]  centos-stream.yaml
│       │       ├── [  93]  debian-11.yaml
│       │       ├── [  93]  debian-12.yaml
│       │       ├── [  93]  debian.yaml
│       │       ├── [ 29K]  default.yaml
│       │       ├── [2.6K]  docker-rootful.yaml
│       │       ├── [2.6K]  docker.yaml
│       │       ├── [ 448]  experimental
│       │       │   ├── [1.0K]  alsa.yaml
│       │       │   ├── [ 482]  debian-13.yaml
│       │       │   ├── [ 604]  debian-sid.yaml
│       │       │   ├── [ 482]  debian-testing.yaml
│       │       │   ├── [ 341]  gentoo.yaml
│       │       │   ├── [ 634]  opensuse-tumbleweed.yaml
│       │       │   ├── [2.1K]  rke2.yaml
│       │       │   ├── [3.8K]  u7s.yaml
│       │       │   ├── [ 741]  ubuntu-25.10.yaml
│       │       │   ├── [ 741]  ubuntu-next.yaml
│       │       │   ├── [1.5K]  vnc.yaml
│       │       │   └── [ 673]  wsl2.yaml
│       │       ├── [1.6K]  faasd.yaml
│       │       ├── [  93]  fedora-41.yaml
│       │       ├── [  93]  fedora-42.yaml
│       │       ├── [  93]  fedora.yaml
│       │       ├── [1.7K]  k3s.yaml
│       │       ├── [6.7K]  k8s.yaml
│       │       ├── [1.2K]  linuxbrew.yaml
│       │       ├── [  97]  opensuse-leap.yaml
│       │       ├── [  97]  opensuse.yaml
│       │       ├── [  97]  oraclelinux-8.yaml
│       │       ├── [  97]  oraclelinux-9.yaml
│       │       ├── [  97]  oraclelinux.yaml
│       │       ├── [2.1K]  podman-rootful.yaml
│       │       ├── [1.7K]  podman.yaml
│       │       ├── [5.8K]  README.md
│       │       ├── [  92]  rocky-10.yaml
│       │       ├── [  91]  rocky-8.yaml
│       │       ├── [  91]  rocky-9.yaml
│       │       ├── [  92]  rocky.yaml
│       │       ├── [  96]  ubuntu-20.04.yaml
│       │       ├── [  96]  ubuntu-22.04.yaml
│       │       ├── [  96]  ubuntu-24.04.yaml
│       │       ├── [  96]  ubuntu-24.10.yaml
│       │       ├── [  96]  ubuntu-25.04.yaml
│       │       ├── [  96]  ubuntu-lts.yaml
│       │       └── [  96]  ubuntu.yaml
│       └── [  96]  zsh
│           └── [  96]  site-functions
│               └── [7.6K]  _limactl
└── 15 directories, 104 files