add shadowplay (basically)
This commit is contained in:
@@ -27,5 +27,6 @@
|
|||||||
./xfce.nix
|
./xfce.nix
|
||||||
./basics.nix
|
./basics.nix
|
||||||
./sway.nix
|
./sway.nix
|
||||||
|
./gpu-screen-recorder-ui.nix
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
46
modules/graphical/gpu-screen-recorder-ui.nix
Normal file
46
modules/graphical/gpu-screen-recorder-ui.nix
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
|
let
|
||||||
|
cfg = config.custom.graphical.gpu-screen-recorder-ui;
|
||||||
|
package = cfg.package.override {
|
||||||
|
inherit (config.security) wrapperDir;
|
||||||
|
};
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options = {
|
||||||
|
custom.graphical.gpu-screen-recorder-ui = {
|
||||||
|
package = lib.mkPackageOption pkgs "gpu-screen-recorder-ui" { };
|
||||||
|
|
||||||
|
enable = lib.mkOption {
|
||||||
|
type = lib.types.bool;
|
||||||
|
default = false;
|
||||||
|
description = ''
|
||||||
|
Whether to install gpu-screen-recorder-ui and generate setcap
|
||||||
|
wrappers for global hotkeys.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
programs.gpu-screen-recorder.enable = lib.mkDefault true;
|
||||||
|
|
||||||
|
environment.systemPackages = [ package ];
|
||||||
|
|
||||||
|
systemd.packages = [ package ];
|
||||||
|
|
||||||
|
security.wrappers."gsr-global-hotkeys" = {
|
||||||
|
owner = "root";
|
||||||
|
group = "root";
|
||||||
|
capabilities = "cap_setuid+ep";
|
||||||
|
source = lib.getExe' package "gsr-global-hotkeys";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
meta.maintainers = with lib.maintainers; [ js6pak ];
|
||||||
|
}
|
||||||
@@ -13,4 +13,6 @@
|
|||||||
mangal-patched = pkgs.callPackage ./mangal/default.nix { };
|
mangal-patched = pkgs.callPackage ./mangal/default.nix { };
|
||||||
rdna4-lact = pkgs.callPackage ./lact/default.nix { };
|
rdna4-lact = pkgs.callPackage ./lact/default.nix { };
|
||||||
csharp-ls-8 = pkgs.callPackage ./csharp-lsp/default.nix { };
|
csharp-ls-8 = pkgs.callPackage ./csharp-lsp/default.nix { };
|
||||||
|
gpu-screen-recorder-ui = pkgs.callPackage ./gpu-screen-recorder-ui/default.nix { };
|
||||||
|
gpu-screen-recorder-notification = pkgs.callPackage ./gpu-screen-recorder-notification/default.nix { };
|
||||||
}
|
}
|
||||||
|
|||||||
61
pkgs/gpu-screen-recorder-notification/default.nix
Normal file
61
pkgs/gpu-screen-recorder-notification/default.nix
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
{ lib
|
||||||
|
, stdenv
|
||||||
|
, fetchgit
|
||||||
|
, pkg-config
|
||||||
|
, meson
|
||||||
|
, ninja
|
||||||
|
, libX11
|
||||||
|
, libXrender
|
||||||
|
, libXrandr
|
||||||
|
, libXext
|
||||||
|
, libglvnd
|
||||||
|
, wayland
|
||||||
|
, wayland-scanner
|
||||||
|
, gitUpdater
|
||||||
|
,
|
||||||
|
}:
|
||||||
|
|
||||||
|
stdenv.mkDerivation rec {
|
||||||
|
pname = "gpu-screen-recorder-notification";
|
||||||
|
version = "1.0.7";
|
||||||
|
|
||||||
|
src = fetchgit {
|
||||||
|
url = "https://repo.dec05eba.com/${pname}";
|
||||||
|
tag = version;
|
||||||
|
hash = "sha256-hdsbQewnqSJvWEW9HaFuVf6vDAY5CDCGxVFsxZJ4Yh8=";
|
||||||
|
};
|
||||||
|
|
||||||
|
postPatch = ''
|
||||||
|
substituteInPlace depends/mglpp/depends/mgl/src/gl.c \
|
||||||
|
--replace-fail "libGL.so.1" "${lib.getLib libglvnd}/lib/libGL.so.1" \
|
||||||
|
--replace-fail "libGLX.so.0" "${lib.getLib libglvnd}/lib/libGLX.so.0" \
|
||||||
|
--replace-fail "libEGL.so.1" "${lib.getLib libglvnd}/lib/libEGL.so.1"
|
||||||
|
'';
|
||||||
|
|
||||||
|
nativeBuildInputs = [
|
||||||
|
pkg-config
|
||||||
|
meson
|
||||||
|
ninja
|
||||||
|
];
|
||||||
|
|
||||||
|
buildInputs = [
|
||||||
|
libX11
|
||||||
|
libXrender
|
||||||
|
libXrandr
|
||||||
|
libXext
|
||||||
|
libglvnd
|
||||||
|
wayland
|
||||||
|
wayland-scanner
|
||||||
|
];
|
||||||
|
|
||||||
|
passthru.updateScript = gitUpdater { };
|
||||||
|
|
||||||
|
meta = {
|
||||||
|
description = "Notification in the style of ShadowPlay";
|
||||||
|
homepage = "https://git.dec05eba.com/${pname}/about/";
|
||||||
|
license = lib.licenses.gpl3Only;
|
||||||
|
mainProgram = "gsr-notify";
|
||||||
|
maintainers = with lib.maintainers; [ js6pak ];
|
||||||
|
platforms = lib.platforms.linux;
|
||||||
|
};
|
||||||
|
}
|
||||||
99
pkgs/gpu-screen-recorder-ui/default.nix
Normal file
99
pkgs/gpu-screen-recorder-ui/default.nix
Normal file
@@ -0,0 +1,99 @@
|
|||||||
|
{
|
||||||
|
lib,
|
||||||
|
stdenv,
|
||||||
|
fetchgit,
|
||||||
|
pkg-config,
|
||||||
|
meson,
|
||||||
|
ninja,
|
||||||
|
makeWrapper,
|
||||||
|
gpu-screen-recorder,
|
||||||
|
gpu-screen-recorder-notification,
|
||||||
|
libX11,
|
||||||
|
libXrender,
|
||||||
|
libXrandr,
|
||||||
|
libXcomposite,
|
||||||
|
libXi,
|
||||||
|
libXcursor,
|
||||||
|
libglvnd,
|
||||||
|
libpulseaudio,
|
||||||
|
libdrm,
|
||||||
|
wayland,
|
||||||
|
wayland-scanner,
|
||||||
|
wrapperDir ? "/run/wrappers/bin",
|
||||||
|
gitUpdater,
|
||||||
|
}:
|
||||||
|
|
||||||
|
stdenv.mkDerivation rec {
|
||||||
|
pname = "gpu-screen-recorder-ui";
|
||||||
|
version = "1.6.1";
|
||||||
|
|
||||||
|
src = fetchgit {
|
||||||
|
url = "https://repo.dec05eba.com/${pname}";
|
||||||
|
tag = version;
|
||||||
|
hash = "sha256-HKUbxX6EXLR4N/ag7gLIqitxBRU+1aLtlqDiSS7LK5I=";
|
||||||
|
};
|
||||||
|
|
||||||
|
postPatch = ''
|
||||||
|
substituteInPlace depends/mglpp/depends/mgl/src/gl.c \
|
||||||
|
--replace-fail "libGL.so.1" "${lib.getLib libglvnd}/lib/libGL.so.1" \
|
||||||
|
--replace-fail "libGLX.so.0" "${lib.getLib libglvnd}/lib/libGLX.so.0" \
|
||||||
|
--replace-fail "libEGL.so.1" "${lib.getLib libglvnd}/lib/libEGL.so.1"
|
||||||
|
|
||||||
|
substituteInPlace extra/gpu-screen-recorder-ui.service \
|
||||||
|
--replace-fail "ExecStart=${meta.mainProgram}" "ExecStart=$out/bin/${meta.mainProgram}"
|
||||||
|
'';
|
||||||
|
|
||||||
|
nativeBuildInputs = [
|
||||||
|
pkg-config
|
||||||
|
meson
|
||||||
|
ninja
|
||||||
|
makeWrapper
|
||||||
|
];
|
||||||
|
|
||||||
|
buildInputs = [
|
||||||
|
libX11
|
||||||
|
libXrender
|
||||||
|
libXrandr
|
||||||
|
libXcomposite
|
||||||
|
libXi
|
||||||
|
libXcursor
|
||||||
|
libglvnd
|
||||||
|
libpulseaudio
|
||||||
|
libdrm
|
||||||
|
wayland
|
||||||
|
wayland-scanner
|
||||||
|
];
|
||||||
|
|
||||||
|
mesonFlags = [
|
||||||
|
# Handled by the module
|
||||||
|
(lib.mesonBool "capabilities" false)
|
||||||
|
];
|
||||||
|
|
||||||
|
postInstall =
|
||||||
|
let
|
||||||
|
gpu-screen-recorder-wrapped = gpu-screen-recorder.override {
|
||||||
|
inherit wrapperDir;
|
||||||
|
};
|
||||||
|
in
|
||||||
|
''
|
||||||
|
wrapProgram "$out/bin/${meta.mainProgram}" \
|
||||||
|
--prefix PATH : "${wrapperDir}" \
|
||||||
|
--suffix PATH : "${
|
||||||
|
lib.makeBinPath [
|
||||||
|
gpu-screen-recorder-wrapped
|
||||||
|
gpu-screen-recorder-notification
|
||||||
|
]
|
||||||
|
}"
|
||||||
|
'';
|
||||||
|
|
||||||
|
passthru.updateScript = gitUpdater { };
|
||||||
|
|
||||||
|
meta = {
|
||||||
|
description = "Fullscreen overlay UI for GPU Screen Recorder in the style of ShadowPlay";
|
||||||
|
homepage = "https://git.dec05eba.com/${pname}/about/";
|
||||||
|
license = lib.licenses.gpl3Only;
|
||||||
|
mainProgram = "gsr-ui";
|
||||||
|
maintainers = with lib.maintainers; [ js6pak ];
|
||||||
|
platforms = lib.platforms.linux;
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -75,6 +75,7 @@
|
|||||||
ime.enable = true;
|
ime.enable = true;
|
||||||
noise-supression.enable = true;
|
noise-supression.enable = true;
|
||||||
obs.enable = true;
|
obs.enable = true;
|
||||||
|
gpu-screen-recorder-ui.enable = true;
|
||||||
#openrgb.enable = true;
|
#openrgb.enable = true;
|
||||||
sddm.enable = true;
|
sddm.enable = true;
|
||||||
nightlight.enable = true;
|
nightlight.enable = true;
|
||||||
|
|||||||
Reference in New Issue
Block a user