diff options
| author | Collin Williams <96917990+bluedragon1221@users.noreply.github.com> | 2025-06-09 17:40:46 +0000 |
|---|---|---|
| committer | Collin Williams <96917990+bluedragon1221@users.noreply.github.com> | 2025-06-09 17:40:46 +0000 |
| commit | a45c4551712c1ba5cb82eaf290f311ab0e8690e4 (patch) | |
| tree | f62b23489fb31f8ea58fef77f99619efd784eb36 /modules/desktop/home/environments/hyprland | |
big changes
Diffstat (limited to 'modules/desktop/home/environments/hyprland')
11 files changed, 491 insertions, 0 deletions
diff --git a/modules/desktop/home/environments/hyprland/default.nix b/modules/desktop/home/environments/hyprland/default.nix new file mode 100644 index 0000000..85abeaa --- /dev/null +++ b/modules/desktop/home/environments/hyprland/default.nix @@ -0,0 +1,14 @@ +{ + config, + lib, + ... +}: let + cfg = config.collinux.desktop.hyprland; +in { + imports = [ + ./hyprland + ./dunst.nix + ./fuzzel.nix + ./waybar + ]; +} diff --git a/modules/desktop/home/environments/hyprland/dunst.nix b/modules/desktop/home/environments/hyprland/dunst.nix new file mode 100644 index 0000000..6a5a0d1 --- /dev/null +++ b/modules/desktop/home/environments/hyprland/dunst.nix @@ -0,0 +1,44 @@ +{ + config, + lib, + ... +}: let + cfg = config.collinux.desktop.hyprland.components.dunst; +in + lib.mkIf cfg.enable { + services.dunst = { + enable = true; + settings = lib.mkMerge [ + { + global = { + offset = "8x30"; + origin = "top-right"; + transparency = 10; + font = "Iosevka Nerd Font"; + }; + } + (lib.mkIf (cfg.theme == "catppuccin") { + global = { + frame_color = "#89b4fa"; + highlight = "#89b4fa"; + }; + + urgency_low = { + background = "#1e1e2e"; + foreground = "#cdd6f4"; + }; + + urgency_normal = { + background = "#1e1e2e"; + foreground = "#cdd6f4"; + }; + + urgency_critical = { + background = "#1e1e2e"; + foreground = "#cdd6f4"; + frame_color = "#fab387"; + }; + }) + ]; + }; + } diff --git a/modules/desktop/home/environments/hyprland/fuzzel.nix b/modules/desktop/home/environments/hyprland/fuzzel.nix new file mode 100644 index 0000000..6dca3fb --- /dev/null +++ b/modules/desktop/home/environments/hyprland/fuzzel.nix @@ -0,0 +1,44 @@ +{ + lib, + config, + ... +}: let + cfg = config.collinux.desktop.hyprland.components.fuzzel; +in + lib.mkIf cfg.enable { + programs.fuzzel = { + enable = true; + settings = { + main = { + prompt = " "; + dpi-aware = false; + + font = "Iosevka Nerd Font"; + line-height = 25; + lines = 10; + width = 30; + + horizontal-pad = 8; + vertical-pad = 8; + }; + border = { + radius = 0; + width = 2; + }; + + colors = lib.mkIf (cfg.theme == "catppuccin") { + background = "1e1e2edd"; + text = "cdd6f4ff"; + prompt = "bac2deff"; + placeholder = "7f849cff"; + input = "cdd6f4ff"; + match = "89b4faff"; + selection = "585b70ff"; + selection-text = "cdd6f4ff"; + selection-match = "89b4faff"; + counter = "7f849cff"; + border = "89b4faff"; + }; + }; + }; + } diff --git a/modules/desktop/home/environments/hyprland/hyprland/catppuccin.conf b/modules/desktop/home/environments/hyprland/hyprland/catppuccin.conf new file mode 100644 index 0000000..572cb7e --- /dev/null +++ b/modules/desktop/home/environments/hyprland/hyprland/catppuccin.conf @@ -0,0 +1,79 @@ +$rosewater = rgb(f5e0dc) +$rosewaterAlpha = f5e0dc + +$flamingo = rgb(f2cdcd) +$flamingoAlpha = f2cdcd + +$pink = rgb(f5c2e7) +$pinkAlpha = f5c2e7 + +$mauve = rgb(cba6f7) +$mauveAlpha = cba6f7 + +$red = rgb(f38ba8) +$redAlpha = f38ba8 + +$maroon = rgb(eba0ac) +$maroonAlpha = eba0ac + +$peach = rgb(fab387) +$peachAlpha = fab387 + +$yellow = rgb(f9e2af) +$yellowAlpha = f9e2af + +$green = rgb(a6e3a1) +$greenAlpha = a6e3a1 + +$teal = rgb(94e2d5) +$tealAlpha = 94e2d5 + +$sky = rgb(89dceb) +$skyAlpha = 89dceb + +$sapphire = rgb(74c7ec) +$sapphireAlpha = 74c7ec + +$blue = rgb(89b4fa) +$blueAlpha = 89b4fa + +$lavender = rgb(b4befe) +$lavenderAlpha = b4befe + +$text = rgb(cdd6f4) +$textAlpha = cdd6f4 + +$subtext1 = rgb(bac2de) +$subtext1Alpha = bac2de + +$subtext0 = rgb(a6adc8) +$subtext0Alpha = a6adc8 + +$overlay2 = rgb(9399b2) +$overlay2Alpha = 9399b2 + +$overlay1 = rgb(7f849c) +$overlay1Alpha = 7f849c + +$overlay0 = rgb(6c7086) +$overlay0Alpha = 6c7086 + +$surface2 = rgb(585b70) +$surface2Alpha = 585b70 + +$surface1 = rgb(45475a) +$surface1Alpha = 45475a + +$surface0 = rgb(313244) +$surface0Alpha = 313244 + +$base = rgb(1e1e2e) +$baseAlpha = 1e1e2e + +$mantle = rgb(181825) +$mantleAlpha = 181825 + +$crust = rgb(11111b) +$crustAlpha = 11111b + +$accent = $mauve diff --git a/modules/desktop/home/environments/hyprland/hyprland/default.nix b/modules/desktop/home/environments/hyprland/hyprland/default.nix new file mode 100644 index 0000000..1c3c2b8 --- /dev/null +++ b/modules/desktop/home/environments/hyprland/hyprland/default.nix @@ -0,0 +1,96 @@ +{ + config, + pkgs, + lib, + ... +}: let + cfg = config.collinux.desktop.hyprland; +in + lib.mkIf cfg.enable { + home.file."${config.xdg.configHome}/uwsm/env" = lib.mkIf cfg.useUwsm { + text = ''export QT_QPA_PLATFORM=wayland''; + }; + + home.packages = with pkgs; [wl-clipboard hyprshot brightnessctl]; + + wayland.windowManager.hyprland = { + enable = true; + systemd.enable = !cfg.useUwsm; # conflicts with uwsm + + settings = { + source = "${./catppuccin.conf}"; + + xwayland.enabled = false; # all of my apps are compatible with wayland + general = { + "col.active_border" = "$accent"; + "col.inactive_border" = "$base"; + border_size = 2; + gaps_in = 5; + gaps_out = 8; + }; + + # TODO these should be dependent on what applications are enabled + bind = + [ + "Mod4, q, killactive" + "Mod4, x, exec, footclient" + "Mod4, b, exec, firefox" + "Mod4, h, exec, obsidian" + "Mod4, SPACE, exec, fuzzel" + ] + ++ ( + # workspaces + # binds $mod + [shift +] {1..9} to [move to] workspace {1..9} + builtins.concatLists (builtins.genList ( + i: let + ws = i + 1; + in [ + "Mod4, code:1${toString i}, workspace, ${toString ws}" + "Mod4 SHIFT, code:1${toString i}, movetoworkspace, ${toString ws}" + ] + ) + 9) + ); + + binde = [ + ", XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+" + ", XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-" + + ", XF86MonBrightnessUp, exec, brightnessctl s 5%+" + ", XF86MonBrightnessDown, exec, brightnessctl s 5%-" + ]; + + bindm = [ + "Mod4, mouse:272, movewindow" + "Mod4, mouse:273, resizewindow" + ]; + + monitor = ", prefred, auto, 1"; + animations = { + bezier = [ + "ease, 0.25, 0.1, 0.25, 1" + "menu_decel, 0.1, 1, 0, 1" + ]; + animation = [ + "workspaces, 1, 2, ease" + "workspaces, 1, 7, menu_decel, slidefade 15%" + "global, 1, 2.5, ease" + "windowsIn, 1, 2.75, ease, slide" + "windowsOut, 1.275, ease, slide" + ]; + }; + misc.disable_hyprland_logo = true; + }; + }; + + home.file."Pictures/wallpaper.jpg".source = ./wallpaper.jpg; + + services.hyprpaper = { + enable = true; + settings = { + ipc = false; + preload = ["Pictures/wallpaper.jpg"]; + wallpaper = ",Pictures/wallpaper.jpg"; + }; + }; + } diff --git a/modules/desktop/home/environments/hyprland/hyprland/wallpaper.jpg b/modules/desktop/home/environments/hyprland/hyprland/wallpaper.jpg Binary files differnew file mode 100644 index 0000000..039afcc --- /dev/null +++ b/modules/desktop/home/environments/hyprland/hyprland/wallpaper.jpg diff --git a/modules/desktop/home/environments/hyprland/waybar/catppuccin.scss b/modules/desktop/home/environments/hyprland/waybar/catppuccin.scss new file mode 100644 index 0000000..0eb6a82 --- /dev/null +++ b/modules/desktop/home/environments/hyprland/waybar/catppuccin.scss @@ -0,0 +1,26 @@ +@define-color rosewater #f5e0dc; +@define-color flamingo #f2cdcd; +@define-color pink #f5c2e7; +@define-color mauve #cba6f7; +@define-color red #f38ba8; +@define-color maroon #eba0ac; +@define-color peach #fab387; +@define-color yellow #f9e2af; +@define-color green #a6e3a1; +@define-color teal #94e2d5; +@define-color sky #89dceb; +@define-color sapphire #74c7ec; +@define-color blue #89b4fa; +@define-color lavender #b4befe; +@define-color text #cdd6f4; +@define-color subtext1 #bac2de; +@define-color subtext0 #a6adc8; +@define-color overlay2 #9399b2; +@define-color overlay1 #7f849c; +@define-color overlay0 #6c7086; +@define-color surface2 #585b70; +@define-color surface1 #45475a; +@define-color surface0 #313244; +@define-color base #1e1e2e; +@define-color mantle #181825; +@define-color crust #11111b; diff --git a/modules/desktop/home/environments/hyprland/waybar/config.nix b/modules/desktop/home/environments/hyprland/waybar/config.nix new file mode 100644 index 0000000..7afa83c --- /dev/null +++ b/modules/desktop/home/environments/hyprland/waybar/config.nix @@ -0,0 +1,59 @@ +{pkgs, ...}: { + spacing = 4; + modules-left = ["custom/launcher" "hyprland/workspaces"]; + modules-center = ["hyprland/window"]; + modules-right = ["bluetooth" "wireplumber" "battery" "clock" "custom/power"]; + + "custom/launcher" = { + format = " "; + on-click = "${pkgs.fuzzel}/bin/fuzzel"; + }; + "hyprland/workspaces" = { + disable-scroll = true; + all-outputs = true; + warp-on-scroll = false; + format = "{icon}"; + format-icons = { + "1" = ""; + "2" = ""; + "3" = ""; + "4" = ""; + "5" = ""; + }; + }; + "hyprland/window" = { + on-click = "hyprctl dispatch float"; + }; + "bluetooth" = { + format = ""; + format-connected = " {device_alias}"; + }; + "battery" = { + format = "{icon} {capacity}%"; + format-alt = "{icon}"; + format-icons = [" " " " " " " " " "]; + }; + "wireplumber" = { + format = "{icon} {volume}%"; + format-alt = "{icon}"; + format-muted = " {volume}%"; + format-icons.default = ["" "" ""]; + tooltip = false; + }; + "clock" = { + format = "{:%I:%M}"; + format-alt = "/{:%Y/%b/%d-%a}"; + tooltip = false; + }; + "custom/power" = { + format = " collin"; + tooltip = false; + menu = "on-click"; + menu-file = "${./power_menu.xml}"; + menu-actions = { + logout = "hyprctl dispatch exit"; + reboot = "reboot"; + shutdown = "poweroff"; + }; + }; +} diff --git a/modules/desktop/home/environments/hyprland/waybar/default.nix b/modules/desktop/home/environments/hyprland/waybar/default.nix new file mode 100644 index 0000000..3b73a78 --- /dev/null +++ b/modules/desktop/home/environments/hyprland/waybar/default.nix @@ -0,0 +1,20 @@ +{ + pkgs, + config, + lib, + ... +}: let + cfg = config.collinux.desktop.hyprland.components.waybar; +in + lib.mkIf cfg.enable { + programs.waybar = { + enable = true; + systemd.enable = true; + settings."mainBar" = import ./config.nix {inherit pkgs;}; + style = lib.mkIf (cfg.theme == "catppuccin") '' + @import "${./catppuccin.scss}"; + + ${builtins.readFile ./style.scss} + ''; + }; + } diff --git a/modules/desktop/home/environments/hyprland/waybar/power_menu.xml b/modules/desktop/home/environments/hyprland/waybar/power_menu.xml new file mode 100644 index 0000000..2935c89 --- /dev/null +++ b/modules/desktop/home/environments/hyprland/waybar/power_menu.xml @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="UTF-8"?> +<interface> + <object class="GtkMenu" id="menu"> + <child> + <object class="GtkMenuItem" id="logout"> + <property name="label">Log Out</property> + </object> + </child> + <child> + <object class="GtkSeparatorMenuItem" id="delimiter1"/> + </child> + <child> + <object class="GtkMenuItem" id="reboot"> + <property name="label">Reboot</property> + </object> + </child> + <child> + <object class="GtkMenuItem" id="shutdown"> + <property name="label">Shutdown</property> + </object> + </child> + </object> +</interface> diff --git a/modules/desktop/home/environments/hyprland/waybar/style.scss b/modules/desktop/home/environments/hyprland/waybar/style.scss new file mode 100644 index 0000000..7674164 --- /dev/null +++ b/modules/desktop/home/environments/hyprland/waybar/style.scss @@ -0,0 +1,86 @@ +* { + font-family: Iosevka Nerd Font; + font-size: 10pt; + min-height: 0; +} + +#waybar { + background: @base; + color: @text; +} + +#workspaces, +#clock, +#battery, +#wireplumber, +#bluetooth.connected, +#custom-power { + color: @text; + background: @surface0; + + padding: 0.5rem 1rem; + border-radius: 1rem; + + margin: 5px 0; +} + +#workspaces button { + color: @lavender; + border-radius: 1rem; + padding: 0rem 0.75rem; +} + +#workspaces button.active { + color: @sky; +} + +#workspaces button:hover { + box-shadow: inherit; + text-shadow: inherit; + background: none; + border: none; + border-color: transparent; + padding: 0 0.75rem; + margin: 0; +} + +#window { + font-size: 12pt; +} + +#custom-launcher { + color: @blue; + font-size: 12pt; + padding: 0; + margin: 0; + + margin-left: 1rem; + margin-right: 1rem; +} + +#bluetooth.connected { + color: @blue; +} + +#wireplumber { + color: @maroon; + border-radius: 1rem 0 0 1rem; + margin-left: 1rem; +} + +#battery { + color: @green; + border-radius: 0; +} + +#clock { + color: @blue; + border-radius: 0 1rem 1rem 0; + margin-right: 1rem; +} + +#custom-power { + color: @rosewater; + margin-right: 1rem; + /* border: @rosewater 1px solid; */ +}
\ No newline at end of file |
