{ 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; driSupport = 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"; }; }; }; }