me like nix
0

Configure Feed

Select the types of activity you want to include in your feed.

fix steam and move it to mira only

author
Sean Aye
date (Mar 22, 2026, 8:03 PM -0400) commit 24e32d1a parent 3f5e1a9a change-id roqtvrlm
+200 -83
+79 -36
flake.lock
··· 60 60 "nixpkgs": "nixpkgs" 61 61 }, 62 62 "locked": { 63 - "lastModified": 1773403535, 64 - "narHash": "sha256-47MZaFrHxNO8tVUAmtVnerXUw2WWVluBOiU9MulN/yM=", 63 + "lastModified": 1774006048, 64 + "narHash": "sha256-+TtsaoR/NIHRvL+yAiaeOUmXo2NLZMMndSt8pw+IRiY=", 65 65 "owner": "catppuccin", 66 66 "repo": "nix", 67 - "rev": "d45b5665cc638bad1b794350de02f4dd41b0bb47", 67 + "rev": "230a8ce66ccbbf7109e8d0bc1276c7f636f99631", 68 68 "type": "github" 69 69 }, 70 70 "original": { ··· 79 79 "nixpkgs": "nixpkgs_2" 80 80 }, 81 81 "locked": { 82 - "lastModified": 1773272006, 83 - "narHash": "sha256-YGuXb5p9RCWJ7NrqDh1AUTy2NNfLYn38t6trGMpSkJc=", 82 + "lastModified": 1773966730, 83 + "narHash": "sha256-DCZIXZ2739AfEwRoOX5fgYGOuDDW6FsoEmAnIdmKHfg=", 84 84 "owner": "9001", 85 85 "repo": "copyparty", 86 - "rev": "6eb4f0ad9cc266abd5007509a15be93daa887ccf", 86 + "rev": "2cebda32973d92cffb3eb7089d42de5b2cf3dfe6", 87 87 "type": "github" 88 88 }, 89 89 "original": { ··· 327 327 ] 328 328 }, 329 329 "locked": { 330 - "lastModified": 1773279064, 331 - "narHash": "sha256-BLcSfp2aNm+0oDoHbvTufBRS2XwKqbIeUOXD8t58efE=", 330 + "lastModified": 1773964968, 331 + "narHash": "sha256-/vojK9noVTM+aWl+gX/vFjREtYcp0TGflBmQ1B4oIIk=", 332 332 "owner": "Mjoyufull", 333 333 "repo": "fsel", 334 - "rev": "7b38c6223eed6e509f98e066ff89f481bd1930d7", 334 + "rev": "c8f9b8080b2ea87d2c0fa6ea4d2bd6b96c154f38", 335 335 "type": "github" 336 336 }, 337 337 "original": { ··· 368 368 ] 369 369 }, 370 370 "locked": { 371 - "lastModified": 1773681856, 372 - "narHash": "sha256-+bRqxoFCJFO9ZTFhcCkzNXbDT3b8AEk88fyjB7Is6eo=", 371 + "lastModified": 1774007980, 372 + "narHash": "sha256-FOnZjElEI8pqqCvB6K/1JRHTE8o4rer8driivTpq2uo=", 373 373 "owner": "nix-community", 374 374 "repo": "home-manager", 375 - "rev": "57d5560ee92a424fb71fde800acd6ed2c725dfce", 375 + "rev": "9670de2921812bc4e0452f6e3efd8c859696c183", 376 376 "type": "github" 377 377 }, 378 378 "original": { ··· 501 501 "xwayland-satellite-unstable": "xwayland-satellite-unstable" 502 502 }, 503 503 "locked": { 504 - "lastModified": 1773725889, 505 - "narHash": "sha256-htkVJrtaWJS7wQSXg8d26RR6jF3Iab2bYTNfvTgv05Q=", 504 + "lastModified": 1773889880, 505 + "narHash": "sha256-cu23CGP+mD2wKPKaoGM7evZ1dXfjd+cjryqqqx2HloE=", 506 506 "owner": "sodiboo", 507 507 "repo": "niri-flake", 508 - "rev": "9987baf8f935a1b3b2aa89a44c13b3239ecc640e", 508 + "rev": "63767d4572eb2e3da5e68f68de77d8f2cdeca8dd", 509 509 "type": "github" 510 510 }, 511 511 "original": { ··· 617 617 "nixpkgs": "nixpkgs_6" 618 618 }, 619 619 "locked": { 620 - "lastModified": 1771867771, 621 - "narHash": "sha256-v4UIlzztrAll/NPjsi0xWa5+fWcI9A4p8MLonL9EUeg=", 620 + "lastModified": 1773704510, 621 + "narHash": "sha256-Kq0WPitNekYzouyd8ROlZb63cpSg/+Ep2XxkV0YlABU=", 622 622 "owner": "nvmd", 623 623 "repo": "nixos-raspberrypi", 624 - "rev": "6b30596bea9047a7cbb55cb58e6f8a3efa4012e2", 624 + "rev": "b5c77d506bed55250a4642ce6c8b395dd29ef06b", 625 625 "type": "github" 626 626 }, 627 627 "original": { ··· 633 633 }, 634 634 "nixpkgs": { 635 635 "locked": { 636 - "lastModified": 1773122722, 637 - "narHash": "sha256-FIqHByVqxCprNjor1NqF80F2QQoiiyqanNNefdlvOg4=", 636 + "lastModified": 1773821835, 637 + "narHash": "sha256-TJ3lSQtW0E2JrznGVm8hOQGVpXjJyXY2guAxku2O9A4=", 638 638 "owner": "NixOS", 639 639 "repo": "nixpkgs", 640 - "rev": "62dc67aa6a52b4364dd75994ec00b51fbf474e50", 640 + "rev": "b40629efe5d6ec48dd1efba650c797ddbd39ace0", 641 641 "type": "github" 642 642 }, 643 643 "original": { ··· 649 649 }, 650 650 "nixpkgs-stable": { 651 651 "locked": { 652 - "lastModified": 1773705440, 653 - "narHash": "sha256-xB30bbAp0e7ogSEYyc126mAJMt4FRFh8wtm6ADE1xuM=", 652 + "lastModified": 1773814637, 653 + "narHash": "sha256-GNU+ooRmrHLfjlMsKdn0prEKVa0faVanm0jrgu1J/gY=", 654 654 "owner": "NixOS", 655 655 "repo": "nixpkgs", 656 - "rev": "48652e9d5aea46e555b3df87354280d4f29cd3a3", 656 + "rev": "fea3b367d61c1a6592bc47c72f40a9f3e6a53e96", 657 657 "type": "github" 658 658 }, 659 659 "original": { ··· 712 712 }, 713 713 "nixpkgs_4": { 714 714 "locked": { 715 - "lastModified": 1773646010, 716 - "narHash": "sha256-iYrs97hS7p5u4lQzuNWzuALGIOdkPXvjz7bviiBjUu8=", 715 + "lastModified": 1773821835, 716 + "narHash": "sha256-TJ3lSQtW0E2JrznGVm8hOQGVpXjJyXY2guAxku2O9A4=", 717 717 "owner": "NixOS", 718 718 "repo": "nixpkgs", 719 - "rev": "5b2c2d84341b2afb5647081c1386a80d7a8d8605", 719 + "rev": "b40629efe5d6ec48dd1efba650c797ddbd39ace0", 720 720 "type": "github" 721 721 }, 722 722 "original": { ··· 744 744 }, 745 745 "nixpkgs_6": { 746 746 "locked": { 747 - "lastModified": 1771867432, 748 - "narHash": "sha256-KOb/xJgNRoUDD7y42/lh2a1+akUQ7OYuBdwX/CZevFY=", 749 - "owner": "nvmd", 747 + "lastModified": 1773375660, 748 + "narHash": "sha256-SEzUWw2Rf5Ki3bcM26nSKgbeoqi2uYy8IHVBqOKjX3w=", 749 + "owner": "NixOS", 750 750 "repo": "nixpkgs", 751 - "rev": "2597cb7e564b9004c9d3182afb29b37ae842411a", 751 + "rev": "3e20095fe3c6cbb1ddcef89b26969a69a1570776", 752 752 "type": "github" 753 753 }, 754 754 "original": { 755 - "owner": "nvmd", 756 - "ref": "modules-with-keys-25.11", 755 + "owner": "NixOS", 756 + "ref": "nixos-25.11", 757 757 "repo": "nixpkgs", 758 758 "type": "github" 759 759 } 760 760 }, 761 761 "nixpkgs_7": { 762 762 "locked": { 763 - "lastModified": 1773646010, 764 - "narHash": "sha256-iYrs97hS7p5u4lQzuNWzuALGIOdkPXvjz7bviiBjUu8=", 763 + "lastModified": 1773821835, 764 + "narHash": "sha256-TJ3lSQtW0E2JrznGVm8hOQGVpXjJyXY2guAxku2O9A4=", 765 765 "owner": "NixOS", 766 766 "repo": "nixpkgs", 767 - "rev": "5b2c2d84341b2afb5647081c1386a80d7a8d8605", 767 + "rev": "b40629efe5d6ec48dd1efba650c797ddbd39ace0", 768 768 "type": "github" 769 769 }, 770 770 "original": { ··· 774 774 "type": "github" 775 775 } 776 776 }, 777 + "opencodex": { 778 + "inputs": { 779 + "nixpkgs": [ 780 + "nixpkgs" 781 + ], 782 + "rust-overlay": "rust-overlay" 783 + }, 784 + "locked": { 785 + "lastModified": 1773942898, 786 + "narHash": "sha256-egLndxI/2MZrHnrVWxkHjtjFnkoBB6CLObOABvkpEuc=", 787 + "ref": "refs/heads/main", 788 + "rev": "8a20b18b2bb35de2edc07e7fd7c9b5e31a37454e", 789 + "revCount": 4665, 790 + "type": "git", 791 + "url": "https://codeberg.org/seanaye/opencodex" 792 + }, 793 + "original": { 794 + "type": "git", 795 + "url": "https://codeberg.org/seanaye/opencodex" 796 + } 797 + }, 777 798 "root": { 778 799 "inputs": { 779 800 "agenix": "agenix", ··· 789 810 "nixos-hardware": "nixos-hardware", 790 811 "nixos-raspberrypi": "nixos-raspberrypi", 791 812 "nixpkgs": "nixpkgs_7", 813 + "opencodex": "opencodex", 792 814 "trmnl-rs": "trmnl-rs", 793 815 "zen-browser": "zen-browser" 794 816 } ··· 858 880 "owner": "rust-lang", 859 881 "ref": "nightly", 860 882 "repo": "rust-analyzer", 883 + "type": "github" 884 + } 885 + }, 886 + "rust-overlay": { 887 + "inputs": { 888 + "nixpkgs": [ 889 + "opencodex", 890 + "nixpkgs" 891 + ] 892 + }, 893 + "locked": { 894 + "lastModified": 1769828398, 895 + "narHash": "sha256-zmnvRUm15QrlKH0V1BZoiT3U+Q+tr+P5Osi8qgtL9fY=", 896 + "owner": "oxalica", 897 + "repo": "rust-overlay", 898 + "rev": "a1d32c90c8a4ea43e9586b7e5894c179d5747425", 899 + "type": "github" 900 + }, 901 + "original": { 902 + "owner": "oxalica", 903 + "repo": "rust-overlay", 861 904 "type": "github" 862 905 } 863 906 },
+4
flake.nix
··· 47 47 url = "git+https://codeberg.org/seanaye/mako-tui"; 48 48 inputs.nixpkgs.follows = "nixpkgs"; 49 49 }; 50 + opencodex = { 51 + url = "git+https://codeberg.org/seanaye/opencodex"; 52 + inputs.nixpkgs.follows = "nixpkgs"; 53 + }; 50 54 nixos-raspberrypi.url = "github:nvmd/nixos-raspberrypi/main"; 51 55 }; 52 56
+2 -42
hosts/common/common.nix
··· 5 5 berkeley-mono-typeface = 6 6 if hasBerkeleyMono then inputs.berkeley-mono.packages.${pkgs.system}.default else null; 7 7 8 - # Steam/gamescope calls steamos-session-select when the user presses 9 - # "Switch to Desktop". Without this script, the button does nothing. 10 - # Returning 0 lets gamescope proceed to exit, returning to greetd/regreet. 11 - steamos-session-select = pkgs.writeShellScriptBin "steamos-session-select" '' 12 - echo "Switching session to: $1" 13 - ''; 14 8 in 15 9 { 16 10 ··· 26 20 27 21 # Bootloader. 28 22 boot.loader.systemd-boot.enable = true; 23 + boot.loader.systemd-boot.configurationLimit = 10; 29 24 boot.loader.efi.canTouchEfiVariables = true; 30 25 31 26 services.fwupd.enable = true; ··· 204 199 "dialout" 205 200 ]; 206 201 shell = pkgs.fish; 207 - }; 208 - 209 - programs.steam = { 210 - enable = true; 211 - remotePlay.openFirewall = true; 212 - gamescopeSession = { 213 - enable = true; 214 - args = [ 215 - "-r" "120" 216 - "-R" "120" 217 - ]; 218 - env = { 219 - STEAM_DESKTOP_SESSION = "niri"; 220 - }; 221 - }; 222 - extraCompatPackages = with pkgs; [ 223 - proton-ge-bin 224 - ]; 225 - }; 226 - 227 - programs.gamemode.enable = true; 228 - 229 - programs.gamescope = { 230 - enable = true; 231 - capSysNice = false; 232 - }; 233 - 234 - # Manually add the gamescope capability wrapper without triggering 235 - # the steam module's setuid bwrap override (which zeros CapBnd 236 - # inside the FHS sandbox, preventing games from launching) 237 - security.wrappers.gamescope = { 238 - owner = "root"; 239 - group = "root"; 240 - source = "${pkgs.gamescope}/bin/gamescope"; 241 - capabilities = "cap_sys_nice+pie"; 202 + linger = true; 242 203 }; 243 204 244 205 programs.fish.enable = true; ··· 257 218 # $ nix search wget 258 219 environment.systemPackages = with pkgs; [ 259 220 wl-clipboard 260 - steamos-session-select 261 221 ]; 262 222 environment.variables = { 263 223 EDITOR = "hx";
+9 -2
hosts/common/home.nix
··· 44 44 }) 45 45 fd 46 46 ripgrep 47 - codex 47 + # inputs.opencodex.packages.${pkgs.system}.default 48 48 yazi # tui file browser 49 49 gh # github cli 50 50 forgejo-cli ··· 148 148 }; 149 149 clip-to-geometry = true; 150 150 draw-border-with-background = false; 151 + } 152 + { 153 + matches = [ { app-id = "^steam_app_"; } ]; 154 + border.enable = false; 155 + open-fullscreen = true; 151 156 } 152 157 { 153 158 matches = [ { app-id = "^fsel$"; } ]; ··· 750 755 source ~/.config/op/plugins.sh 751 756 end 752 757 # Auto-launch zellij if not already inside a session 758 + # Use systemd-run to escape niri's session scope so the server 759 + # survives logout 753 760 if not set -q ZELLIJ 754 - zellij 761 + systemd-run --user --scope zellij 755 762 else 756 763 fastfetch --logo small 757 764 end
+1
hosts/common/quickshell/modules/sidebar/Sidebar.qml
··· 77 77 // Weather 78 78 Text { 79 79 Layout.alignment: Qt.AlignHCenter 80 + font.family: "Noto Color Emoji" 80 81 font.pixelSize: 14 81 82 text: Services.Weather.icon 82 83 visible: Services.Weather.icon !== ""
+100
hosts/mira/configuration.nix
··· 1 1 { 2 2 pkgs, 3 + lib, 3 4 config, 4 5 inputs, 5 6 ... ··· 33 34 profile = '' 34 35 export SSL_CERT_FILE="${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt" 35 36 export GIO_MODULE_DIR="${pkgs.glib-networking}/lib/gio/modules/" 37 + export __GLX_VENDOR_LIBRARY_NAME=nvidia 36 38 ''; 37 39 38 40 extraPkgs = ··· 62 64 cp -r ${appimage-contents}/usr/share/icons $out/share/ 63 65 fi 64 66 ''; 67 + # Steam/gamescope calls steamos-session-select when the user presses 68 + # "Switch to Desktop". Without this script, the button does nothing. 69 + # Returning 0 lets gamescope proceed to exit, returning to greetd/regreet. 70 + steamos-session-select = pkgs.writeShellScriptBin "steamos-session-select" '' 71 + echo "Switching session to: $1" 72 + ''; 73 + 74 + # Pin gamescope to 3.14.29 — versions 3.15+ crash on NVIDIA due to 75 + # a confirmed driver bug (#5701801) in Vulkan YCbCr sampler pipeline compilation. 76 + gamescope_3_14 = pkgs.gamescope.overrideAttrs (old: { 77 + version = "3.14.29"; 78 + src = pkgs.fetchFromGitHub { 79 + owner = "ValveSoftware"; 80 + repo = "gamescope"; 81 + tag = "3.14.29"; 82 + fetchSubmodules = true; 83 + hash = "sha256-q3HEbFqUeNczKYUlou+quxawCTjpM5JNLrML84tZVYE="; 84 + }; 85 + # Drop the system-libraries fetchpatch (3rd patch) — only applies to 3.16.x 86 + patches = lib.take 2 (old.patches or []); 87 + # 3.14.29 uses pkg-config for glm/stb, not meson subprojects 88 + mesonFlags = builtins.filter 89 + (f: builtins.match ".*glm_include_dir.*" f == null 90 + && builtins.match ".*stb_include_dir.*" f == null) 91 + (old.mesonFlags or []); 92 + # Fix vendored OpenVR CMakeLists.txt requiring CMake < 3.5 (incompatible with CMake 4.x) 93 + env = (old.env or { }) // { CMAKE_POLICY_VERSION_MINIMUM = "3.5"; }; 94 + # default_extras_install.sh doesn't exist in 3.14.29; 95 + # also provide glm/stb as meson subprojects pointing to system packages 96 + postPatch = builtins.replaceStrings 97 + [ "patchShebangs default_extras_install.sh" ] [ "" ] 98 + (old.postPatch or "") 99 + + '' 100 + rm -rf subprojects/glm subprojects/glm.wrap subprojects/stb subprojects/stb.wrap 101 + mkdir -p subprojects/glm subprojects/stb 102 + 103 + cat > subprojects/glm/meson.build << 'GLMEOF' 104 + project('glm', 'cpp', version: '1.0.0') 105 + glm_dep = declare_dependency(include_directories: include_directories('${lib.getInclude pkgs.glm}/include', is_system: true)) 106 + meson.override_dependency('glm', glm_dep) 107 + GLMEOF 108 + 109 + cat > subprojects/stb/meson.build << 'STBEOF' 110 + project('stb', 'c', version: '0.0.1') 111 + stb_dep = declare_dependency(include_directories: include_directories('${lib.getInclude pkgs.stb}/include/stb', is_system: true)) 112 + meson.override_dependency('stb', stb_dep) 113 + STBEOF 114 + ''; 115 + }); 65 116 in 66 117 { 67 118 imports = [ ··· 338 389 }; 339 390 }; 340 391 392 + # Frigate manages many ffmpeg child processes that ignore SIGTERM; 393 + # shorten the stop timeout so it doesn't block shutdown for 90s. 394 + systemd.services.frigate.serviceConfig = { 395 + TimeoutStopSec = 5; 396 + KillMode = "mixed"; # SIGTERM to main, SIGKILL to children after timeout 397 + }; 398 + 341 399 # Home Assistant service 342 400 services.home-assistant = { 343 401 enable = true; ··· 477 535 ]; 478 536 }; 479 537 538 + # NVIDIA needs GBM/EGL env vars for cage (wlroots) to initialize GPU on greetd restart 539 + services.greetd.settings.default_session.command = lib.mkOverride 49 540 + "${pkgs.dbus}/bin/dbus-run-session ${lib.getExe pkgs.cage} -s -d -- env GBM_BACKEND=nvidia-drm __GLX_VENDOR_LIBRARY_NAME=nvidia GDK_SCALE=2 ${lib.getExe pkgs.greetd.regreet}"; 541 + 542 + programs.steam = { 543 + enable = true; 544 + remotePlay.openFirewall = true; 545 + gamescopeSession = { 546 + enable = true; 547 + args = [ 548 + "-r" "120" 549 + "-R" "120" 550 + ]; 551 + env = { 552 + STEAM_DESKTOP_SESSION = "niri"; 553 + ENABLE_GAMESCOPE_WSI = "0"; 554 + }; 555 + }; 556 + extraCompatPackages = with pkgs; [ 557 + proton-ge-bin 558 + ]; 559 + }; 560 + 561 + programs.gamemode.enable = true; 562 + 563 + programs.gamescope = { 564 + enable = true; 565 + capSysNice = false; 566 + package = gamescope_3_14; 567 + }; 568 + 569 + # Manually add the gamescope capability wrapper without triggering 570 + # the steam module's setuid bwrap override (which zeros CapBnd 571 + # inside the FHS sandbox, preventing games from launching) 572 + security.wrappers.gamescope = { 573 + owner = "root"; 574 + group = "root"; 575 + source = "${gamescope_3_14}/bin/gamescope"; 576 + capabilities = "cap_sys_nice+pie"; 577 + }; 578 + 480 579 environment.systemPackages = [ 481 580 pkgs.lm_sensors 482 581 bambu-studio 582 + steamos-session-select 483 583 ]; 484 584 485 585 # Enable the OpenSSH daemon.
+5 -3
hosts/mira/hardware-configuration.nix
··· 84 84 hardware.nvidia = { 85 85 modesetting.enable = true; 86 86 powerManagement.enable = true; 87 - open = true; # recommended for Turing+ 87 + open = true; 88 88 nvidiaSettings = true; 89 89 package = config.boot.kernelPackages.nvidiaPackages.stable; 90 90 }; ··· 95 95 # still possible to use this option, but it's recommended to use it in conjunction 96 96 # with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`. 97 97 networking.useDHCP = lib.mkDefault true; 98 - # Disable USB Ethernet (connected via switch causing WiFi issues) 99 - networking.interfaces.enp0s20f0u4u3.useDHCP = false; 98 + # Disable USB Ethernet (connected via switch causing WiFi issues). 99 + # Using networkmanager unmanaged instead of networking.interfaces to 100 + # avoid generating a systemd device unit that blocks boot for 90s. 101 + networking.networkmanager.unmanaged = [ "enp0s20f0u4u3" ]; 100 102 # networking.interfaces.enp3s0.useDHCP = lib.mkDefault true; 101 103 # networking.interfaces.wlo1.useDHCP = lib.mkDefault true; 102 104