143 lines
4.5 KiB
Nix
143 lines
4.5 KiB
Nix
{ pkgs, ... }: {
|
|
imports = [ ./config.nix ./variables.nix ];
|
|
home.packages = with pkgs; [
|
|
hyprpicker # color picker
|
|
wofi # dmenu replacement
|
|
hyprshade # shader control, used for rudimentary blue-light filter
|
|
hyprpolkitagent
|
|
grim
|
|
slurp
|
|
# clipboard management
|
|
wl-clip-persist
|
|
wl-clipboard
|
|
cliphist
|
|
];
|
|
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" ]; };
|
|
# };
|
|
}
|