games: add gamemode service
This commit is contained in:
parent
9983d0d2df
commit
a0cef270aa
6 changed files with 99 additions and 6 deletions
|
@ -1 +1,6 @@
|
||||||
[ ./services/torrent/qbittorrent.nix ./security/mitigations.nix ]
|
[
|
||||||
|
./services/torrent/qbittorrent.nix
|
||||||
|
./security/mitigations.nix
|
||||||
|
./services/hardware/wii-u-gc-adapter.nix
|
||||||
|
./services/games/gamemode.nix
|
||||||
|
]
|
||||||
|
|
36
modules/services/games/gamemode.nix
Normal file
36
modules/services/games/gamemode.nix
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
{ config, lib, options, pkgs, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
|
||||||
|
let cfg = config.services.gamemode;
|
||||||
|
in {
|
||||||
|
options.services.gamemode = {
|
||||||
|
enable = mkOption {
|
||||||
|
type = types.bool;
|
||||||
|
default = false;
|
||||||
|
description = ''
|
||||||
|
Whether to enable the gamemoded systemd user service.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
environment.systemPackages = [ pkgs.gamemode ];
|
||||||
|
|
||||||
|
services.dbus.packages = [ pkgs.gamemode ];
|
||||||
|
|
||||||
|
systemd.user.services.gamemoded = {
|
||||||
|
description = "gamemoded";
|
||||||
|
|
||||||
|
serviceConfig = {
|
||||||
|
Type = "dbus";
|
||||||
|
BusName = "com.feralinteractive.GameMode";
|
||||||
|
NotifyAccess = "main";
|
||||||
|
ExecStart = "${pkgs.gamemode}/bin/gamemoded";
|
||||||
|
};
|
||||||
|
|
||||||
|
wantedBy = [ "graphical-session.target" ];
|
||||||
|
partOf = [ "graphical-session.target" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
|
@ -5,4 +5,6 @@ final: prev: {
|
||||||
purs = prev.callPackage ./shells/zsh/purs { };
|
purs = prev.callPackage ./shells/zsh/purs { };
|
||||||
pure = prev.callPackage ./shells/zsh/pure { };
|
pure = prev.callPackage ./shells/zsh/pure { };
|
||||||
wii-u-gc-adapter = prev.callPackage ./misc/drivers/wii-u-gc-adapter { };
|
wii-u-gc-adapter = prev.callPackage ./misc/drivers/wii-u-gc-adapter { };
|
||||||
|
libinih = prev.callPackage ./development/libraries/libinih { };
|
||||||
|
gamemode = prev.callPackage ./os-specific/linux/gamemode { };
|
||||||
}
|
}
|
||||||
|
|
20
pkgs/development/libraries/libinih/default.nix
Normal file
20
pkgs/development/libraries/libinih/default.nix
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
{ stdenv, meson, ninja, fetchFromGitHub, ... }:
|
||||||
|
|
||||||
|
stdenv.mkDerivation rec {
|
||||||
|
name = "libinih";
|
||||||
|
version = "r50";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "benhoyt";
|
||||||
|
repo = "inih";
|
||||||
|
rev = "${version}";
|
||||||
|
hash = "sha256-GF+TVEysaXJxSBBjMsTr2IQvRKlzdEu3rlPQ88PE3nI=";
|
||||||
|
};
|
||||||
|
|
||||||
|
buildInputs = [ meson ninja ];
|
||||||
|
|
||||||
|
mesonFlags = ''
|
||||||
|
-Ddefault_library=shared
|
||||||
|
-Ddistro_install=true
|
||||||
|
'';
|
||||||
|
}
|
32
pkgs/os-specific/linux/gamemode/default.nix
Normal file
32
pkgs/os-specific/linux/gamemode/default.nix
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
{ stdenv, appstream, meson, ninja, pkgsi686Linux, polkit, pkgconfig, systemd
|
||||||
|
, dbus, libinih, fetchFromGitHub, ... }:
|
||||||
|
|
||||||
|
stdenv.mkDerivation rec {
|
||||||
|
pname = "gamemode";
|
||||||
|
version = "1.5.1";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "FeralInteractive";
|
||||||
|
repo = "gamemode";
|
||||||
|
rev = "${version}";
|
||||||
|
hash = "sha256-x3VM7HJL4+zLDBdCm0ekc0UX33lrRWlOieJjihhA5L4=";
|
||||||
|
};
|
||||||
|
|
||||||
|
prePatch = ''
|
||||||
|
substituteInPlace daemon/gamemode-tests.c --replace "/usr/bin/gamemoderun" $out/bin/gamemoderun
|
||||||
|
substituteInPlace daemon/gamemode-gpu.c --replace "/usr/bin/pkexec" ${polkit}/bin/pkexec
|
||||||
|
substituteInPlace daemon/gamemode-context.c --replace "/usr/bin/pkexec" ${polkit}/bin/pkexec
|
||||||
|
substituteInPlace lib/gamemode_client.h --replace 'dlopen("' 'dlopen("${
|
||||||
|
placeholder "out"
|
||||||
|
}/lib/'
|
||||||
|
'';
|
||||||
|
|
||||||
|
buildInputs = [ meson ninja pkgconfig systemd dbus libinih ];
|
||||||
|
|
||||||
|
mesonFlags = ''
|
||||||
|
-Dwith-util=false
|
||||||
|
-Dwith-examples=false
|
||||||
|
-Dwith-systemd-user-unit-dir=${placeholder "out"}/lib/systemd/user
|
||||||
|
'';
|
||||||
|
|
||||||
|
}
|
|
@ -1,9 +1,5 @@
|
||||||
{ unstablePkgs, ... }: {
|
{ unstablePkgs, ... }: {
|
||||||
imports = [
|
imports = [ ../graphical ./udev.nix ];
|
||||||
../graphical
|
|
||||||
./udev.nix
|
|
||||||
../../modules/services/hardware/wii-u-gc-adapter.nix
|
|
||||||
];
|
|
||||||
environment.systemPackages = with unstablePkgs; [
|
environment.systemPackages = with unstablePkgs; [
|
||||||
retroarchBare
|
retroarchBare
|
||||||
steam
|
steam
|
||||||
|
@ -14,6 +10,8 @@
|
||||||
|
|
||||||
services.wii-u-gc-adapter.enable = true;
|
services.wii-u-gc-adapter.enable = true;
|
||||||
|
|
||||||
|
services.gamemode.enable = true;
|
||||||
|
|
||||||
# fps games on laptop need this
|
# fps games on laptop need this
|
||||||
services.xserver.libinput.disableWhileTyping = false;
|
services.xserver.libinput.disableWhileTyping = false;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue