diff --git a/flake.nix b/flake.nix index c36651e..4b331a0 100644 --- a/flake.nix +++ b/flake.nix @@ -62,6 +62,14 @@ inputs.home-manager.nixosModules.default ]; }; + yveltal = nixpkgs.lib.nixosSystem { + system = systems.x86_64; + specialArgs = {inherit inputs stable_pkgs unstable_pkgs current_system;}; + modules = [ + ./hosts/nixos/yveltal/configuration.nix + inputs.home-manager.nixosModules.default + ]; + }; vaniville = nixpkgs.lib.nixosSystem { system = systems.x86_64; specialArgs = {inherit inputs stable_pkgs unstable_pkgs;}; diff --git a/modules/desktop/hyprland/default.nix b/modules/desktop/hyprland/default.nix new file mode 100644 index 0000000..a2b9a6f --- /dev/null +++ b/modules/desktop/hyprland/default.nix @@ -0,0 +1,15 @@ +{ + pkgs, + lib, + config, + ... +}: { + + # enable hyprland + programs.hyprland.enable = true; + + # hint to election apps wayland is in use + environment.sessionVariables.NIXOS_OZONE_WL = "1"; + + +} diff --git a/users/blake/dots/hyprland/default.nix b/users/blake/dots/hyprland/default.nix index f788c45..e8046e0 100644 --- a/users/blake/dots/hyprland/default.nix +++ b/users/blake/dots/hyprland/default.nix @@ -3,14 +3,24 @@ config, ... }: { - home.packages = with pkgs; []; + home.packages = with pkgs; [nwg-displays]; - wayland.windowManager.hyprland = if pkgs.system == "x86_64-darwin" then {} else { + wayland.windowManager.hyprland = { enable = true; + systemd.variables = ["--all"]; }; - # - home.sessionVariables = if pkgs.system == "x86_64-darwin" then {} else { + home.pointerCursor = { + gtk.enable = true; + # x11.enable = true; + package = pkgs.posy-cursors; + name = "posy"; + size = 48; }; + xdg.configFile."hypr/hyprland.conf" = { + source = config.lib.file.mkOutOfStoreSymlink "/home/blake/.nix/users/blake/dots/hypr/hyprland.conf"; + }; + + } diff --git a/users/blake/dots/hyprland/hypridle.conf b/users/blake/dots/hyprland/hypridle.conf new file mode 100644 index 0000000..f0ebb71 --- /dev/null +++ b/users/blake/dots/hyprland/hypridle.conf @@ -0,0 +1,40 @@ +# --- general settings --- +general { + lock_cmd = pidof hyprlock || hyprlock # avoid starting multiple hyprlock instances. + before_sleep_cmd = loginctl lock-session # lock before suspend. + after_sleep_cmd = hyprctl dispatch dpms on # to avoid having to press a key twice to turn on the display. +} + +# --- dim screen --- +listener { + timeout = 150 # 2.5min. + on-timeout = brightnessctl -s set 1 # set monitor backlight to minimum, avoid 0 on OLED monitor. + on-resume = brightnessctl -r # monitor backlight restore. +} + +# --- blank screen --- +listener { + timeout = 330 # 5.5min + on-timeout = hyprctl dispatch dpms off # screen off when timeout has passed + on-resume = hyprctl dispatch dpms on # screen on when activity is detected after timeout has fired. +} + +# --- lock screen --- +listener { + timeout = 900 # 15min + on-timeout = loginctl lock-session # lock screen when timeout has passed +} + +# --- suspend timeout --- +listener { + timeout = 1800 # 30min + on-timeout = systemctl suspend # suspend pc +} + +# turn off keyboard backlight, comment out this section if you dont have a keyboard backlight. +#listener { +# timeout = 150 # 2.5min. +# on-timeout = brightnessctl -sd rgb:kbd_backlight set 0 # turn off keyboard backlight. +# on-resume = brightnessctl -rd rgb:kbd_backlight # turn on keyboard backlight. +#} + diff --git a/users/blake/dots/hyprland/hyprland.conf b/users/blake/dots/hyprland/hyprland.conf new file mode 100644 index 0000000..42c70f8 --- /dev/null +++ b/users/blake/dots/hyprland/hyprland.conf @@ -0,0 +1,279 @@ +# blake's hyprland config + +# Please note not all available settings / options are set here. +# For a full list, see the wiki ; ) + +# --- displays --- + +# See https://wiki.hyprland.org/Configuring/Monitors/ +# currently being managed by nwg-displays +source = ~/.config/hypr/monitors.conf +#monitor = eDP-1,preferred,0x0,1 +#monitor = HDMI-A-1,3840x2160@60,auto-left,1.5 +#monitor = HDMI-A-1,3840x2160@60,-2560x0,1.5 +#monitor = DP-6,1920x1080@120,auto,1 +#monitor = HDMI-A-1,referred,0x-1080,1 + +# workspaces +# currently being managed by nwg-displays +source = ~/.config/hypr/workspaces.conf +#workspace = 1, monitor:eDP-1 +#workspace = 2, monitor:desc:Philips Consumer Electronics Company PHL 278E1 0x0000032B + +# --- auto-launch --- +exec-once = hyprpaper +exec-once = waybar +exec-once = dunst +exec-once = hypridle +exec-once = wl-paste --type text --watch cliphist store #clipboard history text data +exec-once = wl-paste --type image --watch cliphist store #clipboard history image data +exec-once = /usr/lib/polkit-kde-authentication-agent-1 + +# --- settings --- + +# Source a file (multi-file configs) +# source = ~/.config/hypr/myColors.conf + +# Set programs that you use +$terminal = kitty +$fileManager = lf +$menu = tofi-drun --drun-launch=true --prompt-text="launch:" +$browser = firefox + + +# --- enviroment variables --- + +# sharp text in firefox +env = MOZ_ENABLE_WAYLAND,1 + +# xdg info +env = XDG_CURRENT_DESKTOP,Hyprland +env = XDG_SESSION_TYPE,wayland +env = XDG_SESSION_DESKTOP,Hyprland + +# cursors +env = HYPRCURSOR_THEME,posy-hypr +env = HYPRCURSOR_SIZE,48 +env = XCURSOR_THEME,posy +env = XCURSOR_SIZE,48 + +# themes +env = GTK_THEME,gradient-dark-gtk +env = QT_QPA_PLATFORMTHEME,qt6ct # change to qt6ct if you have that +env = QT_STYLE_OVERRIDE,gtk2 + +# For all categories, see https://wiki.hyprland.org/Configuring/Variables/ +input { + kb_layout = us + kb_variant = + kb_model = + kb_options = + kb_rules = + numlock_by_default = true + + follow_mouse = 2 + sensitivity = 0 # -1.0 - 1.0, 0 means no modification. + + touchpad { + disable_while_typing = yes + natural_scroll = yes + clickfinger_behavior = yes + tap-to-click = yes + } + +} + +general { + # See https://wiki.hyprland.org/Configuring/Variables/ for more + + gaps_in = 2 + gaps_out = 5 + border_size = 3 + col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg + col.inactive_border = rgba(595959aa) + + layout = dwindle + + # Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on + allow_tearing = false + + # disables cursor warping to focused window + +} + +decoration { + # See https://wiki.hyprland.org/Configuring/Variables/ for more + + rounding = 3 + + blur { + enabled = true + size = 3 + passes = 1 + } + +# drop_shadow = yes +# shadow_range = 4 +# shadow_render_power = 3 +# col.shadow = rgba(1a1a1aee) +} + +animations { + enabled = yes + + # Some default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more + + bezier = myBezier, 0.05, 0.9, 0.1, 1.05 + + animation = windows, 1, 7, myBezier + animation = windowsOut, 1, 7, default, popin 80% + animation = border, 1, 10, default + animation = borderangle, 1, 8, default + animation = fade, 1, 7, default + animation = workspaces, 1, 6, default +} + +dwindle { + # See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more + pseudotile = yes # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below + preserve_split = yes # you probably want this +} + +master { + # See https://wiki.hyprland.org/Configuring/Master-Layout/ for more +# new_is_master = true +} + +gestures { + # See https://wiki.hyprland.org/Configuring/Variables/ for more + workspace_swipe = on +} + +misc { + # See https://wiki.hyprland.org/Configuring/Variables/ for more + force_default_wallpaper = -1 # Set to 0 to disable the anime mascot wallpapers + disable_hyprland_logo = true + disable_splash_rendering = true + focus_on_activate = true +} + +# --- window rules --- +windowrulev2 = float,class:(kitty),title:(pulsemixer) +#windowrulev2 = float,center,size 30%,class:(kitty),title:(bluetuith) + + +# floating audio controls + +#windowrulev2 = float,class:(kitty),title:(pulsemixer) +#windowrulev2 = center,class:(kitty),title:(pulsemixer) +#windowrulev2 = size 80%,class:(kitty),title:(pulsemixer) + +# floating network controls +#windowrulev2 = float,class:floating +#windowrulev2 = float,class:(kitty),title:(nmtui) +#windowrulev2 = size 100 100,class:(kitty),title:(nmtui) +#windowrulev2 = center,class:(kitty),title:(nmtui) + +# floating bluetooth controls +#windowrulev2 = float,class:(kitty),title:(bluetuith) +#windowrulev2 = size 70%,class:(kitty),title:(bluetuith) +#windowrulev2 = center,class:(kitty),title:(bluetuith) + + +# --- bindings --- + +# See https://wiki.hyprland.org/Configuring/Keywords/ for more +$mainMod = SUPER + + +# system +bind = $mainMod, Q, exec, loginctl lock-session + +# programs +bind = $mainMod, Return, exec, $terminal +bind = $mainMod, E, exec, kitty $fileManager +bind = $mainMod, R, exec, $menu +bind = $mainMod, B, exec, $browser +bind = $mainMod, K, exec, hyprpicker --autocopy --format=hex +bind = $mainMod, T, exec, cliphist list | tofi | cliphist decode | wl-copy # clipboard history + +# screenshots +bind = , print, exec, hyprshot --mode region --output-folder ~/pictures/screenshots # region capture +bind = $mainMod, print, exec, hyprshot --mode window --output-folder ~/pictures/screenshots # window capture +bind = shift, print, exec, hyprshot --mode output --output-folder ~/pictures/screenshots # monitor capture + +# multimedia +bind = , XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle +bind = , XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%- +bind = , XF86AudioRaiseVolume, exec, wpctl set-volume -l 1.5 @DEFAULT_AUDIO_SINK@ 5%+ +bind = , XF86AudioPlay, exec, playerctl play-pause + +# brightness +bind = , XF86MonBrightnessUp, exec, brightnessctl set +10% +bind = , XF86MonBrightnessDown, exec, brightnessctl set 10%- --min-value + +# scratch pad +bind = $mainMod, S, togglespecialworkspace, magic +bind = $mainMod SHIFT, S, movetoworkspace, special:magic + +# general window management (https://wiki.hyprland.org/Configuring/Binds/ for more) +bind = $mainMod, C, killactive +bind = $mainMod SHIFT, M, exit +bind = $mainMod, V, togglefloating +bind = $mainMod, F, fullscreen, 1 # maximize +bind = $mainMod SHIFT, F, fullscreen, 0 # full screen proper +bind = $mainMod, P, pseudo # dwindle +bind = $mainMod, J, togglesplit # dwindle + +# window switching +bind = $mainMod, tab, cyclenext +bind = $mainMod, left, movefocus, l +bind = $mainMod, right, movefocus, r +bind = $mainMod, up, movefocus, u +bind = $mainMod, down, movefocus, d + +# window moving +bind = $mainMod SHIFT, left, swapwindow, l +bind = $mainMod SHIFT, right, swapwindow, r +bind = $mainMod SHIFT, up, swapwindow, u +bind = $mainMod SHIFT, down, swapwindow, d + +# window resizing X Y +bind = $mainMod CTRL, left, resizeactive, -60 0 +bind = $mainMod CTRL, right, resizeactive, 60 0 +bind = $mainMod CTRL, up, resizeactive, 0 -60 +bind = $mainMod CTRL, down, resizeactive, 0 60 + +# workspace switching +bind = $mainMod, mouse_down, workspace, e+1 +bind = $mainMod, mouse_up, workspace, e-1 +bind = $mainMod, 1, workspace, 1 +bind = $mainMod, 2, workspace, 2 +bind = $mainMod, 3, workspace, 3 +bind = $mainMod, 4, workspace, 4 +bind = $mainMod, 5, workspace, 5 +bind = $mainMod, 6, workspace, 6 +bind = $mainMod, 7, workspace, 7 +bind = $mainMod, 8, workspace, 8 +bind = $mainMod, 9, workspace, 9 +bind = $mainMod, 0, workspace, 10 + +# window workspace moving +bind = $mainMod SHIFT, 1, movetoworkspace, 1 +bind = $mainMod SHIFT, 2, movetoworkspace, 2 +bind = $mainMod SHIFT, 3, movetoworkspace, 3 +bind = $mainMod SHIFT, 4, movetoworkspace, 4 +bind = $mainMod SHIFT, 5, movetoworkspace, 5 +bind = $mainMod SHIFT, 6, movetoworkspace, 6 +bind = $mainMod SHIFT, 7, movetoworkspace, 7 +bind = $mainMod SHIFT, 8, movetoworkspace, 8 +bind = $mainMod SHIFT, 9, movetoworkspace, 9 +bind = $mainMod SHIFT, 0, movetoworkspace, 10 + +# window managment with mouse +bindm = $mainMod, mouse:272, movewindow +bindm = $mainMod, mouse:273, resizewindow + +# waybar +bind = $mainMod, N, exec, pkill -SIGUSR1 waybar # hide waybar +bind = $mainMod SHIFT, N, exec, pkill -SIGUSR2 waybar # reload waybar diff --git a/users/blake/dots/hyprland/hyprlock.conf b/users/blake/dots/hyprland/hyprlock.conf new file mode 100644 index 0000000..2bf52fe --- /dev/null +++ b/users/blake/dots/hyprland/hyprlock.conf @@ -0,0 +1,94 @@ +$font = Ubuntu Mono Regular + +# GENERAL +general { + disable_loading_bar = true + hide_cursor = true +} + +# BACKGROUND +background { + monitor = + path = ~/pictures/wallpapers/antartica.png + blur_passes = 1 + color = rgb(0047ab) +} + +# TIME +label { + monitor = + text = cmd[update:30000] echo "$(date +"%R")" + color = rgb(ffffff) + font_size = 90 + font_family = $font + position = -130, -100 + halign = right + valign = top + shadow_passes = 1 +} + +# DATE +label { + monitor = + text = cmd[update:43200000] echo "$(date +"%Y/%m/%d")" + color = $text + font_size = 25 + font_family = $font + position = -130, -250 + halign = right + valign = top + shadow_passes = 2 +} + +# KEYBOARD LAYOUT +label { + monitor = + text = $LAYOUT + color = rbg(ffffff) + font_size = 20 + font_family = $font + rotate = 0 # degrees, counter-clockwise + + position = -130, -310 + halign = right + valign = top + shadow_passes = 2 +} + +# USER AVATAR +image { + monitor = + path = ~/pictures/pfps/pikacig.png + size = 350 + border_color = rgb(0047ab) + rounding = -1 + + position = 0, 85 + halign = center + valign = center + shadow_passes = 2 +} + +# INPUT FIELD +input-field { + monitor = + size = 400, 70 + outline_thickness = 4 + dots_size = 0.2 + dots_spacing = 0.2 + dots_center = true + outer_color = $accent + inner_color = $surface0 + font_color = $text + fade_on_empty = false + placeholder_text = # 󰌾 Logged in as $USER + hide_input = false + check_color = rgb(0047ab) + fail_color = rgb(ff0000) + fail_text = $FAIL ($ATTEMPTS) + capslock_color = rgb(ff0000) + position = 0, -185 + halign = center + valign = center + shadow_passes = 2 +} diff --git a/users/blake/dots/hyprland/hyprpaper.conf b/users/blake/dots/hyprland/hyprpaper.conf new file mode 100644 index 0000000..3793f9f --- /dev/null +++ b/users/blake/dots/hyprland/hyprpaper.conf @@ -0,0 +1,5 @@ +preload = ~/pictures/wallpapers/antartica.png +# wallpaper = eDP-1,~/pictures/wallpapers/antartica.png +wallpaper = ,~/pictures/wallpapers/antartica.png +ipc = off +splash = false