bedHedd's NixOS Adventure

nixos living room pc

After crashing out about Fedora a couple of nights ago, I put my money where my mouth was and took time to get NixOS setup

For reference this is my home theater living room pc

This update corresponds to these commits on November 22nd

getting nixos installed

I started by using the graphical installer and burning the image to a usb with fedora media writer
https://search.nixos.org/packages?channel=25.05&query=fedora+media+writer
I also tried out the setup wizard that @progressEdd pushed a while back where running
nix run .#setup-wizard
would start up the script

Unfortunately, the default nixos installation did not have flakes enabled, so I kept getting the error

--experimental-features next command is disabled 

The solution was to change the system configuration to the one

using the parameters from the wiki

  nix.settings.experimental-features = [ "nix-command" "flakes" ];

I probably should have instructions similar to this shell script if I ever package up my install

from

getting my nvidia 2070 working

Nvidia has always been a challenge on Fedora as it needed the proprietary drivers and a kernel mod

I started by applying this config from the thread here

{ pkgs, config, lib, inputs, ... }: {
  imports = [
    inputs.nixos-hardware.nixosModules.common-gpu-nvidia

    # TODO: why do I get the below error?
    # error: The option `hardware.intelgpu.loadInInitrd' in `/nix/store/4mgg9mrh8g0qj4g3z9zvqhrniig10bsn-source/systems/evo/hardware/gpus.nix' is already declared in `/nix/store/75hvhrfigcnckibdlg877157bpwjmy85-source/common/gpu/intel'.
    # Where is the other coming from?g
    # inputs.nixos-hardware.nixosModules.common-gpu-intel
  ];

  boot = {
    # TODO: confirm this works
    # https://forums.developer.nvidia.com/t/550-54-14-cannot-create-sg-table-for-nvkmskapimemory-spammed-when-launching-chrome-on-wayland/284775/26
    initrd.kernelModules = [ "nvidia" "i915" "nvidia_modeset" "nvidia_uvm" "nvidia_drm" ];
    # extraModulePackages = [ config.boot.kernelPackages.nvidia_x11 ];
    kernelParams = [ "nvidia-drm.fbdev=1" ];
  };

  hardware = {
    # deprecated for graphics.enable
    # opengl = {
    #   enable = true;
    #   # extraPackages = [ pkgs.intel-media-driver pkgs.vaapiVdpau ];
    # };

    graphics = {
      # For 32 bit applications
      # enable32Bit = true;
      enable = true;
    };

    nvidia = {
      # Modesetting is required.
      modesetting.enable = true;

      # Nvidia power management. Experimental, and can cause sleep/suspend to fail.
      # Enable this if you have graphical corruption issues or application crashes after waking
      # up from sleep. This fixes it by saving the entire VRAM memory to /tmp/ instead
      # of just the bare essentials.
      powerManagement.enable = true;

      # Fine-grained power management. Turns off GPU when not in use.
      # Experimental and only works on modern Nvidia GPUs (Turing or newer).
      powerManagement.finegrained = false;

      # Use the NVidia open source kernel module (not to be confused with the
      # independent third-party "nouveau" open source driver).
      # Support is limited to the Turing and later architectures. Full list of
      # supported GPUs is at:
      # https://github.com/NVIDIA/open-gpu-kernel-modules#compatible-gpus
      # Only available from driver 515.43.04+
      # Currently alpha-quality/buggy, so false is currently the recommended setting.
      open = false;

      forceFullCompositionPipeline = true;

      prime = {
        intelBusId = "PCI:0:2:0";
        nvidiaBusId = "PCI:1:0:0";
        offload = {
          enable = true;
          enableOffloadCmd = true;
        };
        # Make the Intel iGP default. The NVIDIA Quadro is for CUDA/NVENC
        # reverseSync.enable = true;
        # sync.enable = true;
      };
      nvidiaSettings = true;

      # Optionally, you may need to select the appropriate driver version for your specific GPU.
      package = config.boot.kernelPackages.nvidiaPackages.beta;
    };
  };

  services.xserver.videoDrivers = [ "nvidia" ];

}

After a rebuild worked. I moved on to getting steam to launch

getting steam to launch

Although I was able to boot into desktop, steam refused to startup. When I launched it from the terminal, I got these logs

