Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Troubleshooting

The log file

Everything the app does is written to a log file:

  • the app: ~/.local/state/drakeflake/drakeflake.log
  • the tray: ~/.local/state/drakeflake/drakeflake-tray.log

($XDG_STATE_HOME/drakeflake/ when XDG_STATE_HOME is set.)

When a log reaches 5 MiB it is rotated: the older logs are kept as .1, .2 and .3, and the oldest one is dropped. Started from a terminal, the app also prints its log there.

To get more detail, set Settings → Troubleshooting → Log detail to Debug: every command run (every command the app runs) or Trace: also full command output. Open log and Show folder take you to the file. Passwords you type into the console are never logged.

“No system selected”

The pages show “No system selected” with the reason when the app cannot read your flake or host, for example because the folder does not exist or the flake does not evaluate. Click Open Settings, check System flake: and Host:, and click Use this system.

“The flake does not import the generated file”

Your changes only take effect when your host configuration imports the generated file. Until then the Changes page warns “Your configuration does not import … yet”, and applying stops with “Not rebuilding: the flake does not import …” (Save only still works).

  1. Open the configuration of your host, for example configuration.nix.
  2. Add the generated file to its imports, for example imports = [ ./drakeflake.nix ];. The path is relative to the file that contains the import. If the output is a folder with a default.nix, import the folder.
  3. Save the file. If your flake is a git repository and the generated file is new, make sure git tracks it (the app does this when it writes the file; otherwise click Track in git on the Changes page).
  4. Open Settings → Setup assistant… and use Check import on the last step to confirm.

If you changed the file layout or the output location, the name of the entry file may have changed (drakeflake.nix or a folder’s default.nix); the console tells you which import to use.

“… is not tracked by git, so the flake cannot see it”

Flakes ignore files git does not track. Click Track in git on the Changes page, or run git add --intent-to-add on the file yourself.

Applying failed

The Console shows the output of the failed build or switch; the last lines usually name the problem. After a failed apply:

  • Restore previous file puts the generated file back as it was before the apply.
  • Earlier states are on the History page, see History and restoring.
  • If the build itself fails, your running system is not changed.

An input was not updated

If the console says “Not updated: … Nix kept its cached version”, Nix could not get the new revision, usually because GitHub’s API rate limit was reached. Wait a while and update again, or give Nix a GitHub access token, see GitHub API rate limit.

The banner “This program is older than its interface files”

The app’s program and its interface files come from different versions, for example after updating while an old build is still started. Pages would call functions the program does not have, so the app shows this banner instead. Start the matching version: after updating the package, rebuild your system and start the app again; if you run it from a checkout, rebuild it there.

Slow first start

The first time, the app builds an option index from your flake, evaluates the values of the options your files define and indexes packages. This can take a minute or more; the status bar at the bottom shows what is running. Afterwards the results are cached in ~/.cache/drakeflake/ and only the parts that changed are evaluated again.

If the cache looks wrong, use Settings → Rebuild caches.

The status bar may say that some options are skipped because they fail to evaluate. If many option descriptions fail (often because of the removed lib.mdDoc), building the index is slow; the Actions page then recommends fixing them.

The window stays empty or the app does not start

If hardware-accelerated drawing does not work, the app falls back to software rendering by itself. To force it, start the app with DRAKEFLAKE_SOFTWARE_RENDERING=1 drakeflake.

Where things are

WhatWhere
Settings~/.config/drakeflake/config.toml
Log files~/.local/state/drakeflake/*.log
Backups of the generated settings~/.local/state/drakeflake/backups/
Staged changes~/.local/state/drakeflake/staged/
Caches (option and package indexes, tried packages, command index)~/.cache/drakeflake/
Tray autostart entry~/.config/autostart/drakeflake-tray.desktop