Garuda Nix
General information
Garuda Nix is a Nix flake, which allows easy dual boot with Garuda Linux. But it also provides a framework for pure NixOS, which provides opinionated defaults and a system which can be fully set up by toggling a few module options or installed using our installer ISO.
Prefer a graphical install? The flake also builds an installer ISO with a Calamares GUI for beginners and an install-garuda-nix CLI with presets, automatic partition layouts, and impermanence support.
Quick links
Devshell and how to enter it
This NixOS flake provides a devshell which contains all deployment tools as well as handy aliases for common tasks. The only requirement for using it is having the Nix package manager available. It can be installed on various distributions via the package manager or the following script (click me for more information):
curl --proto '=https' --tlsv1.2 -sSf -L https://install.determinate.systems/nix -o nix-install.sh
# Check script content before running
sh ./nix-install.sh install --diagnostic-endpoint=""
This installs the Nix packages with flakes already pre-enabled. After that, the shell can be invoked as follows:
nix develop # The intended way to use the devshell
nix-shell # Legacy, non-flakes way if flakes are not available for some reason
This also sets up pre-commit-hooks and shows the currently implemented tasks, which can be executed by running the command shown in the welcome message.
Quick start
Intro
The original idea behind this project was to use NixOS as a subsystem of Garuda. This means it can be installed easily from a running Garuda installation. This all works via BTRFS subvolumes, therefore any OS other than Garuda is considered unsupported for this method. Settings like users, passwords, and locales are automatically derived from Garuda and change with it. An option to partly share the /home partition between Garuda and NixOS has also been provided.
At the time of writing, setting up a dr460nized desktop is the only option. This may or may not change in the future.
Installation
Our repo contains garuda-nix-subsystem, which is the needed part to get going:
sudo pacman -S garuda-nix-subsystem # get the package
garuda-nix-subsystem install # trigger the installation process
The script will first install Nix, the package manager, and proceed by setting up the required subvolumes. After the process is finished, the subsystem may now be entered by rebooting and selecting the new Garuda Nix Subsystem entry in GRUB.
Updating
The system may be updated by running sudo garuda-nix-subsystem update from either Garuda or by running garuda-update on Garuda Nix Subsystem. This sources the latest tagged commit from our Garuda Nix repo, which also updates the flake’s inputs and therefore all package versions.
Using as NixOS module
To make use of this flake, you can use it as follows - we assume flakes to be enabled:
{
description = "My configuration";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
garuda.url = "gitlab:garuda-linux/garuda-nix-subsystem/stable";
};
outputs = { garuda, nixpkgs, ... }: {
nixosConfigurations = {
hostname = garuda.lib.garudaSystem {
system = "x86_64-linux";
modules = [
./configuration.nix # Your system configuration.
];
};
};
};
}
You may notice that we are using garuda.lib.garudaSystem to build the derivation. garudaSystem provides an opinionated system configuration similar to what Garuda Linux provides out of the box. It also exposes our modules which can then be referenced in our modules like garuda.*. Then, build your configuration as usual. GNS defaults are generally lower priority than your settings, therefore it’s easy to override most settings if needed.
You may also use any of the Chaotic Nyx’s module or home-manager options. Garuda Nix’ nixpkgs input follows Nyx’ nyxpkgs-unstable (which updates daily and shouldn’t be overridden to profit from their binary cache).
An exemplary configuration.nix could look as follows:
{ ... }: {
# Your hardware configuration
imports = [ ./hardware-configuration.nix ];
# Hostname
networking.hostName = "yourmachine";
# Enabling the dr460nized desktop version
# options and applications
garuda = {
dr460nized.enable = true;
gaming.enable = true;
performance-tweaks = {
enable = true;
};
};
}
Updating
Garuda Nix installs the garuda-update command on GUI systems and on systems managed through garuda-managed.json.
It is the a convenient way to keep the system up to date.
garuda-update
What it does
- NixOS flake setups: updates the flake inputs, rebuilds with
nh os switch, and commits the refreshedflake.lockwhen the flake lives in a Git repository. The flake defaults to/etc/nixosand can be pointed elsewhere withGARUDA_FLAKE. - Managed systems (
/etc/nixos/garuda-managed.jsonexists): downloads the latest updater from thestablebranch and runs it. This regenerates the managed configuration, updates the flake inputs and rebuilds.
Rolling back
Roll back to the previous generation (only on standalone NixOS):
garuda-update --rollback
Subsystem
On a Garuda subsystem, garuda-update runs from inside Garuda Nix with the managed path described above. The update can also be triggered from the Garuda host with sudo garuda-nix-subsystem update.
Getting the ISO
Download
The ISO can be downloaded from our builds page page. Available build types:
garuda-nix-dr460nized-26.11-x86_64-linux.iso: these are built daily and point to our latest stable tag, which is only tagged if evaluation and a few other checks pass
Flash & Boot
Write the ISO to a USB drive:
sudo dd if=$name.iso of=/dev/$usb bs=4M status=progress oflag=sync
Replace $usb with your USB drive, and $name with the resulting ISO file. This destroys all data on the drive.
Once booted, continue with installing.
Build
The flake can build an installer ISO for three editions:
mokkadr460nizedcatppuccin
Build from the dev shell:
nix develop -c buildiso mokka
Replace mokka with dr460nized or catppuccin to build another edition. Use buildiso all to build all three.
Append --run to boot the freshly built ISO in QEMU instead of just copying it:
nix develop -c buildiso mokka --run
The command copies the ISO to the current working directory.
Alternatively, build the ISO directly with Nix:
nix build .#internal.iso-mokka
nix build .#internal.iso-dr460nized
nix build .#internal.iso-catppuccin
Installing
Two frontends install the same Garuda flake. Pick one:
Calamares (GUI)
The graphical installer keeps it simple on purpose: pick an edition
(mokka, dr460nized) and pick optional features
(gaming, printing, …). Further customization can be done after the
installation is complete.
install-garuda-nix (CLI)
The command-line installer covers everything the GUI does, plus:
- Presets
- Choose from
desktop,laptop,server, orhandheld
- Choose from
- Partition layouts
- Choose from
ext4,btrfs,luks-ext4,luks-btrfs,btrfs-impermanence,luks-btrfs-impermanence,ext4-impermanence,luks-ext4-impermanence - Choosing impermanence automatically sets up either btrfs rollback or root on tmpfs
- Choose from
- Passwords
- The user (
--password) and root (--root-password) passwords are hashed with yescrypt and written into the generated config, so they survive impermanence/rollback
- The user (
This can either be done interactively or non-interactively.
Example:
sudo install-garuda-nix --edition mokka --preset desktop \
--feature gaming --feature printing \
--hostname mypc --username nico \
--disk /dev/sda --schema btrfs --install
All options
usage: install-garuda-nix [-h] [--edition {mokka,dr460nized}] [--preset {desktop,laptop,server,handheld}]
[--feature FEATURE] [--root ROOT] [--disk DISK]
[--schema {ext4,btrfs,luks-ext4,luks-btrfs,btrfs-impermanence,luks-btrfs-impermanence,ext4-impermanence,luks-ext4-impermanence}]
[--luks-pass-file LUKS_PASS_FILE] [--yes] [--hostname HOSTNAME] [--username USERNAME]
[--fullname FULLNAME] [--no-autologin] [--timezone TIMEZONE] [--locale LOCALE]
[--xkb-layout XKB_LAYOUT] [--xkb-variant XKB_VARIANT] [--vconsole VCONSOLE]
[--bootloader {auto,systemd-boot,grub,none}] [--grub-device GRUB_DEVICE]
[--kernel {cachyos,lts,latest}] [--flake-ref FLAKE_REF] [--state-version STATE_VERSION]
[--allow-unfree | --no-allow-unfree] [--install | --no-install] [--no-bootloader] [--tui]
[--password PASSWORD] [--root-password ROOT_PASSWORD]
Generate a Garuda NixOS config from the shared installer template.
options:
-h, --help show this help message and exit
--edition {mokka,dr460nized}
asked interactively when missing
--preset {desktop,laptop,server,handheld}
--feature FEATURE repeatable, one of: btrfs-maintenance, gaming, impermanence, performance, powersave, printing,
samba, scanning
--root ROOT target mount point (default: /mnt)
--disk DISK wipe and partition this disk before installing (e.g. /dev/sda). If not specified and <root> is
not mounted, pick from a list
--schema {ext4,btrfs,luks-ext4,luks-btrfs,btrfs-impermanence,luks-btrfs-impermanence,ext4-impermanence,luks-ext4-impermanence}
partitioning schema for --disk (asked when missing, default: btrfs)
--luks-pass-file LUKS_PASS_FILE
file with the LUKS passphrase (else prompted)
--yes skip the disk-wipe confirmation (dangerous)
--hostname HOSTNAME
--username USERNAME
--fullname FULLNAME
--no-autologin disable display-manager autologin
--timezone TIMEZONE default: host's /etc/localtime zone
--locale LOCALE
--xkb-layout XKB_LAYOUT
--xkb-variant XKB_VARIANT
--vconsole VCONSOLE
--bootloader {auto,systemd-boot,grub,none}
auto: systemd-boot on UEFI, otherwise grub needs --grub-device
--grub-device GRUB_DEVICE
e.g. /dev/sda for BIOS installs
--kernel {cachyos,lts,latest}
--flake-ref FLAKE_REF
--state-version STATE_VERSION
--allow-unfree, --no-allow-unfree
keep unfree packages (default: True, --no-allow-unfree to flip)
--install, --no-install
run nixos-install --flake <root>/etc/nixos#<hostname> afterwards (default: True, --no-install to
skip)
--no-bootloader pass --no-bootloader to nixos-install (test VMs without EFI vars)
--tui force the interactive wizard even when all flags are given
--password PASSWORD set the user password non-interactively
--root-password ROOT_PASSWORD
set the root password non-interactively
Install from the flake
On any NixOS host with internet, run the installer directly from the published flake:
sudo nix run gitlab:garuda-linux/garuda-nix-subsystem/stable#install-garuda-nix -- \
--edition mokka --hostname mypc --username nico --install
--flake-ref defaults to that same stable ref, so the generated config already points at it: future rebuilds are just nixos-rebuild switch --flake /etc/nixos#mypc. Pass --flake-ref gitlab:garuda-linux/garuda-nix-subsystem/stable (or any ref) to track a different branch instead.
Module options
Both installers write a flake config built from the same template; what
lands in configuration.nix is controlled by the
module options reference
(garuda.gaming.enable, garuda.impermanence.*, …). Presets and
features are just shortcuts that flip those options on.
Garuda module options
71 options under garuda.*.
garuda.audio
garuda.audio.pipewire.enable
If set to true, a default configuration for Pipewire will be used.
- Type:
boolean - Default:
false - Example:
false - Declared in:
internal/modules/base/sound.nix
garuda.btrfs-maintenance
garuda.btrfs-maintenance.deduplication
Enables the beesd service to deduplicate files in the background.
- Type:
boolean - Default:
false - Declared in:
internal/modules/base/services.nix
garuda.btrfs-maintenance.enable
Installs and enables some filesystem optimizations for BTRFS.
- Type:
boolean - Default:
false - Declared in:
internal/modules/base/services.nix
garuda.btrfs-maintenance.uuid
The UUID of the BTRFS filesystem to deduplicate.
- Type:
null or string - Default:
null - Declared in:
internal/modules/base/services.nix
garuda.catppuccin
garuda.catppuccin.enable
Catppuccin Mocha edition: consistent pastel theming across the desktop and applications via catppuccin/nix.
- Type:
boolean - Default:
false - Example:
true
garuda.chaotic-nyx
garuda.chaotic-nyx.cache.enable
If set to true, Chaotic’s Nyx will have its binary cache automatically enabled and managed.
- Type:
boolean - Default:
true - Declared in:
internal/modules/base/nyx.nix
garuda.dr460nized
garuda.dr460nized.enable
Dr460nized edition: vibrant Sweet-themed Plasma 6 gaming desktop, with matching login theme, apps and defaults. Mutually exclusive with garuda.mokka.
- Type:
boolean - Default:
false - Example:
true
garuda.excludes
garuda.excludes.defaultpackages.exclude
Remove individual entries from the “defaultpackages” list, matched by their string representation. Everything else stays as shipped.
- Type:
list of anything - Default:
[ ] - Declared in:
internal/modules/base/programs.nix
garuda.excludes.defaultpackages.excludeAll
Drop every entry the Garuda modules would otherwise put into the “defaultpackages” list (system packages, kernel parameters, nix-ld libraries, home-manager modules, …). Useful for minimal installs.
- Type:
boolean - Default:
false - Declared in:
internal/modules/base/programs.nix
garuda.excludes.home-manager-modules.exclude
Remove individual entries from the “home-manager-modules” list, matched by their string representation. Everything else stays as shipped.
- Type:
list of anything - Default:
[ ] - Declared in:
internal/modules/base/home-manager/home-manager.nix
garuda.excludes.home-manager-modules.excludeAll
Drop every entry the Garuda modules would otherwise put into the “home-manager-modules” list (system packages, kernel parameters, nix-ld libraries, home-manager modules, …). Useful for minimal installs.
- Type:
boolean - Default:
false - Declared in:
internal/modules/base/home-manager/home-manager.nix
garuda.excludes.kernelparameters.exclude
Remove individual entries from the “kernelparameters” list, matched by their string representation. Everything else stays as shipped.
- Type:
list of anything - Default:
[ ] - Declared in:
internal/modules/base/boot.nix
garuda.excludes.kernelparameters.excludeAll
Drop every entry the Garuda modules would otherwise put into the “kernelparameters” list (system packages, kernel parameters, nix-ld libraries, home-manager modules, …). Useful for minimal installs.
- Type:
boolean - Default:
false - Declared in:
internal/modules/base/boot.nix
garuda.excludes.nixldlibraries.exclude
Remove individual entries from the “nixldlibraries” list, matched by their string representation. Everything else stays as shipped.
- Type:
list of anything - Default:
[ ] - Declared in:
internal/modules/base/programs.nix
garuda.excludes.nixldlibraries.excludeAll
Drop every entry the Garuda modules would otherwise put into the “nixldlibraries” list (system packages, kernel parameters, nix-ld libraries, home-manager modules, …). Useful for minimal installs.
- Type:
boolean - Default:
false - Declared in:
internal/modules/base/programs.nix
garuda.flatpak
garuda.flatpak.enable
Whether to enable Flatpak with the Flathub remote pre-added.
- Type:
boolean - Default:
false - Example:
true - Declared in:
internal/modules/base/flatpak.nix
garuda.fonts
garuda.fonts.enable
Reasonable fontconfig defaults.
- Type:
boolean - Default:
false - Declared in:
internal/modules/base/fonts.nix
garuda.gaming
garuda.gaming.enable
Gaming setup: Steam (with gamescope session), GameMode, and the CachyOS gaming kernel/userspace settings.
- Type:
boolean - Default:
false - Example:
true - Declared in:
internal/modules/base/gaming.nix
garuda.garuda-chroot
garuda.garuda-chroot.boot-uuid
Provide the UUID of the Garuda boot partition
- Type:
string - Default:
null - Example:
"D9CB-2B11" - Declared in:
internal/modules/base/mount-garuda.nix
garuda.garuda-chroot.enable
Enables mounting of the Garuda Linux root partition.
- Type:
boolean - Default:
false - Example:
true - Declared in:
internal/modules/base/mount-garuda.nix
garuda.garuda-chroot.nvidia
Bind the NVIDIA device nodes into the container (host has an NVIDIA GPU).
- Type:
boolean - Default:
false - Example:
true - Declared in:
internal/modules/base/mount-garuda.nix
garuda.garuda-chroot.pipewire
Bind the host PipeWire socket into the container for native audio.
- Type:
boolean - Default:
true - Example:
false - Declared in:
internal/modules/base/mount-garuda.nix
garuda.garuda-chroot.root
Specifies where the Garuda Linux root partition should be mounted
- Type:
string - Default:
"/var/lib/machines/garuda" - Example:
"/mnt/ssd/garuda" - Declared in:
internal/modules/base/mount-garuda.nix
garuda.garuda-chroot.root-uuid
Provide the UUID of the Garuda root partition
- Type:
string - Default:
null - Example:
"f498b189-79c7-40e4-859e-fadc1496ee8e" - Declared in:
internal/modules/base/mount-garuda.nix
garuda.garuda-chroot.user
The default user of the Garuda / NixOS subsystem
- Type:
string - Default:
null - Example:
"garuda" - Declared in:
internal/modules/base/mount-garuda.nix
garuda.garuda-chroot.wayland
Bind the host Wayland socket into the container to allow running GUI apps from within the Garuda installation on NixOS.
- Type:
boolean - Default:
true - Example:
true - Declared in:
internal/modules/base/mount-garuda.nix
garuda.garuda-chroot.waylandSocket
Name of the host Wayland socket under /run/user/1000 to bind.
- Type:
string - Default:
"wayland-0" - Example:
"wayland-1" - Declared in:
internal/modules/base/mount-garuda.nix
garuda.garuda-nix-manager
garuda.garuda-nix-manager.enable
Install garuda-nix-manager, the graphical tool for handling app installations.
- Type:
boolean - Default:
false - Declared in:
internal/modules/base/nix-manager.nix
garuda.hardware
garuda.hardware.autoDriver.enable
Whether to enable hardware auto-detection via nixos-facter.
- Type:
boolean - Default:
true - Example:
true - Declared in:
internal/modules/base/hardware.nix
garuda.hardware.autoDriver.reportPath
Path to the nixos-facter report (written by the installer). Takes effect only when autoDriver.enable is set and the nixos-facter module is imported. Null disables it.
- Type:
null or absolute path - Default:
null - Example:
"./facter.json" - Declared in:
internal/modules/base/hardware.nix
garuda.hardware.enable
Hardware baseline: CPU microcode updates, redistributable firmware, and the graphics stack (including 32-bit support on GUI systems).
- Type:
boolean - Default:
true - Declared in:
internal/modules/base/hardware.nix
garuda.hardware.laptop.enable
Whether to enable laptop power/thermal tuning.
- Type:
boolean - Default:
false - Example:
true - Declared in:
internal/modules/base/hardware.nix
garuda.hardware.nvidia.amdgpuBusId
PCI bus ID of the AMD iGPU for PRIME offload (hardware.nvidia.prime.amdgpuBusId).
- Type:
null or string - Default:
null - Example:
"PCI:105:0:0" - Declared in:
internal/modules/base/hardware.nix
garuda.hardware.nvidia.enable
Whether to enable proprietary NVIDIA driver support with the latest drivers.
- Type:
boolean - Default:
false - Example:
true - Declared in:
internal/modules/base/hardware.nix
garuda.hardware.nvidia.nvidiaBusId
PCI bus ID of the NVIDIA dGPU for PRIME offload (hardware.nvidia.prime.nvidiaBusId).
- Type:
null or string - Default:
null - Example:
"PCI:1:0:0" - Declared in:
internal/modules/base/hardware.nix
garuda.impermanence
garuda.impermanence.apps
Known apps whose state persists. Service apps enable automatically.
- Type:
list of (one of "accountsservice", "bluetooth", "docker", "firefox", "flatpak", "fprintd", "fwupd", "geoclue", "iwd", "libvirt", "modemmanager", "networkmanager", "nspawn", "plasmalogin", "podman", "printing", "rust", "samba", "steam", "thunderbird", "upower") - Default:
[ ] - Declared in:
internal/modules/base/impermanence/apps.nix
garuda.impermanence.device
Btrfs device holding the root/root-blank subvolumes.
- Type:
string - Default:
"/dev/disk/by-label/nixos" - Declared in:
internal/modules/base/impermanence
garuda.impermanence.enable
Whether to enable impermanence.
- Type:
boolean - Default:
false - Example:
true - Declared in:
internal/modules/base/impermanence
garuda.impermanence.persistentUsers
Users whose .config/.local/share persist.
- Type:
list of string - Default:
[ ] - Declared in:
internal/modules/base/impermanence
garuda.impermanence.tmpfsRoot
Use tmpfs for / instead of rolling back a btrfs subvolume.
- Type:
boolean - Default:
false - Declared in:
internal/modules/base/impermanence
garuda.kde
garuda.kde.fontName
Fontconfig name matching fontPackage.
- Type:
string - Default:
"Inter" - Example:
"Fira" - Declared in:
internal/modules/base/kde.nix
garuda.kde.fontPackage
Sans/serif interface font of the enabled edition.
- Type:
package - Default:
<derivation inter-4.1> - Example:
<derivation fira-4.301> - Declared in:
internal/modules/base/kde.nix
garuda.kde.ocrLang
Tesseract OCR languages bundled into Spectacle (screenshot tool).
- Type:
list of string - Default:
[ "eng" ] - Example:
[ "eng" "deu" ] - Declared in:
internal/modules/base/kde.nix
garuda.kde.themePackage
Plasma look-and-feel package (global theme, window decorations, login screen) applied to the desktop. Defaults to the theme of the enabled edition.
- Type:
package - Default:
<derivation kde-0.2.6> - Example:
<derivation breeze-6.7.5> - Declared in:
internal/modules/base/kde.nix
garuda.kde.wallpaper
Wallpaper path inside themePackage, used for the login greeter.
- Type:
string - Default:
"share/wallpapers/Tree/contents/images/Tree.jpg" - Declared in:
internal/modules/base/kde.nix
garuda.managed
garuda.managed.config
Path to garuda-managed.json, written by garuda-nix-manager. It carries the managed settings — hostname, locale, timezone, keymap, auto-detected virtualisation, and extra packages — merged underneath your explicit configuration via gDefault, so anything you set yourself always overrides the defaults.
- Type:
null or absolute path - Default:
null - Declared in:
internal/modules/base/managed
garuda.mokka
garuda.mokka.enable
Mokka edition: calm dark Plasma 6 desktop in the Catppuccin Mocha palette, with matching login theme, apps and defaults. Mutually exclusive with garuda.dr460nized.
- Type:
boolean - Default:
false - Example:
true
garuda.networking
garuda.networking.enable
NetworkManager (loopback, docker and libvirt interfaces unmanaged, Wi-Fi powersaving off), legacy DHCP/wireless services disabled, and the wireless regulatory database enabled.
- Type:
boolean - Default:
false - Example:
true - Declared in:
internal/modules/base/networking.nix
garuda.networking.iwd
Use iwd as the NetworkManager Wi-Fi backend.
- Type:
boolean - Default:
false - Example:
true - Declared in:
internal/modules/base/networking.nix
garuda.networking.tweakKernel
Lower-latency networking: TCP BBR congestion control with the cake queueing discipline and a shorter TCP FIN timeout.
- Type:
boolean - Default:
true - Example:
true - Declared in:
internal/modules/base/networking.nix
garuda.noLoginManagerAutologin
garuda.noLoginManagerAutologin.enable
Whether to enable autologin to desktop instead of using the login manager.
- Type:
boolean - Default:
false - Example:
true - Declared in:
internal/modules/base/autologin.nix
garuda.noLoginManagerAutologin.startupCommand
The command to be executed after login.
- Type:
null or string - Default:
null - Example:
"startplasma-wayland" - Declared in:
internal/modules/base/autologin.nix
garuda.noLoginManagerAutologin.user
The user to automatically login.
- Type:
null or string - Default:
null - Example:
"nixos" - Declared in:
internal/modules/base/autologin.nix
garuda.performance-tweaks
garuda.performance-tweaks.enable
If set to true, this module will enable Garuda’s powersave tweaks. Conflicts with garuda.powersave-tweaks, only one may be enabled.
- Type:
boolean - Default:
false - Example:
true - Declared in:
internal/modules/base/performance.nix
garuda.powersave-tweaks
garuda.powersave-tweaks.enable
If set to true, this module will enable Garuda’s powersave tweaks. Conflicts with garuda.performance-tweaks, only one may be enabled.
- Type:
boolean - Default:
false - Example:
true - Declared in:
internal/modules/base/powersave.nix
garuda.preset
garuda.preset
Preset mapping to performance/powersave, ssh, firewall.
- Type:
null or one of "desktop", "laptop", "server", "handheld" - Default:
null - Declared in:
internal/modules/base/presets.nix
garuda.printing
garuda.printing.enable
Installs and enables printing support (CUPS + drivers).
- Type:
boolean - Default:
false - Declared in:
internal/modules/base/services.nix
garuda.samba
garuda.samba.enable
Installs and enables Samba file sharing. Shares themselves are user-defined via services.samba.settings.
- Type:
boolean - Default:
false - Declared in:
internal/modules/base/services.nix
garuda.scanning
garuda.scanning.enable
Installs and enables scanner support (SANE + AirScan + IPP-USB).
- Type:
boolean - Default:
false - Declared in:
internal/modules/base/services.nix
garuda.shell
garuda.shell.enable
Sets Fish as interactive shell (auto-launched from bash), micro as default editor, and adds Garuda’s shell aliases.
- Type:
boolean - Default:
true - Declared in:
internal/modules/base/shells.nix
garuda.subsystem
garuda.subsystem.enable
Run this NixOS install as a subsystem inside Garuda Linux: it derives certain settings from the Garuda installation, imports the host’s users, shares their home directories and mounts the Garuda root filesystem for cross-system access.
- Type:
boolean - Default:
false - Declared in:
internal/modules/base/managed
garuda.subsystem.import-networkmanager
Bind-mount the Garuda host’s NetworkManager system-connections into this system, so Wi-Fi and VPN profiles are shared instead of configured twice.
- Type:
boolean - Default:
true - Declared in:
internal/modules/base/managed
garuda.subsystem.imported-users.enable
Recreate the Garuda host users inside this system. Disable to manage users purely via users.users instead.
- Type:
boolean - Default:
true - Declared in:
internal/modules/base/managed/subsystem/imported-users.nix
garuda.subsystem.imported-users.shared-home.enable
Share the imported users’ ~/.config, ~/.local and ~/.cache between the Garuda host home and the NixOS home via bind mounts, so app settings carry over to the subsystem.
- Type:
boolean - Default:
true - Declared in:
internal/modules/base/managed/subsystem/imported-users.nix
garuda.subsystem.imported-users.shared-home.uuid
UUID of the Garuda BTRFS filesystem holding the @home subvolume that the shared home directories are mounted from. Set automatically from garuda-managed.json.
- Type:
string - Declared in:
internal/modules/base/managed/subsystem/imported-users.nix
garuda.subsystem.imported-users.users
User accounts imported from the Garuda host (populated from garuda-managed.json), keyed by username. Each entry recreates the host user witht the same UID, home and admin rights inside NixOS.
- Type:
attribute set of (submodule) - Default:
{ } - Declared in:
internal/modules/base/managed/subsystem/imported-users.nix
garuda.subsystem.imported-users.users.<name>.home
Home directory of the imported user, e.g. /home/garuda.
- Type:
string - Declared in:
internal/modules/base/managed/subsystem/imported-users.nix
garuda.subsystem.imported-users.users.<name>.passwordHash
Hashed initial password, used as initialHashedPassword.
- Type:
string - Declared in:
internal/modules/base/managed/subsystem/imported-users.nix
garuda.subsystem.imported-users.users.<name>.uid
Numeric UID, kept identical to the Garuda host user.
- Type:
signed integer - Declared in:
internal/modules/base/managed/subsystem/imported-users.nix
garuda.subsystem.imported-users.users.<name>.wheel
Whether the imported user gets wheel (sudo) membership.
- Type:
boolean - Declared in:
internal/modules/base/managed/subsystem/imported-users.nix
garuda.subsystem.useGrub
Install GRUB (device “nodev”) so the Garuda host bootloader can chainload this system. Disable when the host bootloader already handles booting or another loader is used.
- Type:
boolean - Default:
true - Declared in:
internal/modules/base/managed