48 lines
		
	
	
	
		
			988 B
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			48 lines
		
	
	
	
		
			988 B
		
	
	
	
		
			Nix
		
	
	
	
	
	
{
 | 
						|
  config,
 | 
						|
  pkgs,
 | 
						|
  lib,
 | 
						|
  ...
 | 
						|
}:
 | 
						|
with lib;
 | 
						|
{
 | 
						|
  options.components.gui.steam.enable = mkOption {
 | 
						|
    type = lib.types.bool;
 | 
						|
    default = config.components.gui.enable;
 | 
						|
  };
 | 
						|
 | 
						|
  config = mkIf (config.components.gui.steam.enable) {
 | 
						|
 | 
						|
    environment.systemPackages = [
 | 
						|
      (pkgs.writeShellScriptBin "steam" ''
 | 
						|
        /var/run/wrappers/bin/sudo -u steam -i ${pkgs.steam}/bin/steam $@
 | 
						|
      '')
 | 
						|
      pkgs.xorg.xhost
 | 
						|
    ];
 | 
						|
 | 
						|
    users.users.steam = {
 | 
						|
      isNormalUser = false;
 | 
						|
      isSystemUser = true;
 | 
						|
      home = "/home/steam";
 | 
						|
      createHome = true;
 | 
						|
      extraGroups = [
 | 
						|
        "audio"
 | 
						|
        "input"
 | 
						|
        "video"
 | 
						|
        "pipewire"
 | 
						|
      ];
 | 
						|
      group = "steam";
 | 
						|
      shell = pkgs.bashInteractive;
 | 
						|
    };
 | 
						|
    users.groups.steam = { };
 | 
						|
 | 
						|
    # for steam
 | 
						|
    # ---------
 | 
						|
    hardware.graphics.enable = true;
 | 
						|
    hardware.graphics.enable32Bit = true;
 | 
						|
 | 
						|
    security.sudo.extraConfig = ''
 | 
						|
      ${config.users.extraUsers.mainUser.name} ALL=(steam) NOPASSWD: ALL
 | 
						|
    '';
 | 
						|
  };
 | 
						|
}
 |