reorganised options
This commit is contained in:
parent
bf3bb961f3
commit
0b5941f31d
17 changed files with 389 additions and 458 deletions
|
@ -17,7 +17,14 @@
|
||||||
laser.enable = true;
|
laser.enable = true;
|
||||||
windowManager = "niri-session";
|
windowManager = "niri-session";
|
||||||
wm.niri.enable = true;
|
wm.niri.enable = true;
|
||||||
hyprland.enable = false;
|
fuzzel.enable = true;
|
||||||
|
hyprlock.enable = true;
|
||||||
|
hyprpaper.enable = true;
|
||||||
|
hypridle.enable = true;
|
||||||
|
mako.enable = true;
|
||||||
|
waybar.enable = true;
|
||||||
|
wlogout.enable = true;
|
||||||
|
utils.enable = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
common.syncthing = {
|
common.syncthing = {
|
||||||
|
|
|
@ -2,8 +2,9 @@
|
||||||
{
|
{
|
||||||
|
|
||||||
imports = [
|
imports = [
|
||||||
|
./hyprland.nix
|
||||||
./niri.nix
|
./niri.nix
|
||||||
./river.nix
|
./options.nix
|
||||||
./waybar.nix
|
./wlroots_utils.nix
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
@ -260,5 +260,11 @@ lib.mkIf config.desktop.hyprland.enable {
|
||||||
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
home.packages = [
|
||||||
|
(pkgs.writeShellScriptBin "hyprexit" ''
|
||||||
|
${pkgs.hyprland}/bin/hyprctl dispatch exit
|
||||||
|
${pkgs.systemd}/bin/loginctl terminate-user willifan
|
||||||
|
'')
|
||||||
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
|
@ -3,15 +3,11 @@
|
||||||
options = {
|
options = {
|
||||||
desktop = {
|
desktop = {
|
||||||
fuzzel.enable = lib.mkOption {
|
fuzzel.enable = lib.mkOption {
|
||||||
default = config.desktop.enable;
|
default = false;
|
||||||
type = lib.types.bool;
|
|
||||||
};
|
|
||||||
hyprexit.enable = lib.mkOption {
|
|
||||||
default = config.desktop.enable;
|
|
||||||
type = lib.types.bool;
|
type = lib.types.bool;
|
||||||
};
|
};
|
||||||
hypridle.enable = lib.mkOption {
|
hypridle.enable = lib.mkOption {
|
||||||
default = config.desktop.enable;
|
default = false;
|
||||||
type = lib.types.bool;
|
type = lib.types.bool;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -36,24 +32,29 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
waybar.enable = lib.mkOption {
|
||||||
|
default = false;
|
||||||
|
type = lib.types.bool;
|
||||||
|
};
|
||||||
|
|
||||||
hyprlock.enable = lib.mkOption {
|
hyprlock.enable = lib.mkOption {
|
||||||
default = config.desktop.enable;
|
default = false;
|
||||||
type = lib.types.bool;
|
type = lib.types.bool;
|
||||||
};
|
};
|
||||||
hyprpaper.enable = lib.mkOption {
|
hyprpaper.enable = lib.mkOption {
|
||||||
default = config.desktop.enable;
|
default = false;
|
||||||
type = lib.types.bool;
|
type = lib.types.bool;
|
||||||
};
|
};
|
||||||
mako.enable = lib.mkOption {
|
mako.enable = lib.mkOption {
|
||||||
default = config.desktop.enable;
|
default = false;
|
||||||
type = lib.types.bool;
|
type = lib.types.bool;
|
||||||
};
|
};
|
||||||
utils.enable = lib.mkOption {
|
utils.enable = lib.mkOption {
|
||||||
default = config.desktop.enable;
|
default = false;
|
||||||
type = lib.types.bool;
|
type = lib.types.bool;
|
||||||
};
|
};
|
||||||
wlogout.enable = lib.mkOption {
|
wlogout.enable = lib.mkOption {
|
||||||
default = config.desktop.enable;
|
default = false;
|
||||||
type = lib.types.bool;
|
type = lib.types.bool;
|
||||||
};
|
};
|
||||||
};
|
};
|
|
@ -1,19 +0,0 @@
|
||||||
{ lib, config, ... }:
|
|
||||||
lib.mkIf config.desktop.wm.river.enable {
|
|
||||||
home-manager.users.willifan = {
|
|
||||||
wayland.windowManager.river = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
map = {
|
|
||||||
normal = {
|
|
||||||
"Super Q" = "spawn 'kitty'";
|
|
||||||
"Super R" = "spawn 'fuzzel'";
|
|
||||||
"Super E" = "spawn 'thunar'";
|
|
||||||
|
|
||||||
"Super C" = "close";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,153 +0,0 @@
|
||||||
{ lib, config, pkgs, ... }:
|
|
||||||
let
|
|
||||||
icons = fetchTarball {
|
|
||||||
url = "https://files.huwe.mooo.com/waybar.tar.gz";
|
|
||||||
sha256 = "0h5r8r7vscm6yv25kgyzx5y325n5ri78n28vmdvgmysp351drm57";
|
|
||||||
};
|
|
||||||
in
|
|
||||||
lib.mkIf config.desktop.wm.niri.enable {
|
|
||||||
home-manager.users.willifan = {
|
|
||||||
programs.waybar = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
mainBar = {
|
|
||||||
layer = "top";
|
|
||||||
position = "top";
|
|
||||||
height = 25;
|
|
||||||
output = [
|
|
||||||
"eDP-1"
|
|
||||||
];
|
|
||||||
modules-left = [ "clock" "mpris" ];
|
|
||||||
modules-center = [ "niri/workspaces" ];
|
|
||||||
modules-right = [ "tray" "group/ressources" "group/peripherals" "group/wireless" "group/power" ];
|
|
||||||
|
|
||||||
"group/ressources" = {
|
|
||||||
orientation = "inherit";
|
|
||||||
modules = [ "group/cpu" "group/memory" ];
|
|
||||||
};
|
|
||||||
"group/peripherals" = {
|
|
||||||
orientation = "inherit";
|
|
||||||
modules = [ "group/volume" "group/backlight" ];
|
|
||||||
};
|
|
||||||
"group/wireless" = {
|
|
||||||
orientation = "inherit";
|
|
||||||
modules = [ "group/networking" "group/bluetooth" ];
|
|
||||||
};
|
|
||||||
"group/power" = {
|
|
||||||
orientation = "inherit";
|
|
||||||
modules = [ "group/battery" "image#power" ];
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
"clock" = {
|
|
||||||
interval = 1;
|
|
||||||
format = "{:%H:%M:%S}";
|
|
||||||
};
|
|
||||||
"mpris" = {
|
|
||||||
format = "";
|
|
||||||
format-playing = "{dynamic}";
|
|
||||||
dynamic-order = [ "title" "artist" "album" "position" "length" ];
|
|
||||||
dynamic-len = 30;
|
|
||||||
};
|
|
||||||
"niri/workspaces" = {
|
|
||||||
all-outputs = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
"group/cpu" = {
|
|
||||||
orientation = "inherit";
|
|
||||||
modules = [ "image#cpu" "cpu" ];
|
|
||||||
};
|
|
||||||
"image#cpu" = {
|
|
||||||
path = "${icons}/cpu.png";
|
|
||||||
size = 16;
|
|
||||||
};
|
|
||||||
"cpu" = {
|
|
||||||
format = "{usage}%";
|
|
||||||
};
|
|
||||||
|
|
||||||
"group/memory" = {
|
|
||||||
orientation = "inherit";
|
|
||||||
modules = [ "image#memory" "memory" ];
|
|
||||||
};
|
|
||||||
"image#memory" = {
|
|
||||||
path = "${icons}/ram.png";
|
|
||||||
size = 16;
|
|
||||||
};
|
|
||||||
"memory" = {
|
|
||||||
format = "{percentage}%";
|
|
||||||
};
|
|
||||||
|
|
||||||
"group/volume" = {
|
|
||||||
orientation = "inherit";
|
|
||||||
modules = [ "image#volume" "wireplumber" ];
|
|
||||||
};
|
|
||||||
"image#volume" = {
|
|
||||||
path = "${icons}/volume.png";
|
|
||||||
size = 16;
|
|
||||||
};
|
|
||||||
"wireplumber" = {
|
|
||||||
format = "{volume}%";
|
|
||||||
};
|
|
||||||
|
|
||||||
"group/backlight" = {
|
|
||||||
orientation = "inherit";
|
|
||||||
modules = [ "image#backlight" "backlight" ];
|
|
||||||
};
|
|
||||||
"image#backlight" = {
|
|
||||||
path = "${icons}/brightness.png";
|
|
||||||
size = 16;
|
|
||||||
};
|
|
||||||
"backlight" = {
|
|
||||||
format = "{percent}%";
|
|
||||||
};
|
|
||||||
|
|
||||||
"group/networking" = {
|
|
||||||
orientation = "inherit";
|
|
||||||
modules = [ "image#networking" "network" ];
|
|
||||||
};
|
|
||||||
"image#networking" = {
|
|
||||||
path = "${icons}/wifiHigh.png";
|
|
||||||
size = 16;
|
|
||||||
};
|
|
||||||
"network" = {
|
|
||||||
format = "{signalStrength}%";
|
|
||||||
};
|
|
||||||
|
|
||||||
"group/bluetooth" = {
|
|
||||||
orientation = "inherit";
|
|
||||||
modules = [ "image#bluetooth" "bluetooth" ];
|
|
||||||
};
|
|
||||||
"image#bluetooth" = {
|
|
||||||
path = "${icons}/bluetooth.png";
|
|
||||||
size = 16;
|
|
||||||
};
|
|
||||||
"bluetooth" = {
|
|
||||||
format = "{status}";
|
|
||||||
};
|
|
||||||
|
|
||||||
"group/battery" = {
|
|
||||||
orientation = "inherit";
|
|
||||||
modules = [ "image#battery" "battery" ];
|
|
||||||
};
|
|
||||||
"image#battery" = {
|
|
||||||
path = "${icons}/battery.png";
|
|
||||||
size = 16;
|
|
||||||
};
|
|
||||||
"battery" = {
|
|
||||||
format = "{capacity}%";
|
|
||||||
};
|
|
||||||
|
|
||||||
"image#power" = {
|
|
||||||
path = "${icons}/power.png";
|
|
||||||
size = 16;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
systemd = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
360
modules/home-manager/desktop/compositors/wlroots_utils.nix
Normal file
360
modules/home-manager/desktop/compositors/wlroots_utils.nix
Normal file
|
@ -0,0 +1,360 @@
|
||||||
|
{ lib, config, pkgs, ... }:
|
||||||
|
let
|
||||||
|
icons = fetchTarball {
|
||||||
|
url = "https://files.huwe.mooo.com/waybar.tar.gz";
|
||||||
|
sha256 = "0h5r8r7vscm6yv25kgyzx5y325n5ri78n28vmdvgmysp351drm57";
|
||||||
|
};
|
||||||
|
in
|
||||||
|
{
|
||||||
|
home-manager.users.willifan = {
|
||||||
|
home.packages = lib.mkIf config.desktop.utils.enable [
|
||||||
|
|
||||||
|
pkgs.hyprpicker
|
||||||
|
pkgs.hyprcursor
|
||||||
|
|
||||||
|
pkgs.grim
|
||||||
|
pkgs.slurp
|
||||||
|
pkgs.wl-clipboard
|
||||||
|
pkgs.playerctl
|
||||||
|
|
||||||
|
pkgs.dconf
|
||||||
|
|
||||||
|
pkgs.papirus-icon-theme
|
||||||
|
];
|
||||||
|
|
||||||
|
programs.fuzzel = lib.mkIf config.desktop.fuzzel.enable {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
main = {
|
||||||
|
lines = 12;
|
||||||
|
width = 45;
|
||||||
|
line-height = 20;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
services.hyprpaper = lib.mkIf config.desktop.hyprpaper.enable {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
splash = true;
|
||||||
|
ipc = "off";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
services.mako = lib.mkIf config.desktop.mako.enable {
|
||||||
|
enable = true;
|
||||||
|
borderRadius = 10;
|
||||||
|
borderSize = 2;
|
||||||
|
};
|
||||||
|
|
||||||
|
services.hypridle = lib.mkIf config.desktop.hypridle.enable {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
|
||||||
|
general = {
|
||||||
|
lock_cmd = "pidof hyprlock || hyprlock"; # avoid starting multiple hyprlock instances.
|
||||||
|
before_sleep_cmd = "loginctl lock-session && sleep 2"; # lock before suspend.
|
||||||
|
after_sleep_cmd = "hyprctl dispatch dpms on"; # to avoid having to press a key twice to turn on the display.
|
||||||
|
};
|
||||||
|
|
||||||
|
listener = [
|
||||||
|
#{
|
||||||
|
# timeout = 150; # 2.5min.
|
||||||
|
# on-timeout = brightnessctl -s set 10; # set monitor backlight to minimum, avoid 0 on OLED monitor.
|
||||||
|
# on-resume = brightnessctl -r; # monitor backlight restor.
|
||||||
|
#}
|
||||||
|
|
||||||
|
{
|
||||||
|
timeout = 300; # 5min
|
||||||
|
on-timeout = "loginctl lock-session"; # lock screen when timeout has passed
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
timeout = 380; # 5.5min
|
||||||
|
on-timeout = "hyprctl dispatch dpms off"; # screen off when timeout has passed
|
||||||
|
on-resume = "hyprctl dispatch dpms on"; # screen on when activity is detected after timeout has fired.
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
timeout = 600; # 30min
|
||||||
|
on-timeout = "systemctl suspend-then-hibernate"; # suspend pc
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.waybar = lib.mkIf config.desktop.waybar.enable {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
mainBar = {
|
||||||
|
layer = "top";
|
||||||
|
position = "top";
|
||||||
|
height = 25;
|
||||||
|
output = [
|
||||||
|
"eDP-1"
|
||||||
|
];
|
||||||
|
modules-left = [ "clock" "mpris" ];
|
||||||
|
modules-center = [ "niri/workspaces" ];
|
||||||
|
modules-right = [ "tray" "group/ressources" "group/peripherals" "group/wireless" "group/power" ];
|
||||||
|
|
||||||
|
"group/ressources" = {
|
||||||
|
orientation = "inherit";
|
||||||
|
modules = [ "group/cpu" "group/memory" ];
|
||||||
|
};
|
||||||
|
"group/peripherals" = {
|
||||||
|
orientation = "inherit";
|
||||||
|
modules = [ "group/volume" "group/backlight" ];
|
||||||
|
};
|
||||||
|
"group/wireless" = {
|
||||||
|
orientation = "inherit";
|
||||||
|
modules = [ "group/networking" "group/bluetooth" ];
|
||||||
|
};
|
||||||
|
"group/power" = {
|
||||||
|
orientation = "inherit";
|
||||||
|
modules = [ "group/battery" "image#power" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
"clock" = {
|
||||||
|
interval = 1;
|
||||||
|
format = "{:%H:%M:%S}";
|
||||||
|
};
|
||||||
|
"mpris" = {
|
||||||
|
format = "";
|
||||||
|
format-playing = "{dynamic}";
|
||||||
|
dynamic-order = [ "title" "artist" "album" "position" "length" ];
|
||||||
|
dynamic-len = 30;
|
||||||
|
};
|
||||||
|
"niri/workspaces" = {
|
||||||
|
all-outputs = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
"group/cpu" = {
|
||||||
|
orientation = "inherit";
|
||||||
|
modules = [ "image#cpu" "cpu" ];
|
||||||
|
};
|
||||||
|
"image#cpu" = {
|
||||||
|
path = "${icons}/cpu.png";
|
||||||
|
size = 16;
|
||||||
|
};
|
||||||
|
"cpu" = {
|
||||||
|
format = "{usage}%";
|
||||||
|
};
|
||||||
|
|
||||||
|
"group/memory" = {
|
||||||
|
orientation = "inherit";
|
||||||
|
modules = [ "image#memory" "memory" ];
|
||||||
|
};
|
||||||
|
"image#memory" = {
|
||||||
|
path = "${icons}/ram.png";
|
||||||
|
size = 16;
|
||||||
|
};
|
||||||
|
"memory" = {
|
||||||
|
format = "{percentage}%";
|
||||||
|
};
|
||||||
|
|
||||||
|
"group/volume" = {
|
||||||
|
orientation = "inherit";
|
||||||
|
modules = [ "image#volume" "wireplumber" ];
|
||||||
|
};
|
||||||
|
"image#volume" = {
|
||||||
|
path = "${icons}/volume.png";
|
||||||
|
size = 16;
|
||||||
|
};
|
||||||
|
"wireplumber" = {
|
||||||
|
format = "{volume}%";
|
||||||
|
};
|
||||||
|
|
||||||
|
"group/backlight" = {
|
||||||
|
orientation = "inherit";
|
||||||
|
modules = [ "image#backlight" "backlight" ];
|
||||||
|
};
|
||||||
|
"image#backlight" = {
|
||||||
|
path = "${icons}/brightness.png";
|
||||||
|
size = 16;
|
||||||
|
};
|
||||||
|
"backlight" = {
|
||||||
|
format = "{percent}%";
|
||||||
|
};
|
||||||
|
|
||||||
|
"group/networking" = {
|
||||||
|
orientation = "inherit";
|
||||||
|
modules = [ "image#networking" "network" ];
|
||||||
|
};
|
||||||
|
"image#networking" = {
|
||||||
|
path = "${icons}/wifiHigh.png";
|
||||||
|
size = 16;
|
||||||
|
};
|
||||||
|
"network" = {
|
||||||
|
format = "{signalStrength}%";
|
||||||
|
};
|
||||||
|
|
||||||
|
"group/bluetooth" = {
|
||||||
|
orientation = "inherit";
|
||||||
|
modules = [ "image#bluetooth" "bluetooth" ];
|
||||||
|
};
|
||||||
|
"image#bluetooth" = {
|
||||||
|
path = "${icons}/bluetooth.png";
|
||||||
|
size = 16;
|
||||||
|
};
|
||||||
|
"bluetooth" = {
|
||||||
|
format = "{status}";
|
||||||
|
};
|
||||||
|
|
||||||
|
"group/battery" = {
|
||||||
|
orientation = "inherit";
|
||||||
|
modules = [ "image#battery" "battery" ];
|
||||||
|
};
|
||||||
|
"image#battery" = {
|
||||||
|
path = "${icons}/battery.png";
|
||||||
|
size = 16;
|
||||||
|
};
|
||||||
|
"battery" = {
|
||||||
|
format = "{capacity}%";
|
||||||
|
};
|
||||||
|
|
||||||
|
"image#power" = {
|
||||||
|
path = "${icons}/power.png";
|
||||||
|
size = 16;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.hyprlock = lib.mkIf config.desktop.hyprlock.enable {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
background = {
|
||||||
|
monitor = "";
|
||||||
|
# all these options are taken from hyprland, see https://wiki.hyprland.org/Configuring/Variables/#blur for explanations
|
||||||
|
blur_passes = 3; # 0 disables blurring
|
||||||
|
blur_size = 7;
|
||||||
|
noise = 0.0117;
|
||||||
|
contrast = 0.8916;
|
||||||
|
brightness = 0.8172;
|
||||||
|
vibrancy = 0.1696;
|
||||||
|
vibrancy_darkness = 0.0;
|
||||||
|
};
|
||||||
|
|
||||||
|
input-field = {
|
||||||
|
monitor = "";
|
||||||
|
size = "300, 75";
|
||||||
|
outline_thickness = 3;
|
||||||
|
dots_size = 0.33; # Scale of input-field height, 0.2 - 0.8
|
||||||
|
dots_spacing = 0.15; # Scale of dots' absolute size, 0.0 - 1.0
|
||||||
|
dots_center = false;
|
||||||
|
dots_rounding = -1; # -1 default circle, -2 follow input-field rounding
|
||||||
|
fade_on_empty = true;
|
||||||
|
fade_timeout = 1000; # Milliseconds before fade_on_empty is triggered.
|
||||||
|
placeholder_text = "<i>Input Password...</i>"; # Text rendered in the input box when it's empty.
|
||||||
|
hide_input = false;
|
||||||
|
rounding = -1; # -1 means complete rounding (circle/oval)
|
||||||
|
fail_text = "<i>$FAIL <b>($ATTEMPTS)</b></i>"; # can be set to empty
|
||||||
|
fail_transition = 300; # transition time in ms between normal outer_color and fail_color
|
||||||
|
capslock_color = -1;
|
||||||
|
numlock_color = -1;
|
||||||
|
bothlock_color = -1; # when both locks are active. -1 means don't change outer color (same for above)
|
||||||
|
invert_numlock = false; # change color if numlock is off
|
||||||
|
position = "0, -20";
|
||||||
|
halign = "center";
|
||||||
|
valign = "center";
|
||||||
|
};
|
||||||
|
|
||||||
|
label = {
|
||||||
|
monitor = "";
|
||||||
|
text = "Hi there, $USER";
|
||||||
|
color = "rgba(200, 200, 200, 1.0)";
|
||||||
|
font_size = 25;
|
||||||
|
font_family = "Noto Sans";
|
||||||
|
position = "0, 80";
|
||||||
|
halign = "center";
|
||||||
|
valign = "center";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.wlogout = lib.mkIf config.desktop.wlogout.enable {
|
||||||
|
enable = true;
|
||||||
|
layout = [
|
||||||
|
{
|
||||||
|
label = "shutdown";
|
||||||
|
action = "systemctl poweroff";
|
||||||
|
text = "Shutdown";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
label = "hyprland";
|
||||||
|
action = "hyprctl dispatch exit";
|
||||||
|
text = "Exit Hyprland";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
label = "whatever";
|
||||||
|
action = "";
|
||||||
|
text = "whatever";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
label = "reboot";
|
||||||
|
action = "systemctl reboot";
|
||||||
|
text = "Reboot";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
label = "suspend";
|
||||||
|
action = "systemctl suspend";
|
||||||
|
text = "Suspend";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
label = "hibernate";
|
||||||
|
action = "systemctl hibernate";
|
||||||
|
text = "Hibernate";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
style = ''
|
||||||
|
@import url("file:///home/willifan/.config/gtk-4.0/gtk.css");
|
||||||
|
* {
|
||||||
|
background-image: none;
|
||||||
|
box-shadow: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
window {
|
||||||
|
background-color: rgba(12, 12, 12, 0.9);
|
||||||
|
}
|
||||||
|
|
||||||
|
button {
|
||||||
|
border-radius: 10px;
|
||||||
|
border-color: #ffa44b;
|
||||||
|
border-style: solid;
|
||||||
|
border-width: 2px;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-position: center;
|
||||||
|
background-size: 25%;
|
||||||
|
}
|
||||||
|
|
||||||
|
button:focus, button:active, button:hover {
|
||||||
|
/*background-color: #3700B3;*/
|
||||||
|
outline-style: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#suspend {
|
||||||
|
background-image: image(url("${icons}/suspend.png"));
|
||||||
|
}
|
||||||
|
|
||||||
|
#hibernate {
|
||||||
|
background-image: image(url("${icons}/hibernate.png"));
|
||||||
|
}
|
||||||
|
|
||||||
|
#shutdown {
|
||||||
|
background-image: image(url("${icons}/shutdown.png"));
|
||||||
|
}
|
||||||
|
|
||||||
|
#reboot {
|
||||||
|
background-image: image(url("${icons}/reboot.png"));
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
|
@ -2,7 +2,6 @@
|
||||||
{
|
{
|
||||||
|
|
||||||
imports = [
|
imports = [
|
||||||
./hyprland
|
|
||||||
./compositors
|
./compositors
|
||||||
|
|
||||||
./options.nix
|
./options.nix
|
||||||
|
|
|
@ -1,21 +0,0 @@
|
||||||
{ ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
|
|
||||||
|
|
||||||
#home-manager.users.willifan = {
|
|
||||||
imports = [
|
|
||||||
./fuzzel.nix
|
|
||||||
./hyprexit.nix
|
|
||||||
./hypridle.nix
|
|
||||||
./hyprlock.nix
|
|
||||||
./hyprpaper.nix
|
|
||||||
./mako.nix
|
|
||||||
./utils.nix
|
|
||||||
./wlogout.nix
|
|
||||||
./options.nix
|
|
||||||
./hyprland.nix
|
|
||||||
];
|
|
||||||
#};
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,15 +0,0 @@
|
||||||
{ lib, config, ... }:
|
|
||||||
{
|
|
||||||
home-manager.users.willifan = {
|
|
||||||
programs.fuzzel = lib.mkIf config.desktop.fuzzel.enable {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
main = {
|
|
||||||
lines = 12;
|
|
||||||
width = 45;
|
|
||||||
line-height = 20;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,11 +0,0 @@
|
||||||
{ lib, config, pkgs, ... }:
|
|
||||||
{
|
|
||||||
home-manager.users.willifan = {
|
|
||||||
home.packages = lib.mkIf config.desktop.hyprexit.enable [
|
|
||||||
(pkgs.writeShellScriptBin "hyprexit" ''
|
|
||||||
${pkgs.hyprland}/bin/hyprctl dispatch exit
|
|
||||||
${pkgs.systemd}/bin/loginctl terminate-user willifan
|
|
||||||
'')
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,40 +0,0 @@
|
||||||
{ lib, config, ... }:
|
|
||||||
{
|
|
||||||
home-manager.users.willifan = {
|
|
||||||
services.hypridle = lib.mkIf config.desktop.hypridle.enable {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
|
|
||||||
general = {
|
|
||||||
lock_cmd = "pidof hyprlock || hyprlock"; # avoid starting multiple hyprlock instances.
|
|
||||||
before_sleep_cmd = "loginctl lock-session && sleep 2"; # lock before suspend.
|
|
||||||
after_sleep_cmd = "hyprctl dispatch dpms on"; # to avoid having to press a key twice to turn on the display.
|
|
||||||
};
|
|
||||||
|
|
||||||
listener = [
|
|
||||||
#{
|
|
||||||
# timeout = 150; # 2.5min.
|
|
||||||
# on-timeout = brightnessctl -s set 10; # set monitor backlight to minimum, avoid 0 on OLED monitor.
|
|
||||||
# on-resume = brightnessctl -r; # monitor backlight restor.
|
|
||||||
#}
|
|
||||||
|
|
||||||
{
|
|
||||||
timeout = 300; # 5min
|
|
||||||
on-timeout = "loginctl lock-session"; # lock screen when timeout has passed
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
timeout = 380; # 5.5min
|
|
||||||
on-timeout = "hyprctl dispatch dpms off"; # screen off when timeout has passed
|
|
||||||
on-resume = "hyprctl dispatch dpms on"; # screen on when activity is detected after timeout has fired.
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
timeout = 600; # 30min
|
|
||||||
on-timeout = "systemctl suspend-then-hibernate"; # suspend pc
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,56 +0,0 @@
|
||||||
{ lib, config, ... }:
|
|
||||||
{
|
|
||||||
home-manager.users.willifan = {
|
|
||||||
programs.hyprlock = lib.mkIf config.desktop.hyprlock.enable {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
background = {
|
|
||||||
monitor = "";
|
|
||||||
# all these options are taken from hyprland, see https://wiki.hyprland.org/Configuring/Variables/#blur for explanations
|
|
||||||
blur_passes = 3; # 0 disables blurring
|
|
||||||
blur_size = 7;
|
|
||||||
noise = 0.0117;
|
|
||||||
contrast = 0.8916;
|
|
||||||
brightness = 0.8172;
|
|
||||||
vibrancy = 0.1696;
|
|
||||||
vibrancy_darkness = 0.0;
|
|
||||||
};
|
|
||||||
|
|
||||||
input-field = {
|
|
||||||
monitor = "";
|
|
||||||
size = "300, 75";
|
|
||||||
outline_thickness = 3;
|
|
||||||
dots_size = 0.33; # Scale of input-field height, 0.2 - 0.8
|
|
||||||
dots_spacing = 0.15; # Scale of dots' absolute size, 0.0 - 1.0
|
|
||||||
dots_center = false;
|
|
||||||
dots_rounding = -1; # -1 default circle, -2 follow input-field rounding
|
|
||||||
fade_on_empty = true;
|
|
||||||
fade_timeout = 1000; # Milliseconds before fade_on_empty is triggered.
|
|
||||||
placeholder_text = "<i>Input Password...</i>"; # Text rendered in the input box when it's empty.
|
|
||||||
hide_input = false;
|
|
||||||
rounding = -1; # -1 means complete rounding (circle/oval)
|
|
||||||
fail_text = "<i>$FAIL <b>($ATTEMPTS)</b></i>"; # can be set to empty
|
|
||||||
fail_transition = 300; # transition time in ms between normal outer_color and fail_color
|
|
||||||
capslock_color = -1;
|
|
||||||
numlock_color = -1;
|
|
||||||
bothlock_color = -1; # when both locks are active. -1 means don't change outer color (same for above)
|
|
||||||
invert_numlock = false; # change color if numlock is off
|
|
||||||
position = "0, -20";
|
|
||||||
halign = "center";
|
|
||||||
valign = "center";
|
|
||||||
};
|
|
||||||
|
|
||||||
label = {
|
|
||||||
monitor = "";
|
|
||||||
text = "Hi there, $USER";
|
|
||||||
color = "rgba(200, 200, 200, 1.0)";
|
|
||||||
font_size = 25;
|
|
||||||
font_family = "Noto Sans";
|
|
||||||
position = "0, 80";
|
|
||||||
halign = "center";
|
|
||||||
valign = "center";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,15 +0,0 @@
|
||||||
{ lib, config, ... }:
|
|
||||||
{
|
|
||||||
home-manager.users.willifan = {
|
|
||||||
services.hyprpaper = lib.mkIf config.desktop.hyprpaper.enable {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
|
|
||||||
splash = true;
|
|
||||||
|
|
||||||
ipc = "off";
|
|
||||||
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,11 +0,0 @@
|
||||||
{ lib, config, ... }:
|
|
||||||
{
|
|
||||||
home-manager.users.willifan = {
|
|
||||||
services.mako = lib.mkIf config.desktop.mako.enable {
|
|
||||||
enable = true;
|
|
||||||
borderRadius = 10;
|
|
||||||
borderSize = 2;
|
|
||||||
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,19 +0,0 @@
|
||||||
{ lib, config, pkgs, ... }:
|
|
||||||
{
|
|
||||||
home-manager.users.willifan = {
|
|
||||||
home.packages = lib.mkIf config.desktop.utils.enable [
|
|
||||||
|
|
||||||
pkgs.hyprpicker
|
|
||||||
pkgs.hyprcursor
|
|
||||||
|
|
||||||
pkgs.grim
|
|
||||||
pkgs.slurp
|
|
||||||
pkgs.wl-clipboard
|
|
||||||
pkgs.playerctl
|
|
||||||
|
|
||||||
pkgs.dconf
|
|
||||||
|
|
||||||
pkgs.papirus-icon-theme
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,83 +0,0 @@
|
||||||
{ lib, config, ... }:
|
|
||||||
{
|
|
||||||
home-manager.users.willifan = {
|
|
||||||
programs.wlogout = lib.mkIf config.desktop.wlogout.enable {
|
|
||||||
enable = true;
|
|
||||||
layout = [
|
|
||||||
{
|
|
||||||
label = "shutdown";
|
|
||||||
action = "systemctl poweroff";
|
|
||||||
text = "Shutdown";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
label = "hyprland";
|
|
||||||
action = "hyprctl dispatch exit";
|
|
||||||
text = "Exit Hyprland";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
label = "whatever";
|
|
||||||
action = "";
|
|
||||||
text = "whatever";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
label = "reboot";
|
|
||||||
action = "systemctl reboot";
|
|
||||||
text = "Reboot";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
label = "suspend";
|
|
||||||
action = "systemctl suspend";
|
|
||||||
text = "Suspend";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
label = "hibernate";
|
|
||||||
action = "systemctl hibernate";
|
|
||||||
text = "Hibernate";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
style = ''
|
|
||||||
@import url("file:///home/willifan/.config/gtk-4.0/gtk.css");
|
|
||||||
* {
|
|
||||||
background-image: none;
|
|
||||||
box-shadow: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
window {
|
|
||||||
background-color: rgba(12, 12, 12, 0.9);
|
|
||||||
}
|
|
||||||
|
|
||||||
button {
|
|
||||||
border-radius: 10px;
|
|
||||||
border-color: #ffa44b;
|
|
||||||
border-style: solid;
|
|
||||||
border-width: 2px;
|
|
||||||
background-repeat: no-repeat;
|
|
||||||
background-position: center;
|
|
||||||
background-size: 25%;
|
|
||||||
}
|
|
||||||
|
|
||||||
button:focus, button:active, button:hover {
|
|
||||||
/*background-color: #3700B3;*/
|
|
||||||
outline-style: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
#suspend {
|
|
||||||
background-image: image(url("/home/willifan/.config/desktop-utils/images/suspend.png"));
|
|
||||||
}
|
|
||||||
|
|
||||||
#hibernate {
|
|
||||||
background-image: image(url("/home/willifan/.config/desktop-utils/images/hibernate.png"));
|
|
||||||
}
|
|
||||||
|
|
||||||
#shutdown {
|
|
||||||
background-image: image(url("/home/willifan/.config/desktop-utils/images/shutdown.png"));
|
|
||||||
}
|
|
||||||
|
|
||||||
#reboot {
|
|
||||||
background-image: image(url("/home/willifan/.config/desktop-utils/images/reboot.png"));
|
|
||||||
}
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
Loading…
Add table
Add a link
Reference in a new issue