about summary refs log tree commit diff
path: root/modules/games/steam-run.nix
diff options
context:
space:
mode:
authorazahi <azat@bahawi.net>2024-11-10 01:08:38 +0300
committerazahi <azat@bahawi.net>2024-11-10 01:08:38 +0300
commit693768ee37098dbebb38c86e27044f2faa38348d (patch)
tree37c92a1c83cf22fa5e5a570baa8598ba6063c795 /modules/games/steam-run.nix
parent2024-10-29 (diff)
2024-11-10 HEAD master
Diffstat (limited to '')
-rw-r--r--modules/games/steam-run.nix79
1 files changed, 28 insertions, 51 deletions
diff --git a/modules/games/steam-run.nix b/modules/games/steam-run.nix
index be06c78..9e3c962 100644
--- a/modules/games/steam-run.nix
+++ b/modules/games/steam-run.nix
@@ -2,72 +2,49 @@
   config,
   lib,
   pkgs,
-  pkgsRev,
   ...
 }:
-with lib;
 let
   cfg = config.nixfiles.modules.games.steam-run;
 in
 {
   options.nixfiles.modules.games.steam-run = {
-    enable = mkEnableOption "native Steam runtime";
+    enable = lib.mkEnableOption "native Steam runtime";
 
     quirks = {
-      blackIsleStudios = mkEnableOption "fixes for games from Black Isle Studios";
-      cryptOfTheNecrodancer = mkEnableOption ''fixes for "Crypt of the NecroDancer" issues'';
-      mountAndBladeWarband = mkEnableOption ''fixes for "Mount & Blade: Warband" issues'';
+      blackIsleStudios = lib.mkEnableOption "fixes for games from Black Isle Studios";
+      cryptOfTheNecrodancer = lib.mkEnableOption ''fixes for "Crypt of the NecroDancer" issues'';
+      mountAndBladeWarband = lib.mkEnableOption ''fixes for "Mount & Blade: Warband" issues'';
     };
   };
 
-  config = mkIf cfg.enable {
-    nixfiles.modules.games.steam.enable = true;
+  config = lib.mkIf cfg.enable {
+    nixfiles.modules = {
+      games.steam.enable = true;
 
-    hm.home.packages = with pkgs; [
-      (steam.override {
+      common.nix.allowedUnfreePackages = lib.optionals cfg.quirks.mountAndBladeWarband [
+        "fmod" # proprietary
+      ];
+    };
+
+    hm.home.packages = [
+      (pkgs.steam.override {
+        extraEnv.MANGOHUD = 1;
         extraLibraries =
           _:
-          with cfg.quirks;
-          optional blackIsleStudios openssl_1_0_0
-          ++ optional cryptOfTheNecrodancer (pkgsRev "d1c3fea7ecbed758168787fe4e4a3157e52bc808" "sha256-3muuhz3fjtF1bz32UXOYCho51E8JSeEwo2iDZFQJdXo=")
-          .flac
-          ++ optionals mountAndBladeWarband [
-            (glew.overrideAttrs (
-              _: super:
-              let
-                opname = super.pname;
-              in
-              rec {
-                pname = "${opname}-steam-run-fix";
-                inherit (super) version;
-                src = fetchurl {
-                  url = "mirror://sourceforge/${opname}/${opname}-${version}.tgz";
-                  hash = "sha256-BN6R5+Z2MDm8EZQAlc2cf4gLq6ghlqd2X3J6wFqZPJU=";
-                };
-              }
-            ))
-            (fmodex.overrideAttrs (
-              _: super:
-              let
-                opname = super.pname;
-              in
-              rec {
-                pname = "${opname}-steam-run-fix";
-                inherit (super) version;
-                installPhase =
-                  let
-                    libPath = makeLibraryPath [
-                      alsa-lib
-                      libpulseaudio
-                      stdenv.cc.cc
-                    ];
-                  in
-                  ''
-                    install -Dm755 api/lib/libfmodex64-${version}.so $out/lib/libfmodex64.so
-                    patchelf --set-rpath ${libPath} $out/lib/libfmodex64.so
-                  '';
-              }
-            ))
+          lib.optionals cfg.quirks.blackIsleStudios [
+            pkgs.openssl_1_0_0
+          ]
+          ++ lib.optionals cfg.quirks.cryptOfTheNecrodancer [
+            (lib.packages.fromRev "d1c3fea7ecbed758168787fe4e4a3157e52bc808" "sha256-3muuhz3fjtF1bz32UXOYCho51E8JSeEwo2iDZFQJdXo=")
+            .flac
+          ]
+          ++ lib.optionals cfg.quirks.mountAndBladeWarband [
+            (pkgs.fmodex.overrideAttrs (oldAttrs: {
+              postInstall = ''
+                ln -s $out/lib/libfmodex64.so $out/lib/libfmodex-${oldAttrs.version}.so
+              '';
+            }))
           ];
       }).run
     ];

Consider giving Nix/NixOS a try! <3