diff --git a/home/bin/hyprland/cnst/cfg/appearance.nix b/home/bin/hyprland/adam/appearance.nix similarity index 100% rename from home/bin/hyprland/cnst/cfg/appearance.nix rename to home/bin/hyprland/adam/appearance.nix diff --git a/home/bin/hyprland/adam/default.nix b/home/bin/hyprland/adam/default.nix new file mode 100644 index 00000000..b6854ae5 --- /dev/null +++ b/home/bin/hyprland/adam/default.nix @@ -0,0 +1,23 @@ +{inputs, ...}: { + imports = [ + inputs.hyprland.homeManagerModules.default + ./appearance.nix + ./inputs.nix + ./keybinds.nix + ./rules.nix + ./startup.nix + ]; + config = { + wayland.windowManager.hyprland = { + enable = true; + xwayland.enable = true; + systemd = { + variables = ["--all"]; + extraCommands = [ + "systemctl --user stop graphical-session.target" + "systemctl --user start hyprland-session.target" + ]; + }; + }; + }; +} diff --git a/home/bin/hyprland/adam/inputs.nix b/home/bin/hyprland/adam/inputs.nix new file mode 100644 index 00000000..81592b5e --- /dev/null +++ b/home/bin/hyprland/adam/inputs.nix @@ -0,0 +1,75 @@ +{ + wayland.windowManager.hyprland.settings = { + monitor = [ + "DP-3, 2560x1440@143.86, auto, auto" + "eDP-1,1920x1200@60.02,auto,1" + ]; + env = [ + "QT_WAYLAND_DISABLE_WINDOWDECORATION,1" + ]; + + input = { + follow_mouse = 1; + accel_profile = "flat"; + sensitivity = 0; # -1.0 - 1.0, 0 means no modification. + + touchpad = { + natural_scroll = true; + disable_while_typing = true; + clickfinger_behavior = true; + scroll_factor = 0.5; + }; + }; + # Desktop keyboard + device = [ + { + name = "pfu-limited-hhkb-hybrid"; + kb_layout = "hhkbse"; + kb_options = "lv3:rwin_switch"; + } + { + name = "hhkb-hybrid_1-keyboard"; + kb_layout = "hhkbse"; + kb_options = "lv3:rwin_switch"; + } + # Laptop keyboard + { + name = "at-translated-set-2-keyboard"; + kb_layout = "se"; + kb_options = "ctrl:swapcaps"; + } + ]; + gestures = { + workspace_swipe = true; + workspace_swipe_distance = 400; + workspace_swipe_fingers = 3; + workspace_swipe_cancel_ratio = 0.2; + workspace_swipe_min_speed_to_force = 5; + workspace_swipe_direction_lock = true; + workspace_swipe_direction_lock_threshold = 10; + workspace_swipe_create_new = true; + }; + misc = { + vrr = 2; + mouse_move_enables_dpms = 1; + key_press_enables_dpms = 0; + force_default_wallpaper = 0; + disable_hyprland_logo = true; + disable_splash_rendering = true; + disable_autoreload = true; + }; + xwayland = { + force_zero_scaling = false; + }; + render = { + # explicit_sync = 2; + # explicit_sync_kms = 2; + # direct_scanout = false; + }; + # cursor = { + # no_hardware_cursors = true; + # no_break_fs_vrr = true; + # min_refresh_rate = 24; + # }; + }; +} diff --git a/home/bin/hyprland/cnst/cfg/keybinds.nix b/home/bin/hyprland/adam/keybinds.nix similarity index 100% rename from home/bin/hyprland/cnst/cfg/keybinds.nix rename to home/bin/hyprland/adam/keybinds.nix diff --git a/home/bin/hyprland/cnst/cfg/rules.nix b/home/bin/hyprland/adam/rules.nix similarity index 100% rename from home/bin/hyprland/cnst/cfg/rules.nix rename to home/bin/hyprland/adam/rules.nix diff --git a/home/bin/hyprland/cnst/cfg/startup.nix b/home/bin/hyprland/adam/startup.nix similarity index 100% rename from home/bin/hyprland/cnst/cfg/startup.nix rename to home/bin/hyprland/adam/startup.nix diff --git a/home/bin/hyprland/toothpick/cfg/appearance.nix b/home/bin/hyprland/cnst/appearance.nix similarity index 100% rename from home/bin/hyprland/toothpick/cfg/appearance.nix rename to home/bin/hyprland/cnst/appearance.nix diff --git a/home/bin/hyprland/cnst/cfg/default.nix b/home/bin/hyprland/cnst/cfg/default.nix deleted file mode 100644 index b1978c6b..00000000 --- a/home/bin/hyprland/cnst/cfg/default.nix +++ /dev/null @@ -1,9 +0,0 @@ -{ - imports = [ - ./appearance.nix - ./inputs.nix - ./keybinds.nix - ./rules.nix - ./startup.nix - ]; -} diff --git a/home/bin/hyprland/cnst/default.nix b/home/bin/hyprland/cnst/default.nix index f55103ec..b6854ae5 100644 --- a/home/bin/hyprland/cnst/default.nix +++ b/home/bin/hyprland/cnst/default.nix @@ -1,23 +1,23 @@ -{ - inputs, - pkgs, - ... -}: { +{inputs, ...}: { imports = [ inputs.hyprland.homeManagerModules.default - ./cfg + ./appearance.nix + ./inputs.nix + ./keybinds.nix + ./rules.nix + ./startup.nix ]; - - wayland.windowManager.hyprland = { - enable = true; - xwayland.enable = true; - - systemd = { - variables = ["--all"]; - extraCommands = [ - "systemctl --user stop graphical-session.target" - "systemctl --user start hyprland-session.target" - ]; + config = { + wayland.windowManager.hyprland = { + enable = true; + xwayland.enable = true; + systemd = { + variables = ["--all"]; + extraCommands = [ + "systemctl --user stop graphical-session.target" + "systemctl --user start hyprland-session.target" + ]; + }; }; }; } diff --git a/home/bin/hyprland/cnst/cfg/inputs.nix b/home/bin/hyprland/cnst/inputs.nix similarity index 100% rename from home/bin/hyprland/cnst/cfg/inputs.nix rename to home/bin/hyprland/cnst/inputs.nix diff --git a/home/bin/hyprland/cnst/keybinds.nix b/home/bin/hyprland/cnst/keybinds.nix new file mode 100644 index 00000000..9cac4510 --- /dev/null +++ b/home/bin/hyprland/cnst/keybinds.nix @@ -0,0 +1,101 @@ +# KEYBINDS +{ + wayland.windowManager.hyprland.settings = { + "$terminal" = "kitty"; + "$fileManager" = "thunar"; + "$passwordManager" = "keepassxc"; + "$menu" = "pkill anyrun || anyrun | xargs hyprctl dispatch exec --"; + "$menuw" = "pkill anyrun || anyrun | xargs hyprctl dispatch exec --"; + "$browser" = "firefox-nightly"; + "$browserinc" = "firefox-nightly --private-window"; + "$yazi" = "alacritty -e yazi"; + + # See https://wiki.hyprland.org/Configuring/Keywords/ for more + "$mod" = "SUPER"; + + bind = [ + # Custom binds + "$mod SHIFT, B, exec, pkill -SIGUSR2 waybar" # Reload waybar + + # Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more + "$mod, A, exec, pkill -SIGUSR1 waybar" + "$mod, T, exec, $terminal" + "$mod, W, exec, $browser" + "$mod, K, exec, $passwordManager" + "$mod SHIFT, W, exec, $browserinc" + "$mod, Q, killactive," + #bind = $mod, M, exec, hyprctl dispatch exit + #bind = $mod, E, exec, $fileManager + "$mod, E, exec, $fileManager" + "$mod SHIFT, E, exec, $yazi" + "$mod, F, fullscreen," + "$mod SHIFT, F, togglefloating," + "$mod, SPACE, exec, $menu" + "$mod, P, pseudo," # dwindle + "$mod, J, togglesplit," # dwindle + "$mod, C, exec, hyprctl dispatch exec copyq toggle" + "$mod, TAB, exec, $menuw" + + # Move focus with mainMod + arrow keys + "$mod, left, movefocus, l" + "$mod, right, movefocus, r" + "$mod, up, movefocus, u" + "$mod, down, movefocus, d" + + # Switch workspaces with mainMod + [0-9] + "$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" + + # Move active window to a workspace with mainMod + SHIFT + [0-9] + "$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" + + # Laptop controls + ",XF86AudioLowerVolume, exec, pamixer -d 5" + ",XF86AudioRaiseVolume, exec, pamixer -i 5" + ",XF86AudioMute, exec, pamixer -m" + ",XF86AudioMicMute, exec, pactl -- set-source-mute 0 toggle" + ",XF86MonBrightnessDown, exec, brightnessctl s 10%-" + ",XF86MonBrightnessUp, exec, brightnessctl s +10%" + + "$mod, XF86MonBrightnessUp, exec, hyprctl dispatch dpms on" + "$mod, XF86MonBrightnessDown, exec, hyprctl dispatch dpms off" + + # Screenshot a window + "$mod, F10, exec, hyprshot -m window" + # Screenshot a monitor + ", F10, exec, hyprshot -m output" + # Screenshot a region + "$mod SHIFT, F10, exec, hyprshot -m region" + + # Example special workspace (scratchpad) + "$mod, S, togglespecialworkspace, magic" + "$mod SHIFT, S, movetoworkspace, special:magic" + + # Scroll through existing workspaces with mainMod + scroll + # bind = $mod, mouse_down, workspace, e+1 + # bind = $mod, mouse_up, workspace, e-1 + ]; + # Move/resize windows with mainMod + LMB/RMB and dragging + bindm = [ + "$mod, mouse:272, movewindow" + "$mod, mouse:273, resizewindow" + ]; + }; +} diff --git a/home/bin/hyprland/cnst/rules.nix b/home/bin/hyprland/cnst/rules.nix new file mode 100644 index 00000000..1bf709c4 --- /dev/null +++ b/home/bin/hyprland/cnst/rules.nix @@ -0,0 +1,44 @@ +{ + wayland.windowManager.hyprland.settings = { + # CALCURSE SETTINGS + windowrulev2 = [ + "float,initialTitle:(floatcal)" + "size 843 650,initialTitle:(floatcal)" + "move 100%-w-20 40,initialTitle:(floatcal)" + #windowrulev2 = move 1708 32,class:(floatcal) + + # RANGER/NNN SETTINGS + "float,class:(floatranger)" + "float,class:(floatnnn)" + #windowrulev2 = size 843 650,class:(floatranger) + #windowrulev2 = move 1708 32,class:(floatranger) + #windowrulev2 = move 1708 32;size 843 650;dimaround;float,class:^(kitty)$,title:^(kitty)$ + # See https://wiki.hyprland.org/Configuring/Window-Rules/ for more + "suppressevent maximize, class:.* # You'll probably like this." + #windowrulev2 = noshadow, floating:0 + "float,class:^(org.keepassxc.KeePassXC)$" + "center,class:^(org.keepassxc.KeePassXC)$" + "float,class:^(imv)$" + "float,class:^(com.github.hluk.copyq)$" + "float,class:^(blueman-manager)$" + "center,class:^(nwg-look)$" + "float,class:^(nwg-look)$" + "float,class:^(Lxappearance)$" + "float,class:(pavucontrol)$" + "move 100%-w-20 40,class:(pavucontrol)$" + "float,class:^(polkit-gnome-authentication-agent-1)$" + "float,class:^(org.gnome.Calculator)$" + "size 741 585,class:(pavucontrol)$" + "float,class:^(cnst.test)$" + "float,class:^(org.corectrl.CoreCtrl)$" + "float,class:^(feh)$" + "float,class:^(com.example.gtk-adieux)$" + ]; + windowrule = [ + "center, ^(xarchiver)$" + "float, ^(xarchiver)$" + "float, ^(org.gnome.FileRoller)$" + "float, ^(org.freedesktop.impl.portal.desktop.kde)$" + ]; + }; +} diff --git a/home/bin/hyprland/toothpick/cfg/startup.nix b/home/bin/hyprland/cnst/startup.nix similarity index 100% rename from home/bin/hyprland/toothpick/cfg/startup.nix rename to home/bin/hyprland/cnst/startup.nix diff --git a/home/bin/hyprland/default.nix b/home/bin/hyprland/default.nix new file mode 100644 index 00000000..b28d7b8e --- /dev/null +++ b/home/bin/hyprland/default.nix @@ -0,0 +1,51 @@ +{ + lib, + inputs, + config, + ... +}: { + options = { + # Define an option to enable the `cnst` configuration + cnst.enable = lib.mkOption { + type = lib.types.bool; + default = false; + description = "Enable the cnst configuration"; + }; + + # Define an option to enable the `adam` configuration + adam.enable = lib.mkOption { + type = lib.types.bool; + default = false; + description = "Enable the adam configuration"; + }; + + # Define an option to enable the `toothpick` configuration + toothpick.enable = lib.mkOption { + type = lib.types.bool; + default = false; + description = "Enable the toothpick configuration"; + }; + }; + + config = { + # Hyprland configuration shared across all users + wayland.windowManager.hyprland = { + enable = true; + xwayland.enable = true; + + systemd = { + variables = ["--all"]; + extraCommands = [ + "systemctl --user stop graphical-session.target" + "systemctl --user start hyprland-session.target" + ]; + }; + }; + }; + + # Conditionally include configurations based on the enable flags + imports = + lib.optional config.cnst.enable ./cnst + ++ lib.optional config.adam.enable ./adam + ++ lib.optional config.toothpick.enable ./toothpick; +} diff --git a/home/bin/hyprland/toothpick/appearance.nix b/home/bin/hyprland/toothpick/appearance.nix new file mode 100644 index 00000000..00a86bc3 --- /dev/null +++ b/home/bin/hyprland/toothpick/appearance.nix @@ -0,0 +1,48 @@ +{ + wayland.windowManager.hyprland.settings = { + general = { + gaps_in = 2; + gaps_out = 4; + border_size = 3; + #col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg + #col.inactive_border = rgba(595959aa) + "col.active_border" = "rgb(4c7a5d)"; # rgba(b16286ee) 45deg + "col.inactive_border" = "rgb(504945)"; + layout = "dwindle"; + allow_tearing = false; + resize_on_border = true; + }; + decoration = { + rounding = 0; + blur = { + enabled = true; + size = 8; + passes = 1; + vibrancy = 0.1696; + }; + drop_shadow = false; + shadow_range = 4; + shadow_render_power = 3; + # col.shadow = rgba(1a1a1aee) + }; + animations = { + enabled = true; + bezier = [ + "myBezier,0.05, 0.9, 0.1, 1.05" + ]; + animation = [ + "windows, 1, 3, myBezier" + "windowsOut, 1, 3, default, popin 80%" + "border, 1, 3, default" + "borderangle, 1, 8, default" + "fade, 1, 7, default" + "workspaces, 1, 3, default" + ]; + }; + dwindle = { + # See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more + pseudotile = true; # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below + preserve_split = true; # you probably want this + }; + }; +} diff --git a/home/bin/hyprland/toothpick/cfg/default.nix b/home/bin/hyprland/toothpick/cfg/default.nix deleted file mode 100644 index b1978c6b..00000000 --- a/home/bin/hyprland/toothpick/cfg/default.nix +++ /dev/null @@ -1,9 +0,0 @@ -{ - imports = [ - ./appearance.nix - ./inputs.nix - ./keybinds.nix - ./rules.nix - ./startup.nix - ]; -} diff --git a/home/bin/hyprland/toothpick/default.nix b/home/bin/hyprland/toothpick/default.nix index efd35943..b6854ae5 100644 --- a/home/bin/hyprland/toothpick/default.nix +++ b/home/bin/hyprland/toothpick/default.nix @@ -1,17 +1,23 @@ {inputs, ...}: { imports = [ inputs.hyprland.homeManagerModules.default - ./cfg + ./appearance.nix + ./inputs.nix + ./keybinds.nix + ./rules.nix + ./startup.nix ]; - wayland.windowManager.hyprland = { - enable = true; - - systemd = { - variables = ["--all"]; - extraCommands = [ - "systemctl --user stop graphical-session.target" - "systemctl --user start hyprland-session.target" - ]; + config = { + wayland.windowManager.hyprland = { + enable = true; + xwayland.enable = true; + systemd = { + variables = ["--all"]; + extraCommands = [ + "systemctl --user stop graphical-session.target" + "systemctl --user start hyprland-session.target" + ]; + }; }; }; } diff --git a/home/bin/hyprland/toothpick/cfg/inputs.nix b/home/bin/hyprland/toothpick/inputs.nix similarity index 100% rename from home/bin/hyprland/toothpick/cfg/inputs.nix rename to home/bin/hyprland/toothpick/inputs.nix diff --git a/home/bin/hyprland/toothpick/cfg/keybinds.nix b/home/bin/hyprland/toothpick/keybinds.nix similarity index 100% rename from home/bin/hyprland/toothpick/cfg/keybinds.nix rename to home/bin/hyprland/toothpick/keybinds.nix diff --git a/home/bin/hyprland/toothpick/cfg/rules.nix b/home/bin/hyprland/toothpick/rules.nix similarity index 100% rename from home/bin/hyprland/toothpick/cfg/rules.nix rename to home/bin/hyprland/toothpick/rules.nix diff --git a/home/bin/hyprland/toothpick/startup.nix b/home/bin/hyprland/toothpick/startup.nix new file mode 100644 index 00000000..b7105e5f --- /dev/null +++ b/home/bin/hyprland/toothpick/startup.nix @@ -0,0 +1,20 @@ +{ + wayland.windowManager.hyprland.settings = { + exec-once = [ + # STARTUP + # exec-once = systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP + "systemctl --user start polkit-gnome-authentication-agent-1" + # exec-once = lxqt-policykit-agent & + "waybar" + "pamixer --set-volume 50" + "blueman-applet & udiskie -Nt" + "nm-applet --indicator" + "mullvad-vpn" + # exec-once = swaybg -i ~/media/images/wallpaper.png + "wl-clip-persist --clipboard regular --all-mime-type-regex '^(?!x-kde-passwordManagerHint).+'" + # exec-once = hyprctl dispatch exec "sleep 4s && copyq --start-server" + "hyprctl dispatch exec 'sleep 5s && keepassxc'" + "hyprctl dispatch exec 'sleep 3s && solaar -w hide'" + ]; + }; +} diff --git a/home/default.nix b/home/default.nix index 9d54e40f..5ce33f96 100644 --- a/home/default.nix +++ b/home/default.nix @@ -3,46 +3,45 @@ inputs, ... }: let - # get these into the module system + # Get these into the module system extraSpecialArgs = {inherit inputs self;}; + # Define the shared imports + sharedImports = [ + ./opt/browsers/firefox + ./etc + ./bin + ./opt + ./srv + ]; + + # Define homeImports for each profile, including sharedImports homeImports = { - "cnst@cnix" = [ - ./usr/share/git/cnst - ./usr/share/shell/cnst - ./bin/hyprland/cnst - ./opt/browsers/firefox - ./opt/sops - ./etc - ./bin - ./opt - ./srv - ./profiles/cnst - ]; - "adam@adampad" = [ - ./usr/share/git/cnst - ./usr/share/shell/adam - ./etc/hyprland/cnst - ./opt/browsers/firefox - ./opt/sops - ./etc - ./bin - ./opt - ./srv - ./profiles/adam - ]; - "toothpick@toothpc" = [ - ./usr/share/git/toothpick - ./usr/share/shell/toothpick - ./bin/hyprland/toothpick - ./opt/browsers/firefox - ./opt/sops - ./etc - ./bin - ./opt - ./srv - ./profiles/toothpick - ]; + "cnst@cnix" = + sharedImports + ++ [ + ./bin/hyprland/cnst + ./usr/share/shell/cnst + ./usr/share/git/cnst + ./opt/sops + ./profiles/cnst + ]; + "adam@adampad" = + sharedImports + ++ [ + ./bin/hyprland/adam + ./usr/share/shell/adam + ./usr/share/git/cnst + ./profiles/adam + ]; + "toothpick@toothpc" = + sharedImports + ++ [ + ./bin/hyprland/toothpick + ./usr/share/git/toothpick + ./usr/share/shell/toothpick + ./profiles/toothpick + ]; }; inherit (inputs.hm.lib) homeManagerConfiguration;