diff --git a/faucet/steam/default.nix b/faucet/steam/default.nix deleted file mode 100644 index 3f1f1db1..00000000 --- a/faucet/steam/default.nix +++ /dev/null @@ -1,23 +0,0 @@ -{ pkgs -, lib -, config -, ... }: with lib; let - cfg = config.faucet.steam; -in { - options.faucet.steam = { - enable = mkEnableOption "steam software and environment"; - }; - - config = mkIf cfg.enable { - programs.steam = { - enable = true; - remotePlay.openFirewall = true; # Open ports in the firewall for Steam Remote Play - dedicatedServer.openFirewall = true; # Open ports in the firewall for Source Dedicated Server - }; - - users.home.persist.directories = [ - ".local/share/Steam" - ".steam" - ]; - }; -} diff --git a/home/steam/config.nix b/home/steam/config.nix new file mode 100644 index 00000000..0b696a43 --- /dev/null +++ b/home/steam/config.nix @@ -0,0 +1,14 @@ +{ pkgs +, lib +, config +, ... }: with lib; let + cfg = config.home.steam; +in mkIf cfg.enable { + hardware.steam-hardware.enable = true; + + networking.firewall = { + allowedTCPPorts = [ 27015 27036 ]; + allowedUDPPorts = [ 27015 ]; + allowedUDPPortRanges = [ { from = 27031; to = 27036; } ]; + }; +} diff --git a/home/steam/home.nix b/home/steam/home.nix new file mode 100644 index 00000000..bb63e66b --- /dev/null +++ b/home/steam/home.nix @@ -0,0 +1,13 @@ +{ pkgs +, lib +, config +, ... }: with lib; let + cfg = config.passthrough.steam; + enable = cfg.enable && (cfg.allUsers || (config.home.username == "app")); + package = config.programs.steam.package; +in mkIf enable { + home.packages = with pkgs; [ + cfg.package + cfg.package.run + ]; +} diff --git a/home/steam/nixos.nix b/home/steam/nixos.nix new file mode 100644 index 00000000..cccf99b3 --- /dev/null +++ b/home/steam/nixos.nix @@ -0,0 +1,29 @@ +{ pkgs +, lib +, config +, ... }: with lib; let + cfg = config.home.steam; + persist = [ ".steam" ".local/share/Steam" ]; +in { + imports = [ ./config.nix ]; + + options.home.steam = { + enable = mkEnableOption "steam software and environment"; + package = mkOption { + type = with types; package; + default = config.programs.steam.package; + description = "steam package"; + }; + allUsers = mkEnableOption "set up for all users"; + }; + + config = { + users.homeModules = [ + # this module passes steam configuration to home-manager + { passthrough.steam = cfg; } + ]; + + users.home.persist.directories = with cfg; mkIf (enable && allUsers) persist; + users.home.persistApp.directories = with cfg; mkIf (enable && !allUsers) persist; + }; +}