steam
steam.sh[32374]: Running Steam on nixos 25.11 64-bit
steam.sh[32374]: STEAM_RUNTIME is enabled automatically
setup.sh[32430]: Steam runtime environment up-to-date!
steam.sh[32374]: Log already open
steam.sh[32374]: Steam client's requirements are satisfied
CProcessEnvironmentManager is ready, 6 preallocated environment variables.
[2025-11-21 21:03:59] Startup - updater built Nov 21 2025 01:25:02
[2025-11-21 21:03:59] Startup - Steam Client launched with: '/home/bedhedd/.local/share/Steam/ubuntu12_32/steam' '-srt-logger-opened'
11/21 21:03:59 minidumps folder is set to /tmp/dumps
11/21 21:03:59 Init: Installing breakpad exception handler for appid(steam)/version(1763757504)/tid(32473)
Looks like steam didn't shutdown cleanly, scheduling immediate update check
CProcessEnvironmentManager is ready, 6 preallocated environment variables.
[2025-11-21 21:03:59] Process started with command-line: '/home/bedhedd/.local/share/Steam/ubuntu12_32/steam' '-child-update-ui' '-child-update-ui-socket' '8' '-srt-logger-opened'
11/21 21:03:59 minidumps folder is set to /tmp/dumps
[2025-11-21 21:03:59] Using update UI: xwin
11/21 21:03:59 Init: Installing breakpad exception handler for appid(steam)/version(0)/tid(32474)
[2025-11-21 21:03:59] Create window
[2025-11-21 21:03:59] Loading cached metrics from disk (/home/bedhedd/.local/share/Steam/package/steam_client_metrics.bin)
[2025-11-21 21:03:59] Failed to load cached hosts file (File 'update_hosts_cached.vdf' not found), using defaults
[2025-11-21 21:03:59] Using the following download hosts for Public, Realm steamglobal
[2025-11-21 21:03:59] 1. https://client-update.steamstatic.com, /, Realm 'steamglobal', weight was 1, source = 'baked in'
[2025-11-21 21:03:59] Checking for update on startup
[2025-11-21 21:03:59] Set percent complete: 0
[2025-11-21 21:03:59] Checking for available updates...
[2025-11-21 21:03:59] Downloading manifest: https://client-update.steamstatic.com/steam_client_ubuntu12
[2025-11-21 21:03:59] Manifest download: send request
[2025-11-21 21:03:59] Set status message: Checking for available updates...
[2025-11-21 21:03:59] Set percent complete: -1
[2025-11-21 21:04:00] Manifest download: waiting for download to finish
[2025-11-21 21:04:00] Manifest download: finished
[2025-11-21 21:04:00] Download skipped: /steam_client_ubuntu12 version 1763757504, installed version 1763757504, existing pending version 0
[2025-11-21 21:04:00] Nothing to do
[2025-11-21 21:04:00] Verifying installation...
[2025-11-21 21:04:00] Verifying all executable checksums
[2025-11-21 21:04:00] Set percent complete: -1
[2025-11-21 21:04:00] Set status message: Verifying installation...
[2025-11-21 21:04:00] Verification complete
UpdateUI: skip show logo
[2025-11-21 21:04:00] Destroy window
[2025-11-21 21:04:00] Shutdown

Steam logging initialized: directory: /home/bedhedd/.local/share/Steam/logs

XRRGetOutputInfo Workaround: initialized with override: 0 real: 0xf6187370
XRRGetCrtcInfo Workaround: initialized with override: 0 real: 0xf6185cc0
11/21 21:04:01 minidumps folder is set to /tmp/dumps
11/21 21:04:01 Init: Installing breakpad exception handler for appid(steamsysinfo)/version(1763757504)/tid(32483)
Running query: 1 - GpuTopology
CVulkanTopology: failed create vulkan instance: -9
CVulkanTopology: failed to create vulkan instanceFailed to query vulkan gpu topology

