Skip to content
 
 

Latest commit

 

History

190 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

steamos

❄️ SteamNix OS ❄️

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.

Requirements

Features

  • 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

Download ISO

https://github.com/SteamNix/SteamNix/releases

How to build on NixOS Base System

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!

How to use Steam VDF (Add Non-Steam Games)

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

Installing Epic Games

SSH into PC and run:

pipx install legendary-gl
legendary install gameid

Running Epic Games with Steam's Proton

  • 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"

Symlinking RetroArch Cores so EmulationStation can find them (If using AppImage)

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.

LiveCD AutoInstaller

  • 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
    

Password/Login

Username: steamos
Password: steamos

Custom Password and other local customization

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...
}

Adding another drive

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.

TODO

  • 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

About

SteamOS but Nix Flavoured.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages