diff options
author | Gregor Kleen <gkleen@yggdrasil.li> | 2024-08-11 11:13:27 +0200 |
---|---|---|
committer | Gregor Kleen <gkleen@yggdrasil.li> | 2024-08-11 11:13:27 +0200 |
commit | 5786716a383254c256f109d38fda1c898456fb60 (patch) | |
tree | 43b4b5918eb58fd6ffc728fe0d4f21dc3431981d /accounts/gkleen@sif/default.nix | |
parent | 148e387fe152242f472322218f1e0bd35afe67e8 (diff) | |
download | nixos-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.nix | 222 |
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 | } |