{ pkgs, ... }: { imports = [ ./config.nix ./variables.nix ]; home.packages = with pkgs; [ swww hyprpicker wofi hyprshade hyprpolkitagent grim slurp wl-clip-persist cliphist wf-recorder glib wayland direnv ]; wayland.windowManager.hyprland = { enable = true; xwayland.enable = true; systemd.enable = true; plugins = [ pkgs.hyprlandPlugins.hyprsplit ]; }; services.dunst = { enable = true; settings = { global = { corner_radius = 5; }; }; }; programs.waybar = { enable = true; systemd.enable = true; settings = { mainBar = { layer = "top"; position = "top"; modules-left = [ "hyprland/workspaces" ]; modules-center = [ "hyprland/window" ]; modules-right = [ "tray" "memory" "cpu" "clock" ]; tray.spacing = 10; clock.tooltip-format = "{:%d.%m.%Y}"; cpu.format = "{}%  "; memory.format = " {}%  "; "hyprland/workspaces" = { format = "{icon}"; persistent-workspaces = { "*" = 10; }; format-icons = { "9" = ""; "10" = "󰝚"; "11" = "1"; "12" = "2"; "13" = "3"; "14" = "4"; "15" = "5"; "16" = "6"; "17" = "7"; "18" = "8"; "19" = "9"; "20" = "10"; "urgent" = ""; "focused" = ""; }; }; }; }; }; xdg.configFile."hypr/shaders/bluelight.glsl".text = '' precision highp float; varying vec2 v_texcoord; uniform sampler2D tex; const float temperature = 4000.0; const float temperatureStrength = 1.0; #define WithQuickAndDirtyLuminancePreservation const float LuminancePreservationFactor = 1.0; // function from https://www.shadertoy.com/view/4sc3D7 // valid from 1000 to 40000 K (and additionally 0 for pure full white) vec3 colorTemperatureToRGB(const in float temperature) { // values from: http://blenderartists.org/forum/showthread.php?270332-OSL-Goodness&p=2268693&viewfull=1#post2268693 mat3 m = (temperature <= 6500.0) ? mat3(vec3(0.0, -2902.1955373783176, -8257.7997278925690), vec3(0.0, 1669.5803561666639, 2575.2827530017594), vec3(1.0, 1.3302673723350029, 1.8993753891711275)) : mat3(vec3(1745.0425298314172, 1216.6168361476490, -8257.7997278925690), vec3(-2666.3474220535695, -2173.1012343082230, 2575.2827530017594), vec3(0.55995389139931482, 0.70381203140554553, 1.8993753891711275)); return mix(clamp(vec3(m[0] / (vec3(clamp(temperature, 1000.0, 40000.0)) + m[1]) + m[2]), vec3(0.0), vec3(1.0)), vec3(1.0), smoothstep(1000.0, 0.0, temperature)); } void main() { vec4 pixColor = texture2D(tex, v_texcoord); // RGB vec3 color = vec3(pixColor[0], pixColor[1], pixColor[2]); #ifdef WithQuickAndDirtyLuminancePreservation color *= mix(1.0, dot(color, vec3(0.2126, 0.7152, 0.0722)) / max(dot(color, vec3(0.2126, 0.7152, 0.0722)), 1e-5), LuminancePreservationFactor); #endif color = mix(color, color * colorTemperatureToRGB(temperature), temperatureStrength); vec4 outCol = vec4(color, pixColor[3]); gl_FragColor = outCol; } ''; # systemd.user.services.wl-gammarelay-rs = { # Unit = { # PartOf = [ "graphical-session.target" ]; # After = [ "graphical-session-pre.target" ]; # }; # # Service = { # ExecStart = "${pkgs.wl-gammarelay-rs}/bin/wl-gammarelay-rs"; # ExecReload = "${pkgs.coreutils}/bin/kill -SIGUSR2 $MAINPID"; # Restart = "on-failure"; # KillMode = "mixed"; # }; # # Install = { WantedBy = [ "default.target" ]; }; # }; # systemd.user.services.wl-gammarelay-rs-restart = { # Unit = { # After = [ "suspend.target" "hibernate.target" "hybrid-sleep.target" "suspend-then-hibernate.target" ]; # }; # # Service = { # ExecStart = "${pkgs.bash}/bin/bash -c '${cmd} 6000 && ${cmd} 4000'"; # }; # # Install = { WantedBy = [ "suspend.target" "hibernate.target" "hybrid-sleep.target" "suspend-then-hibernate.target" ]; }; # }; }