Instance Config Migration Guide

Before 2023, the concept of gokrazy instance configuration was only a convention. Each gokrazy build was created using the gokr-packer CLI tool, and configured by the packer’s command-line flags, parameters, config files in ~/.config and per-package config files in the current directory (e.g. flags/github.com/gokrazy/breakglass/flags.txt).

In 2023, the concept of gokrazy instance configuration was introduced (see issue #147).

Now, each gokrazy instance, which typically corresponds to one Raspberry Pi or other machine, has its own directory within the gokrazy parent directory (~/gokrazy by default), e.g. ~/gokrazy/scanner.

The new gok CLI tool works in the instance directory (e.g. ~/gokrazy/scanner) and reads the single config.json file, which contains all settings.

Migration

If you’re using the old mechanism (gokr-packer commands), here is how to migrate to the new gok CLI. Assuming you use a command like the following:

gokr-packer \
  -hostname=scanner \
  -update=yes \
  github.com/gokrazy/hello \
  github.com/gokrazy/breakglass \
  github.com/gokrazy/serial-busybox \
  github.com/stapelberg/scan2drive/cmd/scan2drive

Run your gokr-packer command manually once, but add the -write_instance_config flag:

gokr-packer \
  -write_instance_config=scanner \
  -hostname=scanner \
  -update=yes \
  github.com/gokrazy/hello \
  github.com/gokrazy/breakglass \
  github.com/gokrazy/serial-busybox \
  github.com/stapelberg/scan2drive/cmd/scan2drive

This will make gokr-packer create ~/gokrazy/scanner.

From now on, switch to using the gok CLI for updating your instance:

gok -i scanner update

To open your instance’s configuration in your editor, use gok -i scanner edit.