summaryrefslogtreecommitdiff
path: root/accounts/gkleen@sif/default.nix
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 /accounts/gkleen@sif/default.nix
parent148e387fe152242f472322218f1e0bd35afe67e8 (diff)
downloadnixos-5786716a383254c256f109d38fda1c898456fb60.tar
nixos-5786716a383254c256f109d38fda1c898456fb60.tar.gz
nixos-5786716a383254c256f109d38fda1c898456fb60.tar.bz2
nixos-5786716a383254c256f109d38fda1c898456fb60.tar.xz
nixos-5786716a383254c256f109d38fda1c898456fb60.zip
sif: hyprland
Diffstat (limited to 'accounts/gkleen@sif/default.nix')
-rw-r--r--accounts/gkleen@sif/default.nix222
1 files changed, 210 insertions, 12 deletions
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}