about summary refs log tree commit diff
path: root/modules/games
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
parent2024-10-29 (diff)
2024-11-10
Diffstat (limited to 'modules/games')
-rw-r--r--modules/games/gamemode.nix7
-rw-r--r--modules/games/minecraft.nix27
-rw-r--r--modules/games/steam-run.nix79
3 files changed, 45 insertions, 68 deletions
diff --git a/modules/games/gamemode.nix b/modules/games/gamemode.nix
index eb485f8..4e57a8b 100644
--- a/modules/games/gamemode.nix
+++ b/modules/games/gamemode.nix
@@ -1,13 +1,12 @@
 { config, lib, ... }:
-with lib;
 let
   cfg = config.nixfiles.modules.games.gamemode;
 in
 {
-  options.nixfiles.modules.games.gamemode.enable = mkEnableOption "Feral GameMode";
+  options.nixfiles.modules.games.gamemode.enable = lib.mkEnableOption "Feral GameMode";
 
-  config = mkIf cfg.enable {
-    hm.xdg.configFile."gamemode.ini".text = generators.toINI { } { general.softrealtime = "auto"; };
+  config = lib.mkIf cfg.enable {
+    hm.xdg.configFile."gamemode.ini".text = lib.generators.toINI { } { general.softrealtime = "auto"; };
 
     programs.gamemode.enable = true;
   };
diff --git a/modules/games/minecraft.nix b/modules/games/minecraft.nix
index f93a139..f849360 100644
--- a/modules/games/minecraft.nix
+++ b/modules/games/minecraft.nix
@@ -5,7 +5,6 @@
   pkgs,
   ...
 }:
-with lib;
 let
   cfg = config.nixfiles.modules.games.minecraft;
 in
@@ -13,28 +12,30 @@ in
   imports = [ inputs.minecraft.nixosModules.minecraft-servers ];
 
   options.nixfiles.modules.games.minecraft = {
-    client.enable = mkEnableOption "Minecraft client";
+    client.enable = lib.mkEnableOption "Minecraft client";
     server = {
-      enable = mkEnableOption "Minecraft server";
+      enable = lib.mkEnableOption "Minecraft server";
 
-      port = mkOption {
+      port = lib.mkOption {
         description = "Server port.";
-        type = types.port;
+        type = lib.types.port;
         default = 25565;
       };
 
-      memory = mkOption {
+      memory = lib.mkOption {
         description = "Amount of RAM to allocate.";
-        type = types.str;
+        type = lib.types.str;
         default = "2G";
       };
     };
   };
 
-  config = mkMerge [
-    (mkIf cfg.client.enable { hm.home.packages = [ pkgs.prismlauncher ]; })
-    (mkIf cfg.server.enable {
-      nixfiles.modules.common.nix.allowedUnfreePackages = [ "minecraft-server" ];
+  config = lib.mkMerge [
+    (lib.mkIf cfg.client.enable { hm.home.packages = [ pkgs.prismlauncher ]; })
+    (lib.mkIf cfg.server.enable {
+      nixfiles.modules.common.nix.allowedUnfreePackages = [
+        "minecraft-server" # proprietary
+      ];
 
       ark.directories = [ config.services.minecraft-servers.dataDir ];
 
@@ -50,7 +51,7 @@ in
 
           # https://api.papermc.io/v2/projects/paper
           # https://github.com/Infinidoge/nix-minecraft/blob/master/pkgs/paper-servers/lock.json
-          package = pkgs.paperServers.paper-1_21_47;
+          package = pkgs.minecraftServers.paper-1_21_3;
 
           serverProperties = {
             # motd = "";
@@ -71,7 +72,7 @@ in
           };
 
           jvmOpts =
-            (concatStringsSep " " [
+            (lib.concatStringsSep " " [
               "-Xms${cfg.server.memory}"
               "-Xmx${cfg.server.memory}"
               "--add-modules=jdk.incubator.vector" # Required by some plugins.
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