From d681beae489e378c5103b0a68cdd16cf44124918 Mon Sep 17 00:00:00 2001 From: emily Date: Fri, 21 Jun 2024 00:35:34 +0200 Subject: [PATCH] Refactor graphical profile --- config/profiles/graphical/default.nix | 570 +------------------------ config/profiles/graphical/files.nix | 91 ++++ config/profiles/graphical/hyprland.nix | 354 +++++++++++++++ config/profiles/graphical/waybar.nix | 129 ++++++ 4 files changed, 577 insertions(+), 567 deletions(-) create mode 100644 config/profiles/graphical/files.nix create mode 100644 config/profiles/graphical/hyprland.nix create mode 100644 config/profiles/graphical/waybar.nix diff --git a/config/profiles/graphical/default.nix b/config/profiles/graphical/default.nix index 73f5b23..0023224 100644 --- a/config/profiles/graphical/default.nix +++ b/config/profiles/graphical/default.nix @@ -2,7 +2,10 @@ imports = [ inputs.home-manager.nixosModules.home-manager inputs.stylix.nixosModules.stylix + ./files.nix + ./hyprland.nix ./nixvim.nix + ./waybar.nix ]; kyouma.machine-type.graphical = true; @@ -89,411 +92,6 @@ variant = "neo_qwerty"; }; - home.file.".local/bin/hypr/playerctl.sh" = let - playerctl = "${pkgs.playerctl}/bin/playerctl"; - title = "$(${playerctl} metadata --format '{{markup_escape(title)}}')"; - artist = "$(${playerctl} metadata --format '{{markup_escape(artist)}}')"; - status = "$(${playerctl} status 2> /dev/null)"; - in { - enable = true; - executable = true; - text = '' - #!${pkgs.bash}/bin/bash - if [ "${status}" = "Playing" ]; then - echo -e " ${title}\nPlaying: ${artist} - ${title}\nplaying" - elif [ "${status}" = "Paused" ]; then - echo -e " ${title}\nPaused: ${artist} - ${title}\npaused" - else - echo -e "" - fi - ''; - }; - home.file."./local/bin/hypr/colorpicker.sh" = { - enable = true; - executable = true; - source = pkgs.writeShellApplication { - name = "colorpicker"; - text = builtins.readFile ./files/scripts/colorpicker.sh; - runtimeInputs = with pkgs; [ coreutils grim slurp imagemagick_light wl-clipboard libnotify ]; - }; - }; - home.file."./local/bin/hypr/rofi_powermenu.sh" = { - enable = true; - executable = true; - source = pkgs.writeShellApplication { - name = "rofi-powermenu"; - text = builtins.readFile ./files/scripts/rofi_powermenu.sh; - runtimeInputs = with pkgs; [ rofi hyprlock coreutils-full toybox xdg-user-dirs ]; - }; - }; - home.file."./local/bin/hypr/rofi_screenshot.sh" = { - enable = true; - executable = true; - source = pkgs.writeShellApplication { - name = "rofi-screenshot"; - text = builtins.readFile ./files/scripts/rofi_screenshot.sh; - runtimeInputs = with pkgs; [ coreutils grim hyprland imv slurp wl-clipboard libnotify pulseaudio toybox rofi xdg-user-dirs ]; - }; - }; - home.file."./local/bin/hypr/screenshot.sh" = { - enable = true; - executable = true; - source = pkgs.writeShellApplication { - name = "screenshot"; - text = builtins.readFile ./files/scripts/screenshot.sh; - runtimeInputs = with pkgs; [ coreutils grim imv slurp wl-clipboard libnotify pulseaudio ]; - }; - }; - home.file."Pictures/wallpapers/sylviaritter/wallpaper.png" = { - enable = true; - source = config.stylix.image; - }; - home.file."Pictures/wallpapers/lockscreen.png" = { - enable = true; - source = config.stylix.image; - }; - wayland.windowManager.hyprland = { - enable = true; - settings = let - kitty = "${pkgs.kitty}/bin/kitty"; - pactl = "${pkgs.pulseaudio}/bin/pactl"; - playerctl = "${pkgs.playerctl}/bin/playerctl"; - notifysend = "${pkgs.libnotify}/bin/notify-send"; - dolphin = "${pkgs.libsForQt5.dolphin}/bin/dolphin"; - firefox = "${pkgs.firefox}/bin/firefox"; - brightnessctl = "${pkgs.brightnessctl}/bin/brightnessctl"; - screenshot = "~/.local/bin/hypr/screenshot.sh"; - rofi = "${pkgs.rofi-wayland}/bin/rofi"; - in { - general = { - border_size = 1; - gaps_in = 4; - gaps_out = 8; - "col.active_border" = "0xFFB4A1DB 0xFFD04E9D 45deg"; - "col.inactive_border" = "1e2030 1e2030 45deg"; - cursor_inactive_timeout = 30; - layout = "dwindle"; - }; - decoration = { - rounding = 8; - shadow_range = 10; - "col.shadow" = "0x66000000"; - "col.shadow_inactive" = "0x66000000"; - blur = { - enabled = true; - passes = 2; - }; - }; - dwindle.no_gaps_when_only = 1; - animations = { - bezier = [ - "wind, 0.2, 0.9, 0.2, 1.05" - "winMov, 0.2, 0.9, 0.2, 1.08" - "winIn, 0.2, 0.9, 0.2, 1.08" - "winOut, 0.2, 0, 0.9, 0.2" - "liner, 1, 1, 1, 1" - ]; - animation = [ - "windows, 1, 6, wind, slide" - "windowsIn, 1, 6, winIn, slide" - "windowsOut, 1, 6, winOut, slide" - "windowsMove, 1, 6, winMov, slide" - "border, 1, 1, liner" - "borderangle, 1, 30, liner, loop" - "fade, 1, 10, default" - "fadeOut, 1, 12, default" - "workspaces, 1, 8, wind" - ]; - }; - - input = { - kb_layout = "de"; - kb_variant = "neo_qwerty"; - kb_options = "grp:alt_shift_toggle"; - accel_profile = "adaptive"; - scroll_method = "2fg"; - float_switch_override_focus = 2; - touchpad = { - natural_scroll = true; - tap-to-click = false; - drag_lock = true; - }; - }; - gestures = { - workspace_swipe = true; - workspace_swipe_distance = 3200; - workspace_swipe_min_speed_to_force = 40; - workspace_swipe_cancel_ratio = 0.15; - workspace_swipe_forever = true; - }; - group = { - "col.border_inactive" = "0xFFDB695B"; - "col.border_active" = "0xFF4BC66D"; - groupbar = { - render_titles = false; - }; - }; - xwayland = { - force_zero_scaling = true; - use_nearest_neighbor = false; - }; - misc = { - disable_hyprland_logo = true; - disable_splash_rendering = true; - vrr = 1; - }; - device = [ - { - name = "syna8013:00-06cb:ce69-touchpad"; - sensitivity = 0.3; - } - { - name = "logitech-m705"; - sensitivity = 0.1; - accel_profile = "flat"; - } - { - name = "tpps/2-ibm-trackpoint"; - sensitivity = 0.2; - scroll_method = "on_button_down"; - accel_profile = "flat"; - } - { - name = "tpps/2-elan-trackpoint"; - sensitivity = 0; - scroll_method = "on_button_down"; - accel_profile = "flat"; - } - ]; - layerrule = [ "blur, waybar" ]; - monitor = [ - "eDP-1, 3840x2400@60, 0x0, 1, bitdepth, 10" - #"eDP-1, 2560x1600@60, 0x0, 1, bitdepth, 10" - #"eDP-1, 1920x1200@60, 0x0, 1, bitdepth, 10" - "desc:Dell Inc. AW3225QF FXK2YZ3, 3840x2160@120,5280x0,1, bitdepth,10, vrr,2" - "desc:GIGA-BYTE TECHNOLOGY CO. LTD. AORUS AD27QD 19320B000455, 2560x1440@144,3840x-350,1, bitdepth,10, transform,1" - ",preferred,auto,1" - ]; - workspace = [ - "1, monitor:desc:Dell Inc. AW3225QF FXK2YZ3, default:true" - "2, monitor:desc:Dell Inc. AW3225QF FXK2YZ3" - "3, monitor:desc:Dell Inc. AW3225QF FXK2YZ3" - "4, monitor:desc:Dell Inc. AW3225QF FXK2YZ3" - "5, monitor:desc:Dell Inc. AW3225QF FXK2YZ3" - "6, monitor:desc:Dell Inc. AW3225QF FXK2YZ3" - "7, monitor:desc:GIGA-BYTE TECHNOLOGY CO. LTD. AORUS AD27QD 19320B000455" - "8, monitor:desc:GIGA-BYTE TECHNOLOGY CO. LTD. AORUS AD27QD 19320B000455" - "9, monitor:desc:GIGA-BYTE TECHNOLOGY CO. LTD. AORUS AD27QD 19320B000455" - "10,monitor:desc:Dell Inc. AW3225QF FXK2YZ3" - ]; - windowrule = [ - "float, foot-float" - "float, yad|nm-connection-editor|pavucontrol" - "float, xfce-polkit|kvantummanager|qt5ct|zenity|waypaper" - "float, feh|com.github.weclaw1.ImageRoll|Gpicview|Gimp|MPlayer" - "float, VirtualBox Manager|qemu|Qemu-system-x86_64|PacketTracer" - "float, title:File Operation Progress|Open Files|Media viewer" - "float, title:Confirm to replace files" - "size 60% 64%, com.github.weclaw1.ImageRoll " - "center, com.github.weclaw1.ImageRoll" - "animation slide down,foot-full" - "animation slide up,Rofi" - ]; - - "$mod" = "SUPER"; - "$notifycmd" = "${notifysend} -h string:x-canonical-private-synchronous:hypr-cfg -u low"; - bind = [ - "$mod, Return, exec, ${kitty}" - "$mod, F1, exec, ${dolphin}" - "$mod, F2, exec, ${firefox}" - - # Rofi - "$mod, D, exec, ${rofi} -show drun -theme ~/.config/rofi/launcher.rasi" - "$mod, R, exec, ${rofi} -show run -theme ~/.config/rofi/runner.rasi" - "$mod, A, exec, ~/.local/bin/hypr/rofi_screenshot.sh" - "$mod, X, exec, ~/.local/bin/hypr/rofi_powermenu.sh" - - # Misc - "$mod, C, exec, ~/.local/bin/hypr/colorpicker.sh" - "CTRL_ALT, L, exec, ${pkgs.systemd}/bin/loginctl lock-session" - - # Function keys - ", XF86AudioMute, exec, ${pactl} set-sink-mute @DEFAULT_SINK@ toggle" - ", XF86AudioMicMute, exec, ${pactl} set-source-mute @DEFAULT_SOURCE@ toggle" - ", XF86AudioNext, exec, ${playerctl} next" - ", XF86AudioPrev, exec, ${playerctl} previous" - ", XF86AudioPlay, exec, ${playerctl} play" - ", XF86AudioStop, exec, ${playerctl} pause" - - # Scratchpad - "$mod SHIFT, MINUS, movetoworkspace,special" - "$mod, MINUS, togglespecialworkspace," - - # Screenshots - ", Print, exec, ${screenshot} --now" - "ALT, Print, exec, ${screenshot} --in5" - "SHIFT, Print, exec, ${screenshot} --in10" - "$mod, Print, exec, ${screenshot} --area" - - # Hyprland - "$mod SHIFT, Q, killactive," - "CTRL_ALT, Delete, exit," - "$mod, F, fullscreen, 0" - "$mod, F, exec, $notifycmd 'Fullscreen Mode'" - "$mod, S, pseudo," - "$mod, S, exec, $notifycmd 'Pseudo Mode'" - "$mod SHIFT, Space, togglefloating," - "$mod SHIFT, Space, centerwindow," - - # windowgroup - "$mod, G, togglegroup" - "$mod, G, exec, $notifycmd 'Toggled Group Mode'" - "$mod, H, changegroupactive, b" - "$mod, L, changegroupactive, f" - - # Change Focusconfig - "$mod, left, movefocus, l" - "$mod, H, movefocus, l" - "$mod, right, movefocus, r" - "$mod, L, movefocus, r" - "$mod, up, movefocus, u" - "$mod, K, movefocus, u" - "$mod, down, movefocus, d" - "$mod, J, movefocus, d" - - # Move Active - "$mod SHIFT, left, movewindow, l" - "$mod SHIFT, H, movewindow, l" - "$mod SHIFT, right, movewindow, r" - "$mod SHIFT, L, movewindow, r" - "$mod SHIFT, up, movewindow, u" - "$mod SHIFT, K, movewindow, u" - "$mod SHIFT, down, movewindow, d" - "$mod SHIFT, J, movewindow, d" - - # Switch between windows - "$mod,Tab,cyclenext," - "$mod,Tab,bringactivetotop," - - # Workspaces - "$mod, 1, workspace, 1" - "$mod, 2, workspace, 2" - "$mod, 3, workspace, 3" - "$mod, 4, workspace, 4" - "$mod, 5, workspace, 5" - "$mod, 6, workspace, 6" - "$mod, 7, workspace, 7" - "$mod, 8, workspace, 8" - "$mod, 9, workspace, 9" - "$mod, 0, workspace, 10" - - # Send to Workspaces - "$mod SHIFT, 1, movetoworkspace, 1" - "$mod SHIFT, 2, movetoworkspace, 2" - "$mod SHIFT, 3, movetoworkspace, 3" - "$mod SHIFT, 4, movetoworkspace, 4" - "$mod SHIFT, 5, movetoworkspace, 5" - "$mod SHIFT, 6, movetoworkspace, 6" - "$mod SHIFT, 7, movetoworkspace, 7" - "$mod SHIFT, 8, movetoworkspace, 8" - "$mod SHIFT, 9, movetoworkspace, 9" - "$mod SHIFT, 0, movetoworkspace, 10" - - # Change Workspace Mode - "$mod CTRL, F, workspaceopt, allfloat" - "$mod CTRL, F, exec, $notifycmd 'Toggled All Float Mode'" - "$mod CTRL, S, workspaceopt, allpseudo" - "$mod CTRL, S, exec, $notifycmd 'Toggled All Pseudo Mode'" - - # Misc - "$mod SHIFT, P, pin," - "$mod SHIFT, P, exec, $notifycmd 'Toggled Pin'" - "$mod SHIFT, S, swapnext" - "$mod SHIFT, O, toggleopaque" - ]; - binde = [ - # Function keys repeat - ", XF86MonBrightnessUp, exec, ${brightnessctl} s +10%" - ", XF86MonBrightnessDown, exec, ${brightnessctl} s 10%-" - ", XF86AudioRaiseVolume, exec, ${pactl} set-sink-volume @DEFAULT_SINK@ +5%" - ", XF86AudioLowerVolume, exec, ${pactl} set-sink-volume @DEFAULT_SINK@ -5%" - # Resize Active - "$mod CTRL, left, resizeactive, -20 0" - "$mod CTRL, H, resizeactive, -20 0" - "$mod CTRL, right, resizeactive, 20 0" - "$mod CTRL, L, resizeactive, 20 0" - "$mod CTRL, up, resizeactive, 0 -20" - "$mod CTRL, K, resizeactive, 0 -20" - "$mod CTRL, down, resizeactive, 0 20" - "$mod CTRL, J, resizeactive, 0 20" - - # Move Active (Floating Only) - "$mod ALT, left, moveactive, -80 0" - "$mod ALT, H, moveactive, -80 0" - "$mod ALT, right, moveactive, 80 0" - "$mod ALT, L, moveactive, 80 0" - "$mod ALT, up, moveactive, 0 -80" - "$mod ALT, K, moveactive, 0 -80" - "$mod ALT, down, moveactive, 0 80" - "$mod ALT, J, moveactive, 0 80" - ]; - bindl = [ - ",switch:on:Lid Switch,exec, lsusb -d 17ef:30b4 && hyprctl keyword monitor 'eDP-1, disable'" - ",switch:off:Lid Switch,exec, hyprctl keyword monitor 'eDP-1, 3840x2400@60, 0x0, 1, bitdepth,10'" - ]; - bindm = [ - "$mod, mouse:272, movewindow" - "$mod, mouse:273, resizewindow" - ]; - exec-once = [ - "${pkgs.wpaperd}/bin/wpaperd" - ]; - }; - }; - - programs.hyprlock = { - enable = true; - settings = { - general = { - grace = 1; - hide_cursor = true; - disable_loading_bar = true; - }; - background = [{ - path = "screenshot"; - #path = "$HOME/Pictures/wallpapers/lockscreen.png"; - blur_passes = 3; - contrast = 1.25; - }]; - input-field = [{ - size = "250, 60"; - outline_thickness = 2; - dots_size = 0.2; - dots_spacing = 0.2; - dots_center = true; - outer_color = "rgba(0, 0, 0, 0)"; - inner_color = "rgba(0, 0, 0, 0.5)"; - font_color = "rgb(200, 200, 200)"; - fade_on_empty = true; - fade_timeout = 5000; - font_family = "JetBrains Mono Nerd Font Mono"; - fail_text = "$FAIL $ATTEMPTS"; - position = "0, 200"; - halign = "center"; - valign = "bottom"; - }]; - label = [{ - text = "cmd[update:250] date +%X"; - color = "rgba(255, 255, 255, 0.6)"; - font_size = "100"; - font_family = "JetBrains Mono Nerd Font Mono ExtraBold"; - position = "0, -300"; - halign = "center"; - valign = "top"; - }]; - }; - }; - programs.imv.enable = true; programs.wpaperd = { @@ -504,127 +102,6 @@ sorting = "random"; }; }; - programs.waybar = { - enable = true; - style = ./files/waybar-style.css; - systemd = { - enable = true; - target = "hyprland-session.target"; - }; - settings = { - hyprbar = { - layer = "top"; - position = "top"; - #output = "eDP-1"; - margin = "0 0 0 0"; - modules-left = [ "hyprland/workspaces" "custom/playerctl" "tray" ]; - modules-center = [ "clock" ]; - modules-right = [ "backlight" "pulseaudio" "temperature" "cpu" "memory" "battery" "network" ]; - - "hyprland/workspaces" = { - format = "{icon}"; - sort-by-number = true; - active-only = false; - on-click = "activate"; - format-icons = { - "1" = "1"; - "2" = "2"; - "3" = "3"; - "4" = "4"; - "5" = "5"; - "6" = "6"; - "7" = "7"; - "8" = "8"; - "9" = "9"; - "10" = "0"; - urgent = ""; - focused = ""; - default = ""; - }; - }; - idle_inhibitor = { - format = "{icon}"; - format-icons = { - activated = ""; - deactivated = ""; - }; - }; - tray = { - icon-size = 18; - spacing = 8; - }; - clock = { - #tooltip-format = "{:%A %d %B | %H:%M}"; - format = " {:%Y-%m-%d  %H:%M:%OS}"; - format-alt = " {:%Y %b %d %a  %H:%M:%OS}"; - interval = 1; - }; - cpu = { - format = " {usage:02}"; - interval = 2; - on-click = "${pkgs.kitty}/bin/kitty -e ${pkgs.htop}/bin/htop"; - }; - memory = { - format = " {used:0.2f}"; - on-click = "${pkgs.kitty}/bin/kitty -e ${pkgs.htop}/bin/htop"; - }; - temperature = { - hwmon-path = "/sys/class/hwmon/hwmon1/temp1_input"; - critical-threshold = 80; - format = " {temperatureC}°C"; - }; - backlight = { - format = "{icon} {percent: >3}%"; - format-icons = ["" ""]; - on-scroll-down = "${pkgs.brightnessctl}/bin/brightnessctl -c backlight set 1%-"; - on-scroll-up = "${pkgs.brightnessctl}/bin/brightnessctl -c backlight set +1%"; - }; - battery = { - states = { - good = 90; - warning = 30; - critical = 15; - }; - format = ""; - format-discharging = "{icon} {capacity: >3}% {power:0.1f}W"; - format-charging = " {capacity: >3}% {power:0.1f}W"; - interval = 3; - format-icons = ["" "" "" "" ""]; - }; - network = { - format = "⚠ Disabled"; - format-wifi = " {essid}"; - format-ethernet = " Wired"; - format-disconnected = "⚠ Disconnected"; - on-click = "${pkgs.networkmanagerapplet}/bin/nm-connection-editor"; - }; - pulseaudio = { - scroll-step = 5; - format = "{icon} {volume: >3}%"; - format-bluetooth = "{icon} {volume: >3}%"; - format-muted = " muted"; - format-icons = { - headphones = ""; - handsfree = ""; - headset = ""; - phone = ""; - portable = ""; - car = ""; - default = ["" ""]; - }; - on-click = "${pkgs.pavucontrol}/bin/pavucontrol"; - }; - "custom/playerctl" = { - interval = 1; - exec = "~/.local/bin/hypr/playerctl.sh"; - on-click-middle = "${pkgs.playerctl}/bin/playerctl play-pause"; - on-click-right = "${pkgs.playerctl}/bin/playerctl next"; - on-click = "${pkgs.playerctl}/bin/playerctl previous"; - escape = true; - }; - }; - }; - }; programs.kitty = { enable = true; font.size = 13; @@ -725,19 +202,6 @@ enableSshSupport = true; pinentryPackage = pkgs.pinentry-gnome3; }; - - services.swayidle = - let - hyprlock = "pidof hyprlock || ${pkgs.hyprlock}/bin/hyprlock"; - in { - enable = true; - systemdTarget = "hyprland-session.target"; - events = [ - { event = "before-sleep"; command = hyprlock; } - { event = "lock"; command = hyprlock; } - ]; - }; - services.syncthing = { enable = true; tray.enable = true; @@ -752,33 +216,5 @@ Restart = "on-failure"; RestartSec = "1s"; }; - systemd.user.targets.tray.Unit = { - BindsTo = "waybar.service"; - After = "waybar.service"; - }; - xdg.configFile."mako-icons" = { - enable = true; - recursive = true; - source = ./files/icons; - }; - xdg.configFile."rofi" = { - enable = true; - recursive = true; - source = ./files/rofi; - }; - xdg.userDirs = - let - home = config.home-manager.users.emily.home.homeDirectory; - in { - enable = true; - desktop = null; - documents = "${home}/docs"; - download = "${home}/Downloads"; - music = "${home}/music"; - pictures = "${home}/Pictures"; - publicShare = null; - templates = null; - videos = "${home}/videos"; - }; }; } diff --git a/config/profiles/graphical/files.nix b/config/profiles/graphical/files.nix new file mode 100644 index 0000000..8f30906 --- /dev/null +++ b/config/profiles/graphical/files.nix @@ -0,0 +1,91 @@ +{ config, pkgs, ... }: { + home-manager.users.emily = { + home.file.".local/bin/hypr/playerctl.sh" = let + playerctl = "${pkgs.playerctl}/bin/playerctl"; + title = "$(${playerctl} metadata --format '{{markup_escape(title)}}')"; + artist = "$(${playerctl} metadata --format '{{markup_escape(artist)}}')"; + status = "$(${playerctl} status 2> /dev/null)"; + in { + enable = true; + executable = true; + text = '' + #!${pkgs.bash}/bin/bash + if [ "${status}" = "Playing" ]; then + echo -e " ${title}\nPlaying: ${artist} - ${title}\nplaying" + elif [ "${status}" = "Paused" ]; then + echo -e " ${title}\nPaused: ${artist} - ${title}\npaused" + else + echo -e "" + fi + ''; + }; + home.file."./local/bin/hypr/colorpicker.sh" = { + enable = true; + executable = true; + source = pkgs.writeShellApplication { + name = "colorpicker"; + text = builtins.readFile ./files/scripts/colorpicker.sh; + runtimeInputs = with pkgs; [ coreutils grim slurp imagemagick_light wl-clipboard libnotify ]; + }; + }; + home.file."./local/bin/hypr/rofi_powermenu.sh" = { + enable = true; + executable = true; + source = pkgs.writeShellApplication { + name = "rofi-powermenu"; + text = builtins.readFile ./files/scripts/rofi_powermenu.sh; + runtimeInputs = with pkgs; [ rofi hyprlock coreutils-full toybox xdg-user-dirs ]; + }; + }; + home.file."./local/bin/hypr/rofi_screenshot.sh" = { + enable = true; + executable = true; + source = pkgs.writeShellApplication { + name = "rofi-screenshot"; + text = builtins.readFile ./files/scripts/rofi_screenshot.sh; + runtimeInputs = with pkgs; [ coreutils grim hyprland imv slurp wl-clipboard libnotify pulseaudio toybox rofi xdg-user-dirs ]; + }; + }; + home.file."./local/bin/hypr/screenshot.sh" = { + enable = true; + executable = true; + source = pkgs.writeShellApplication { + name = "screenshot"; + text = builtins.readFile ./files/scripts/screenshot.sh; + runtimeInputs = with pkgs; [ coreutils grim imv slurp wl-clipboard libnotify pulseaudio ]; + }; + }; + home.file."Pictures/wallpapers/sylviaritter/wallpaper.png" = { + enable = true; + source = config.stylix.image; + }; + home.file."Pictures/wallpapers/lockscreen.png" = { + enable = true; + source = config.stylix.image; + }; + xdg.configFile."mako-icons" = { + enable = true; + recursive = true; + source = ./files/icons; + }; + xdg.configFile."rofi" = { + enable = true; + recursive = true; + source = ./files/rofi; + }; + xdg.userDirs = + let + home = config.home-manager.users.emily.home.homeDirectory; + in { + enable = true; + desktop = null; + documents = "${home}/docs"; + download = "${home}/Downloads"; + music = "${home}/music"; + pictures = "${home}/Pictures"; + publicShare = null; + templates = null; + videos = "${home}/videos"; + }; + }; +} diff --git a/config/profiles/graphical/hyprland.nix b/config/profiles/graphical/hyprland.nix new file mode 100644 index 0000000..4f2d49e --- /dev/null +++ b/config/profiles/graphical/hyprland.nix @@ -0,0 +1,354 @@ +{ pkgs, ... }: { + home-manager.users.emily = { + programs.hyprlock = { + enable = true; + settings = { + general = { + hide_cursor = true; + disable_loading_bar = true; + }; + background = [{ + path = "screenshot"; + #path = "$HOME/Pictures/wallpapers/lockscreen.png"; + blur_passes = 3; + contrast = 1.25; + }]; + input-field = [{ + size = "250, 60"; + outline_thickness = 2; + dots_size = 0.2; + dots_spacing = 0.2; + dots_center = true; + outer_color = "rgba(0, 0, 0, 0)"; + inner_color = "rgba(0, 0, 0, 0.5)"; + font_color = "rgb(200, 200, 200)"; + fade_on_empty = true; + fade_timeout = 5000; + font_family = "JetBrains Mono Nerd Font Mono"; + fail_text = "$FAIL $ATTEMPTS"; + position = "0, 200"; + halign = "center"; + valign = "bottom"; + }]; + label = [{ + text = "cmd[update:250] date +%X"; + color = "rgba(255, 255, 255, 0.6)"; + font_size = "100"; + font_family = "JetBrains Mono Nerd Font Mono ExtraBold"; + position = "0, -300"; + halign = "center"; + valign = "top"; + }]; + }; + }; + services.swayidle = + let + hyprlock = "pidof hyprlock || ${pkgs.hyprlock}/bin/hyprlock"; + in { + enable = true; + systemdTarget = "hyprland-session.target"; + events = [ + { event = "before-sleep"; command = hyprlock; } + { event = "lock"; command = hyprlock; } + ]; + }; + wayland.windowManager.hyprland = { + enable = true; + settings = let + kitty = "${pkgs.kitty}/bin/kitty"; + pactl = "${pkgs.pulseaudio}/bin/pactl"; + playerctl = "${pkgs.playerctl}/bin/playerctl"; + notifysend = "${pkgs.libnotify}/bin/notify-send"; + dolphin = "${pkgs.libsForQt5.dolphin}/bin/dolphin"; + firefox = "${pkgs.firefox}/bin/firefox"; + brightnessctl = "${pkgs.brightnessctl}/bin/brightnessctl"; + screenshot = "~/.local/bin/hypr/screenshot.sh"; + rofi = "${pkgs.rofi-wayland}/bin/rofi"; + in { + general = { + border_size = 1; + gaps_in = 4; + gaps_out = 8; + "col.active_border" = "0xFFB4A1DB 0xFFD04E9D 45deg"; + "col.inactive_border" = "1e2030 1e2030 45deg"; + cursor_inactive_timeout = 30; + layout = "dwindle"; + }; + decoration = { + rounding = 8; + shadow_range = 10; + "col.shadow" = "0x66000000"; + "col.shadow_inactive" = "0x66000000"; + blur = { + enabled = true; + passes = 2; + }; + }; + dwindle.no_gaps_when_only = 1; + animations = { + bezier = [ + "wind, 0.2, 0.9, 0.2, 1.05" + "winMov, 0.2, 0.9, 0.2, 1.08" + "winIn, 0.2, 0.9, 0.2, 1.08" + "winOut, 0.2, 0, 0.9, 0.2" + "liner, 1, 1, 1, 1" + ]; + animation = [ + "windows, 1, 6, wind, slide" + "windowsIn, 1, 6, winIn, slide" + "windowsOut, 1, 6, winOut, slide" + "windowsMove, 1, 6, winMov, slide" + "border, 1, 1, liner" + "borderangle, 1, 30, liner, loop" + "fade, 1, 10, default" + "fadeOut, 1, 12, default" + "workspaces, 1, 8, wind" + ]; + }; + + input = { + kb_layout = "de"; + kb_variant = "neo_qwerty"; + kb_options = "grp:alt_shift_toggle"; + accel_profile = "adaptive"; + scroll_method = "2fg"; + float_switch_override_focus = 2; + touchpad = { + natural_scroll = true; + tap-to-click = false; + drag_lock = true; + }; + }; + gestures = { + workspace_swipe = true; + workspace_swipe_distance = 3200; + workspace_swipe_min_speed_to_force = 40; + workspace_swipe_cancel_ratio = 0.15; + workspace_swipe_forever = true; + }; + group = { + "col.border_inactive" = "0xFFDB695B"; + "col.border_active" = "0xFF4BC66D"; + groupbar = { + render_titles = false; + }; + }; + xwayland = { + force_zero_scaling = true; + use_nearest_neighbor = false; + }; + misc = { + disable_hyprland_logo = true; + disable_splash_rendering = true; + vrr = 1; + }; + device = [ + { + name = "syna8013:00-06cb:ce69-touchpad"; + sensitivity = 0.3; + } + { + name = "logitech-m705"; + sensitivity = 0.1; + accel_profile = "flat"; + } + { + name = "tpps/2-ibm-trackpoint"; + sensitivity = 0.2; + scroll_method = "on_button_down"; + accel_profile = "flat"; + } + { + name = "tpps/2-elan-trackpoint"; + sensitivity = 0; + scroll_method = "on_button_down"; + accel_profile = "flat"; + } + ]; + layerrule = [ "blur, waybar" ]; + monitor = [ + "eDP-1, 3840x2400@60, 0x0, 1, bitdepth, 10" + #"eDP-1, 2560x1600@60, 0x0, 1, bitdepth, 10" + #"eDP-1, 1920x1200@60, 0x0, 1, bitdepth, 10" + "desc:Dell Inc. AW3225QF FXK2YZ3, 3840x2160@120,5280x0,1, bitdepth,10, vrr,2" + "desc:GIGA-BYTE TECHNOLOGY CO. LTD. AORUS AD27QD 19320B000455, 2560x1440@144,3840x-350,1, bitdepth,10, transform,1" + ",preferred,auto,1" + ]; + workspace = [ + "1, monitor:desc:Dell Inc. AW3225QF FXK2YZ3, default:true" + "2, monitor:desc:Dell Inc. AW3225QF FXK2YZ3" + "3, monitor:desc:Dell Inc. AW3225QF FXK2YZ3" + "4, monitor:desc:Dell Inc. AW3225QF FXK2YZ3" + "5, monitor:desc:Dell Inc. AW3225QF FXK2YZ3" + "6, monitor:desc:Dell Inc. AW3225QF FXK2YZ3" + "7, monitor:desc:GIGA-BYTE TECHNOLOGY CO. LTD. AORUS AD27QD 19320B000455" + "8, monitor:desc:GIGA-BYTE TECHNOLOGY CO. LTD. AORUS AD27QD 19320B000455" + "9, monitor:desc:GIGA-BYTE TECHNOLOGY CO. LTD. AORUS AD27QD 19320B000455" + "10,monitor:desc:Dell Inc. AW3225QF FXK2YZ3" + ]; + windowrule = [ + "float, foot-float" + "float, yad|nm-connection-editor|pavucontrol" + "float, xfce-polkit|kvantummanager|qt5ct|zenity|waypaper" + "float, feh|com.github.weclaw1.ImageRoll|Gpicview|Gimp|MPlayer" + "float, VirtualBox Manager|qemu|Qemu-system-x86_64|PacketTracer" + "float, title:File Operation Progress|Open Files|Media viewer" + "float, title:Confirm to replace files" + "size 60% 64%, com.github.weclaw1.ImageRoll " + "center, com.github.weclaw1.ImageRoll" + "animation slide down,foot-full" + "animation slide up,Rofi" + ]; + + "$mod" = "SUPER"; + "$notifycmd" = "${notifysend} -h string:x-canonical-private-synchronous:hypr-cfg -u low"; + bind = [ + "$mod, Return, exec, ${kitty}" + "$mod, F1, exec, ${dolphin}" + "$mod, F2, exec, ${firefox}" + + # Rofi + "$mod, D, exec, ${rofi} -show drun -theme ~/.config/rofi/launcher.rasi" + "$mod, R, exec, ${rofi} -show run -theme ~/.config/rofi/runner.rasi" + "$mod, A, exec, ~/.local/bin/hypr/rofi_screenshot.sh" + "$mod, X, exec, ~/.local/bin/hypr/rofi_powermenu.sh" + + # Misc + "$mod, C, exec, ~/.local/bin/hypr/colorpicker.sh" + "CTRL_ALT, L, exec, ${pkgs.systemd}/bin/loginctl lock-session" + + # Function keys + ", XF86AudioMute, exec, ${pactl} set-sink-mute @DEFAULT_SINK@ toggle" + ", XF86AudioMicMute, exec, ${pactl} set-source-mute @DEFAULT_SOURCE@ toggle" + ", XF86AudioNext, exec, ${playerctl} next" + ", XF86AudioPrev, exec, ${playerctl} previous" + ", XF86AudioPlay, exec, ${playerctl} play" + ", XF86AudioStop, exec, ${playerctl} pause" + + # Scratchpad + "$mod SHIFT, MINUS, movetoworkspace,special" + "$mod, MINUS, togglespecialworkspace," + + # Screenshots + ", Print, exec, ${screenshot} --now" + "ALT, Print, exec, ${screenshot} --in5" + "SHIFT, Print, exec, ${screenshot} --in10" + "$mod, Print, exec, ${screenshot} --area" + + # Hyprland + "$mod SHIFT, Q, killactive," + "CTRL_ALT, Delete, exit," + "$mod, F, fullscreen, 0" + "$mod, F, exec, $notifycmd 'Fullscreen Mode'" + "$mod, S, pseudo," + "$mod, S, exec, $notifycmd 'Pseudo Mode'" + "$mod SHIFT, Space, togglefloating," + "$mod SHIFT, Space, centerwindow," + + # windowgroup + "$mod, G, togglegroup" + "$mod, G, exec, $notifycmd 'Toggled Group Mode'" + "$mod, H, changegroupactive, b" + "$mod, L, changegroupactive, f" + + # Change Focusconfig + "$mod, left, movefocus, l" + "$mod, H, movefocus, l" + "$mod, right, movefocus, r" + "$mod, L, movefocus, r" + "$mod, up, movefocus, u" + "$mod, K, movefocus, u" + "$mod, down, movefocus, d" + "$mod, J, movefocus, d" + + # Move Active + "$mod SHIFT, left, movewindow, l" + "$mod SHIFT, H, movewindow, l" + "$mod SHIFT, right, movewindow, r" + "$mod SHIFT, L, movewindow, r" + "$mod SHIFT, up, movewindow, u" + "$mod SHIFT, K, movewindow, u" + "$mod SHIFT, down, movewindow, d" + "$mod SHIFT, J, movewindow, d" + + # Switch between windows + "$mod,Tab,cyclenext," + "$mod,Tab,bringactivetotop," + + # Workspaces + "$mod, 1, workspace, 1" + "$mod, 2, workspace, 2" + "$mod, 3, workspace, 3" + "$mod, 4, workspace, 4" + "$mod, 5, workspace, 5" + "$mod, 6, workspace, 6" + "$mod, 7, workspace, 7" + "$mod, 8, workspace, 8" + "$mod, 9, workspace, 9" + "$mod, 0, workspace, 10" + + # Send to Workspaces + "$mod SHIFT, 1, movetoworkspace, 1" + "$mod SHIFT, 2, movetoworkspace, 2" + "$mod SHIFT, 3, movetoworkspace, 3" + "$mod SHIFT, 4, movetoworkspace, 4" + "$mod SHIFT, 5, movetoworkspace, 5" + "$mod SHIFT, 6, movetoworkspace, 6" + "$mod SHIFT, 7, movetoworkspace, 7" + "$mod SHIFT, 8, movetoworkspace, 8" + "$mod SHIFT, 9, movetoworkspace, 9" + "$mod SHIFT, 0, movetoworkspace, 10" + + # Change Workspace Mode + "$mod CTRL, F, workspaceopt, allfloat" + "$mod CTRL, F, exec, $notifycmd 'Toggled All Float Mode'" + "$mod CTRL, S, workspaceopt, allpseudo" + "$mod CTRL, S, exec, $notifycmd 'Toggled All Pseudo Mode'" + + # Misc + "$mod SHIFT, P, pin," + "$mod SHIFT, P, exec, $notifycmd 'Toggled Pin'" + "$mod SHIFT, S, swapnext" + "$mod SHIFT, O, toggleopaque" + ]; + binde = [ + # Function keys repeat + ", XF86MonBrightnessUp, exec, ${brightnessctl} s +10%" + ", XF86MonBrightnessDown, exec, ${brightnessctl} s 10%-" + ", XF86AudioRaiseVolume, exec, ${pactl} set-sink-volume @DEFAULT_SINK@ +5%" + ", XF86AudioLowerVolume, exec, ${pactl} set-sink-volume @DEFAULT_SINK@ -5%" + # Resize Active + "$mod CTRL, left, resizeactive, -20 0" + "$mod CTRL, H, resizeactive, -20 0" + "$mod CTRL, right, resizeactive, 20 0" + "$mod CTRL, L, resizeactive, 20 0" + "$mod CTRL, up, resizeactive, 0 -20" + "$mod CTRL, K, resizeactive, 0 -20" + "$mod CTRL, down, resizeactive, 0 20" + "$mod CTRL, J, resizeactive, 0 20" + + # Move Active (Floating Only) + "$mod ALT, left, moveactive, -80 0" + "$mod ALT, H, moveactive, -80 0" + "$mod ALT, right, moveactive, 80 0" + "$mod ALT, L, moveactive, 80 0" + "$mod ALT, up, moveactive, 0 -80" + "$mod ALT, K, moveactive, 0 -80" + "$mod ALT, down, moveactive, 0 80" + "$mod ALT, J, moveactive, 0 80" + ]; + bindl = [ + ",switch:on:Lid Switch,exec, lsusb -d 17ef:30b4 && hyprctl keyword monitor 'eDP-1, disable'" + ",switch:off:Lid Switch,exec, hyprctl keyword monitor 'eDP-1, 3840x2400@60, 0x0, 1, bitdepth,10'" + ]; + bindm = [ + "$mod, mouse:272, movewindow" + "$mod, mouse:273, resizewindow" + ]; + exec-once = [ + "${pkgs.wpaperd}/bin/wpaperd" + ]; + }; + }; + }; +} diff --git a/config/profiles/graphical/waybar.nix b/config/profiles/graphical/waybar.nix new file mode 100644 index 0000000..0e56520 --- /dev/null +++ b/config/profiles/graphical/waybar.nix @@ -0,0 +1,129 @@ +{ pkgs, ... }: { + home-manager.users.emily = { + programs.waybar = { + enable = true; + style = ./files/waybar-style.css; + systemd = { + enable = true; + target = "hyprland-session.target"; + }; + settings = { + hyprbar = { + layer = "top"; + position = "top"; + #output = "eDP-1"; + margin = "0 0 0 0"; + modules-left = [ "hyprland/workspaces" "custom/playerctl" "tray" ]; + modules-center = [ "clock" ]; + modules-right = [ "backlight" "pulseaudio" "temperature" "cpu" "memory" "battery" "network" ]; + + "hyprland/workspaces" = { + format = "{icon}"; + sort-by-number = true; + active-only = false; + on-click = "activate"; + format-icons = { + "1" = "1"; + "2" = "2"; + "3" = "3"; + "4" = "4"; + "5" = "5"; + "6" = "6"; + "7" = "7"; + "8" = "8"; + "9" = "9"; + "10" = "0"; + urgent = ""; + focused = ""; + default = ""; + }; + }; + idle_inhibitor = { + format = "{icon}"; + format-icons = { + activated = ""; + deactivated = ""; + }; + }; + tray = { + icon-size = 18; + spacing = 8; + }; + clock = { + #tooltip-format = "{:%A %d %B | %H:%M}"; + format = " {:%Y-%m-%d  %H:%M:%OS}"; + format-alt = " {:%Y %b %d %a  %H:%M:%OS}"; + interval = 1; + }; + cpu = { + format = " {usage:02}"; + interval = 2; + on-click = "${pkgs.kitty}/bin/kitty -e ${pkgs.htop}/bin/htop"; + }; + memory = { + format = " {used:0.2f}"; + on-click = "${pkgs.kitty}/bin/kitty -e ${pkgs.htop}/bin/htop"; + }; + temperature = { + hwmon-path = "/sys/class/hwmon/hwmon1/temp1_input"; + critical-threshold = 80; + format = " {temperatureC}°C"; + }; + backlight = { + format = "{icon} {percent: >3}%"; + format-icons = ["" ""]; + on-scroll-down = "${pkgs.brightnessctl}/bin/brightnessctl -c backlight set 1%-"; + on-scroll-up = "${pkgs.brightnessctl}/bin/brightnessctl -c backlight set +1%"; + }; + battery = { + states = { + good = 90; + warning = 30; + critical = 15; + }; + format = ""; + format-discharging = "{icon} {capacity: >3}% {power:0.1f}W"; + format-charging = " {capacity: >3}% {power:0.1f}W"; + interval = 3; + format-icons = ["" "" "" "" ""]; + }; + network = { + format = "⚠ Disabled"; + format-wifi = " {essid}"; + format-ethernet = " Wired"; + format-disconnected = "⚠ Disconnected"; + on-click = "${pkgs.networkmanagerapplet}/bin/nm-connection-editor"; + }; + pulseaudio = { + scroll-step = 5; + format = "{icon} {volume: >3}%"; + format-bluetooth = "{icon} {volume: >3}%"; + format-muted = " muted"; + format-icons = { + headphones = ""; + handsfree = ""; + headset = ""; + phone = ""; + portable = ""; + car = ""; + default = ["" ""]; + }; + on-click = "${pkgs.pavucontrol}/bin/pavucontrol"; + }; + "custom/playerctl" = { + interval = 1; + exec = "~/.local/bin/hypr/playerctl.sh"; + on-click-middle = "${pkgs.playerctl}/bin/playerctl play-pause"; + on-click-right = "${pkgs.playerctl}/bin/playerctl next"; + on-click = "${pkgs.playerctl}/bin/playerctl previous"; + escape = true; + }; + }; + }; + }; + systemd.user.targets.tray.Unit = { + BindsTo = "waybar.service"; + After = "waybar.service"; + }; + }; +}