Compare commits

...

4 commits

Author SHA1 Message Date
Joseph DiGiovanni 90d12289c5 Update ALVR 2024-08-11 21:30:04 -04:00
Joseph DiGiovanni 5dcbe8b9e8 Update flake 2024-08-11 21:01:30 -04:00
Joseph DiGiovanni 761d9b43a6 Change console font 2024-08-11 21:01:30 -04:00
Joseph DiGiovanni bb41f4ca45 Add monitor brightness gnome extension 2024-08-11 21:01:30 -04:00
10 changed files with 191 additions and 25 deletions

89
custom-pkgs/alvr.nix Normal file
View file

@ -0,0 +1,89 @@
{ lib
, stdenv
, fetchzip
, fetchFromGitHub
, alsa-lib
, autoPatchelfHook
, brotli
, ffmpeg
, libdrm
, libGL
, libunwind
, libva
, libvdpau
, libxkbcommon
, nix-update-script
, openssl
, SDL2
, vulkan-loader
, wayland
, x264
, xorg
}:
stdenv.mkDerivation rec {
pname = "alvr";
version = "20.9.1";
src = fetchzip {
url = "https://github.com/alvr-org/ALVR/releases/download/v${version}/alvr_streamer_linux.tar.gz";
hash = "sha256-S8GeUskAqxzPqKC5XDiRDezV++vestlHLAzK001wkXQ=";
};
alvrSrc = fetchFromGitHub {
owner = "alvr-org";
repo = "ALVR";
rev = "v${version}";
hash = "sha256-kw/UGh9nxZMVnvxyXV4CUm3HZegyjWolNoHHNindc5s=";
};
nativeBuildInputs = [
autoPatchelfHook
];
buildInputs = [
alsa-lib
libunwind
libva
libvdpau
vulkan-loader
SDL2
];
runtimeDependencies = [
brotli
ffmpeg
openssl
libdrm
libGL
libxkbcommon
wayland
x264
xorg.libX11
xorg.libXcursor
xorg.libxcb
xorg.libXi
];
installPhase = ''
runHook preInstall
mkdir -p $out/share/applications
cp -r $src/* $out
install -Dm444 $alvrSrc/alvr/xtask/resources/alvr.desktop -t $out/share/applications
install -Dm444 $alvrSrc/resources/alvr.png -t $out/share/icons/hicolor/256x256/apps
runHook postInstall
'';
passthru.updateScript = nix-update-script { };
meta = with lib; {
description = "Stream VR games from your PC to your headset via Wi-Fi";
homepage = "https://github.com/alvr-org/ALVR/";
changelog = "https://github.com/alvr-org/ALVR/releases/tag/v${finalAttrs.version}";
license = licenses.mit;
maintainers = with maintainers; [ passivelemon ];
platforms = platforms.linux;
mainProgram = "alvr_dashboard";
};
}

View file

@ -1,14 +1,16 @@
{ inputs, pkgs, system, ... }:
let
customPkgs = final: prev: {
adwaita-for-steam = pkgs.callPackage ./adwaita-for-steam.nix { };
customPkgs = final: prev: with pkgs;{
adwaita-for-steam = callPackage ./adwaita-for-steam.nix { };
alvr = callPackage ./alvr.nix { };
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 { };
};
mkvextract-gtk = pkgs.callPackage ./mkvextract-gtk.nix { };
mkvextract-gtk = callPackage ./mkvextract-gtk.nix { };
};
unstableOverlay = final: prev: {
@ -22,6 +24,7 @@ let
godot_4 = final.unstable.godot_4;
icoextract = final.unstable.icoextract; #TODO: remove in next release
proton-ge-bin = final.unstable.proton-ge-bin;
sidequest = final.unstable.sidequest;
unstable = import inputs.nixpkgs-unstable {
inherit (final) config system;

View file

@ -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 ];
};
}

View file

@ -232,11 +232,11 @@
"nixpkgs": "nixpkgs_2"
},
"locked": {
"lastModified": 1722388556,
"narHash": "sha256-90/qzsfqtXbHk3vshBQkJdymG/IY7S6RqqYpQU2GB8Y=",
"lastModified": 1722907736,
"narHash": "sha256-drU5kbx9EtTqg7rXc6ni0LZuZQy7l/wVgsQ8PSYl5Qw=",
"owner": "nix-community",
"repo": "nix-vscode-extensions",
"rev": "af75b047c7e12cbd5484190900e6216b5ebe68e2",
"rev": "b3c49142939ba6072cb8bdd6109e36d1b70a055a",
"type": "github"
},
"original": {
@ -279,11 +279,11 @@
},
"nixpkgs-unstable": {
"locked": {
"lastModified": 1722185531,
"narHash": "sha256-veKR07psFoJjINLC8RK4DiLniGGMgF3QMlS4tb74S6k=",
"lastModified": 1722813957,
"narHash": "sha256-IAoYyYnED7P8zrBFMnmp7ydaJfwTnwcnqxUElC1I26Y=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "52ec9ac3b12395ad677e8b62106f0b98c1f8569d",
"rev": "cb9a96f23c491c081b38eab96d22fa958043c9fa",
"type": "github"
},
"original": {
@ -311,11 +311,11 @@
},
"nixpkgs_3": {
"locked": {
"lastModified": 1722221733,
"narHash": "sha256-sga9SrrPb+pQJxG1ttJfMPheZvDOxApFfwXCFO0H9xw=",
"lastModified": 1722869614,
"narHash": "sha256-7ojM1KSk3mzutD7SkrdSflHXEujPvW1u7QuqWoTLXQU=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "12bf09802d77264e441f48e25459c10c93eada2e",
"rev": "883180e6550c1723395a3a342f830bfc5c371f6b",
"type": "github"
},
"original": {

View file

@ -4,9 +4,9 @@
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
fontSize = 12;
fontWidth = 8;
lineSpacing = 2 * 2; # Each line has a space above and below it
terminalMode = {
# Based on VT100 video modes
@ -19,11 +19,11 @@
terminalSize = terminalMode.extended;
in
{
custom-font = "Source Code Pro " + toString fontSize;
custom-font = "Unifont " + toString fontSize;
last-window-size = with builtins; lib.hm.gvariant.mkTuple [
(ceil ((elemAt terminalSize 0 * fontWidth) + 12))
(ceil ((elemAt terminalSize 1 * (fontSize + lineSpacing)) + 48))
(ceil (((elemAt terminalSize 1 + .5) * (fontSize + lineSpacing)) + 48))
];
theme = "night";

View file

@ -3,5 +3,6 @@
{
imports = [
./custom-wallpaper
./extensions
];
}

View file

@ -0,0 +1,7 @@
{ ... }:
{
imports = [
./monitor-brightness-and-volume.nix
];
}

View file

@ -0,0 +1,39 @@
{ 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 = [ "graphical-session.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.Description = "ddcutil auto brightness service for GNOME";
};
home.packages = with pkgs; [ gnomeExtensions.monitor-brightness-and-volume ];
}

View file

@ -2,7 +2,7 @@
{
home.packages = with pkgs; [
unstable.alvr
unstable.sidequest
alvr
sidequest
];
}

View file

@ -2,11 +2,9 @@
{
config = lib.mkIf config.hardware.monitor-control.enable {
environment.systemPackages = with pkgs; [
ddcutil
];
boot.kernelModules = [ "i2c-dev" ];
environment.systemPackages = with pkgs; [ ddcutil ];
hardware.i2c.enable = true;
users.groups."i2c".members = builtins.attrNames config.users.users;
};
options.hardware.monitor-control.enable = lib.mkEnableOption "enable support for controlling monitor settings.";