Gaming on Nixos

Published Jan 15, 2026 Revision: 1 · trail

I have recently started configuring some of my games using nix. I'm pretty pleased with the results so far!

Deadlock

Deadlock has been one of my favorite games in the past year. For the most part it runs well on Linux, but I did have a period where I tinkered with different proton versions and launch options quite a bit. I have now found steam-config-nix which allows me to set my launch options in my flake!

_: {  programs.steam.config.apps.deadlock = {    id = 1422450;    compatTool = "GE-Proton";    launchOptions = ''LD_PRELOAD="" gamemoderun %command% -no_prewarm_map'';  };}

Counter Strike

Counter-Strike runs great natively on Linux, no extra configuration required. For this game I wanted to have my keybinds set so my sensitivity and utility hotkeys are always set up for me:

   _:   {     home.file.".local/share/Steam/steamapps/common/Counter-Strike Global Offensive/game/csgo/cfg/autoexec.cfg".text = ''       unbindall      // Mouse Look      m_yaw "0.022"      m_pitch "0.022"      cl_mouselook "1"      bind "MOUSE_X" "yaw"      bind "MOUSE_Y" "pitch"      bind "MOUSE1" "+attack"    bind "MOUSE2" "+attack2"      bind "MOUSE3" "player_ping"    // Middle click = ping      bind "MOUSE5" "+lookatweapon"  // Front side button = inspect      // Movement      bind "w" "+forward"      bind "a" "+left"      bind "s" "+back"      bind "d" "+right"      bind "SPACE" "+jump"      bind "MWHEELDOWN" "+jump"      bind "CTRL" "+duck"      bind "SHIFT" "+sprint"      // Weapon Actions      bind "r" "+reload"      bind "q" "drop"      bind "e" "+use"      // Weapon Slots      bind "1" "slot1"      bind "2" "slot2"      bind "3" "slot3"      bind "4" "slot4"      bind "5" "slot5"      // Comms      bind "b" "buymenu"      bind "TAB" "+showscores"      bind "v" "+voicerecord"      bind "`" "toggleconsole"      bind "ESCAPE" "cancelselect"      // Grenades      bind "z" "slot10"  // Molotov/Incendiary      bind "x" "slot9"   // Decoy      bind "c" "slot8"   // Smoke      bind "g" "slot6"   // HE Grenade      bind "f" "slot7"   // Flashbang      cl_radar_square_always "1"      sensitivity "0.75"      // Sound - mute all except MVP and bomb      snd_deathcamera_volume "0"      snd_menumusic_volume "0"      snd_mvp_volume "0.35"      snd_roundaction_volume "0"      snd_roundend_volume "0"      snd_roundstart_volume "0"      snd_bombvolume "0.35"      snd_tensecondwarning_volume "0"  '';}