diff options
author | azahi <azat@bahawi.net> | 2024-11-10 01:08:38 +0300 |
---|---|---|
committer | azahi <azat@bahawi.net> | 2024-11-10 01:08:38 +0300 |
commit | 693768ee37098dbebb38c86e27044f2faa38348d (patch) | |
tree | 37c92a1c83cf22fa5e5a570baa8598ba6063c795 /modules/games | |
parent | 2024-10-29 (diff) |
2024-11-10
Diffstat (limited to 'modules/games')
-rw-r--r-- | modules/games/gamemode.nix | 7 | ||||
-rw-r--r-- | modules/games/minecraft.nix | 27 | ||||
-rw-r--r-- | modules/games/steam-run.nix | 79 |
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 ]; |