SteamOS like experience on NixOS. Clean quiet boot like on SteamDeck. Two second shutdown time. Meant for those who primarily use SSH, but would like a SteamOS experience for games.
- Desktop or laptop PC, preferably with AMD GPU or iGPU. (For SteamDeck, see https://github.com/Jovian-Experiments/Jovian-NixOS)
- Zero Desktop Bloat. Gamescope is used as window manager.
- Latest CachyOS Kernel and BORE
- Clean, textless boot. Similar to SteamDeck bootup. Minus the Splash logo.
- Read-only system files and binaries to prevent corruption or malware.
- Boot menu with previous system states, incase update breaks system, allowing you to boot to a previous good state.
- Automated updates and new features pushed via Github
- Latest ProtonGE automatically installed
https://github.com/SteamNix/SteamNix/releases
git clone https://github.com/SteamNix/SteamNix
mv SteamNix/configuration.nix /etc/nixos/
nix-channel --add https://nixos.org/channels/nixos-unstable nixos
sudo nixos-rebuild boot --upgrade
sudo reboot now
All Further changes to configuration.nix for the system need to be done through this command and configuration file!
pipx install steam-vdf
usage: steam-vdf [-h] [-d] [-v] [-o {json,text}] {info,list-shortcuts,view,add-shortcut,delete-shortcut,restart-steam} ...
Steam VDF Tool
positional arguments:
{info,list-shortcuts,view,add-shortcut,delete-shortcut,restart-steam}
info Display Steam library information
list-shortcuts List existing non-Steam game shortcuts
view View contents of a VDF file
add-shortcut Add a new non-Steam game shortcut
delete-shortcut Delete an existing non-Steam game shortcut
restart-steam Restart Steam
options:
-h, --help show this help message and exit
-d, --debug Enable debug output
-v, --dump-vdfs Enable dumping of VDFs to JSON
-o {json,text}, --output {json,text}
Output type format
Restart Steam from power menu
Headless Install of https://fitgirl-repacks.site via Docker/Podman
- Place all of Fitgirl bins and setup.exe in fgextract folder and run ./fgextract.sh
- Use btop to check when done, when QuickSFV.exe is run, its safe to exit the container.
- In the future a kill command will be added to the script.
- The files are located in the .wine folder in the current directory
SSH into PC and run:
pipx install legendary-gl
legendary install gameid
- Create script such as godlike.sh
#!/usr/bin/env bash
GAME_ID=...
PROTON=$(find $HOME/.steam/steam/steamapps/common/ -maxdepth 1 -name *Experimental | sort | sed -e '$!d')
export STEAM_GAME_PATH=<Your game install folder>
export STEAM_COMPAT_DATA_PATH="$STEAM_GAME_PATH" # Or point to where your pfx folder is
export STEAM_COMPAT_CLIENT_INSTALL_PATH="$STEAM_GAME_PATH"
legendary launch $GAME_ID --no-wine --wrapper "'$PROTON/proton' run"
- Fill in STEAM_GAME_PATH with path to game, default ~/Games/GameFolder
- Fill in GAME_ID with gameid
- Create a shortcut and add the full script path to the target field in parentheses: "/home/steamos/godlike.sh"
ln -s /run/current-system/sw/lib/retroarch/cores/ .config/retroarch/
NixOS uses hashes as paths and are subject to change. /run/current-system contains static paths to hashed folders.
-
WARNING! Will erase all data on largest drive detected. Place flake.nix in empty folder and CD into folder.
-
To generate ISO:
git init git add flake.nix nix build .#install-iso
Username: steamos
Password: steamos
Create /etc/nixos/custom.nix with secure permissions:
sudo touch /etc/nixos/custom.nix
sudo chmod 600 /etc/nixos/custom.nix
/etc/nixos/custom.nix
-------------------------
{ config, pkgs, ... }:
{
# Set a custom password
users.users.steamos = {
hashedPassword = "$6$TclE7a.../uEI7b."; # Substitute your hash here!
# You can generate a hash with: mkpasswd -m sha-512
};
# Any other overrides or settings...
}
Find device such as /dev/sda
[steamos@nixos:~]$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 596.2G 0 disk /run/media/steamos/HDD
sdb 8:16 0 931.5G 0 disk
├─sdb1 8:17 0 930.8G 0 part /nix/store
│ /
└─sdb2 8:18 0 750M 0 part /boot
[steamos@nixos:~]$ ls -l /dev/disk/by-uuid/
total 0
lrwxrwxrwx 1 root root 10 Apr 20 03:02 08D6-57BE -> ../../sda2
lrwxrwxrwx 1 root root 10 Apr 20 03:02 bf255b33-3103-444a-8c0f-57b5a6759ef0 -> ../../sda1
lrwxrwxrwx 1 root root 9 Apr 20 03:02 c8c86bd3-eb06-4010-8309-5724bd18e381 -> ../../sdb
Add drive to custom.nix and rebuild and reboot.
/etc/nixos/custom.nix
-------------------------
{ config, pkgs, lib, ... }:
{
fileSystems."/run/media/steamos/HDD" = {
device = "/dev/disk/by-uuid/c8c86bd3-eb06-4010-8309-5724bd18e381";
fsType = "btrfs";
options = [
"users" "nofail" "compress=zstd" "nosuid" "nodev" ];
}
}
Comment out Gnome desktop lines in configuration.nix and reboot into desktop and add folder via Desktop steam in storage menu.
- Get this Automount/AddLibrary script working in NixOS: https://github.com/scawp/Steam-Deck.Mount-External-Drive
- Find VDF python library
- Game banners will be imported for each sortcut
- Boot time improvement
- Add dot files for preconfigured RetroArch settings
- Create minimal auto installer ISO
- Create GH pages site with Documentation
- Create Fitgirl Store App with one click fitgirl installs
- Shortcut toggle to connect bluetooth controllers
