Personal Nix setup
0
fork

Configure Feed

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

Add variations for non aarch64 runtimes

+72 -45
+2 -2
modules/games/default.nix
··· 1 - { lib, config, ... }: 1 + { lib, helpers, config, ... }: 2 2 3 3 with lib; let 4 4 cfg = config.modules.games; ··· 31 31 description = "Group to use when running game servers"; 32 32 }; 33 33 }; 34 - 34 + } // helpers.linuxAttrs { 35 35 config = mkIf cfg.enable { 36 36 users.users."${cfg.user}" = { 37 37 home = "${cfg.datadir}";
+21 -2
modules/games/lib/mkSteamPackage.nix
··· 1 - { lib, pkgs, ... } @ inputs: 1 + { lib, helpers, pkgs, ... } @ inputs: 2 2 3 3 with lib; 4 4 let ··· 20 20 src = fetchSteam { 21 21 inherit name appId depotId manifestId hash; 22 22 }; 23 + 23 24 dontBuild = true; 24 25 dontConfigure = true; 25 - dontFixup = true; 26 + dontFixup = helpers.system == "aarch64-linux"; 27 + 28 + appendRunpaths = with pkgs; makeLibraryPath [ 29 + steamworks-sdk-redist 30 + glibc 31 + libxcrypt 32 + libGL 33 + libdrm 34 + mesa # for libgbm 35 + udev 36 + libudev0-shim 37 + libva 38 + vulkan-loader 39 + ]; 40 + 41 + nativeBuildInputs = optionals (helpers.system == "aarch64-linux") [ 42 + pkgs.autoPatchelfHook 43 + ]; 44 + 26 45 installPhase = '' 27 46 runHook preInstall 28 47
+47 -34
modules/games/lib/mkWrappedBox64.nix
··· 1 - { lib, pkgs, ... } @ inputs: 1 + { lib, helpers, pkgs, ... } @ inputs: 2 2 3 3 with lib; 4 4 let 5 5 inherit ((import ./steamworks.nix) inputs) steamworks-sdk-redist; 6 - in { 7 - logLevel ? 0, 8 - env ? {}, 9 - libs ? [], 10 - extraWrapperArgs ? [], 11 - }: let 12 - box64Bin = "${pkgs.box64}/bin/box64"; 13 - runpaths = with pkgs; [ 6 + 7 + defaultLibs = with pkgs; [ 14 8 steamworks-sdk-redist 15 9 glibc 16 10 libxcrypt ··· 22 16 libva 23 17 vulkan-loader 24 18 ]; 25 - combinedEnv = { 26 - BOX64_DYNAREC_STRONGMEM = 1; 27 - BOX64_DYNAREC_BIGBLOCK = 1; 28 - BOX64_DYNAREC_SAFEFLAGS = 1; 29 - BOX64_DYNAREC_FASTROUND = 1; 30 - BOX64_DYNAREC_FASTNAN = 1; 31 - BOX64_DYNAREC_X87DOUBLE = 0; 32 - } // env; 33 - in pkgs.stdenv.mkDerivation rec { 34 - name = "box64-wrapped"; 19 + 20 + defaultNativeLibs = [ pkgs.pkgsCross.gnu64.libgcc ]; 21 + 22 + makeWrappedBox64 = { 23 + logLevel ? 0, 24 + env ? {}, 25 + libs ? defaultLibs, 26 + nativeLibs ? defaultNativeLibs, 27 + extraWrapperArgs ? [], 28 + }: let 29 + box64Bin = "${pkgs.box64}/bin/box64"; 30 + runpaths = libs ++ nativeLibs; 31 + combinedEnv = { 32 + BOX64_DYNAREC_STRONGMEM = 1; 33 + BOX64_DYNAREC_BIGBLOCK = 1; 34 + BOX64_DYNAREC_SAFEFLAGS = 1; 35 + BOX64_DYNAREC_FASTROUND = 1; 36 + BOX64_DYNAREC_FASTNAN = 1; 37 + BOX64_DYNAREC_X87DOUBLE = 0; 38 + } // env; 39 + in bin: 40 + pkgs.stdenv.mkDerivation rec { 41 + name = "box64-wrapped"; 42 + 43 + dontUnpack = true; 44 + dontConfigure = true; 45 + dontBuild = true; 35 46 36 - dontUnpack = true; 37 - dontConfigure = true; 38 - dontBuild = true; 47 + nativeBuildInputs = [ pkgs.makeWrapper ]; 48 + buildInputs = runpaths ++ libs; 39 49 40 - nativeBuildInputs = [ pkgs.makeWrapper ]; 41 - buildInputs = runpaths ++ libs; 50 + installPhase = '' 51 + runHook preInstall 52 + makeWrapper "${box64Bin}" "$out/bin/box64" \ 53 + ${concatStrings (mapAttrsToList (name: value: "--set ${name} '${toString value}' ") env)} \ 54 + --set BOX64_LOG "${toString logLevel}" \ 55 + --prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath buildInputs} \ 56 + ${lib.strings.concatStringsSep " " extraWrapperArgs} \ 57 + --add-flags "$bin" 58 + runHook postInstall 59 + ''; 60 + }; 42 61 43 - installPhase = '' 44 - runHook preInstall 45 - makeWrapper "${box64Bin}" "$out/bin/box64" \ 46 - ${concatStrings (mapAttrsToList (name: value: "--set ${name} '${toString value}' ") env)} \ 47 - --set BOX64_LOG "${toString logLevel}" \ 48 - --prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath buildInputs} \ 49 - ${lib.strings.concatStringsSep " " extraWrapperArgs} 50 - runHook postInstall 51 - ''; 52 - } 62 + box64 = makeWrappedBox64 { }; 63 + identity = bin: bin; 64 + in 65 + if helpers.system == "aarch64-linux" then box64 else identity
+2 -7
modules/games/palworld.nix
··· 34 34 OptionSettings=(${concatStringsSep "," optionSettings}) 35 35 ''; 36 36 37 - wrappedBox64 = mkWrappedBox64 { 38 - libs = [ pkgs.pkgsCross.gnu64.libgcc ]; 39 - }; 40 - 41 37 palworld-server = mkSteamPackage { 42 38 name = "palworld-server"; 43 39 version = "17082920"; ··· 240 236 ] 241 237 ++ optionals (cfg.ip != null) [ "-publicip=${cfg.ip}" ] 242 238 ++ optionals cfg.public [ "-publiclobby" ]; 243 - executable = "${cfg.datadir}/Pal/Binaries/Linux/PalServer-Linux-Shipping"; 244 - command = "${wrappedBox64}/bin/box64 ${executable}"; 245 - in "${command} ${concatStringsSep " " args}"; 239 + bin = getBin (mkWrappedBox64 "${cfg.datadir}/Pal/Binaries/Linux/PalServer-Linux-Shipping"); 240 + in "${bin} ${concatStringsSep " " args}"; 246 241 in { 247 242 wantedBy = mkIf cfg.autostart [ "multi-user.target" ]; 248 243 after = [ "network.target" ];