From 230547eb927868f58426d14ce27999d8e79e2ee0 Mon Sep 17 00:00:00 2001 From: servius Date: Wed, 21 Jan 2026 20:21:25 +0530 Subject: [PATCH] feat: extend ghostty shader, add shadps4 builds, update nix, homepage --- home/apps/ghostty.nix | 48 +++++++++++-- home/apps/shadps4.nix | 112 ++++++++++++++++++++++++++++++- home/services/hyprland.nix | 4 +- nixos/ryu/configuration.nix | 2 +- nixos/tako/configuration.nix | 2 +- nixos/tako/services/homepage.nix | 11 ++- 6 files changed, 167 insertions(+), 12 deletions(-) diff --git a/home/apps/ghostty.nix b/home/apps/ghostty.nix index ba517db3..9e2ddd55 100644 --- a/home/apps/ghostty.nix +++ b/home/apps/ghostty.nix @@ -22,13 +22,51 @@ # glsl # */ # '' + # const float CURSOR_ANIMATION_SPEED = 150.0; // ms + # const float TRAILING_CURSORS = 3.0; + # bool at_pos(vec2 fragCoord, vec2 pos, vec2 size) { + # return (pos.x <= fragCoord.x && fragCoord.x <= pos.x + size.x && + # pos.y - size.y <= fragCoord.y && fragCoord.y <= pos.y); + # } # void mainImage(out vec4 fragColor, in vec2 fragCoord) { + # // Normalized pixel coordinates (from 0 to 1) # vec2 uv = fragCoord / iResolution.xy; - # vec3 col = vec3(0.0); - # col.r = 0.1 + 0.9 * uv.x; - # col.g = 0.1 + 0.9 * uv.y; - # col.b = 0.2; - # fragColor = vec4(col, 1.0); + # vec2 current_cursor = iCurrentCursor.xy; + # vec2 previous_cursor = iPreviousCursor.xy; + # float time_passed = (iTime - iTimeCursorChange) * 1000.0; // in ms + # + # if (time_passed > CURSOR_ANIMATION_SPEED) { + # // No animation, just render normally + # fragColor = texture(iChannel0, uv); + # return; + # } + # // Animate cursor meovement + # vec4 col = texture(iChannel0, uv); + # // linear interpolation between current and previous cursor position based on time passed + # vec2 animated_cursor_pos = mix(previous_cursor, current_cursor, time_passed / CURSOR_ANIMATION_SPEED); + # // make 3 trailing cursors for smoother animation + # for (int i = 1; i <= int(TRAILING_CURSORS); i++) { + # float t = float(i) / TRAILING_CURSORS; + # vec2 trail_pos = mix(previous_cursor, current_cursor, (time_passed / CURSOR_ANIMATION_SPEED) * t); + # if (at_pos(fragCoord, trail_pos, iCurrentCursor.zw)) { + # col = mix(col, iCurrentCursorColor, t); + # } + # } + # + # // vec4 cursor_color = mix(iPreviousCursorColor, iCurrentCursorColor, time_passed / CURSOR_ANIMATION_SPEED); + # vec4 cursor_color = iCurrentCursorColor; // no color animation for now + # vec2 cursor_size = iCurrentCursor.zw; + # // check if fragCoord is within the animated cursor rectangle + # // y is in the negative direction + # // if (animated_cursor_pos.x <= fragCoord.x && fragCoord.x <= animated_cursor_pos.x + cursor_size.x && + # // animated_cursor_pos.y - cursor_size.y <= fragCoord.y && fragCoord.y <= animated_cursor_pos.y) { + # // col = cursor_color; + # // } + # if (at_pos(fragCoord, animated_cursor_pos, cursor_size)) { + # col = cursor_color; + # } + # + # fragColor = col; # } # ''); }; diff --git a/home/apps/shadps4.nix b/home/apps/shadps4.nix index 1afca72a..02854c99 100644 --- a/home/apps/shadps4.nix +++ b/home/apps/shadps4.nix @@ -2,12 +2,122 @@ pkgs, lib, ... -}: { +}: let + shadps4_qtlauncher = pkgs.fetchFromGitHub { + owner = "shadps4-emu"; + repo = "shadps4-qtlauncher"; + rev = "1f4e59f6110d5f991cead5a3e9f72671fced2c70"; + sha256 = "sha256-AAxj3Eqp7iGJgRgJki/93fln5Z6ae8AydJLGZ6Dbb00="; + fetchSubmodules = true; + }; + # diegolixShadps4 = pkgs.fetchFromGitHub { + # owner = "diegolix"; + # repo = "shadps4-qtlauncher"; + # rev = "a1b2c3d4e5f67890123456789abcdef01234567"; + # sha256 = "sha256-PLACEHOLDERFORHASHVALUE1234567890ABCDEFGH="; + # fetchSubmodules = true; + # }; + bblauncher = pkgs.fetchFromGitHub { + owner = "rainmakerv3"; + repo = "BB_Launcher"; + rev = "2280c90974d2d741ce927dfc88f0ecf98c8bd2df"; + sha256 = "sha256-jPcIQp2EBAEiaTLvC/OBH0BgcfYv3zo2H7akHJSlPaI="; + fetchSubmodules = true; + }; +in { home.packages = lib.optionals pkgs.stdenv.isLinux [ (pkgs.shadps4.overrideAttrs (oldAttrs: { nativeBuildInputs = oldAttrs.nativeBuildInputs ++ [pkgs.cudatoolkit]; buildInputs = oldAttrs.buildInputs ++ [pkgs.cudatoolkit]; })) + (pkgs.stdenv.mkDerivation { + pname = "shadps4-qt"; + version = "1.0.0"; + src = shadps4_qtlauncher; + nativeBuildInputs = [ + pkgs.cmake + pkgs.pkg-config + pkgs.qt6.wrapQtAppsHook + ]; + buildInputs = [ + pkgs.alsa-lib + pkgs.ffmpeg + pkgs.fmt + pkgs.glslang + pkgs.jack2 + pkgs.libedit + pkgs.libevdev + pkgs.libpng + pkgs.libpulseaudio + pkgs.libxkbcommon + pkgs.openal + pkgs.openssl + pkgs.qt6.qtbase + pkgs.qt6.qtmultimedia + pkgs.qt6.qttools + pkgs.qt6.qtwayland + pkgs.SDL2 + pkgs.sdl3 + pkgs.sndio + pkgs.stb + pkgs.udev + pkgs.vulkan-headers + pkgs.vulkan-tools + pkgs.vulkan-utility-libraries + pkgs.wayland + pkgs.wayland-protocols + pkgs.xorg.libxcb + pkgs.xorg.xcbutil + pkgs.xorg.xcbutilkeysyms + pkgs.xorg.xcbutilwm + pkgs.zlib + ]; + }) + + (pkgs.stdenv.mkDerivation { + pname = "BBLauncher"; + version = "1.0.0"; + src = bblauncher; + nativeBuildInputs = [ + pkgs.cmake + pkgs.pkg-config + pkgs.qt6.wrapQtAppsHook + ]; + buildInputs = [ + pkgs.alsa-lib + pkgs.ffmpeg + pkgs.fmt + pkgs.glslang + pkgs.jack2 + pkgs.libedit + pkgs.libevdev + pkgs.libpng + pkgs.libpulseaudio + pkgs.libxkbcommon + pkgs.openal + pkgs.openssl + pkgs.qt6.qtbase + pkgs.qt6.qtmultimedia + pkgs.qt6.qttools + pkgs.qt6.qtwayland + pkgs.qt6.qtwebview + pkgs.SDL2 + pkgs.sdl3 + pkgs.sndio + pkgs.stb + pkgs.udev + pkgs.vulkan-headers + pkgs.vulkan-tools + pkgs.vulkan-utility-libraries + pkgs.wayland + pkgs.wayland-protocols + pkgs.xorg.libxcb + pkgs.xorg.xcbutil + pkgs.xorg.xcbutilkeysyms + pkgs.xorg.xcbutilwm + pkgs.zlib + ]; + }) ]; } diff --git a/home/services/hyprland.nix b/home/services/hyprland.nix index 2b8e69f4..75145b2b 100644 --- a/home/services/hyprland.nix +++ b/home/services/hyprland.nix @@ -190,8 +190,8 @@ ]; bind = [ # Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more - "$mainMod, Return, exec, ${lib.getExe pkgs.wezterm}" - "$mainModShift, Return, exec, ${lib.getExe pkgs.kitty}" + "$mainMod, Return, exec, ${lib.getExe pkgs.kitty}" + "$mainModShift, Return, exec, ${lib.getExe pkgs.ghostty}" # "$mainModShift, Return, exec, ${pkgs.foot}/bin/foot" "$mainModShift, Q, killactive," "$mainModShift, s, exec, ${lib.getExe pkgs.hyprshot} -m region -o ~/Pictures/Screenshots/" diff --git a/nixos/ryu/configuration.nix b/nixos/ryu/configuration.nix index 323fd674..89c28898 100644 --- a/nixos/ryu/configuration.nix +++ b/nixos/ryu/configuration.nix @@ -67,7 +67,7 @@ dates = "daily"; options = "--delete-older-than +5"; }; - package = pkgs.nixVersions.latest; # deploy-rs doesn't work with nix >= 2.32 + package = pkgs.nixVersions.nix_2_32; # deploy-rs doesn't work with nix >= 2.33 buildMachines = [ ../../builders/tako.nix ../../builders/shiro.nix diff --git a/nixos/tako/configuration.nix b/nixos/tako/configuration.nix index 80db085f..a4446dac 100644 --- a/nixos/tako/configuration.nix +++ b/nixos/tako/configuration.nix @@ -65,7 +65,7 @@ dates = "daily"; options = "--delete-older-than 5d"; }; - package = pkgs.nixVersions.latest; # deploy-rs doesn't work with nix >= 2.32 + package = pkgs.nixVersions.nix_2_32; # deploy-rs doesn't work with nix >= 2.32 distributedBuilds = true; }; diff --git a/nixos/tako/services/homepage.nix b/nixos/tako/services/homepage.nix index f473805f..6ce78c21 100644 --- a/nixos/tako/services/homepage.nix +++ b/nixos/tako/services/homepage.nix @@ -59,7 +59,6 @@ siteMonitor = "https://deluge.tsuba.darksailor.dev"; }; } - { "Home Assistant" = { icon = "home-assistant.png"; @@ -68,6 +67,14 @@ siteMonitor = "https://home.darksailor.dev"; }; } + { + "Pi Hole" = { + icon = "pi-hole.png"; + description = "Pi-hole: Network-wide Ad Blocker"; + href = "https://pihole.darksailor.dev"; + siteMonitor = "https://pihole.darksailor.dev"; + }; + } ]; } { @@ -99,7 +106,7 @@ { "Excalidraw" = { icon = "excalidraw.png"; - description = "Excalidraw: Self-hosted Collaborative Whiteboard"; + description = "Excalidraw: Self-hosted Whiteboard"; href = "https://draw.darksailor.dev"; siteMonitor = "https://draw.darksailor.dev"; };