summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGregor Kleen <gkleen@yggdrasil.li>2024-08-11 11:13:27 +0200
committerGregor Kleen <gkleen@yggdrasil.li>2024-08-11 11:13:27 +0200
commit5786716a383254c256f109d38fda1c898456fb60 (patch)
tree43b4b5918eb58fd6ffc728fe0d4f21dc3431981d
parent148e387fe152242f472322218f1e0bd35afe67e8 (diff)
downloadnixos-5786716a383254c256f109d38fda1c898456fb60.tar
nixos-5786716a383254c256f109d38fda1c898456fb60.tar.gz
nixos-5786716a383254c256f109d38fda1c898456fb60.tar.bz2
nixos-5786716a383254c256f109d38fda1c898456fb60.tar.xz
nixos-5786716a383254c256f109d38fda1c898456fb60.zip
sif: hyprland
-rw-r--r--_sources/generated.json20
-rw-r--r--_sources/generated.nix14
-rw-r--r--accounts/gkleen@sif/default.nix222
-rw-r--r--accounts/gkleen@sif/dunst-settings.nix10
-rw-r--r--accounts/gkleen@sif/dunstrc.d/20-kitty.conf3
-rw-r--r--accounts/gkleen@sif/emacs.el4
-rw-r--r--accounts/gkleen@sif/hyprland.nix229
-rw-r--r--accounts/gkleen@sif/systemd.nix1
-rw-r--r--accounts/gkleen@sif/zshrc4
-rw-r--r--hosts/sif/default.nix29
-rw-r--r--nvfetcher.toml4
11 files changed, 520 insertions, 20 deletions
diff --git a/_sources/generated.json b/_sources/generated.json
index 87d6c357..a7dba77c 100644
--- a/_sources/generated.json
+++ b/_sources/generated.json
@@ -324,6 +324,26 @@
324 }, 324 },
325 "version": "2.3.0" 325 "version": "2.3.0"
326 }, 326 },
327 "tomorrow-night-paradise-theme": {
328 "cargoLocks": null,
329 "date": "2012-06-04",
330 "extract": null,
331 "name": "tomorrow-night-paradise-theme",
332 "passthru": null,
333 "pinned": false,
334 "src": {
335 "deepClone": false,
336 "fetchSubmodules": false,
337 "leaveDotGit": false,
338 "name": null,
339 "rev": "70225a5bf90d495e13a9260bfdc268632ece0801",
340 "sha256": "sha256-5EhngRD5Xq8bUUeoY6Jmpsvszsk8fM8eQcfhbLs5WI8=",
341 "sparseCheckout": [],
342 "type": "git",
343 "url": "https://github.com/jimeh/tomorrow-night-paradise-theme.el"
344 },
345 "version": "70225a5bf90d495e13a9260bfdc268632ece0801"
346 },
327 "v4l2loopback": { 347 "v4l2loopback": {
328 "cargoLocks": null, 348 "cargoLocks": null,
329 "date": "2024-05-24", 349 "date": "2024-05-24",
diff --git a/_sources/generated.nix b/_sources/generated.nix
index cb6022ab..7050dab8 100644
--- a/_sources/generated.nix
+++ b/_sources/generated.nix
@@ -199,6 +199,20 @@
199 sha256 = "sha256-+pRvc5mr2PEkG05IzPjUrE6Yr8EwG4zA/3DEU8GVA1E="; 199 sha256 = "sha256-+pRvc5mr2PEkG05IzPjUrE6Yr8EwG4zA/3DEU8GVA1E=";
200 }; 200 };
201 }; 201 };
202 tomorrow-night-paradise-theme = {
203 pname = "tomorrow-night-paradise-theme";
204 version = "70225a5bf90d495e13a9260bfdc268632ece0801";
205 src = fetchgit {
206 url = "https://github.com/jimeh/tomorrow-night-paradise-theme.el";
207 rev = "70225a5bf90d495e13a9260bfdc268632ece0801";
208 fetchSubmodules = false;
209 deepClone = false;
210 leaveDotGit = false;
211 sparseCheckout = [ ];
212 sha256 = "sha256-5EhngRD5Xq8bUUeoY6Jmpsvszsk8fM8eQcfhbLs5WI8=";
213 };
214 date = "2012-06-04";
215 };
202 v4l2loopback = { 216 v4l2loopback = {
203 pname = "v4l2loopback"; 217 pname = "v4l2loopback";
204 version = "2d44c2f3a33844dfd9928dc536288283289bbc34"; 218 version = "2d44c2f3a33844dfd9928dc536288283289bbc34";
diff --git a/accounts/gkleen@sif/default.nix b/accounts/gkleen@sif/default.nix
index 8e567a4f..5c90808c 100644
--- a/accounts/gkleen@sif/default.nix
+++ b/accounts/gkleen@sif/default.nix
@@ -41,7 +41,6 @@ let
41 wrapElectron = { package, bin ? package.meta.mainProgram or package.pname or (pkgs.lib.strings.nameFromURL package.name "-"), outBin ? bin, sandbox ? true }: pkgs.runCommand "${package.name}-wrapped" { buildInputs = with pkgs; [ makeWrapper ]; } '' 41 wrapElectron = { package, bin ? package.meta.mainProgram or package.pname or (pkgs.lib.strings.nameFromURL package.name "-"), outBin ? bin, sandbox ? true }: pkgs.runCommand "${package.name}-wrapped" { buildInputs = with pkgs; [ makeWrapper ]; } ''
42 mkdir -p "$out/bin" 42 mkdir -p "$out/bin"
43 makeWrapper ${package}/bin/${bin} $out/bin/${outBin} \ 43 makeWrapper ${package}/bin/${bin} $out/bin/${outBin} \
44 --add-flags '--force-device-scale-factor=1.6' \
45 ${optionalString (!sandbox) "--add-flags '--no-sandbox'"} 44 ${optionalString (!sandbox) "--add-flags '--no-sandbox'"}
46 ''; 45 '';
47 46
@@ -158,6 +157,7 @@ in {
158 157
159 emacs = { 158 emacs = {
160 enable = true; 159 enable = true;
160 package = pkgs.emacs29-pgtk;
161 extraPackages = epkgs: with epkgs; [ 161 extraPackages = epkgs: with epkgs; [
162 evil evil-dvorak undo-tree magit haskell-mode nix-mode 162 evil evil-dvorak undo-tree magit haskell-mode nix-mode
163 yaml-mode json-mode shakespeare-mode smart-mode-line 163 yaml-mode json-mode shakespeare-mode smart-mode-line
@@ -166,14 +166,19 @@ in {
166 use-package-ensure-system-package git-gutter emacsScratch 166 use-package-ensure-system-package git-gutter emacsScratch
167 edit-server mediawiki editorconfig typescript-mode 167 edit-server mediawiki editorconfig typescript-mode
168 markdown-mode nftables-mode rustic lsp-mode lsp-ui 168 markdown-mode nftables-mode rustic lsp-mode lsp-ui
169 direnv company projectile 169 direnv company projectile tomorrow-night-paradise-theme
170 ]; 170 ];
171 overrides = self: super: {
172 tomorrow-night-paradise-theme = super.trivialBuild {
173 inherit (sources.tomorrow-night-paradise-theme) pname version src;
174 };
175 };
171 }; 176 };
172 firefox = { 177 firefox = {
173 enable = true; 178 enable = true;
174 profiles.default = { 179 profiles.default = {
175 settings = { 180 settings = {
176 "layout.css.devPixelsPerPx" = "0.5833"; 181 # "layout.css.devPixelsPerPx" = "0.5833";
177 "browser.tabs.drawInTitlebar" = false; 182 "browser.tabs.drawInTitlebar" = false;
178 "toolkit.legacyUserProfileCustomizations.stylesheets" = true; 183 "toolkit.legacyUserProfileCustomizations.stylesheets" = true;
179 "dom.security.https_only_mode" = true; 184 "dom.security.https_only_mode" = true;
@@ -223,7 +228,7 @@ in {
223 docs = "$HOME/documents"; 228 docs = "$HOME/documents";
224 dl = "$HOME/Downloads"; 229 dl = "$HOME/Downloads";
225 scrot = "$HOME/screenshots"; 230 scrot = "$HOME/screenshots";
226 flk = "$HOME/config/nixos-flakes"; 231 flk = "$HOME/projects/machines";
227 rz = "$HOME/projects/rz"; 232 rz = "$HOME/projects/rz";
228 pro = "$HOME/projects/pro"; 233 pro = "$HOME/projects/pro";
229 }; 234 };
@@ -240,6 +245,150 @@ in {
240 gitProtocol = "ssh"; 245 gitProtocol = "ssh";
241 }; 246 };
242 }; 247 };
248
249 kitty = {
250 enable = true;
251 font = {
252 package = pkgs.fira;
253 name = "FiraMono Nerd Font";
254 size = 10;
255 };
256 settings = {
257 enable_audio_bell = false;
258 update_check_interval = 0;
259 strip_trailing_spaces = "smart";
260 focus_follows_mouse = true;
261 visual_bell_duration = "0.1";
262 visual_bell_color = "#26240d";
263 tab_bar_style = "powerline";
264 tab_powerline_style = "slanted";
265 notify_on_cmd_finish = "invisible 30.0";
266 };
267 };
268 wofi = {
269 enable = true;
270 settings = {
271 location = "top";
272 run-always_parse_args = true;
273 run-show_all = false;
274 };
275 };
276 waybar = {
277 enable = true;
278 systemd = {
279 enable = true;
280 target = "hyprland-session.target";
281 };
282 settings.mainBar = {
283 layer = "top";
284 position = "top";
285 height = 14;
286 output = [ "eDP-1" ];
287 modules-left = [ "hyprland/workspaces" ];
288 modules-center = [ "hyprland/window" ];
289 modules-right = [ "clock" "tray" "battery" ];
290
291 clock = {
292 interval = 1;
293 timezone = "Europe/Berlin";
294 format = "W{:%V-%u %F %H:%M:%S%Ez}";
295 tooltip-format = "<tt><small>{calendar}</small></tt>";
296 calendar = {
297 mode = "year";
298 mode-mon-col = 3;
299 week-pos = "right";
300 on-scroll = 1;
301 format = {
302 months = "<span color='#ffead3'><b>{}</b></span>";
303 days = "<span color='#ecc6d9'><b>{}</b></span>";
304 weeks = "<span color='#99ffdd'><b>W{}</b></span>";
305 weekdays = "<span color='#ffcc66'><b>{}</b></span>";
306 today = "<span color='#ff6699'><b><u>{}</u></b></span>";
307 };
308 };
309 };
310 battery = {
311 format = "{icon}";
312 format-icons = ["" "" "" "" ""];
313 tooltip-format = "{capacity}% {timeTo}";
314 };
315 icon = {
316 icon-size = 12;
317 show-passive-items = true;
318 spacing = 2;
319 };
320 };
321 style = ''
322 * {
323 border: none;
324 font-family: "Fira Sans";
325 font-size: 10pt;
326 min-height: 0;
327 }
328
329 window#waybar {
330 background-color: rgba(0, 0, 0, 0.5);
331 color: #ffffff;
332 }
333
334 label.module {
335 margin: 0 5px;
336 }
337
338 #workspaces button.visible {
339 color: @blue;
340 }
341 #workspaces button.active {
342 color: @green;
343 }
344 #workspaces button.urgent {
345 color: @red;
346 }
347 '';
348 };
349 wpaperd = {
350 enable = true;
351 settings.default = {
352 path = "~/.wallpapers";
353 duration = "8h";
354 mode = "center";
355 };
356 };
357 hyprlock = {
358 enable = false;
359 settings = {
360 general = {
361 disable_loading_bar = false;
362 grace = 60;
363 hide_cursor = true;
364 no_fade_in = false;
365 };
366
367 background = [
368 {
369 path = "screenshot";
370 blur_passes = 3;
371 blur_size = 8;
372 }
373 ];
374
375 input-field = [
376 {
377 size = "200, 50";
378 position = "0, -80";
379 monitor = "";
380 dots_center = true;
381 fade_on_empty = false;
382 font_color = "rgb(202, 211, 245)";
383 inner_color = "rgb(91, 96, 120)";
384 outer_color = "rgb(24, 25, 38)";
385 outline_thickness = 5;
386 placeholder_text = "'<span foreground=\"##cad3f5\">Password...</span>'";
387 shadow_passes = 2;
388 }
389 ];
390 };
391 };
243 }; 392 };
244 393
245 services = { 394 services = {
@@ -265,10 +414,10 @@ in {
265 ''; 414 '';
266 }; 415 };
267 taffybar = { 416 taffybar = {
268 enable = true; 417 enable = false;
269 package = import ./taffybar { haskellPackages = deHaskell; }; 418 package = import ./taffybar { haskellPackages = deHaskell; };
270 }; 419 };
271 status-notifier-watcher.enable = true; 420 # status-notifier-watcher.enable = true;
272 xembed-sni-proxy.enable = true; 421 xembed-sni-proxy.enable = true;
273 pasystray.enable = true; 422 pasystray.enable = true;
274 udiskie = { 423 udiskie = {
@@ -284,7 +433,7 @@ in {
284 }; 433 };
285 }; 434 };
286 unclutter = { 435 unclutter = {
287 enable = true; 436 enable = false;
288 timeout = 5; 437 timeout = 5;
289 }; 438 };
290 network-manager-applet.enable = true; 439 network-manager-applet.enable = true;
@@ -324,7 +473,7 @@ in {
324 }; 473 };
325 474
326 screen-locker = { 475 screen-locker = {
327 enable = true; 476 enable = false;
328 lockCmd = toString (pkgs.writeShellScript "lock" '' 477 lockCmd = toString (pkgs.writeShellScript "lock" ''
329 ${pkgs.playerctl}/bin/playerctl -a status | ${pkgs.gnugrep}/bin/grep -q "Playing" && exit 0 478 ${pkgs.playerctl}/bin/playerctl -a status | ${pkgs.gnugrep}/bin/grep -q "Playing" && exit 0
330 479
@@ -344,6 +493,46 @@ in {
344 enable = true; 493 enable = true;
345 serverUrl = "https://etesync.yggdrasil.li"; 494 serverUrl = "https://etesync.yggdrasil.li";
346 }; 495 };
496
497 hypridle = {
498 enable = false;
499 settings = {
500 general = {
501 after_sleep_cmd = "hyprctl dispatch dpms on";
502 before_sleep_cmd = "hyprlock";
503 ignore_dbus_inhibit = false;
504 ignore_systemd_inhibit = false;
505 lock_cmd = "hyprlock";
506 };
507
508 listener = [
509 {
510 timeout = 300;
511 on-timeout = "hyprlock";
512 }
513 {
514 timeout = 600;
515 on-timeout = "hyprctl dispatch dpms off";
516 on-resume = "hyprctl dispatch dpms on";
517 }
518 ];
519 };
520 };
521 swayidle = {
522 enable = true;
523 events = [
524 { event = "before-sleep"; command = "${lib.getExe pkgs.gtklock} -d"; }
525 { event = "after-resume"; command = "${cfg.wayland.windowManager.hyprland.package}/bin/hyprctl dispatch dpms on"; }
526 { event = "lock"; command = "${lib.getExe pkgs.gtklock} -d"; }
527 ];
528 timeouts = [
529 { timeout = 300;
530 command = "${cfg.wayland.windowManager.hyprland.package}/binhyprctl dispatch dpms off";
531 resumeCommand = "${cfg.wayland.windowManager.hyprland.package}/binhyprctl dispatch dpms on";
532 }
533 { timeout = 330; command = "${lib.getExe pkgs.gtklock} -d"; }
534 ];
535 };
347 }; 536 };
348 537
349 home.pointerCursor = { 538 home.pointerCursor = {
@@ -363,7 +552,7 @@ in {
363 font = { 552 font = {
364 package = pkgs.fira; 553 package = pkgs.fira;
365 name = "Fira Sans"; 554 name = "Fira Sans";
366 size = 6; 555 size = 10;
367 }; 556 };
368 theme = { 557 theme = {
369 package = pkgs.equilux-theme; 558 package = pkgs.equilux-theme;
@@ -402,7 +591,7 @@ in {
402 matrix-synapse-tools.synadm wrappedRocketChatDesktop 591 matrix-synapse-tools.synadm wrappedRocketChatDesktop
403 flakeInputs.deploy-rs.packages.${config.nixpkgs.system}.deploy-rs 592 flakeInputs.deploy-rs.packages.${config.nixpkgs.system}.deploy-rs
404 sieve-connect gimp inkscape udiskie glab scrot nitrokey-app 593 sieve-connect gimp inkscape udiskie glab scrot nitrokey-app
405 pynitrokey 594 pynitrokey gtklock wlrctl
406 ]; 595 ];
407 596
408 file = { 597 file = {
@@ -419,8 +608,8 @@ in {
419 }; 608 };
420 609
421 sessionVariables = { 610 sessionVariables = {
422 GDK_SCALE = 96.0 / 282.0; 611 # GDK_SCALE = 96.0 / 282.0;
423 QT_AUTO_SCREEN_SCALE_FACTOR = 1; 612 # QT_AUTO_SCREEN_SCALE_FACTOR = 1;
424 QT_QPA_PLATFORMTHEME = "qt5ct"; 613 QT_QPA_PLATFORMTHEME = "qt5ct";
425 LIBVIRT_DEFAULT_URI = "qemu:///system"; 614 LIBVIRT_DEFAULT_URI = "qemu:///system";
426 STACK_XDG = 1; 615 STACK_XDG = 1;
@@ -451,6 +640,10 @@ in {
451 recommend-stack-upgrade = false; 640 recommend-stack-upgrade = false;
452 }; 641 };
453 }; 642 };
643 "gtklock/config.ini" = {
644 source = (pkgs.formats.ini {}).generate "config.ini" {
645 };
646 };
454 }; 647 };
455 648
456 xdg.dataFile = { 649 xdg.dataFile = {
@@ -509,6 +702,11 @@ in {
509 color-scheme = "prefer-dark"; 702 color-scheme = "prefer-dark";
510 }; 703 };
511 }; 704 };
705
706 wayland.windowManager.hyprland = {
707 enable = true;
708 settings = import ./hyprland.nix inputs;
709 };
512 }; 710 };
513 }; 711 };
514} 712}
diff --git a/accounts/gkleen@sif/dunst-settings.nix b/accounts/gkleen@sif/dunst-settings.nix
index 61bd12a6..90fffcc5 100644
--- a/accounts/gkleen@sif/dunst-settings.nix
+++ b/accounts/gkleen@sif/dunst-settings.nix
@@ -1,14 +1,14 @@
1{ pkgs, ... }: 1{ pkgs, ... }:
2{ 2{
3 global = { 3 global = {
4 font = "Fira Sans 6"; 4 font = "Fira Sans 12";
5 markup = "full"; 5 markup = "full";
6 format = "<i>%s</i> %p\\n%b"; 6 format = "<i>%s</i> %p\\n%b";
7 alignment = "left"; 7 alignment = "left";
8 # geometry = "1216x10-32+64"; 8 # geometry = "1216x10-32+64";
9 width = 250; 9 width = 500;
10 height = 50; 10 height = 100;
11 offset = "16x25"; 11 offset = "4x4";
12 origin = "top-right"; 12 origin = "top-right";
13 shrink = true; 13 shrink = true;
14 monitor = 0; 14 monitor = 0;
@@ -33,7 +33,7 @@
33 sort = false; 33 sort = false;
34 sticky_history = false; 34 sticky_history = false;
35 35
36 dmenu = "${pkgs.dmenu}/bin/dmenu"; 36 dmenu = "wofi --show dmenu";
37 browser = "${pkgs.xdg-utils}/bin/xdg-open"; 37 browser = "${pkgs.xdg-utils}/bin/xdg-open";
38 }; 38 };
39 # shortcuts = { 39 # shortcuts = {
diff --git a/accounts/gkleen@sif/dunstrc.d/20-kitty.conf b/accounts/gkleen@sif/dunstrc.d/20-kitty.conf
new file mode 100644
index 00000000..b27ee27e
--- /dev/null
+++ b/accounts/gkleen@sif/dunstrc.d/20-kitty.conf
@@ -0,0 +1,3 @@
1[kitty]
2appname=kitty
3urgency=low
diff --git a/accounts/gkleen@sif/emacs.el b/accounts/gkleen@sif/emacs.el
index 0eed3bce..48daa951 100644
--- a/accounts/gkleen@sif/emacs.el
+++ b/accounts/gkleen@sif/emacs.el
@@ -5,7 +5,9 @@
5(setq inhibit-startup-message t) 5(setq inhibit-startup-message t)
6(defalias 'yes-or-no-p 'y-or-n-p) 6(defalias 'yes-or-no-p 'y-or-n-p)
7 7
8(set-face-attribute 'default nil :font "Fira Code" :height 49) 8;; (set-face-attribute 'default nil :font "Fira Code" :height 49)
9(set-frame-font "Fira Code 8" nil nil)
10(load-theme 'modus-vivendi t)
9 11
10(require 'package) 12(require 'package)
11(setq package-archives nil) 13(setq package-archives nil)
diff --git a/accounts/gkleen@sif/hyprland.nix b/accounts/gkleen@sif/hyprland.nix
new file mode 100644
index 00000000..9b20f89e
--- /dev/null
+++ b/accounts/gkleen@sif/hyprland.nix
@@ -0,0 +1,229 @@
1{ pkgs, lib, ... }:
2{
3 monitor = [
4 ",preferred,auto,auto"
5 "eDP-1,3840x2160@59.99900,auto,1.5"
6 ];
7
8 "$terminal" = "kitty";
9 "$menu" = "wofi --show run";
10
11 exec-once = [
12 "wpaperd"
13 ];
14
15 env = [
16 # "XCURSOR_SIZE,12"
17 "NIXOS_OZONE_WL,1"
18 "QT_QPA_PLATFORM,wayland"
19 "GDK_BACKEND,wayland"
20 "GDK_SCALE,0.66"
21 "QT_AUTO_SCREEN_SCALE_FACTOR,1"
22 ];
23
24 xwayland.force_zero_scaling = true;
25
26 general = {
27 gaps_in = 3;
28 gaps_out = 9;
29 "col.active_border" = "rgba(33ccffee) rgba(00ff99ee) 45deg";
30 "col.inactive_border" = "rgba(595959aa)";
31
32 resize_on_border = false;
33
34 allow_tearing = false;
35
36 layout = "dwindle";
37 };
38
39 decoration = {
40 rounding = 5;
41
42 active_opacity = 1.0;
43 inactive_opacity = 1.0;
44
45 drop_shadow = false;
46 shadow_range = 4;
47 shadow_render_power = 3;
48 "col.shadow" = "rgba(1a1a1aee)";
49
50 blur = {
51 enabled = true;
52 size = 3;
53 passes = 1;
54
55 vibrancy = 0.1696;
56 };
57 };
58
59 animations = {
60 enabled = true;
61 bezier = "myBezier, 0.05, 0.9, 0.1, 1.05";
62 animation = [
63 "windows, 1, 3, default, popin 80%"
64 "windowsMove, 0"
65 # "windows, 1, 7, myBezier"
66 # "windowsOut, 1, 7, myBezier, popin 80%"
67 "border, 1, 10, default"
68 "borderangle, 1, 8, default"
69 "fade, 1, 3, default"
70 "workspaces, 1, 3, default, fade"
71 # "workspaces, 1, 6, default"
72 ];
73 };
74
75 dwindle = {
76 pseudotile = true;
77 preserve_split = true;
78 };
79
80 master = {
81 new_status = "master";
82 };
83
84 misc = {
85 force_default_wallpaper = -1;
86 disable_hyprland_logo = false;
87 };
88
89 input = {
90 kb_layout = "us,us";
91 kb_variant = "dvp,";
92 kb_model = "";
93 kb_options = "compose:caps,grp:win_space_toggle";
94 kb_rules = "";
95
96 follow_mouse = 1;
97
98 sensitivity = 0;
99
100 touchpad = {
101 natural_scroll = false;
102 };
103 };
104
105 device = [
106 { name = "synaptics-tm3512-010";
107 sensitivity = 0.4;
108 }
109 { name = "tpps/2-elan-trackpoint";
110 sensitivity = 0.2;
111 }
112 ];
113
114 gestures = {
115 workspace_swipe = false;
116 };
117
118 dwindle = {
119 # no_gaps_when_only = 1;
120 };
121
122 "$mainMod" = "SUPER";
123
124 bind = [
125 "$mainMod, Q, exec, $terminal"
126 "$mainMod, C, killactive"
127 "$mainMod, M, exit"
128 "$mainMod, V, togglefloating"
129 "$mainMod, R, exec, $menu"
130 "$mainMod, P, pseudo,"
131 "$mainMod, J, togglesplit,"
132
133 # "$mainMod SHIFT, L, exec, loginctl lock-session"
134 "$mainMod SHIFT, L, exec, gtklock -d"
135 "$mainMod SHIFT, S, exec, systemctl suspend"
136
137 "$mainMod, left, movefocus, l"
138 "$mainMod, right, movefocus, r"
139 "$mainMod, up, movefocus, u"
140 "$mainMod, down, movefocus, d"
141 "$mainMod SHIFT, left, swapwindow, l"
142 "$mainMod SHIFT, right, swapwindow, r"
143 "$mainMod SHIFT, up, swapwindow, u"
144 "$mainMod SHIFT, down, swapwindow, d"
145
146 "$mainMod, T, cyclenext"
147
148 "$mainMod SHIFT, N, movecurrentworkspacetomonitor, +1"
149
150 "$mainMod, F, fullscreen, 1"
151 "$mainMod SHIFT, F, fullscreen, 0"
152
153 "$mainMod, code:14, workspace, 1"
154 "$mainMod, code:17, workspace, 2"
155 "$mainMod, code:13, workspace, 3"
156 "$mainMod, code:18, workspace, 4"
157 "$mainMod, code:12, workspace, 5"
158 "$mainMod, code:19, workspace, 6"
159 "$mainMod, code:11, workspace, 7"
160 "$mainMod, code:20, workspace, 8"
161 "$mainMod, code:15, workspace, 9"
162 "$mainMod, code:16, workspace, 10"
163
164 "$mainMod SHIFT, code:14, movetoworkspacesilent, 1"
165 "$mainMod SHIFT, code:17, movetoworkspacesilent, 2"
166 "$mainMod SHIFT, code:13, movetoworkspacesilent, 3"
167 "$mainMod SHIFT, code:18, movetoworkspacesilent, 4"
168 "$mainMod SHIFT, code:12, movetoworkspacesilent, 5"
169 "$mainMod SHIFT, code:19, movetoworkspacesilent, 6"
170 "$mainMod SHIFT, code:11, movetoworkspacesilent, 7"
171 "$mainMod SHIFT, code:20, movetoworkspacesilent, 8"
172 "$mainMod SHIFT, code:15, movetoworkspacesilent, 9"
173 "$mainMod SHIFT, code:16, movetoworkspacesilent, 10"
174
175 "CTRL, space, exec, dunstctl close"
176 "CTRL SHIFT, space, exec, dunstctl close-all"
177 "CTRL, period, exec, dunstctl context"
178 "CTRL, comma, exec, dunstctl history-pop"
179
180 "$mainMod ALT, E, exec, emacsclient -c"
181
182 ", XF86MonBrightnessUp, exec, brightnessctl s +5%"
183 ", XF86MonBrightnessDown, exec, brightnessctl s 5%-"
184 ", XF86AudioRaiseVolume, exec, pamixer -i 2"
185 ", XF86AudioLowerVolume, exec, pamixer -d 2"
186 ", XF86AudioMute, exec, pamixer -t"
187
188 ", Print, exec, ${pkgs.writeShellScript "screenshot" ''
189 export PATH="${lib.makeBinPath (with pkgs; [ grim slurp wl-clipboard-rs coreutils ])}:$PATH"
190
191 outFile="$HOME/screenshots/$(date +"%Y-%m-%dT%H:%M:%S").png"
192 grim -g "$(slurp -b 00000080 -c FFFFFFFF -s 00000000 -w 1)" "$outFile"
193 wl-copy --type image/png <"$outFile"
194 ''}"
195
196 "$mainMod CTRL, return, togglespecialworkspace, term"
197 "$mainMod CTRL, e, togglespecialworkspace, edit"
198 "$mainMod CTRL, a, togglespecialworkspace, pavucontrol"
199 "$mainMod CTRL, o, togglespecialworkspace, easyeffects"
200 "$mainMod CTRL, b, togglespecialworkspace, blueman"
201 "$mainMod CTRL, p, togglespecialworkspace, keepass"
202 ];
203 bindm = [
204 "$mainMod, mouse:272, movewindow"
205 "$mainMod, mouse:273, resizewindow"
206 ];
207
208 windowrulev2 = [
209 "suppressevent maximize, class:.*"
210 "maximize, class:^(Element|thunderbird)$"
211 "workspace special:keepass, class:^org\.keepassxc\.KeePassXC$"
212 # "group set always lock invade, class:^Element$"
213 ];
214
215 workspace = [
216 "s[true], gapsout:200"
217
218 "special:term, on-created-empty:kitty"
219 "special:edit, on-created-empty:emacsclient -c"
220 "special:pavucontrol, on-created-empty:pavucontrol"
221 "special:easyeffects, on-created-empty:easyeffects"
222 "special:blueman, on-created-empty:blueman-manager"
223 "special:keepass, on-created-empty:keepassxc"
224 ];
225
226 layerrule = [
227 "blur, waybar"
228 ];
229}
diff --git a/accounts/gkleen@sif/systemd.nix b/accounts/gkleen@sif/systemd.nix
index fe69a757..1397ca62 100644
--- a/accounts/gkleen@sif/systemd.nix
+++ b/accounts/gkleen@sif/systemd.nix
@@ -149,6 +149,7 @@ in {
149 BusName = "org.keepassxc.KeePassXC.MainWindow"; 149 BusName = "org.keepassxc.KeePassXC.MainWindow";
150 WorkingDirectory = "~"; 150 WorkingDirectory = "~";
151 ExecStart = "${pkgs.keepassxc}/bin/keepassxc"; 151 ExecStart = "${pkgs.keepassxc}/bin/keepassxc";
152 Environment = [ "QT_QPA_PLATFORM=wayland" ];
152 }; 153 };
153 Unit = { 154 Unit = {
154 Requires = ["graphical-session-pre.target"]; 155 Requires = ["graphical-session-pre.target"];
diff --git a/accounts/gkleen@sif/zshrc b/accounts/gkleen@sif/zshrc
index 16079c89..83e86270 100644
--- a/accounts/gkleen@sif/zshrc
+++ b/accounts/gkleen@sif/zshrc
@@ -481,4 +481,6 @@ export EDITOR=emacsclient
481 481
482bindkey -e 482bindkey -e
483bindkey ';5C' emacs-forward-word 483bindkey ';5C' emacs-forward-word
484bindkey ';5D' emacs-backward-word \ No newline at end of file 484bindkey ';5D' emacs-backward-word
485bindkey '^[[1;5C' emacs-forward-word
486bindkey '^[[1;5D' emacs-backward-word \ No newline at end of file
diff --git a/hosts/sif/default.nix b/hosts/sif/default.nix
index f505874b..809e2ace 100644
--- a/hosts/sif/default.nix
+++ b/hosts/sif/default.nix
@@ -388,7 +388,7 @@ in {
388 exportConfiguration = true; 388 exportConfiguration = true;
389 389
390 displayManager.lightdm = { 390 displayManager.lightdm = {
391 enable = true; 391 enable = false;
392 greeters.gtk = { 392 greeters.gtk = {
393 clock-format = "%H:%M %a %b %_d"; 393 clock-format = "%H:%M %a %b %_d";
394 indicators = ["~host" "~spacer" "~clock" "~session" "~power"]; 394 indicators = ["~host" "~spacer" "~clock" "~session" "~power"];
@@ -413,7 +413,32 @@ in {
413 }; 413 };
414 }; 414 };
415 libinput.enable = true; 415 libinput.enable = true;
416
417 greetd = {
418 enable = true;
419 };
420 };
421
422 programs.regreet = {
423 enable = true;
424 theme = {
425 package = pkgs.equilux-theme;
426 name = "Equilux-compact";
427 };
428 iconTheme = {
429 package = pkgs.paper-icon-theme;
430 name = "Paper";
431 };
432 font = {
433 package = pkgs.fira;
434 name = "Fira Sans";
435 # size = 6;
436 };
437 settings = {
438 GTK.application_prefer_dark_theme = true;
439 };
416 }; 440 };
441 programs.hyprland.enable = true;
417 442
418 systemd.tmpfiles.rules = [ 443 systemd.tmpfiles.rules = [
419 "d /var/lib/lightdm/.cache/lightdm-gtk-greeter 1770 lightdm lightdm -" 444 "d /var/lib/lightdm/.cache/lightdm-gtk-greeter 1770 lightdm lightdm -"
@@ -692,6 +717,8 @@ in {
692 ]; 717 ];
693 }; 718 };
694 719
720 security.pam.services.gtklock = {};
721
695 system.stateVersion = "24.11"; 722 system.stateVersion = "24.11";
696 }; 723 };
697} 724}
diff --git a/nvfetcher.toml b/nvfetcher.toml
index bdde5795..d40a8d3a 100644
--- a/nvfetcher.toml
+++ b/nvfetcher.toml
@@ -89,3 +89,7 @@ fetch.tarball = "https://downloads.open-mesh.org/batman/stable/sources/batman-ad
89src.github_tag = "bk2204/scutiger" 89src.github_tag = "bk2204/scutiger"
90src.prefix = "v" 90src.prefix = "v"
91fetch.tarball = "https://github.com/bk2204/scutiger/archive/refs/tags/v$ver.tar.gz" 91fetch.tarball = "https://github.com/bk2204/scutiger/archive/refs/tags/v$ver.tar.gz"
92
93[tomorrow-night-paradise-theme]
94src.git = "https://github.com/jimeh/tomorrow-night-paradise-theme.el"
95fetch.git = "https://github.com/jimeh/tomorrow-night-paradise-theme.el"