flake/modules/nixos/server/containers/steam.nix
2024-07-11 15:02:10 +00:00

141 lines
3.8 KiB
Nix

{ pkgs, lib, config, ... }: let
# smoop = pkgs.callPackage ./smoop.nix {};
steam-xinit = pkgs.writeShellScriptBin "steam-xinit" ''
${lib.getExe pkgs.steam} &
exec ${lib.getExe pkgs.openbox} &
exec ${lib.getExe pkgs.xterm}
'';
in {
options.mods.containers.steam = {
enable = lib.mkEnableOption {
default = false;
description = "enables steam container";
};
};
config = lib.mkIf config.mods.containers.steam.enable {
mods.containers.enable = true;
containers.steam = {
privateNetwork = true;
hostAddress = "192.168.100.10";
localAddress = "192.168.100.11";
bindMounts = {
"/home/steam/.steam/steam/steamapps/common/SMITE" = {
hostPath = "/mnt/bulk/SteamLibrary/steamapps/common/SMITE";
isReadOnly = true;
};
"/home/steam/.steam/steam/steamapps/shadercache/386360" = {
hostPath = "/mnt/bulk/SteamLibrary/steamapps/shadercache/386360";
isReadOnly = true;
};
"/home/steam/.steam/steam/steamapps/appmanifest_386360.acf" = {
hostPath = "/mnt/bulk/SteamLibrary/steamapps/appmanifest_386360.acf";
isReadOnly = true;
};
"/home/steam/smoop" = {
hostPath = "/home/muon/projects/smoop";
isReadOnly = true;
};
};
config = { config, pkgs, lib, ... }: {
nixpkgs.config.allowUnfreePredicate = pkg:
builtins.elem (lib.getName pkg) [
"steam"
"steam-original"
"steam-run"
];
programs.steam = {
enable = true;
remotePlay.openFirewall = true;
};
programs.direnv = {
enable = true;
nix-direnv.enable = true;
};
environment.systemPackages = with pkgs; [
xterm
glxinfo
wget
bottles
openbox
steam-xinit
# smoop
novnc
tigervnc
xorg.xinit
# python3
# python3Packages.pip
# python3Packages.virtualenv
# python3Packages.tkinter
# python3Packages.xlib
# python3Packages.pillow
# python3Packages.python-dotenv
# python3Packages.pyautogui
# python3Packages.aiohttp
# python3Packages.discordpy
# python3Packages.opencv4
# stdenv.cc.cc.lib
# glib
# libglvnd
];
# environment.sessionVariables = rec {
# LD_LIBRARY_PATH =
# "${pkgs.lib.makeLibraryPath config.environment.systemPackages}:\
# ${pkgs.stdenv.cc.cc.lib.outPath}/lib:$LD_LIBRARY_PATH";
# };
services.xserver.enable = true;
networking.firewall.allowedTCPPorts = [ 6080 ];
systemd.services.tiger-vnc = {
wantedBy = [ "multi-user.target" ];
serviceConfig = {
ExecStart = ''${pkgs.xorg.xinit}/bin/xinit ${steam-xinit}/bin/steam-xinit -- ${pkgs.tigervnc}/bin/Xvnc :1 SecurityTypes=None'';
User = "steam";
};
};
systemd.services.no-vnc = {
wantedBy = [ "multi-user.target" ];
path = [ pkgs.ps pkgs.hostname ];
serviceConfig = {
ExecStart = ''${pkgs.novnc}/bin/novnc --vnc localhost:5901'';
User = "steam";
};
};
hardware.opengl = {
enable = true;
driSupport32Bit = true;
};
# programs.ssh.forwardX11 = true;
services.openssh = {
enable = true;
# settings.X11Forwarding = true;
};
users.users.steam = {
isNormalUser = true;
extraGroups = [ "wheel" ];
initialPassword = "changeme";
};
system.stateVersion = "23.11";
};
};
};
}