Failed to query vulkan gpu topology
Response: 
Exit code: -2
Fontconfig warning: line 5: unknown element "description"
Fontconfig warning: "/etc/fonts/conf.d/10-hinting-slight.conf", line 4: unknown element "description"
Fontconfig warning: "/etc/fonts/conf.d/10-scale-bitmap-fonts.conf", line 4: unknown element "description"
Fontconfig error: "/etc/fonts/conf.d/10-scale-bitmap-fonts.conf", line 72: non-double matrix element
Fontconfig error: "/etc/fonts/conf.d/10-scale-bitmap-fonts.conf", line 72: non-double matrix element
Fontconfig warning: "/etc/fonts/conf.d/10-scale-bitmap-fonts.conf", line 80: saw unknown, expected number
Fontconfig warning: "/etc/fonts/conf.d/10-sub-pixel-none.conf", line 4: unknown element "description"
Fontconfig warning: "/etc/fonts/conf.d/10-yes-antialias.conf", line 4: unknown element "description"
Fontconfig warning: "/etc/fonts/conf.d/11-lcdfilter-default.conf", line 4: unknown element "description"
Fontconfig warning: "/etc/fonts/conf.d/20-unhint-small-vera.conf", line 4: unknown element "description"
Fontconfig warning: "/etc/fonts/conf.d/30-metric-aliases.conf", line 4: unknown element "description"
Fontconfig warning: "/etc/fonts/conf.d/40-nonlatin.conf", line 4: unknown element "description"
Fontconfig warning: "/etc/fonts/conf.d/45-generic.conf", line 4: unknown element "description"
Fontconfig warning: "/etc/fonts/conf.d/45-latin.conf", line 4: unknown element "description"
Fontconfig warning: "/etc/fonts/conf.d/48-spacing.conf", line 4: unknown element "description"
Fontconfig warning: "/etc/fonts/conf.d/49-sansserif.conf", line 4: unknown element "description"
Fontconfig warning: "/etc/fonts/conf.d/50-user.conf", line 4: unknown element "description"
Fontconfig warning: "/etc/fonts/conf.d/51-local.conf", line 4: unknown element "description"
Fontconfig warning: "/etc/fonts/conf.d/60-generic.conf", line 4: unknown element "description"
Fontconfig warning: "/etc/fonts/conf.d/60-latin.conf", line 4: unknown element "description"
Fontconfig warning: "/etc/fonts/conf.d/65-nonlatin.conf", line 4: unknown element "description"
src/vgui2/src/surface_linux.cpp (1956) : glXChooseVisual failed
src/vgui2/src/surface_linux.cpp (1956) : glXChooseVisual failed
src/vgui2/src/surface_linux.cpp (1956) : Fatal assert; application exiting
src/vgui2/src/surface_linux.cpp (1956) : Fatal assert; application exiting
11/21 21:04:01 Init: Installing breakpad exception handler for appid(steam)/version(1763757504)/tid(32473)
steamwebhelper.sh[32487]: Starting steamwebhelper under bootstrap steamrt steam runtime via: /home/bedhedd/.local/share/Steam/steamrt64/steam-runtime-steamrt/_v2-entry-point
steamwebhelper.sh[32487]: Starting steamwebhelper with steamrt steam runtime at /home/bedhedd/.local/share/Steam/steamrt64/steam-runtime-steamrt/_v2-entry-point
assert_20251121210401_9.dmp[32519]: Uploading dump (out-of-process)
/tmp/dumps/assert_20251121210401_9.dmp
bedhedd@HT-RL06-PC ~> assert_20251121210401_9.dmp[32519]: Finished uploading minidump (out-of-process): success = yes
assert_20251121210401_9.dmp[32519]: response: CrashID=bp-14cb03b0-144b-43e1-8efc-8ba1a2251121
assert_20251121210401_9.dmp[32519]: file ''/tmp/dumps/assert_20251121210401_9.dmp'', upload yes: ''CrashID=bp-14cb03b0-144b-43e1-8efc-8ba1a2251121''
pressure-vessel-wrap[32487]: W: Using libGLX_mesa.so.0 from provider system for some but not all architectures! Will take /usr/share/drirc.d from provider.
pressure-vessel-wrap[32487]: W: "run/opengl-driver/share/drirc.d" is unlikely to appear in "/run/host"
exec ./steamwebhelper -nocrashdialog -lang=en_US -cachedir=/home/bedhedd/.local/share/Steam/config/htmlcache -steampid=32473 -buildid=1763757504 -steamid=0 -logdir=/home/bedhedd/.local/share/Steam/logs -uimode=7 -startcount=0 -steamuniverse=Public -realm=Global -clientui=/home/bedhedd/.local/share/Steam/clientui -steampath=/home/bedhedd/.local/share/Steam/ubuntu12_32/steam -launcher=0 -use_xcomposite_workaround --valve-initial-threadpool-size=4 --valve-enable-site-isolation --enable-smooth-scrolling --disable-gpu-compositing --disable-gpu --password-store=basic --log-file=/home/bedhedd/.local/share/Steam/logs/cef_log.txt --disable-quick-menu --disable-component-update --gaia-url=http://disabled.invalid --disable-features=WinRetrieveSuggestionsOnlyOnDemand,SpareRendererForSitePerProcess,DcheckIsFatal,BlockPromptsIfIgnoredOften,ValveFFmpegAllowLowDelayHEVC

I passed the log into chatgpt which was able to identified these issues

I then passed my config from the nvidia section

Chatgpt suggested the following:

You can see the git commit and diff here

The relevant lines are here

getting my xbox dongle working

I bought the microsoft third party adapter and got it working with steamos

It has been a while since I last got it setup, so the arch wiki’s section on the different drivers were helpful in figuring out which packages I needed
https://wiki.archlinux.org/title/Gamepad#Xbox_Wireless_Controller_/_Xbox_One_Wireless_Controller

I needed the xpadneo and xone. While looking for relevant install configs, I came across this post which helped explain xone further
https://old.reddit.com/r/NixOS/comments/1inbiy5/getting_xbox_controllers_to_work_on_nixos/mcatp5f/

xpadneo config parameters

This post was helpful in figuring out what I needed for xpadneo to work
https://old.reddit.com/r/NixOS/comments/1ch5d2p/help_needed_to_install_and_debug_xpadneo_xbox/lkbabax/

xone config

I had some issues consistently getting 4 controllers to pair with the dongle. Fortunately this config worked
https://old.reddit.com/r/NixOS/comments/ywzo6t/anyone_know_how_to_the_get_the_xone_driver_to/iwmykia/

You see the commits here
xpad neo

xone

1 Like