diff --git a/config/fonts/JetBrainsMono.ttf b/config/fonts/JetBrainsMono.ttf new file mode 100644 index 0000000..31e03a2 Binary files /dev/null and b/config/fonts/JetBrainsMono.ttf differ diff --git a/config/fonts/NotoColorEmoji.ttf b/config/fonts/NotoColorEmoji.ttf new file mode 100644 index 0000000..cf7a47e Binary files /dev/null and b/config/fonts/NotoColorEmoji.ttf differ diff --git a/config/fonts/Symbols-Regular.ttf b/config/fonts/Symbols-Regular.ttf new file mode 100644 index 0000000..7ef73a9 Binary files /dev/null and b/config/fonts/Symbols-Regular.ttf differ diff --git a/config/fonts/UniSans-Heavy.otf b/config/fonts/UniSans-Heavy.otf new file mode 100644 index 0000000..facd333 Binary files /dev/null and b/config/fonts/UniSans-Heavy.otf differ diff --git a/config/hyprland.nix b/config/hyprland.nix index 3602ae0..0680ec0 100644 --- a/config/hyprland.nix +++ b/config/hyprland.nix @@ -1,11 +1,24 @@ -{ pkgs, config, lib, inputs, host, ... }: +{ + pkgs, + config, + lib, + inputs, + host, + ... +}: let theme = config.colorScheme.palette; hyprplugins = inputs.hyprland-plugins.packages.${pkgs.system}; - inherit (import ../hosts/${host}/variables.nix) - browser borderAnim terminal extraMonitorSettings; -in with lib; { + inherit (import ../hosts/${host}/variables.nix) + browser + borderAnim + terminal + extraMonitorSettings + ; +in +with lib; +{ wayland.windowManager.hyprland = { enable = true; xwayland.enable = true; @@ -13,178 +26,190 @@ in with lib; { plugins = [ # hyprplugins.hyprtrails ]; - extraConfig = let - modifier = "SUPER"; - in concatStrings [ '' - monitor=,preferred,auto,1 - ${extraMonitorSettings} - general { - gaps_in = 6 - gaps_out = 8 - border_size = 2 - col.active_border = rgba(${theme.base0C}ff) rgba(${theme.base0D}ff) rgba(${theme.base0B}ff) rgba(${theme.base0E}ff) 45deg - col.inactive_border = rgba(${theme.base00}cc) rgba(${theme.base01}cc) 45deg - layout = dwindle - resize_on_border = true - } + extraConfig = + let + modifier = "SUPER"; + in + concatStrings [ + '' + monitor=,preferred,auto,1 + ${extraMonitorSettings} + general { + gaps_in = 6 + gaps_out = 8 + border_size = 2 + col.active_border = rgba(${theme.base0C}ff) rgba(${theme.base0D}ff) rgba(${theme.base0B}ff) rgba(${theme.base0E}ff) 45deg + col.inactive_border = rgba(${theme.base00}cc) rgba(${theme.base01}cc) 45deg + layout = dwindle + resize_on_border = true + } - input { - kb_layout = us - kb_options = grp:alt_shift_toggle - kb_options=caps:super - follow_mouse = 1 - touchpad { - natural_scroll = false - } - sensitivity = 0 # -1.0 - 1.0, 0 means no modification. - accel_profile = flat - } - env = NIXOS_OZONE_WL, 1 - env = NIXPKGS_ALLOW_UNFREE, 1 - env = XDG_CURRENT_DESKTOP, Hyprland - env = XDG_SESSION_TYPE, wayland - env = XDG_SESSION_DESKTOP, Hyprland - env = GDK_BACKEND, wayland - env = CLUTTER_BACKEND, wayland - env = QT_QPA_PLATFORM, wayland - env = QT_WAYLAND_DISABLE_WINDOWDECORATION, 1 - env = QT_AUTO_SCREEN_SCALE_FACTOR, 1 - env = MOZ_ENABLE_WAYLAND, 1 - gestures { - workspace_swipe = true - workspace_swipe_fingers = 3 - } - misc { - mouse_move_enables_dpms = true - key_press_enables_dpms = false - } - animations { - enabled = yes - bezier = wind, 0.05, 0.9, 0.1, 1.05 - bezier = winIn, 0.1, 1.1, 0.1, 1.1 - bezier = winOut, 0.3, -0.3, 0, 1 - bezier = liner, 1, 1, 1, 1 - animation = windows, 1, 6, wind, slide - animation = windowsIn, 1, 6, winIn, slide - animation = windowsOut, 1, 5, winOut, slide - animation = windowsMove, 1, 5, wind, slide - animation = border, 1, 1, liner - ${if borderAnim == true then '' - animation = borderangle, 1, 30, liner, loop - '' else '' - ''} - animation = fade, 1, 10, default - animation = workspaces, 1, 5, wind - } - decoration { - rounding = 10 - drop_shadow = false - blur { - enabled = true - size = 5 - passes = 3 - new_optimizations = on - ignore_opacity = on - } - } - plugin { - hyprtrails { - color = rgba(${theme.base0A}ff) - } - } - exec-once = dbus-update-activation-environment --systemd --all - exec-once = systemctl --user import-environment QT_QPA_PLATFORMTHEME WAYLAND_DISPLAY XDG_CURRENT_DESKTOP - exec-once = swww init - exec-once = waybar - exec-once = swaync - exec-once = wallsetter - exec-once = nm-applet --indicator - dwindle { - pseudotile = true - preserve_split = true - } - master { - new_is_master = true - } - bind = ${modifier},Return,exec,${terminal} - bind = ${modifier}SHIFT,Return,exec,rofi-launcher - bind = ${modifier}SHIFT,W,exec,web-search - bind = ${modifier}SHIFT,N,exec,swaync-client -rs - ${if browser == "google-chrome" then '' - bind = ${modifier},W,exec,google-chrome-stable - '' else '' - bind = ${modifier},W,exec,${browser} - ''} - bind = ${modifier},E,exec,emopicker9000 - bind = ${modifier},S,exec,screenshootin - bind = ${modifier},D,exec,discord - bind = ${modifier},O,exec,obs - bind = ${modifier},G,exec,gimp - bind = ${modifier}SHIFT,G,exec,godot4 - bind = ${modifier},T,exec,thunar - bind = ${modifier},M,exec,spotify - bind = ${modifier},Q,killactive, - bind = ${modifier},P,pseudo, - bind = ${modifier}SHIFT,I,togglesplit, - bind = ${modifier},F,fullscreen, - bind = ${modifier}SHIFT,F,togglefloating, - bind = ${modifier}SHIFT,C,exit, - bind = ${modifier}SHIFT,left,movewindow,l - bind = ${modifier}SHIFT,right,movewindow,r - bind = ${modifier}SHIFT,up,movewindow,u - bind = ${modifier}SHIFT,down,movewindow,d - bind = ${modifier}SHIFT,h,movewindow,l - bind = ${modifier}SHIFT,l,movewindow,r - bind = ${modifier}SHIFT,k,movewindow,u - bind = ${modifier}SHIFT,j,movewindow,d - bind = ${modifier},left,movefocus,l - bind = ${modifier},right,movefocus,r - bind = ${modifier},up,movefocus,u - bind = ${modifier},down,movefocus,d - bind = ${modifier},h,movefocus,l - bind = ${modifier},l,movefocus,r - bind = ${modifier},k,movefocus,u - bind = ${modifier},j,movefocus,d - bind = ${modifier},1,workspace,1 - bind = ${modifier},2,workspace,2 - bind = ${modifier},3,workspace,3 - bind = ${modifier},4,workspace,4 - bind = ${modifier},5,workspace,5 - bind = ${modifier},6,workspace,6 - bind = ${modifier},7,workspace,7 - bind = ${modifier},8,workspace,8 - bind = ${modifier},9,workspace,9 - bind = ${modifier},0,workspace,10 - bind = ${modifier}SHIFT,SPACE,movetoworkspace,special - bind = ${modifier},SPACE,togglespecialworkspace - bind = ${modifier}SHIFT,1,movetoworkspace,1 - bind = ${modifier}SHIFT,2,movetoworkspace,2 - bind = ${modifier}SHIFT,3,movetoworkspace,3 - bind = ${modifier}SHIFT,4,movetoworkspace,4 - bind = ${modifier}SHIFT,5,movetoworkspace,5 - bind = ${modifier}SHIFT,6,movetoworkspace,6 - bind = ${modifier}SHIFT,7,movetoworkspace,7 - bind = ${modifier}SHIFT,8,movetoworkspace,8 - bind = ${modifier}SHIFT,9,movetoworkspace,9 - bind = ${modifier}SHIFT,0,movetoworkspace,10 - bind = ${modifier}CONTROL,right,workspace,e+1 - bind = ${modifier}CONTROL,left,workspace,e-1 - bind = ${modifier},mouse_down,workspace, e+1 - bind = ${modifier},mouse_up,workspace, e-1 - bindm = ${modifier},mouse:272,movewindow - bindm = ${modifier},mouse:273,resizewindow - bind = ALT,Tab,cyclenext - bind = ALT,Tab,bringactivetotop - bind = ,XF86AudioRaiseVolume,exec,wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+ - bind = ,XF86AudioLowerVolume,exec,wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%- - binde = ,XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle - bind = ,XF86AudioPlay, exec, playerctl play-pause - bind = ,XF86AudioPause, exec, playerctl play-pause - bind = ,XF86AudioNext, exec, playerctl next - bind = ,XF86AudioPrev, exec, playerctl previous - bind = ,XF86MonBrightnessDown,exec,brightnessctl set 5%- - bind = ,XF86MonBrightnessUp,exec,brightnessctl set +5% - '' ]; + input { + kb_layout = us + kb_options = grp:alt_shift_toggle + kb_options=caps:super + follow_mouse = 1 + touchpad { + natural_scroll = false + } + sensitivity = 0 # -1.0 - 1.0, 0 means no modification. + accel_profile = flat + } + env = NIXOS_OZONE_WL, 1 + env = NIXPKGS_ALLOW_UNFREE, 1 + env = XDG_CURRENT_DESKTOP, Hyprland + env = XDG_SESSION_TYPE, wayland + env = XDG_SESSION_DESKTOP, Hyprland + env = GDK_BACKEND, wayland + env = CLUTTER_BACKEND, wayland + env = QT_QPA_PLATFORM, wayland + env = QT_WAYLAND_DISABLE_WINDOWDECORATION, 1 + env = QT_AUTO_SCREEN_SCALE_FACTOR, 1 + env = MOZ_ENABLE_WAYLAND, 1 + gestures { + workspace_swipe = true + workspace_swipe_fingers = 3 + } + misc { + mouse_move_enables_dpms = true + key_press_enables_dpms = false + } + animations { + enabled = yes + bezier = wind, 0.05, 0.9, 0.1, 1.05 + bezier = winIn, 0.1, 1.1, 0.1, 1.1 + bezier = winOut, 0.3, -0.3, 0, 1 + bezier = liner, 1, 1, 1, 1 + animation = windows, 1, 6, wind, slide + animation = windowsIn, 1, 6, winIn, slide + animation = windowsOut, 1, 5, winOut, slide + animation = windowsMove, 1, 5, wind, slide + animation = border, 1, 1, liner + ${ + if borderAnim == true then + '' + animation = borderangle, 1, 30, liner, loop + '' + else + '''' + } + animation = fade, 1, 10, default + animation = workspaces, 1, 5, wind + } + decoration { + rounding = 10 + drop_shadow = false + blur { + enabled = true + size = 5 + passes = 3 + new_optimizations = on + ignore_opacity = on + } + } + plugin { + hyprtrails { + color = rgba(${theme.base0A}ff) + } + } + exec-once = dbus-update-activation-environment --systemd --all + exec-once = systemctl --user import-environment QT_QPA_PLATFORMTHEME WAYLAND_DISPLAY XDG_CURRENT_DESKTOP + exec-once = swww init + exec-once = waybar + exec-once = swaync + exec-once = nm-applet --indicator + exec-once = lxqt-policykit-agent + dwindle { + pseudotile = true + preserve_split = true + } + master { + new_is_master = true + } + bind = ${modifier},Return,exec,${terminal} + bind = ${modifier}SHIFT,Return,exec,rofi-launcher + bind = ${modifier}SHIFT,W,exec,web-search + bind = ${modifier}SHIFT,N,exec,swaync-client -rs + ${ + if browser == "google-chrome" then + '' + bind = ${modifier},W,exec,google-chrome-stable + '' + else + '' + bind = ${modifier},W,exec,${browser} + '' + } + bind = ${modifier},E,exec,emopicker9000 + bind = ${modifier},S,exec,screenshootin + bind = ${modifier},D,exec,discord + bind = ${modifier},O,exec,obs + bind = ${modifier},G,exec,gimp + bind = ${modifier}SHIFT,G,exec,godot4 + bind = ${modifier},T,exec,thunar + bind = ${modifier},M,exec,spotify + bind = ${modifier},Q,killactive, + bind = ${modifier},P,pseudo, + bind = ${modifier}SHIFT,I,togglesplit, + bind = ${modifier},F,fullscreen, + bind = ${modifier}SHIFT,F,togglefloating, + bind = ${modifier}SHIFT,C,exit, + bind = ${modifier}SHIFT,left,movewindow,l + bind = ${modifier}SHIFT,right,movewindow,r + bind = ${modifier}SHIFT,up,movewindow,u + bind = ${modifier}SHIFT,down,movewindow,d + bind = ${modifier}SHIFT,h,movewindow,l + bind = ${modifier}SHIFT,l,movewindow,r + bind = ${modifier}SHIFT,k,movewindow,u + bind = ${modifier}SHIFT,j,movewindow,d + bind = ${modifier},left,movefocus,l + bind = ${modifier},right,movefocus,r + bind = ${modifier},up,movefocus,u + bind = ${modifier},down,movefocus,d + bind = ${modifier},h,movefocus,l + bind = ${modifier},l,movefocus,r + bind = ${modifier},k,movefocus,u + bind = ${modifier},j,movefocus,d + bind = ${modifier},1,workspace,1 + bind = ${modifier},2,workspace,2 + bind = ${modifier},3,workspace,3 + bind = ${modifier},4,workspace,4 + bind = ${modifier},5,workspace,5 + bind = ${modifier},6,workspace,6 + bind = ${modifier},7,workspace,7 + bind = ${modifier},8,workspace,8 + bind = ${modifier},9,workspace,9 + bind = ${modifier},0,workspace,10 + bind = ${modifier}SHIFT,SPACE,movetoworkspace,special + bind = ${modifier},SPACE,togglespecialworkspace + bind = ${modifier}SHIFT,1,movetoworkspace,1 + bind = ${modifier}SHIFT,2,movetoworkspace,2 + bind = ${modifier}SHIFT,3,movetoworkspace,3 + bind = ${modifier}SHIFT,4,movetoworkspace,4 + bind = ${modifier}SHIFT,5,movetoworkspace,5 + bind = ${modifier}SHIFT,6,movetoworkspace,6 + bind = ${modifier}SHIFT,7,movetoworkspace,7 + bind = ${modifier}SHIFT,8,movetoworkspace,8 + bind = ${modifier}SHIFT,9,movetoworkspace,9 + bind = ${modifier}SHIFT,0,movetoworkspace,10 + bind = ${modifier}CONTROL,right,workspace,e+1 + bind = ${modifier}CONTROL,left,workspace,e-1 + bind = ${modifier},mouse_down,workspace, e+1 + bind = ${modifier},mouse_up,workspace, e-1 + bindm = ${modifier},mouse:272,movewindow + bindm = ${modifier},mouse:273,resizewindow + bind = ALT,Tab,cyclenext + bind = ALT,Tab,bringactivetotop + bind = ,XF86AudioRaiseVolume,exec,wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+ + bind = ,XF86AudioLowerVolume,exec,wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%- + binde = ,XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle + bind = ,XF86AudioPlay, exec, playerctl play-pause + bind = ,XF86AudioPause, exec, playerctl play-pause + bind = ,XF86AudioNext, exec, playerctl next + bind = ,XF86AudioPrev, exec, playerctl previous + bind = ,XF86MonBrightnessDown,exec,brightnessctl set 5%- + bind = ,XF86MonBrightnessUp,exec,brightnessctl set +5% + '' + ]; }; } - diff --git a/config/wallpapers/zaney-wallpaper.jpg b/config/wallpapers/zaney-wallpaper.jpg new file mode 100644 index 0000000..b1f40db Binary files /dev/null and b/config/wallpapers/zaney-wallpaper.jpg differ diff --git a/config/waybar.nix b/config/waybar.nix new file mode 100644 index 0000000..13a19c8 --- /dev/null +++ b/config/waybar.nix @@ -0,0 +1,384 @@ +{ + pkgs, + config, + lib, + host, + ... +}: + +let + palette = config.colorScheme.palette; + betterTransition = "all 0.3s cubic-bezier(.55,-0.68,.48,1.682)"; + inherit (import ../hosts/${host}/variables.nix) clock24h; +in +with lib; +{ + # Configure & Theme Waybar + programs.waybar = { + enable = true; + package = pkgs.waybar; + settings = [ + { + layer = "top"; + position = "top"; + modules-center = [ "hyprland/workspaces" ]; + modules-left = [ + "custom/startmenu" + "hyprland/window" + "pulseaudio" + "cpu" + "memory" + ]; + modules-right = [ + "custom/hyprbindings" + "custom/exit" + "idle_inhibitor" + "custom/themeselector" + "custom/notification" + "battery" + "clock" + "tray" + ]; + + "hyprland/workspaces" = { + format = "{name}"; + format-icons = { + default = " "; + active = " "; + urgent = " "; + }; + on-scroll-up = "hyprctl dispatch workspace e+1"; + on-scroll-down = "hyprctl dispatch workspace e-1"; + }; + "clock" = { + format = if clock24h == true then '' {:L%H:%M}'' else '' {:L%I:%M %p}''; + tooltip = true; + tooltip-format = "{:%A, %d.%B %Y }
{calendar}
"; + }; + "hyprland/window" = { + max-length = 25; + separate-outputs = false; + rewrite = { + "" = " 🙈 No Windows? "; + }; + }; + "memory" = { + interval = 5; + format = " {}%"; + tooltip = true; + }; + "cpu" = { + interval = 5; + format = " {usage:2}%"; + tooltip = true; + }; + "disk" = { + format = " {free}"; + tooltip = true; + }; + "network" = { + format-icons = [ + "󰤯" + "󰤟" + "󰤢" + "󰤥" + "󰤨" + ]; + format-ethernet = " {bandwidthDownOctets}"; + format-wifi = "{icon} {signalStrength}%"; + format-disconnected = "󰤮"; + tooltip = false; + }; + "tray" = { + spacing = 12; + }; + "pulseaudio" = { + format = "{icon} {volume}% {format_source}"; + format-bluetooth = "{volume}% {icon} {format_source}"; + format-bluetooth-muted = " {icon} {format_source}"; + format-muted = " {format_source}"; + format-source = " {volume}%"; + format-source-muted = ""; + format-icons = { + headphone = ""; + hands-free = ""; + headset = ""; + phone = ""; + portable = ""; + car = ""; + default = [ + "" + "" + "" + ]; + }; + on-click = "sleep 0.1 && pavucontrol"; + }; + "custom/themeselector" = { + tooltip = false; + format = ""; + on-click = "sleep 0.1 && theme-selector"; + }; + "custom/exit" = { + tooltip = false; + format = ""; + on-click = "sleep 0.1 && wlogout"; + }; + "custom/startmenu" = { + tooltip = false; + format = " "; + # exec = "rofi -show drun"; + on-click = "sleep 0.1 && rofi-launcher"; + }; + "custom/hyprbindings" = { + tooltip = false; + format = " Bindings"; + on-click = "sleep 0.1 && list-hypr-bindings"; + }; + "idle_inhibitor" = { + format = "{icon}"; + format-icons = { + activated = ""; + deactivated = ""; + }; + tooltip = "true"; + }; + "custom/notification" = { + tooltip = false; + format = "{icon} {}"; + format-icons = { + notification = ""; + none = ""; + dnd-notification = ""; + dnd-none = ""; + inhibited-notification = ""; + inhibited-none = ""; + dnd-inhibited-notification = ""; + dnd-inhibited-none = ""; + }; + return-type = "json"; + exec-if = "which swaync-client"; + exec = "swaync-client -swb"; + on-click = "sleep 0.1 && task-waybar"; + escape = true; + }; + "battery" = { + states = { + warning = 30; + critical = 15; + }; + format = "{icon} {capacity}%"; + format-charging = "󰂄 {capacity}%"; + format-plugged = "󱘖 {capacity}%"; + format-icons = [ + "󰁺" + "󰁻" + "󰁼" + "󰁽" + "󰁾" + "󰁿" + "󰂀" + "󰂁" + "󰂂" + "󰁹" + ]; + on-click = ""; + tooltip = false; + }; + } + ]; + style = concatStrings [ + '' + * { + font-size: 16px; + font-family: JetBrainsMono Nerd Font, Font Awesome, sans-serif; + font-weight: bold; + } + window#waybar { + background-color: #${palette.base00}; + border-bottom: 1px solid rgba(26,27,38,0); + border-radius: 0px; + color: #${palette.base0F}; + } + #workspaces { + background: #${palette.base01}; + margin: 2px; + padding: 0px 1px; + border-radius: 15px; + border: 0px; + font-style: normal; + color: #${palette.base00}; + } + #workspaces button { + padding: 0px 5px; + margin: 4px 3px; + border-radius: 10px; + border: 0px; + color: #${palette.base00}; + background: linear-gradient(45deg, #${palette.base0E}, #${palette.base0F}, #${palette.base0D}, #${palette.base09}); + background-size: 300% 300%; + animation: gradient_horizontal 15s ease infinite; + opacity: 0.5; + transition: ${betterTransition}; + } + #workspaces button.active { + padding: 0px 5px; + margin: 4px 3px; + border-radius: 10px; + border: 0px; + color: #${palette.base00}; + background: linear-gradient(45deg, #${palette.base0E}, #${palette.base0F}, #${palette.base0D}, #${palette.base09}); + background-size: 300% 300%; + animation: gradient_horizontal 15s ease infinite; + transition: ${betterTransition}; + opacity: 1.0; + min-width: 40px; + } + #workspaces button:hover { + border-radius: 10px; + color: #${palette.base00}; + background: linear-gradient(45deg, #${palette.base0E}, #${palette.base0F}, #${palette.base0D}, #${palette.base09}); + background-size: 300% 300%; + animation: gradient_horizontal 15s ease infinite; + opacity: 0.8; + transition: ${betterTransition}; + } + @keyframes gradient_horizontal { + 0% { + background-position: 0% 50%; + } + 50% { + background-position: 100% 50%; + } + 100% { + background-position: 0% 50%; + } + } + @keyframes swiping { + 0% { + background-position: 0% 200%; + } + 100% { + background-position: 200% 200%; + } + } + tooltip { + background: #${palette.base00}; + border: 1px solid #${palette.base0E}; + border-radius: 10px; + } + tooltip label { + color: #${palette.base07}; + } + #window { + margin: 4px; + padding: 2px 10px; + color: #${palette.base05}; + background: #${palette.base01}; + border-radius: 10px; + } + #memory { + color: #${palette.base0F}; + background: #${palette.base01}; + margin: 4px; + padding: 2px 10px; + border-radius: 10px; + } + #clock { + color: #${palette.base01}; + background: linear-gradient(45deg, #${palette.base0C}, #${palette.base0F}, #${palette.base0B}, #${palette.base08}); + background-size: 300% 300%; + animation: gradient_horizontal 15s ease infinite; + margin: 4px; + padding: 2px 10px; + border-radius: 10px; + } + #cpu { + color: #${palette.base07}; + background: #${palette.base01}; + margin: 4px; + padding: 2px 10px; + border-radius: 10px; + } + #disk { + color: #${palette.base03}; + background: #${palette.base01}; + margin: 4px; + padding: 2px 10px; + border-radius: 10px; + } + #battery { + color: #${palette.base08}; + background: #${palette.base01}; + margin: 4px; + padding: 2px 10px; + border-radius: 10px; + } + #network { + color: #${palette.base09}; + background: #${palette.base01}; + margin: 4px; + padding: 2px 10px; + border-radius: 10px; + } + #custom-hyprbindings { + color: #${palette.base0E}; + background: #${palette.base01}; + margin: 4px; + padding: 2px 10px; + border-radius: 10px; + } + #tray { + color: #${palette.base05}; + background: #${palette.base01}; + margin: 4px; + padding: 2px 10px; + border-radius: 10px; + } + #pulseaudio { + color: #${palette.base0D}; + background: #${palette.base01}; + margin: 4px; + padding: 2px 10px; + border-radius: 10px; + } + #custom-notification { + color: #${palette.base0C}; + background: #${palette.base01}; + margin: 4px; + padding: 2px 10px; + border-radius: 10px; + } + #custom-themeselector { + color: #${palette.base0D}; + background: #${palette.base01}; + margin: 4px 0px; + padding: 2px 10px 2px 5px; + border-radius: 0px 10px 10px 0px; + } + #custom-startmenu { + color: #${palette.base00}; + background: linear-gradient(45deg, #${palette.base09}, #${palette.base03}, #${palette.base0C}, #${palette.base07}); + background-size: 300% 300%; + animation: gradient_horizontal 15s ease infinite; + margin: 4px; + padding: 2px 10px; + border-radius: 10px; + } + #idle_inhibitor { + color: #${palette.base09}; + background: #${palette.base01}; + margin: 4px 0px; + padding: 2px 14px; + border-radius: 0px; + } + #custom-exit { + color: #${palette.base0E}; + background: #${palette.base01}; + border-radius: 10px 0px 0px 10px; + margin: 4px 0px; + padding: 2px 5px 2px 15px; + } '' + ]; + }; +} diff --git a/flake.nix b/flake.nix index 61e91f2..c074b7e 100644 --- a/flake.nix +++ b/flake.nix @@ -14,11 +14,7 @@ }; outputs = - inputs@{ - nixpkgs, - home-manager, - ... - }: + inputs@{ nixpkgs, home-manager, ... }: let system = "x86_64-linux"; host = "familypc"; diff --git a/hosts/familypc/config.nix b/hosts/familypc/config.nix index 1d60b38..9275036 100644 --- a/hosts/familypc/config.nix +++ b/hosts/familypc/config.nix @@ -7,6 +7,9 @@ ... }: +let + inherit (import ./variables.nix) browser; +in { imports = [ ./hardware.nix @@ -16,7 +19,9 @@ # Bootloader. boot.loader.systemd-boot.enable = true; boot.loader.efi.canTouchEfiVariables = true; - boot.kernel.sysctl = { "vm.max_map_count" = 2147483642; }; + boot.kernel.sysctl = { + "vm.max_map_count" = 2147483642; + }; boot.tmp.useTmpfs = false; boot.tmp.tmpfsSize = "30%"; @@ -24,8 +29,7 @@ boot.kernelModules = [ "v4l2loopback" ]; boot.extraModulePackages = [ config.boot.kernelPackages.v4l2loopback ]; - networking.hostName = "${host}"; # Define your hostname. - # networking.wireless.enable = true; # Enables wireless support via wpa_supplicant. + networking.hostName = "${host}"; # Configure network proxy if necessary # networking.proxy.default = "http://user:password@proxy:port/"; @@ -66,7 +70,31 @@ pulse.enable = true; }; - programs.firefox.enable = true; + programs = { + hyprland = { + enable = true; + package = inputs.hyprland.packages.${pkgs.system}.hyprland; + xwayland.enable = true; + }; + firefox.enable = true; + dconf.enable = true; + seahorse.enable = true; + fuse.userAllowOther = true; + mtr.enable = true; + gnupg.agent = { + enable = true; + enableSSHSupport = true; + }; + virt-manager.enable = true; + }; + + # Steam Configuration + programs.steam = { + enable = true; + gamescopeSession.enable = true; + remotePlay.openFirewall = true; + dedicatedServer.openFirewall = true; + }; nixpkgs.config.allowUnfree = true; @@ -78,13 +106,74 @@ vim wget git + cmatrix + lolcat + neofetch + htop + btop + libvirt + lxqt.lxqt-policykit + lm_sensors + unzip + unrar + libnotify + eza + v4l-utils + ydotool + wl-clipboard + socat + cowsay + lsd + lshw + pkg-config + meson + hugo + gnumake + ninja + go + nodejs + symbola + noto-fonts-color-emoji + material-icons + brightnessctl + virt-viewer + swappy + ripgrep + appimage-run + networkmanagerapplet + yad + playerctl + nh + nixfmt + discord + libvirt + swww + grim + slurp + gnome.file-roller + swaynotificationcenter + rofi-wayland + imv + transmission-gtk + mpv + gimp + obs-studio + rustup + audacity + pavucontrol + tree + protonup-qt + font-awesome + spotify + swayidle + neovide + (nerdfonts.override { fonts = [ "JetBrainsMono" ]; }) ]; environment.variables = { - ZANEYOS_VERSION="2.0"; + ZANEYOS_VERSION = "2.0"; }; - # List services that you want to enable: # Enable the X11 windowing system. services.xserver = { @@ -103,11 +192,12 @@ nix = { settings = { auto-optimise-store = true; - experimental-features = [ "nix-command" "flakes" ]; - substituters = ["https://hyprland.cachix.org"]; - trusted-public-keys = [ - "hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc=" + experimental-features = [ + "nix-command" + "flakes" ]; + substituters = [ "https://hyprland.cachix.org" ]; + trusted-public-keys = [ "hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc=" ]; }; gc = { automatic = true; @@ -116,6 +206,14 @@ }; }; + virtualisation.libvirtd.enable = true; + + # OpenGL + hardware.opengl = { + enable = true; + driSupport = true; + driSupport32Bit = true; + }; # Open ports in the firewall. # networking.firewall.allowedTCPPorts = [ ... ]; diff --git a/hosts/familypc/home.nix b/hosts/familypc/home.nix index bccc7b6..2f36e71 100644 --- a/hosts/familypc/home.nix +++ b/hosts/familypc/home.nix @@ -36,6 +36,16 @@ in "Xcursor.size" = 24; }; + # Place Files Inside Home Directory + home.file.".config/wallpapers" = { + source = ../../config/wallpapers; + recursive = true; + }; + home.file.".local/share/fonts" = { + source = ../../config/fonts; + recursive = true; + }; + # Install & Configure Git programs.git = { enable = true; @@ -58,38 +68,70 @@ in }; }; - programs.bash = { - enable = true; - enableCompletion = true; - profileExtra = '' - #if [ -z "$DISPLAY" ] && [ "$XDG_VTNR" = 1 ]; then - # exec Hyprland - #fi - ''; - initExtra = '' - neofetch - if [ -f $HOME/.bashrc-personal ]; then - source $HOME/.bashrc-personal - fi - ''; - sessionVariables = { - ZANEYOS = true; + programs = { + bash = { + enable = true; + enableCompletion = true; + profileExtra = '' + #if [ -z "$DISPLAY" ] && [ "$XDG_VTNR" = 1 ]; then + # exec Hyprland + #fi + ''; + initExtra = '' + neofetch + if [ -f $HOME/.bashrc-personal ]; then + source $HOME/.bashrc-personal + fi + ''; + sessionVariables = { + ZANEYOS = true; + }; + shellAliases = { + sv = "sudo nvim"; + flake-rebuild = "nh os switch --hostname ${host}"; + flake-update = "nh os switch --hostname ${host} --update"; + gcCleanup = "nix-collect-garbage --delete-old && sudo nix-collect-garbage -d && sudo /run/current-system/bin/switch-to-configuration boot"; + v = "nvim"; + ls = "lsd"; + ll = "lsd -l"; + la = "lsd -a"; + lal = "lsd -al"; + ".." = "cd .."; + }; }; - shellAliases = { - sv="sudo nvim"; - flake-rebuild="nh os switch --hostname ${host}"; - flake-update="nh os switch --hostname ${host} --update"; - gcCleanup="nix-collect-garbage --delete-old && sudo nix-collect-garbage -d && sudo /run/current-system/bin/switch-to-configuration boot"; - v="nvim"; - ls="lsd"; - ll="lsd -l"; - la="lsd -a"; - lal="lsd -al"; - ".."="cd .."; - neofetch="neofetch --ascii ~/.config/ascii-neofetch"; + home-manager.enable = true; + hyprlock = { + enable = true; + settings = { + general = { + disable_loading_bar = true; + grace = 300; + hide_cursor = true; + no_fade_in = false; + }; + background = [ + { + path = "/home/${username}/.config/wallpapers/zaney-wallpaper.jpg"; + blur_passes = 3; + blur_size = 8; + } + ]; + input-field = [ + { + size = "200, 50"; + position = "0, -80"; + monitor = ""; + dots_center = true; + fade_on_empty = false; + font_color = "rgb(202, 211, 245)"; + inner_color = "rgb(91, 96, 120)"; + outer_color = "rgb(24, 25, 38)"; + outline_thickness = 5; + placeholder_text = "Password..."; + shadow_passes = 2; + } + ]; + }; }; }; - - - programs.home-manager.enable = true; } diff --git a/hosts/familypc/variables.nix b/hosts/familypc/variables.nix index b8c5b05..6646d83 100644 --- a/hosts/familypc/variables.nix +++ b/hosts/familypc/variables.nix @@ -10,8 +10,10 @@ borderAnim = true; # Enable / Disable Hyprland Border Animation extraMonitorSettings = ""; + # Waybar Settings + clock24h = false; + # Program Options browser = "firefox"; # Set Default Browser - terminal = "kitty"; # Set Default System Terminal + terminal = "kitty"; # Set Default System Terminal } -