Skip to content

Garuda Setup Assistant

The Garuda Setup Assistant is a small Qt window that runs once after the first boot of an installed system. It applies the initial system update, offers the proprietary NVIDIA drivers when they are available, and then hands over to the Garuda Toolbox. Its package description says it is a setup utility for Garuda Linux that helps set up and install applications.

The name is also used by the Toolbox tab Setup assistant (route /setup-wizard). That tab installs software from a selection list. It is a different program. See Garuda Toolbox.

For the software selection and other first steps, read Post-installation tasks.

The app starts in three ways.

  • On the first boot, the autostart entry setup-assistant AUTOSTART runs it. The entry comes from /etc/skel/.config/autostart/setup-assistant.desktop.
  • The menu entry Setup Assistant starts it without the AUTOSTART argument. The entry is /usr/share/applications/setup-assistant.desktop.
  • A terminal starts it with setup-assistant.
Terminal window
setup-assistant

With the argument AUTOSTART, the program exits without a window when the start is not a first boot, or when it runs in the live system (/run/miso exists). In that case it hands over to the Toolbox right away.

PackageNotes
garuda-setup-assistantFrom pkgbuilds/garuda-setup-assistant, version 5.1.0 in the PKGBUILD. Depends on yad, wget, garuda-libs and qt6-base. Optional dependency: pamac.

The CMake project builds the binary setup-assistant into /usr/bin. The translations are compiled into the binary from the i18n folder, one file for each language.

The window moves through these states. Each state is one page of the window.

StateWhat the window showsWhat runs
WelcomeWelcome to Garuda Linux! and the buttons Ok and CancelNothing. Cancel moves to the quit page.
InternetWaiting for an internet connection...A HEAD request to https://garudalinux.org, repeated until it succeeds.
UpdateWaiting for update to finish...garuda-update remote setup in a terminal, started by /usr/lib/garuda/launch-terminal.
Update failedUpdate failed! and System update failed. Try again? with the buttons Yes and NoYes starts the Internet state again.
NVIDIA checkChecking for NVIDIA drivers...garuda-hardware-tool --nonfree --check, only if the tool is installed.
NVIDIANVIDIA drivers and the question whether to install the nonfree drivers, with the buttons Yes and NoYes starts the NVIDIA apply state. No goes to the Success state.
NVIDIA applyInstalling NVIDIA drivers...sudo garuda-hardware-tool --nonfree in a terminal.
QuitBefore you go with the buttons Ok and ResetOk closes the app. Reset returns to the Welcome state.
SuccessCloses the windowStarts garuda-toolbox --setup-assistant and replaces the autostart entry (see below).

The NVIDIA step only appears when /usr/bin/garuda-hardware-tool exists and its --check output contains nvidia.

After the Success state, the program does three things.

  1. It removes ~/.config/autostart/setup-assistant.desktop.
  2. It creates the symlink ~/.config/autostart/garuda-toolbox.desktop to /usr/share/applications/garuda-toolbox.desktop.
  3. It starts garuda-toolbox --setup-assistant detached.

The handover is skipped when the environment variable VERSION is set to 4 or lower. In that case the autostart entry stays unchanged.

WhatPathNotes
Autostart entry~/.config/autostart/setup-assistant.desktopCopied from /etc/skel for new users. Removed after the handover.
First boot flagQSettings key firstBootSet to false on the first start. The file path is UNCONFIRMED. Qt usually stores it under ~/.config/garuda/.
Toolbox autostart~/.config/autostart/garuda-toolbox.desktopCreated by the handover.

The first-boot check runs last reboot -n 2 --time-format notime and treats the start as a first boot when the output has exactly one line (qt/main.cpp).

The program writes its messages with qInfo and qDebug. The code does not write a log file.

VariableEffect
SETUP_ASSISTANT_SELFUPDATESkips the update step and goes to the success state (qt/setupassistant.cpp).
VERSIONWhen 4 or lower, the handover to the Toolbox is skipped (qt/main.cpp).
  • The Internet state repeats the request until it succeeds. The window has no cancel button in this state (qt/setupassistant.cpp, doInternetUpRequest).
  • The close button of the window is removed (qt/setupassistant.cpp, constructor). The Quit state is the only exit.
  • The update step runs garuda-update remote setup. If it fails, the program asks again. The text says that finishing this update is recommended to apply release-specific fixes.
  • The package depends on yad and wget. The source code does not call either tool (qt/, CMakeLists.txt). Whether the packages are needed at all is UNCONFIRMED.
Terminal window
setup-assistant
garuda-hardware-tool --nonfree --check
sudo garuda-hardware-tool --nonfree