updating gaming module

This commit is contained in:
notgne2 2021-10-24 03:10:09 -07:00
parent f70bb16e7b
commit ea38b66b82
No known key found for this signature in database
GPG Key ID: BB661E172B42A7F8
3 changed files with 164 additions and 2 deletions

View File

@ -38,6 +38,10 @@
url = "github:makuto/auto-base16-theme"; url = "github:makuto/auto-base16-theme";
flake = false; flake = false;
}; };
sunshine = {
url = "git+ssh://git@github.com/loki-47-6F-64/sunshine.git";
flake = false;
};
}; };
outputs = { self, nixpkgs, ... }@inputs: { outputs = { self, nixpkgs, ... }@inputs: {
@ -55,6 +59,7 @@
ezpcusr = import ./home-manager/modules/ezpcusr.nix inputs; ezpcusr = import ./home-manager/modules/ezpcusr.nix inputs;
colors = import ./home-manager/modules/colors.nix inputs; colors = import ./home-manager/modules/colors.nix inputs;
fonts = import ./home-manager/modules/fonts.nix; fonts = import ./home-manager/modules/fonts.nix;
gaming = import ./home-manager/modules/gaming.nix inputs;
all = import ./home-manager/modules/default.nix inputs; all = import ./home-manager/modules/default.nix inputs;
}; };

View File

@ -8,7 +8,7 @@ inputs:
(import ./ezpcusr.nix inputs) (import ./ezpcusr.nix inputs)
(import ./colors.nix inputs) (import ./colors.nix inputs)
./gaming.nix (import ./gaming.nix inputs)
./fonts.nix ./fonts.nix
]; ];
} }

View File

@ -1,7 +1,55 @@
inputs:
{ config, lib, pkgs, ... }: { config, lib, pkgs, ... }:
with lib; with lib;
let let
cfg = config.gaming; cfg = config.gaming;
sunshineAssets = pkgs.runCommandNoCC "sunshine-assets" { } ''
cp -r ${inputs.sunshine}/assets $out
'';
sunshine = pkgs.stdenv.mkDerivation {
name = "sunshine";
src = inputs.sunshine;
cmakeFlags = [ "-DSUNSHINE_ASSETS_DIR=assets" "-DSUNSHINE_DEFAULT_DIR=${sunshineAssets}" ];
postPatch = ''
substituteInPlace CMakeLists.txt \
--replace '/usr/include/libevdev-1.0' '${pkgs.libevdev}/include/libevdev-1.0'
'';
installPhase = ''
mkdir -p $out/bin
cp sunshine $out/bin
mkdir -p $out/etc
cp -r ../assets $out/etc
'';
postFixup = ''
addOpenGLRunpath $out/bin/sunshine
'';
nativeBuildInputs = with pkgs; [ cmake pkgconfig addOpenGLRunpath ];
hardeningDisable = [ "format" ];
buildInputs = with pkgs; [
openssl
(boost.override { enableShared = false; enableStatic = true; })
ffmpeg-full
libevdev
libcap
libdrm
libpulseaudio
libopus
cudatoolkit_11
xorg.libXrandr
xorg.libXfixes
xorg.libXtst
xorg.libxcb
];
};
in in
{ {
options.gaming = { options.gaming = {
@ -26,6 +74,21 @@ in
with pkgs; [ with pkgs; [
oldwine oldwine
oldwinetricks oldwinetricks
(pkgs.writeShellScriptBin "steam" "${pkgs.systemd}/bin/systemctl --user start steam")
sc-controller
dolphinEmuMaster
ark
unzip
unrar
mpv
tuxpaint
extremetuxracer
] ++ lib.optionals cfg.newWine [ ] ++ lib.optionals cfg.newWine [
( (
pkgs.runCommand "new-wine-stuff" pkgs.runCommand "new-wine-stuff"
@ -37,5 +100,99 @@ in
'' ''
) )
]; ];
systemd.user.services.sunshine = {
Unit = {
Description = "Host for Moonlight Streaming Client";
Requires = [ "dbus.service" ];
After = [ "graphical-session-pre.target" "network.target" ];
PartOf = [ "graphical-session.target" ];
};
Install = {
WantedBy = [ "graphical-session.target" ];
};
Service = {
WorkingDirectory = "${config.xdg.configHome}/sunshine";
Restart = "on-failure";
RestartSec = 3;
ExecStart = "${sunshine}/bin/sunshine";
ExecStartPre =
let
script = pkgs.writeShellScript "sunshine-pre-start" ''
${pkgs.coreutils}/bin/mkdir -p $HOME/.config/sunshine/assets
${pkgs.coreutils}/bin/rm -rf $HOME/.config/sunshine/assets/shaders
${pkgs.coreutils}/bin/rm -rf $HOME/.config/sunshine/assets/web
${pkgs.coreutils}/bin/rm -rf $HOME/.config/sunshine/assets/box.png
${pkgs.coreutils}/bin/cp --no-preserve=all -r ${sunshineAssets}/shaders $HOME/.config/sunshine/assets
${pkgs.coreutils}/bin/cp --no-preserve=all -r ${sunshineAssets}/web $HOME/.config/sunshine/assets
${pkgs.coreutils}/bin/cp --no-preserve=all ${sunshineAssets}/box.png $HOME/.config/sunshine/assets
'';
in
"${script}";
};
};
programs.rofi = {
enable = lib.mkDefault true;
terminal = lib.mkDefault "${pkgs.kitty}/bin/kitty";
};
programs.kitty.enable = lib.mkDefault true;
systemd.user.services.scc = {
Unit = {
Description = "User-mode driver and GTK3 based GUI for Steam Controller";
After = [ "graphical-session-pre.target" ];
PartOf = [ "graphical-session.target" ];
};
Service = {
Type = "simple";
ExecStart = "${pkgs.sc-controller}/bin/scc-daemon debug";
Restart = "always";
RestartSec = 5;
};
Install = { WantedBy = [ "graphical-session.target" ]; };
};
systemd.user.services.steam = {
Unit = {
Description = "Start Steam gaming platform";
After = [ "graphical-session-pre.target" ];
PartOf = [ "graphical-session.target" ];
};
Service = {
Type = "simple";
ExecStart = let
steamStart = pkgs.writeShellScript "steam-start" ''
${pkgs.systemd}/bin/systemctl --user stop scc
# no sleep is needed here because steam is slow as fuck lol
/run/current-system/sw/bin/steam
'';
in "${steamStart}";
ExecStop = let
steamStop = pkgs.writeShellScript "steam-stop" ''
${pkgs.coreutils}/bin/sleep 5 # give time for controller to reset
${pkgs.systemd}/bin/systemctl --user start scc
'';
in "${steamStop}";
};
Install = { WantedBy = [ "graphical-session.target" ]; };
};
programs.chromium.enable = lib.mkDefault true;
fonts.enable = lib.mkDefault true;
colors = {
enable = lib.mkDefault true;
};
}; };
} }