Gaming on Nixos

trail Published Jan 15, 2026 Revision: 1

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"
  '';
}