Compare commits

...

7 commits

5 changed files with 121 additions and 50 deletions

View file

@ -232,11 +232,11 @@
"nixpkgs": "nixpkgs_2"
},
"locked": {
"lastModified": 1721698116,
"narHash": "sha256-JdgX4TIroHxE4lBzZSyxxSvWGi8zveV34KfHuS9by2w=",
"lastModified": 1722388556,
"narHash": "sha256-90/qzsfqtXbHk3vshBQkJdymG/IY7S6RqqYpQU2GB8Y=",
"owner": "nix-community",
"repo": "nix-vscode-extensions",
"rev": "7beca30ffc495e5e3980495e1179939abf0ab8a6",
"rev": "af75b047c7e12cbd5484190900e6216b5ebe68e2",
"type": "github"
},
"original": {
@ -279,11 +279,11 @@
},
"nixpkgs-unstable": {
"locked": {
"lastModified": 1721562059,
"narHash": "sha256-Tybxt65eyOARf285hMHIJ2uul8SULjFZbT9ZaEeUnP8=",
"lastModified": 1722185531,
"narHash": "sha256-veKR07psFoJjINLC8RK4DiLniGGMgF3QMlS4tb74S6k=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "68c9ed8bbed9dfce253cc91560bf9043297ef2fe",
"rev": "52ec9ac3b12395ad677e8b62106f0b98c1f8569d",
"type": "github"
},
"original": {
@ -311,11 +311,11 @@
},
"nixpkgs_3": {
"locked": {
"lastModified": 1721548954,
"narHash": "sha256-7cCC8+Tdq1+3OPyc3+gVo9dzUNkNIQfwSDJ2HSi2u3o=",
"lastModified": 1722221733,
"narHash": "sha256-sga9SrrPb+pQJxG1ttJfMPheZvDOxApFfwXCFO0H9xw=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "63d37ccd2d178d54e7fb691d7ec76000740ea24a",
"rev": "12bf09802d77264e441f48e25459c10c93eada2e",
"type": "github"
},
"original": {

View file

@ -2,15 +2,14 @@
{
imports = [
./outline-theme
./extensions
./gnome-console.nix
./firefox-gnome-theme.nix
./outline-theme
./steam-adwaita-theme.nix
];
dconf.settings = {
"org/gnome/Console".theme = "auto";
"org/gnome/desktop/background" = {
picture-uri = "file:///home/${config.home.username}/Pictures/Wallpapers/Light.jpg";
picture-uri-dark = "file:///home/${config.home.username}/Pictures/Wallpapers/Dark.jpg";
@ -35,6 +34,8 @@
];
};
"org/gnome/nautilus/window-state".initial-size = null;
"org/gnome/settings-daemon/plugins/color" = {
night-light-enabled = true;
night-light-schedule-automatic = false;

View file

@ -0,0 +1,38 @@
{ lib, ... }:
{
dconf.settings = {
"org/gnome/Console" =
let
fontSize = 10;
fontWidth = fontSize * 0.8;
lineSpacing = fontSize * 0.4 * 2; # Each line has a space of 0.4em above and below it
terminalMode = {
# Based on VT100 video modes
standard = [ 80 24 ];
standardTall = [ 80 43 ];
extendedWide = [ 132 24 ];
extended = [ 132 43 ];
};
terminalSize = terminalMode.extended;
in
{
custom-font = "Source Code Pro " + toString fontSize;
last-window-size = with builtins; lib.hm.gvariant.mkTuple [
(ceil ((elemAt terminalSize 0 * fontWidth) + 12))
(ceil ((elemAt terminalSize 1 * (fontSize + lineSpacing)) + 48))
];
theme = "night";
use-system-font = false;
};
};
}

View file

@ -13,9 +13,11 @@
openspades
steam
transmission-gtk
ttyper
github-desktop
unstable.godot_4
youtube-music
via
neovim
];
}

View file

@ -13,11 +13,26 @@ let
fi
'';
gsr-record = pkgs.writeShellScriptBin "gsr-start-recording" ''
systemctl --user start gpu-screen-recorder.service
'';
gsr-replay = pkgs.writeShellScriptBin "gsr-start-replay" ''
systemctl --user start gsr-replay.service
'';
gsr-stop = pkgs.writeShellScriptBin "gsr-stop-replay" ''
systemctl --user stop gsr-replay.service
'';
outputDir = "Videos/Replays";
in
{
environment.systemPackages = [
gsr-save-replay
gsr-replay
gsr-record
gsr-stop
];
security.wrappers."gsr-kms-server" = {
@ -43,46 +58,61 @@ in
extraGSettingsOverridePackages = with pkgs; [ gnome.gnome-settings-daemon ];
};
systemd.user.services."gsr-replay" = {
after = [ "graphical-session.target" ];
description = "GPU Screen Recorder replay service";
serviceConfig = {
Environment = [
"AUDIO_CODEC=opus"
"CODEC=auto"
"CONTAINER=mkv"
"FRAMERATE=60"
"MAKEFOLDERS=no"
"QUALITY=very_high"
"REPLAYDURATION=300"
"WINDOW=screen"
];
ExecStart = pkgs.writeShellScript "start-gpu-screen-recorder-replay" ''
${pkgs.gpu-screen-recorder}/bin/gpu-screen-recorder -a "$(${pkgs.pulseaudio}/bin/pactl get-default-sink).monitor" -a "$(${pkgs.pulseaudio}/bin/pactl get-default-source)" -ac "$AUDIO_CODEC" -c "$CONTAINER" -f "$FRAMERATE" -k "$CODEC" -mf "$MAKEFOLDERS" -o "${outputDir}" -q "$QUALITY" -r "$REPLAYDURATION" -v no -w "$WINDOW" $ADDITIONAL_ARGS
'';
Restart = "on-failure";
RestartSec = "5s";
Type = "simple";
};
wantedBy = [ "graphical-session.target" ];
};
systemd.user.services = rec {
"gpu-screen-recorder" = {
after = [ "graphical-session.target" ];
description = "GPU Screen Recorder service";
serviceConfig = {
Environment = [
"AUDIO_CODEC=opus"
"CODEC=auto"
"CONTAINER=mkv"
"FRAMERATE=60"
"MAKEFOLDERS=no"
"QUALITY=very_high"
"WINDOW=screen"
];
ExecStart = pkgs.writeShellScript "start-gpu-screen-recorder-replay" ''
#${pkgs.killall}/bin/killall gpu-screen-recorder
systemd.user.services."gsr-audio-device-changer" = {
after = [ "gsr-replay.service" ];
description = "Restart GPU Screen Recorder replay service on audio device change";
requires = [ "gsr-replay.service" ];
serviceConfig = {
ExecStart = pkgs.writeShellScript "gsr-restart-on-audio-device-change" ''
${pkgs.pulseaudio}/bin/pactl subscribe | while read -r event; do
if [[ $event == *"Event 'change' on server"* ]]; then
systemctl --user restart gsr-replay.service
if [ -n "$REPLAYDURATION" ]; then
REPLAYARG="-r $REPLAYDURATION"
else
REPLAYARG=""
fi
done
'';
Restart = "always";
RestartSec = "5s";
Type = "simple";
${pkgs.gpu-screen-recorder}/bin/gpu-screen-recorder $REPLAYARG -a "$(${pkgs.pulseaudio}/bin/pactl get-default-sink).monitor" -a "$(${pkgs.pulseaudio}/bin/pactl get-default-source)" -ac "$AUDIO_CODEC" -c "$CONTAINER" -f "$FRAMERATE" -k "$CODEC" -mf "$MAKEFOLDERS" -o "${outputDir}" -q "$QUALITY" -v no -w "$WINDOW" $ADDITIONAL_ARGS
'';
Restart = "on-failure";
RestartSec = "5s";
Type = "simple";
};
};
"gsr-replay" = gpu-screen-recorder // {
description = "GPU Screen Recorder replay service";
serviceConfig = gpu-screen-recorder.serviceConfig // {
Environment = gpu-screen-recorder.serviceConfig.Environment ++ [ "REPLAYDURATION=300" ];
};
};
"gsr-replay-change-audio" = {
after = [ "gsr-replay.service" ];
description = "Restart GPU Screen Recorder replay service on audio device change";
requires = [ "gsr-replay.service" ];
serviceConfig = {
ExecStart = pkgs.writeShellScript "gsr-restart-on-audio-device-change" ''
${pkgs.pulseaudio}/bin/pactl subscribe | while read -r event; do
if [[ $event == *"Event 'change' on server"* ]]; then
systemctl --user restart gsr-replay.service
fi
done
'';
Restart = "on-failure";
RestartSec = "5s";
Type = "simple";
};
wantedBy = [ "gsr-replay.service" ];
};
wantedBy = [ "gsr-replay.service" ];
};
}