Skip to content

Nix options

The flake’s modules, as nix/home-manager.nix and nix/nixos.nix declare them. Install shows where each one goes.

imports = [ inputs.universe.homeModules.default ];

programs.universe.enable

Whether to enable Universe game launcher (user side: packages, config.toml).

Type: boolean · default false.

Example:

true

programs.universe.desktop

Universe Desktop, the GTK app for mouse and keyboard, with the GNOME Shell search provider for the library. null leaves it out.

Type: null or package · default this flake’s universe-desktop.

programs.universe.package

The universe CLI, with the modules and sources that ship with it.

Type: package · default this flake’s universe.

programs.universe.settings

Contents of config.toml (see docs/api.md): paths, launch defaults, the enabled modules and sources with their [modules.<id>] and [sources.<id>] settings, keys. Set, config.toml is a store symlink the core cannot write: universe config set, enabling a module or source and the UI’s settings pages are refused, so every setting comes from here. null (the default) leaves config.toml to the user and the core writes it in place.

Type: null or TOML value · default null.

Example:

{
launch = {
proton = "proton-ge";
};
modules = {
capture = {
codec = "av1_10bit";
};
enabled = [
"capture"
"screenshot"
];
};
paths = {
recordings_root = "/mnt/recordings/games";
};
sources = {
enabled = [
"gog"
];
gog = {
platform = "linux";
};
};
}

programs.universe.shellExtension

The ‘universe@ilyasturki.github.io’ GNOME Shell extension: the capture module lists windows through it for window-only recording, the screenshot module takes its screenshots in it, the controller macros show the shell’s OSD through it. GNOME loads it after the next logout.

Type: package · default this flake’s universe-shell-extension.

programs.universe.ui

Universe Big Screen (universe-ui), the app you drive with a controller.

Type: package · default this flake’s universe-ui.

imports = [ inputs.universe.nixosModules.default ];

programs.universe.enable

Whether to enable Universe game launcher (system side: gsr-kms-server, uinput, uhid, gamescope).

Type: boolean · default false.

Example:

true

programs.universe.capture.enable

Enable gpu-screen-recorder with its setcap KMS helper for the capture module, at the version this flake’s nixpkgs ships (the helper and the recorder must match).

Type: boolean · default true.

programs.universe.controller.enable

What the controller macros and the pads module need from the system: /dev/uinput opened to the logged-in user (key macros type through it), the game-devices udev rules that make pads readable by the logged-in user, and /dev/uhid with the virtual pads’ hidraw nodes opened to that user (the pads module creates one virtual pad per player there).

Type: boolean · default true.

programs.universe.gamescope.enable

gamescope with its CAP_SYS_NICE wrapper: every game runs inside it (launch.gamescope), one window that is black until the game draws.

Type: boolean · default true.

programs.universe.session.enable

Whether to enable the Universe session in the display manager: gamescope drives the screen with the launcher as its only client, like SteamOS’s Game Mode, and quitting logs out. services.displayManager.defaultSession = "universe" with an autologin boots straight into it.

Type: boolean · default false.

Example:

true

programs.universe.session.package

The universe-ui the session runs: the one Home Manager installs, so both read the same library.

Type: package · default this flake's universe-ui.