Compare commits
9 commits
a18adf012f
...
b9f41f465b
Author | SHA1 | Date | |
---|---|---|---|
Joseph DiGiovanni | b9f41f465b | ||
Joseph DiGiovanni | 37c50bfbb9 | ||
Joseph DiGiovanni | 6fe1bac5c3 | ||
Joseph DiGiovanni | 01f4deb790 | ||
Joseph DiGiovanni | 7874dbacea | ||
Joseph DiGiovanni | 390820286c | ||
Joseph DiGiovanni | f7ee2f185e | ||
Joseph DiGiovanni | 6161bcb5f0 | ||
Joseph DiGiovanni | 2a6c7e2572 |
|
@ -1,16 +1,17 @@
|
||||||
{ inputs, pkgs, system, ... }:
|
{ inputs, pkgs, system, ... }:
|
||||||
|
|
||||||
let
|
let
|
||||||
customPkgs = final: prev: {
|
customPkgs = final: prev: with pkgs;{
|
||||||
adwaita-for-steam = pkgs.callPackage ./adwaita-for-steam.nix { };
|
adwaita-for-steam = callPackage ./adwaita-for-steam.nix { };
|
||||||
|
|
||||||
gnomeExtensions = prev.gnomeExtensions // {
|
gnomeExtensions = prev.gnomeExtensions // {
|
||||||
rounded-window-corners-reborn = pkgs.callPackage ./gnomeExtensions/rounded-window-corners-reborn.nix { };
|
monitor-brightness-and-volume = callPackage ./gnomeExtensions/monitor-brightness-and-volume.nix { };
|
||||||
|
rounded-window-corners-reborn = callPackage ./gnomeExtensions/rounded-window-corners-reborn.nix { };
|
||||||
};
|
};
|
||||||
|
|
||||||
gpu-screen-recorder = final.unstable.gpu-screen-recorder;
|
gpu-screen-recorder = final.unstable.gpu-screen-recorder;
|
||||||
icoextract = final.unstable.icoextract; #TODO: remove in next release
|
icoextract = final.unstable.icoextract; #TODO: remove in next release
|
||||||
mkvextract-gtk = pkgs.callPackage ./mkvextract-gtk.nix { };
|
mkvextract-gtk = callPackage ./mkvextract-gtk.nix { };
|
||||||
};
|
};
|
||||||
|
|
||||||
unstableOverlay = final: prev: {
|
unstableOverlay = final: prev: {
|
||||||
|
|
|
@ -0,0 +1,29 @@
|
||||||
|
{ lib, stdenv, fetchurl, unzip, glib }:
|
||||||
|
|
||||||
|
stdenv.mkDerivation rec {
|
||||||
|
pname = "gnome-shell-extension-monitor-brightness-volume";
|
||||||
|
version = "7";
|
||||||
|
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://extensions.gnome.org/extension-data/monitor-brightness-volumeailin.nemui.v${version}.shell-extension.zip";
|
||||||
|
hash = "sha256-NrFZZdQTgnMyYk2Yp2l3RiXM2C+/NHhIPv/Fo/KrXt8=";
|
||||||
|
};
|
||||||
|
|
||||||
|
sourceRoot = ".";
|
||||||
|
|
||||||
|
nativeBuildInputs = [ unzip glib ];
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
mkdir -p $out/share/gnome-shell/extensions/monitor-brightness-volume@ailin.nemui
|
||||||
|
mv * $out/share/gnome-shell/extensions/monitor-brightness-volume@ailin.nemui
|
||||||
|
glib-compile-schemas $out/share/gnome-shell/extensions/monitor-brightness-volume@ailin.nemui/schemas
|
||||||
|
'';
|
||||||
|
|
||||||
|
meta = with lib; {
|
||||||
|
description = "GNOME Shell extension to control monitor brightness and volume.";
|
||||||
|
homepage = "https://extensions.gnome.org/extension/1292/monitor-brightness-and-volume/";
|
||||||
|
license = licenses.gpl2;
|
||||||
|
platforms = platforms.linux;
|
||||||
|
maintainers = with maintainers; [ jdig78 ];
|
||||||
|
};
|
||||||
|
}
|
18
flake.lock
18
flake.lock
|
@ -232,11 +232,11 @@
|
||||||
"nixpkgs": "nixpkgs_2"
|
"nixpkgs": "nixpkgs_2"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1721698116,
|
"lastModified": 1722821408,
|
||||||
"narHash": "sha256-JdgX4TIroHxE4lBzZSyxxSvWGi8zveV34KfHuS9by2w=",
|
"narHash": "sha256-FMCo35ZmMfvAcae+9neKfu6QzXjU3WL6vW2OFMXx6wI=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "nix-vscode-extensions",
|
"repo": "nix-vscode-extensions",
|
||||||
"rev": "7beca30ffc495e5e3980495e1179939abf0ab8a6",
|
"rev": "f25962fbd632afea744dc7e6868f24d2e73ccedb",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -279,11 +279,11 @@
|
||||||
},
|
},
|
||||||
"nixpkgs-unstable": {
|
"nixpkgs-unstable": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1721562059,
|
"lastModified": 1722630782,
|
||||||
"narHash": "sha256-Tybxt65eyOARf285hMHIJ2uul8SULjFZbT9ZaEeUnP8=",
|
"narHash": "sha256-hMyG9/WlUi0Ho9VkRrrez7SeNlDzLxalm9FwY7n/Noo=",
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "68c9ed8bbed9dfce253cc91560bf9043297ef2fe",
|
"rev": "d04953086551086b44b6f3c6b7eeb26294f207da",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -311,11 +311,11 @@
|
||||||
},
|
},
|
||||||
"nixpkgs_3": {
|
"nixpkgs_3": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1721548954,
|
"lastModified": 1722651103,
|
||||||
"narHash": "sha256-7cCC8+Tdq1+3OPyc3+gVo9dzUNkNIQfwSDJ2HSi2u3o=",
|
"narHash": "sha256-IRiJA0NVAoyaZeKZluwfb2DoTpBAj+FLI0KfybBeDU0=",
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "63d37ccd2d178d54e7fb691d7ec76000740ea24a",
|
"rev": "a633d89c6dc9a2a8aae11813a62d7c58b2c0cc51",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
|
@ -2,15 +2,14 @@
|
||||||
|
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./outline-theme
|
|
||||||
./extensions
|
./extensions
|
||||||
|
./gnome-console.nix
|
||||||
./firefox-gnome-theme.nix
|
./firefox-gnome-theme.nix
|
||||||
|
./outline-theme
|
||||||
./steam-adwaita-theme.nix
|
./steam-adwaita-theme.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
dconf.settings = {
|
dconf.settings = {
|
||||||
"org/gnome/Console".theme = "auto";
|
|
||||||
|
|
||||||
"org/gnome/desktop/background" = {
|
"org/gnome/desktop/background" = {
|
||||||
picture-uri = "file:///home/${config.home.username}/Pictures/Wallpapers/Light.jpg";
|
picture-uri = "file:///home/${config.home.username}/Pictures/Wallpapers/Light.jpg";
|
||||||
picture-uri-dark = "file:///home/${config.home.username}/Pictures/Wallpapers/Dark.jpg";
|
picture-uri-dark = "file:///home/${config.home.username}/Pictures/Wallpapers/Dark.jpg";
|
||||||
|
|
38
home/common/gnome/gnome-console.nix
Normal file
38
home/common/gnome/gnome-console.nix
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
{ lib, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
dconf.settings = {
|
||||||
|
"org/gnome/Console" =
|
||||||
|
let
|
||||||
|
fontSize = 12;
|
||||||
|
fontWidth = 8;
|
||||||
|
lineSpacing = 2 * 2; # Each line has a space 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 = "Unifont " + toString fontSize;
|
||||||
|
|
||||||
|
last-window-size = with builtins; lib.hm.gvariant.mkTuple [
|
||||||
|
(ceil ((elemAt terminalSize 0 * fontWidth) + 12))
|
||||||
|
(ceil (((elemAt terminalSize 1 + .5) * (fontSize + lineSpacing)) + 48))
|
||||||
|
];
|
||||||
|
|
||||||
|
theme = "night";
|
||||||
|
use-system-font = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -15,9 +15,11 @@
|
||||||
openspades
|
openspades
|
||||||
steam
|
steam
|
||||||
transmission-gtk
|
transmission-gtk
|
||||||
|
ttyper
|
||||||
github-desktop
|
github-desktop
|
||||||
unstable.godot_4
|
unstable.godot_4
|
||||||
youtube-music
|
youtube-music
|
||||||
via
|
via
|
||||||
|
neovim
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,5 +3,6 @@
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./custom-wallpaper
|
./custom-wallpaper
|
||||||
|
./extensions
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
{ ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./monitor-brightness-and-volume.nix
|
||||||
|
];
|
||||||
|
}
|
|
@ -0,0 +1,42 @@
|
||||||
|
{ pkgs, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
UUID = "monitor-brightness-volume@ailin.nemui";
|
||||||
|
lightModeBrightness = 50;
|
||||||
|
darkModeBrightness = 20;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
dconf.settings = {
|
||||||
|
"org/gnome/shell".enabled-extensions = [ UUID ];
|
||||||
|
|
||||||
|
"org/gnome/shell/extensions/monitor-brightness-volume".show-volume = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.user.services.ddcutil-auto-brightness-gnome = {
|
||||||
|
Install.WantedBy = [ "default.target" ];
|
||||||
|
|
||||||
|
Service = {
|
||||||
|
ExecStart = pkgs.writeShellScript "ddcutil-auto-brightness-gnome" ''
|
||||||
|
${pkgs.glib}/bin/gsettings monitor org.gnome.desktop.interface color-scheme | while read -r line; do
|
||||||
|
${pkgs.gnome.gnome-shell}/bin/gnome-extensions disable ${UUID} # Reload the extension to detect the brightness change
|
||||||
|
if [[ "$line" == *"prefer-dark"* ]]; then
|
||||||
|
${pkgs.ddcutil}/bin/ddcutil setvcp 10 ${toString darkModeBrightness}
|
||||||
|
else
|
||||||
|
${pkgs.ddcutil}/bin/ddcutil setvcp 10 ${toString lightModeBrightness}
|
||||||
|
fi
|
||||||
|
# Reload the extension to apply the brightness change
|
||||||
|
${pkgs.gnome.gnome-shell}/bin/gnome-extensions enable ${UUID}
|
||||||
|
done
|
||||||
|
'';
|
||||||
|
Restart = "always";
|
||||||
|
RestartSec = 10;
|
||||||
|
};
|
||||||
|
|
||||||
|
Unit = {
|
||||||
|
After = [ "graphical-session.target" ];
|
||||||
|
Description = "ddcutil auto brightness service for GNOME";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
home.packages = with pkgs; [ gnomeExtensions.monitor-brightness-and-volume ];
|
||||||
|
}
|
|
@ -13,11 +13,26 @@ let
|
||||||
fi
|
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";
|
outputDir = "Videos/Replays";
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
environment.systemPackages = [
|
environment.systemPackages = [
|
||||||
gsr-save-replay
|
gsr-save-replay
|
||||||
|
gsr-replay
|
||||||
|
gsr-record
|
||||||
|
gsr-stop
|
||||||
];
|
];
|
||||||
|
|
||||||
security.wrappers."gsr-kms-server" = {
|
security.wrappers."gsr-kms-server" = {
|
||||||
|
@ -43,9 +58,10 @@ in
|
||||||
extraGSettingsOverridePackages = with pkgs; [ gnome.gnome-settings-daemon ];
|
extraGSettingsOverridePackages = with pkgs; [ gnome.gnome-settings-daemon ];
|
||||||
};
|
};
|
||||||
|
|
||||||
systemd.user.services."gsr-replay" = {
|
systemd.user.services = rec {
|
||||||
|
"gpu-screen-recorder" = {
|
||||||
after = [ "graphical-session.target" ];
|
after = [ "graphical-session.target" ];
|
||||||
description = "GPU Screen Recorder replay service";
|
description = "GPU Screen Recorder service";
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
Environment = [
|
Environment = [
|
||||||
"AUDIO_CODEC=opus"
|
"AUDIO_CODEC=opus"
|
||||||
|
@ -54,20 +70,33 @@ in
|
||||||
"FRAMERATE=60"
|
"FRAMERATE=60"
|
||||||
"MAKEFOLDERS=no"
|
"MAKEFOLDERS=no"
|
||||||
"QUALITY=very_high"
|
"QUALITY=very_high"
|
||||||
"REPLAYDURATION=300"
|
|
||||||
"WINDOW=screen"
|
"WINDOW=screen"
|
||||||
];
|
];
|
||||||
ExecStart = pkgs.writeShellScript "start-gpu-screen-recorder-replay" ''
|
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
|
#${pkgs.killall}/bin/killall gpu-screen-recorder
|
||||||
|
|
||||||
|
if [ -n "$REPLAYDURATION" ]; then
|
||||||
|
REPLAYARG="-r $REPLAYDURATION"
|
||||||
|
else
|
||||||
|
REPLAYARG=""
|
||||||
|
fi
|
||||||
|
|
||||||
|
${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";
|
Restart = "on-failure";
|
||||||
RestartSec = "5s";
|
RestartSec = "5s";
|
||||||
Type = "simple";
|
Type = "simple";
|
||||||
};
|
};
|
||||||
wantedBy = [ "graphical-session.target" ];
|
|
||||||
};
|
};
|
||||||
|
|
||||||
systemd.user.services."gsr-audio-device-changer" = {
|
"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" ];
|
after = [ "gsr-replay.service" ];
|
||||||
description = "Restart GPU Screen Recorder replay service on audio device change";
|
description = "Restart GPU Screen Recorder replay service on audio device change";
|
||||||
requires = [ "gsr-replay.service" ];
|
requires = [ "gsr-replay.service" ];
|
||||||
|
@ -79,10 +108,11 @@ in
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
'';
|
'';
|
||||||
Restart = "always";
|
Restart = "on-failure";
|
||||||
RestartSec = "5s";
|
RestartSec = "5s";
|
||||||
Type = "simple";
|
Type = "simple";
|
||||||
};
|
};
|
||||||
wantedBy = [ "gsr-replay.service" ];
|
wantedBy = [ "gsr-replay.service" ];
|
||||||
};
|
};
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,11 +2,9 @@
|
||||||
|
|
||||||
{
|
{
|
||||||
config = lib.mkIf config.hardware.monitor-control.enable {
|
config = lib.mkIf config.hardware.monitor-control.enable {
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [ ddcutil ];
|
||||||
ddcutil
|
hardware.i2c.enable = true;
|
||||||
];
|
users.groups."i2c".members = builtins.attrNames config.users.users;
|
||||||
|
|
||||||
boot.kernelModules = [ "i2c-dev" ];
|
|
||||||
};
|
};
|
||||||
|
|
||||||
options.hardware.monitor-control.enable = lib.mkEnableOption "enable support for controlling monitor settings.";
|
options.hardware.monitor-control.enable = lib.mkEnableOption "enable support for controlling monitor settings.";
|
||||||
|
|
Loading…
Reference in a new issue