{ config, lib, pkgs, username, ... }: let cfgSunshine = config.os.srv.sunshine; cfgMoonlight = config.os.srv.moonlight; in { options.os.srv = { sunshine.enable = lib.mkEnableOption "enables sunshine streaming server"; moonlight.enable = lib.mkEnableOption "enables moonlight streaming client"; }; config = lib.mkMerge [ (lib.mkIf cfgSunshine.enable { services.sunshine = { enable = true; capSysAdmin = true; openFirewall = true; autoStart = false; }; hardware.uinput.enable = true; users.users.${username}.extraGroups = [ "video" "input" "render" ]; }) (lib.mkIf cfgMoonlight.enable { environment.systemPackages = [ pkgs.moonlight-qt ]; }) ]; }