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

Introduction

The DrakeFlake logo

NixOS, tamed.

DrakeFlake is a desktop app for NixOS systems that are configured with a flake. It lets you:

  • search all NixOS options of your system, see their current value and change them,
  • change the Home Manager settings of the users on your host (when Home Manager is used as a NixOS module),
  • search packages from the nixpkgs your system uses, add them to the system or try them without installing,
  • see the inputs in your flake.lock, check them for updates and update them,
  • rebuild the system, go back to an earlier generation and free disk space.

Try it now

DrakeFlake needs NixOS on x86_64 or aarch64 and a flake-based system configuration. You can run it straight from the repository without installing anything:

nix run gitlab:garuda-linux%252Fapplications/drakeflake

On first start the setup assistant helps you pick your flake and host. To keep the app, install it.

What it changes

The app never edits the files you wrote yourself. Everything you change is written to generated files inside your system flake, by default drakeflake.nix next to your flake.nix (and, with a split layout, the files in a drakeflake/ folder next to it). Your host configuration imports the generated file once; the setup assistant shows the line to add and checks that it is in place.

Every generated file starts with this header:

# GENERATED by DrakeFlake - safe to delete.
# Hand edits inside this file are overwritten on next Apply.

The app only overwrites or removes .nix files that carry this header (or are empty), and only inside a flake. Files written before the app was renamed carry the old name in this line; they are recognised too. A file without the header is never replaced.

Because the generated settings are ordinary NixOS module code, you can read them at any time (Changes → Preview file), commit them to git with the rest of your flake, or delete them to undo everything the app did.

How changes flow

  1. You change an option or add a package. The change is staged: it is kept in a list, nothing is written yet.
  2. Staged values are checked against the option’s type in the background.
  3. On the Changes page you look at the list, preview the generated file and choose how to apply: switch now, on the next boot, until the next reboot, or only save or build.
  4. The app writes the generated files (keeping a backup of the previous ones) and rebuilds the system. The output appears in the Console.

Staged changes survive a restart of the app. They are kept separately for each flake and host.

The window

The sidebar on the left lists the sections: Options, Home Manager (only when the host uses Home Manager), Packages, Generations, Actions, Cleanup, Inputs, Changes, Configured, History, Console, Settings and About. On narrow windows the sidebar collapses to icons.

Details (of an option or a package) open in a second column next to the list. While the app evaluates your configuration or runs a command, a status bar at the bottom of the window shows what it is doing.