#!/usr/bin/env bash # Install or uninstall Nix + Home Manager on SteamOS (Steam Frame, Steam Deck). # # curl -fsSL https://steam-frame-nix.lhns.de | bash -s -- install # curl -fsSL https://steam-frame-nix.lhns.de | bash -s -- uninstall # # Run `install.sh --help` for details. Works from a file or piped into bash # (prompts read from /dev/tty). set -euo pipefail TEMPLATE="${STEAM_FRAME_NIX_TEMPLATE:-github:lhns/steam-frame-nix}" NIX_INSTALLER_URL="${NIX_INSTALLER_URL:-https://artifacts.nixos.org/nix-installer}" HM_FLAKE="${HM_FLAKE:-home-manager/master}" NIX_PROFILE_SCRIPT=/nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh NIX_RECEIPT=/nix/receipt.json NIX_INSTALLER_BIN=/nix/nix-installer FLAKES_LINE="experimental-features = nix-command flakes" CONFIG_HOME="${XDG_CONFIG_HOME:-$HOME/.config}" HM_CONFIG_LINK="$CONFIG_HOME/home-manager" DEFAULT_CONFIG_DIR="$HOME/nix-config" USER_NIX_CONF="$CONFIG_HOME/nix/nix.conf" USER_UNIT_DIR="$CONFIG_HOME/systemd/user" USER_NAME="$(id -un)" USER_ID="$(id -u)" OUTER_RUNTIME_DIR="/run/user/$USER_ID" ASSUME_YES=0 RO_RELOCK=0 # --- output ----------------------------------------------------------------- if [[ -t 1 ]]; then B=$'\e[1m' G=$'\e[1;32m' Y=$'\e[1;33m' R=$'\e[1;31m' N=$'\e[0m' else B='' G='' Y='' R='' N=''; fi step() { printf '%s==>%s %s%s%s\n' "$G" "$N" "$B" "$*" "$N"; } info() { printf ' %s\n' "$*"; } warn() { printf '%swarning:%s %s\n' "$Y" "$N" "$*" >&2; } die() { printf '%serror:%s %s\n' "$R" "$N" "$*" >&2; exit 1; } usage() { cat < [options] Commands: install [--flake ] [--yes] Install Nix (NixOS nix-installer, steam-deck planner, flakes enabled) if it is missing, then activate a Home Manager configuration: --flake given that flake (a directory or a flake reference) otherwise ~/.config/home-manager neither exists a new config in ~/nix-config from the steam-frame-nix template, linked to ~/.config/home-manager Existing dotfiles that conflict are renamed to *.hm-backup-