From d84b2e882dbacf785bd64d31283aa7e59928832b Mon Sep 17 00:00:00 2001 From: DerGrumpf Date: Mon, 25 May 2026 01:31:36 +0200 Subject: [PATCH] WIP: Changed Hyprland from Hyprland to Lua --- flake.lock | 136 ++++++++------- flake.nix | 1 - home/catppuccin.nix | 2 +- home/desktop/hyprland/default.nix | 268 +---------------------------- home/desktop/hyprland/hyprland.lua | 211 +++++++++++++++++++++++ home/neovim/treesitter.nix | 2 +- home/python.nix | 16 +- home/ssh.nix | 25 ++- nixos/default.nix | 8 +- 9 files changed, 315 insertions(+), 354 deletions(-) create mode 100644 home/desktop/hyprland/hyprland.lua diff --git a/flake.lock b/flake.lock index 781fc09..ef87684 100644 --- a/flake.lock +++ b/flake.lock @@ -20,11 +20,11 @@ ] }, "locked": { - "lastModified": 1777499565, - "narHash": "sha256-nU55VWk99Pn1QzQDDjFISocC4SgDZ3Xp+zb6ji3JclM=", + "lastModified": 1778857089, + "narHash": "sha256-TclWRW2SdFeETLaiTG4BA8C8C4m/LppQEldncqyTzAQ=", "owner": "hyprwm", "repo": "aquamarine", - "rev": "813c1e8981893c11e118b19c125d6bc282f51765", + "rev": "ab2b0af63fbc9fb779d684f19149b790978be8a8", "type": "github" }, "original": { @@ -36,16 +36,16 @@ "brew-src": { "flake": false, "locked": { - "lastModified": 1776478798, - "narHash": "sha256-ERStG27tf83VbCfYMxtDSs+sa8FUMJ/3jSu/QfX9rKE=", + "lastModified": 1778427648, + "narHash": "sha256-pt9KaDGsMyYWB9JeHs4XGHs870f1lOZe3vx9LpVIhUE=", "owner": "Homebrew", "repo": "brew", - "rev": "3aae056b8d072624255bc8fd27febb7f327b2265", + "rev": "6f293daa9f9f5832e13b497976335e90509886d7", "type": "github" }, "original": { "owner": "Homebrew", - "ref": "5.1.7", + "ref": "5.1.11", "repo": "brew", "type": "github" } @@ -57,11 +57,11 @@ ] }, "locked": { - "lastModified": 1777734189, - "narHash": "sha256-kbIhdhDPaTP6gxAPkcRYeB+cqPFDpTM/bnw+m+26vkI=", + "lastModified": 1779446167, + "narHash": "sha256-95gfnivOKw+zleITz2OptawwTeSs36Y9u+qeU0xdqT8=", "owner": "catppuccin", "repo": "nix", - "rev": "e68cf5deaf1a7afed2e548835dba2ae99f5a3ccb", + "rev": "229ede9cec873986144e222b2c61c2f239c16125", "type": "github" }, "original": { @@ -77,11 +77,11 @@ ] }, "locked": { - "lastModified": 1777780666, - "narHash": "sha256-8wURyQMdDkGUarSTKOGdCuFfYiwa3HbzwscUfn3STDE=", + "lastModified": 1779036909, + "narHash": "sha256-zXcwYQGCT6pzinK+1dBB2ekTVtfxGZAapb3Evdcu4fY=", "owner": "lnl7", "repo": "nix-darwin", - "rev": "8c62fba0854ba15c8917aed18894dbccb48a3777", + "rev": "56c666e108467d87d13508936aade6d567f2a501", "type": "github" }, "original": { @@ -125,11 +125,11 @@ "nixpkgs-lib": "nixpkgs-lib" }, "locked": { - "lastModified": 1777678872, - "narHash": "sha256-EPIFsulyon7Z1vLQq5Fk64GR8L7cQsT+IPhcsukVbgk=", + "lastModified": 1778716662, + "narHash": "sha256-m1Yf0wZ8j1OHjTc2UwHwyQRSnNeSgLJOd7q5Y45hzi4=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "5250617bffd85403b14dbf43c3870e7f255d2c16", + "rev": "f7c1a2d347e4c52d5fb8d10cb4d94b5884e546fb", "type": "github" }, "original": { @@ -146,11 +146,11 @@ ] }, "locked": { - "lastModified": 1777932387, - "narHash": "sha256-nUYVPiqrzr36ThiQOAr5MKeGHDBSDM3OFWkz0uDjOvc=", + "lastModified": 1778716662, + "narHash": "sha256-m1Yf0wZ8j1OHjTc2UwHwyQRSnNeSgLJOd7q5Y45hzi4=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "71a3a77326609675e9f8b51084cf23d5d1945899", + "rev": "f7c1a2d347e4c52d5fb8d10cb4d94b5884e546fb", "type": "github" }, "original": { @@ -188,11 +188,11 @@ ] }, "locked": { - "lastModified": 1778144356, - "narHash": "sha256-dGM+QCstz/DyLB68+JK5GWyMx4QSqmOJEVgZmy63d/g=", + "lastModified": 1779592288, + "narHash": "sha256-pVZwRFVFdHS3D3G07MiZQcSPENnv1xlYCJtfabkqd3Q=", "owner": "nix-community", "repo": "home-manager", - "rev": "e4419d3123b780d5f4c0bceeace450424387638c", + "rev": "23703a32ef3d7803a2f1bb9909a3f46fc5185e37", "type": "github" }, "original": { @@ -301,11 +301,11 @@ "xdph": "xdph" }, "locked": { - "lastModified": 1778199997, - "narHash": "sha256-vmCYnK7/iRQGWj+s0l3+cf/IVoUcCTrlFtgUCTwRdjU=", + "lastModified": 1779565977, + "narHash": "sha256-OCzhgY7kXuFLczKPf7KjMFS04CPXMAdaiQ+M1kFJVT8=", "owner": "hyprwm", "repo": "Hyprland", - "rev": "de9f8dc9831d921cd1ee30d5d14f45f0e345a8ca", + "rev": "abd4abb5e654707edba6f527058292333149f90f", "type": "github" }, "original": { @@ -377,11 +377,11 @@ ] }, "locked": { - "lastModified": 1777937752, - "narHash": "sha256-QDc78DC6xhWKpPJzsPEJBBFYpTb+g4kO6+ydRYLU4f4=", + "lastModified": 1779209205, + "narHash": "sha256-asc7NpeB8vD66gvZeYcQkaWOs2X6Jgd29vBtP17vjxo=", "owner": "hyprwm", "repo": "hyprland-plugins", - "rev": "b6e080577daf6575b95e6733dd2e2aef714bcf10", + "rev": "1cb37fad68dff5f5840010c314fed5809b4ee66f", "type": "github" }, "original": { @@ -561,11 +561,11 @@ ] }, "locked": { - "lastModified": 1778179779, - "narHash": "sha256-Ri6rVf54CRD3aISHLhSY6H4tBScVjm9ebkv7rF2lcZM=", + "lastModified": 1779475241, + "narHash": "sha256-Nw4DN0A5krWNcPBvuWe5Gz2yuxsUUPiDgtu6SVPJQeU=", "owner": "hyprwm", "repo": "hyprutils", - "rev": "3e170e5ad010602671f5f25b327e8bdb8fdd532c", + "rev": "3cd3972b2ee658a14d2610d8494e09259e530124", "type": "github" }, "original": { @@ -615,11 +615,11 @@ ] }, "locked": { - "lastModified": 1777388329, - "narHash": "sha256-40YxVGF2rA9iH3D7am5fy4EOSBbMgpJtJ9yhl0Cx+qI=", + "lastModified": 1778410714, + "narHash": "sha256-o6RzFj4nJXaPRY7EM01siuCQeT41RfwwmcmFQqwFJJg=", "owner": "hyprwm", "repo": "hyprwire", - "rev": "04be2897e05f9b271d532b5ae56ca088d2eeac02", + "rev": "85148a8e612808cf5ddb25d0b3c5840f3498a7dc", "type": "github" }, "original": { @@ -633,11 +633,11 @@ "brew-src": "brew-src" }, "locked": { - "lastModified": 1777250621, - "narHash": "sha256-WynkkG0hdZ5niYPJUbVg7oMfu8MVwGGzKZ6lKmfa+O8=", + "lastModified": 1778851564, + "narHash": "sha256-p8wzcnpB2Iys+QzAKM9/Eyw/pUyqCO3sw/NCnDH4dTE=", "owner": "zhaofengli", "repo": "nix-homebrew", - "rev": "aeb2069920742d0d6570089e8b3b8620050bacf2", + "rev": "b3a87b4793205cc111f3c61e25e018ffac3b8039", "type": "github" }, "original": { @@ -656,11 +656,11 @@ "nixpkgs-nixcord": "nixpkgs-nixcord" }, "locked": { - "lastModified": 1778202527, - "narHash": "sha256-Yn0A4iYFtVNYIf1IXfT1R7gYNbJ5UEqvExii2aK4VAY=", + "lastModified": 1779498537, + "narHash": "sha256-6LQjFDS69JufrN4sVsMNsXxeSF6BbDzMSbN7sVApsaA=", "owner": "kaylorben", "repo": "nixcord", - "rev": "471c6da493cb642bbc941a4bc5c10c22595ed013", + "rev": "45a98c17b0d9e695bdee92ab00c76657eddf47e7", "type": "github" }, "original": { @@ -707,11 +707,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1777954456, - "narHash": "sha256-hGdgeU2Nk87RAuZyYjyDjFL6LK7dAZN5RE9+hrDTkDU=", + "lastModified": 1779508470, + "narHash": "sha256-Ap9KJX+5xHIn3bPIpfNgT6MEXdAECECwo4/rmlQD74M=", "owner": "nixos", "repo": "nixpkgs", - "rev": "549bd84d6279f9852cae6225e372cc67fb91a4c1", + "rev": "29916453413845e54a65b8a1cf996842300cd299", "type": "github" }, "original": { @@ -738,11 +738,11 @@ }, "nixpkgs-nixcord": { "locked": { - "lastModified": 1777428379, - "narHash": "sha256-ypxFOeDz+CqADEQNL72haqGjvZQdBR5Vc7pyx2JDttI=", + "lastModified": 1779102034, + "narHash": "sha256-vZJZjLo513IeI8hjzHFc6TDezUd4uCE2Eq4SNO3DNNg=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "755f5aa91337890c432639c60b6064bb7fe67769", + "rev": "687f05a9184cad4eaf905c48b63649e3a86f5433", "type": "github" }, "original": { @@ -752,20 +752,34 @@ "type": "github" } }, + "nixpkgs_2": { + "locked": { + "lastModified": 1779259093, + "narHash": "sha256-7DKWmH23hL2eYdkxCKeqj2i+yljTKuU+3Nk1UPHOnxc=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "d99b013d5d1931ad77fe3912ed218170dec5d9a4", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, "nixvim": { "inputs": { "flake-parts": "flake-parts_2", - "nixpkgs": [ - "nixpkgs" - ], + "nixpkgs": "nixpkgs_2", "systems": "systems_3" }, "locked": { - "lastModified": 1777991353, - "narHash": "sha256-DFwjggMV+nzCZpwK6Obxj9F+P59rbLVowGqHETfctBk=", + "lastModified": 1779601302, + "narHash": "sha256-ACtB1llc5ZOJM+lxfbIudM2i/c5dFxRJVXVvhOLpjqA=", "owner": "nix-community", "repo": "nixvim", - "rev": "7986a276960b4dfaed9bb2c3c438b5ba71ae08f1", + "rev": "cb0107f6e18cdf7bf79a025fad154a4414c04383", "type": "github" }, "original": { @@ -784,11 +798,11 @@ ] }, "locked": { - "lastModified": 1776796298, - "narHash": "sha256-PcRvlWayisPSjd0UcRQbhG8Oqw78AcPE6x872cPRHN8=", + "lastModified": 1778507602, + "narHash": "sha256-kTwur1wV+01SdqskVMSo6JMEpg71ps3HpbFY2GsflKs=", "owner": "cachix", "repo": "git-hooks.nix", - "rev": "3cfd774b0a530725a077e17354fbdb87ea1c4aad", + "rev": "61ab0e80d9c7ab14c256b5b453d8b3fb0189ba0a", "type": "github" }, "original": { @@ -842,11 +856,11 @@ "systems": "systems_4" }, "locked": { - "lastModified": 1777789800, - "narHash": "sha256-XHCvLGu/bEEZRzXVKFu1i+2YB102Nr00n8e7xrzsfVs=", + "lastModified": 1779607677, + "narHash": "sha256-Ang2de6zfcFF8v7LWqSDD1n6bgYj0vN1PY5hi7lOLsM=", "owner": "Gerg-L", "repo": "spicetify-nix", - "rev": "d0e921cc48aab6137d203a3eab19601dc2bdc0c3", + "rev": "e69b824f3c4f4db836f47193723b6d37f93e0dc0", "type": "github" }, "original": { @@ -943,11 +957,11 @@ ] }, "locked": { - "lastModified": 1777585783, - "narHash": "sha256-JTeWRy42VElroJ0rVdZuVXSoTLsx+NzQfGPKMbtn3SU=", + "lastModified": 1778265244, + "narHash": "sha256-8jlPtGSsv/CQY6tVVyLF4Jjd0gnS+Zbn9yk/V13A9nM=", "owner": "hyprwm", "repo": "xdg-desktop-portal-hyprland", - "rev": "fa50d6fbaff8f42c61071b87b034a90d82a33558", + "rev": "813ea5ca9a1702a9a2d1f5836bc00172ef698968", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index be3e29e..5d053b7 100644 --- a/flake.nix +++ b/flake.nix @@ -46,7 +46,6 @@ # declarative Neovim nixvim = { url = "github:nix-community/nixvim"; - inputs.nixpkgs.follows = "nixpkgs"; }; # declarative Discord diff --git a/home/catppuccin.nix b/home/catppuccin.nix index 6040348..ce908bc 100644 --- a/home/catppuccin.nix +++ b/home/catppuccin.nix @@ -31,7 +31,7 @@ enable = true; accent = "sapphire"; }; - hyprland = lib.mkIf (!isDarwin) { enable = true; }; + hyprland = lib.mkIf (!isDarwin) { enable = false; }; hyprlock = lib.mkIf (!isDarwin) { enable = true; useDefaultConfig = false; diff --git a/home/desktop/hyprland/default.nix b/home/desktop/hyprland/default.nix index 74e8f87..17e5147 100644 --- a/home/desktop/hyprland/default.nix +++ b/home/desktop/hyprland/default.nix @@ -1,16 +1,5 @@ { inputs, pkgs, ... }: -let - super = "SUPER"; - terminal = "kitty"; - fileManager = "yazi"; - theme = "-theme $HOME/.config/rofi/custom.rasi"; - menu = "rofi -show drun ${theme}"; - filebrowser = "rofi -show filebrowser ${theme}"; - power = "rofi -show p -modi p:rofi-power-menu -theme $HOME/.config/rofi/power.rasi"; - apps = "rofi -show window ${theme}"; -in { - imports = [ ./hypridle.nix ./hyprlock.nix @@ -31,7 +20,7 @@ in systemd.user.targets.hyprland-session.Unit.Wants = [ "xdg-desktop-autostart.target" ]; wayland.windowManager.hyprland = { - package = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland; + package = null; enable = true; xwayland.enable = true; @@ -42,259 +31,6 @@ in enableXdgAutostart = false; }; - plugins = with inputs.hyprland-plugins.packages.${pkgs.stdenv.hostPlatform.system}; [ - #hyprbars - # hyprexpo - ]; - - settings = { - env = [ - "NIXOS_OZONE_WL,1" - "MOZ_ENABLE_WAYLAND,1" - "MOZ_WEBRENDER,1" - "_JAVA_AWT_WM_NONREPARENTING,1" - "QT_WAYLAND_DISABLE_WINDOWDECORATION,1" - "QT_QPA_PLATFORM,wayland" - "SDL_VIDEODRIVER,wayland" - "GDK_BACKEND,wayland,x11" - "XCURSOR_SIZE,24" - "EDITOR,nvim" - "GSK_RENDERER,gl" - "HYPRCURSOR_THEME,catppuccin-mocha-dark" - "HYPRCURSOR_SIZE,24" - "XCURSOR_THEME,catppuccin-mocha-dark" - "XCURSOR_SIZE,24" - ]; - - debug = { - disable_logs = false; - enable_stdout_logs = false; - }; - - monitor = [ - "DP-1, 1920x1080@60, 1920x0, 1" - "HDMI-A-2, 1920x1080@60, 0x0, 1" - ]; - - input = { - kb_layout = "de"; - kb_variant = "mac"; - kb_options = "apple:fn_lock"; - repeat_rate = 50; - repeat_delay = 300; - - accel_profile = "flat"; - follow_mouse = 1; - mouse_refocus = false; - sensitivity = 0; # -1.0 to 1.0, 0 means no modification. - - numlock_by_default = 1; - touchpad = { - natural_scroll = true; - tap-to-click = true; - }; - - }; - - general = { - # See https://wiki.hyprland.org/Configuring/Variables/ for more - gaps_in = 2; - gaps_out = 0; - border_size = 4; - - "col.active_border" = "$green"; - "col.inactive_border" = "$red"; - - layout = "dwindle"; - - # Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on - allow_tearing = false; - }; - - decoration = { - rounding = 1; - - shadow = { - enabled = false; - range = 16; - render_power = 4; - color = "$green"; - color_inactive = "$red"; - }; - - blur = { - enabled = false; - size = 1; - passes = 3; - new_optimizations = 1; - noise = 4.0e-2; - }; - }; - - animations = { - enabled = "yes"; - bezier = "myBezier, 0.05, 0.9, 0.1, 1.05"; - animation = [ - "windows, 1, 7, myBezier" - "windowsOut, 1, 7, default, popin 80%" - "border, 1, 10, default" - "borderangle, 1, 8, default" - "fade, 1, 7, default" - "workspaces, 1, 6, default" - ]; - }; - - # layerrule = [ - # "ignorezero,notifications" - # "ignorezero,rofi" - # ]; - - dwindle = { - preserve_split = "yes"; - }; - - # gestures = { - # See https://wiki.hyprland.org/Configuring/Variables/ for more - # workspace_swipe = true; - # workspace_swipe_fingers = 3; - # workspace_swipe_distance = 300; - # workspace_swipe_invert = false; - # workspace_swipe_cancel_ratio = 0.5; - # }; - - misc = { - force_default_wallpaper = 0; - disable_hyprland_logo = true; - disable_splash_rendering = true; - mouse_move_enables_dpms = true; - key_press_enables_dpms = true; - # vfr = true; - vrr = 0; - }; - - device = { - name = "usb-optical-mouse-"; - sensitivity = 0; - }; - #deprecated - # windowrulev2 = [ - # "suppressevent maximize, class:.*" - # "float, class:^(com.obsproject.Studio)$" - # "size 1280 800, class:^(com.obsproject.Studio)$" - # "float, class:^(xdg-desktop-portal-gtk)$" - # "center, class:^(xdg-desktop-portal-gtk)$" - # ]; - - # windowrule = [ - # "opacity 0.0 override, class:^(xwaylandvideobridge)$" - # "noanim, class:^(xwaylandvideobridge)$" - # "noinitialfocus, class:^(xwaylandvideobridge)$" - # "maxsize 1 1, class:^(xwaylandvideobridge)$" - # "noblur, class:^(xwaylandvideobridge)$" - # "nofocus, class:^(xwaylandvideobridge)$" - # "noblur, class:^(org\\.gnome\\.|io\\.github\\.|org\\.gtk\\.)" - # ]; - - exec-once = [ - "awww-daemon --no-cache & disown" - "awww img ~/Pictures/Wallpapers/Ghost_in_the_Shell.png" - "waybar &" - ]; - - # Keybindings - bind = [ - - # Application Bindings - "${super}, Q, exec, ${terminal}" - "${super}, E, exec, ${fileManager}" - "${super}, O, exec, obsidian" - "${super}, I, exec, floorp" - "${super}, G, exec, thunderbird" - ", XF86Mail, exec, thunderbird" - "${super}, N, exec, nautilus" - ", XF86Search, exec, nautilus" - - # Lock Screen - "${super}, M, exit, " - - # Rofi bindings - "${super}, F, exec, ${filebrowser}" - "${super}, A, exec, ${apps}" - ", Menu, exec, ${apps}" - "${super}, R, exec, ${menu}" - ", XF86LaunchA, exec, ${menu}" - "${super}, S, exec, ${power}" - ", XF86LaunchB, exec, ${power}" - - # Move focus with mainMod + arrow keys - "${super}, left, movefocus, l" - "${super}, right, movefocus, r" - "${super}, up, movefocus, u" - "${super}, down, movefocus, d" - - # Window Modifiers - "${super}, P, pseudo, " # dwindle - # "${super}, J, togglesplit, " # dwindle doenst exist - "${super}, V, togglefloating, " # dwindle - "${super}, C, killactive, " - - # Switch workspaces with mainMod + [0-9] - "${super}, 1, workspace, 1" - "${super}, 2, workspace, 2" - "${super}, 3, workspace, 3" - "${super}, 4, workspace, 4" - "${super}, 5, workspace, 5" - "${super}, 6, workspace, 6" - "${super}, 7, workspace, 7" - "${super}, 8, workspace, 8" - "${super}, 9, workspace, 9" - "${super}, 0, workspace, 10" - - # Move active window to a workspace with mainMod + SHIFT + [0-9] - "${super} SHIFT, 1, movetoworkspace, 1" - "${super} SHIFT, 2, movetoworkspace, 2" - "${super} SHIFT, 3, movetoworkspace, 3" - "${super} SHIFT, 4, movetoworkspace, 4" - "${super} SHIFT, 5, movetoworkspace, 5" - "${super} SHIFT, 6, movetoworkspace, 6" - "${super} SHIFT, 7, movetoworkspace, 7" - "${super} SHIFT, 8, movetoworkspace, 8" - "${super} SHIFT, 9, movetoworkspace, 9" - "${super} SHIFT, 0, movetoworkspace, 10" - - # Example special workspace (scratchpad) - #"${super}, S, togglespecialworkspace, magic" - "${super} SHIFT, S, movetoworkspace, special:magic" - - # Scroll through existing workspaces with mainMod + scroll - "${super}, mouse_down, workspace, e+1" - "${super}, mouse_up, workspace, e-1" - - # Screenshot - ''${super}, Z, exec, grim -g "$(slurp)" $HOME/Pictures/Screenshots/$(date +'%s_grim.png')'' - "${super}, U, exec, grim $HOME/Pictures/Screenshots/$(date +'%s_grim.png')" - ]; - - bindl = [ - #", XF86AudioMute, exec, amixer set Master toggle - ", XF86AudioMute, exec, pamixer -t" - ", XF86AudioPlay, exec, playerctl play-pause" # the stupid key is called play , but it toggles - ", XF86AudioNext, exec, playerctl next" - ", XF86AudioPrev, exec, playerctl previous" - ]; - - bindle = [ - # Multi Media Control - ", XF86AudioRaiseVolume, exec, pamixer -i 5" - ", XF86AudioLowerVolume, exec, pamixer -d 5" - ", XF86MonBrightnessUp, exec, brightnessctl set +5%" - ", XF86MonBrightnessDown, exec, brightnessctl set 5%-" - ]; - - bindm = [ - "${super}, mouse:272, movewindow" - "${super}, mouse:273, resizewindow" - ]; - }; + extraConfig = builtins.readFile ./hyprland.lua; }; } diff --git a/home/desktop/hyprland/hyprland.lua b/home/desktop/hyprland/hyprland.lua new file mode 100644 index 0000000..c05f627 --- /dev/null +++ b/home/desktop/hyprland/hyprland.lua @@ -0,0 +1,211 @@ +-- hyprland.lua — migrated from hyprlang for Hyprland 0.55+ +-- https://wiki.hypr.land/Configuring/Start/ + +-------------------- +---- VARIABLES ----- +-------------------- + +local super = "SUPER" +local terminal = "kitty" +local fileManager = "yazi" +local theme = "-theme $HOME/.config/rofi/custom.rasi" +local menu = "rofi -show drun " .. theme +local filebrowser = "rofi -show filebrowser " .. theme +local power = "rofi -show p -modi p:rofi-power-menu -theme $HOME/.config/rofi/power.rasi" +local apps = "rofi -show window " .. theme + +-------------------- +---- MONITORS ------ +-------------------- + +hl.monitor({ output = "DP-1", mode = "1920x1080@60", position = "1920x0", scale = 1 }) +hl.monitor({ output = "HDMI-A-2", mode = "1920x1080@60", position = "0x0", scale = 1 }) + +----------------------------- +---- ENVIRONMENT VARIABLES -- +----------------------------- + +hl.env("NIXOS_OZONE_WL", "1") +hl.env("MOZ_ENABLE_WAYLAND", "1") +hl.env("MOZ_WEBRENDER", "1") +hl.env("_JAVA_AWT_WM_NONREPARENTING", "1") +hl.env("QT_WAYLAND_DISABLE_WINDOWDECORATION", "1") +hl.env("QT_QPA_PLATFORM", "wayland") +hl.env("SDL_VIDEODRIVER", "wayland") +hl.env("GDK_BACKEND", "wayland,x11") +hl.env("XCURSOR_SIZE", "24") +hl.env("XCURSOR_THEME", "catppuccin-mocha-dark") +hl.env("EDITOR", "nvim") +hl.env("GSK_RENDERER", "gl") +hl.env("HYPRCURSOR_THEME", "catppuccin-mocha-dark") +hl.env("HYPRCURSOR_SIZE", "24") + +-------------------- +---- AUTOSTART ----- +-------------------- + +hl.on("hyprland.start", function() + hl.exec_cmd("awww-daemon --no-cache & disown") + hl.exec_cmd("awww img ~/Pictures/Wallpapers/Ghost_in_the_Shell.png") + hl.exec_cmd("waybar &") +end) + +-------------------- +---- CONFIG -------- +-------------------- + +hl.config({ + debug = { + disable_logs = false, + enable_stdout_logs = false, + }, + + input = { + kb_layout = "de", + kb_variant = "mac", + kb_options = "apple:fn_lock", + repeat_rate = 50, + repeat_delay = 300, + accel_profile = "flat", + follow_mouse = 1, + mouse_refocus = false, + sensitivity = 0, + numlock_by_default = true, + touchpad = { + natural_scroll = true, + tap_to_click = true, -- note: underscore, not hyphen + }, + }, + + general = { + gaps_in = 2, + gaps_out = 0, + border_size = 4, + col = { + active_border = "rgba(a6e3a1ff)", + inactive_border = "rgba(f38ba8ff)", + }, + layout = "dwindle", + allow_tearing = false, + }, + + decoration = { + rounding = 1, + shadow = { + enabled = false, + range = 16, + render_power = 4, + color = "rgba(a6e3a1ff)", + color_inactive = "rgba(f38ba8ff)", + }, + blur = { + enabled = false, + size = 1, + passes = 3, + new_optimizations = true, + noise = 0.04, + }, + }, + + animations = { + enabled = true, + }, + + dwindle = { + preserve_split = true, + }, + + misc = { + force_default_wallpaper = 0, + disable_hyprland_logo = true, + disable_splash_rendering = true, + mouse_move_enables_dpms = true, + key_press_enables_dpms = true, + vrr = 0, + }, +}) + +-- Animations (bezier curves + animation tree) +hl.curve("myBezier", { type = "bezier", points = { { 0.05, 0.9 }, { 0.1, 1.05 } } }) + +hl.animation({ leaf = "windows", enabled = true, speed = 7, bezier = "myBezier" }) +hl.animation({ leaf = "windowsOut", enabled = true, speed = 7, bezier = "default", style = "popin 80%" }) +hl.animation({ leaf = "border", enabled = true, speed = 10, bezier = "default" }) +hl.animation({ leaf = "borderangle", enabled = true, speed = 8, bezier = "default" }) +hl.animation({ leaf = "fade", enabled = true, speed = 7, bezier = "default" }) +hl.animation({ leaf = "workspaces", enabled = true, speed = 6, bezier = "default" }) + +-- Per-device config +hl.device({ + name = "usb-optical-mouse-", + sensitivity = 0, +}) + +-------------------- +---- KEYBINDINGS --- +-------------------- + +-- Application bindings +hl.bind(super .. " + Q", hl.dsp.exec_cmd(terminal)) +hl.bind(super .. " + E", hl.dsp.exec_cmd(fileManager)) +hl.bind(super .. " + O", hl.dsp.exec_cmd("obsidian")) +hl.bind(super .. " + I", hl.dsp.exec_cmd("floorp")) +hl.bind(super .. " + G", hl.dsp.exec_cmd("thunderbird")) +hl.bind("XF86Mail", hl.dsp.exec_cmd("thunderbird")) +hl.bind(super .. " + N", hl.dsp.exec_cmd("nautilus")) +hl.bind("XF86Search", hl.dsp.exec_cmd("nautilus")) + +-- Exit +hl.bind(super .. " + M", hl.dsp.exit()) + +-- Rofi bindings +hl.bind(super .. " + F", hl.dsp.exec_cmd(filebrowser)) +hl.bind(super .. " + A", hl.dsp.exec_cmd(apps)) +hl.bind("Menu", hl.dsp.exec_cmd(apps)) +hl.bind(super .. " + R", hl.dsp.exec_cmd(menu)) +hl.bind("XF86LaunchA", hl.dsp.exec_cmd(menu)) +hl.bind(super .. " + S", hl.dsp.exec_cmd(power)) +hl.bind("XF86LaunchB", hl.dsp.exec_cmd(power)) + +-- Move focus +hl.bind(super .. " + left", hl.dsp.focus({ direction = "left" })) +hl.bind(super .. " + right", hl.dsp.focus({ direction = "right" })) +hl.bind(super .. " + up", hl.dsp.focus({ direction = "up" })) +hl.bind(super .. " + down", hl.dsp.focus({ direction = "down" })) + +-- Window modifiers +hl.bind(super .. " + P", hl.dsp.window.pseudo()) +hl.bind(super .. " + V", hl.dsp.window.float({ action = "toggle" })) +hl.bind(super .. " + C", hl.dsp.window.close()) + +-- Workspaces (1-10, 0 maps to 10) +for i = 1, 10 do + local key = tostring(i % 10) + hl.bind(super .. " + " .. key, hl.dsp.focus({ workspace = i })) + hl.bind(super .. " + SHIFT + " .. key, hl.dsp.window.move({ workspace = i })) +end + +-- Special workspace (scratchpad) +hl.bind(super .. " + SHIFT + S", hl.dsp.window.move({ workspace = "special:magic" })) + +-- Scroll through workspaces with mouse wheel +hl.bind(super .. " + mouse_down", hl.dsp.focus({ workspace = "e+1" })) +hl.bind(super .. " + mouse_up", hl.dsp.focus({ workspace = "e-1" })) + +-- Screenshot +hl.bind(super .. " + Z", hl.dsp.exec_cmd("grim -g \"$(slurp)\" $HOME/Pictures/Screenshots/$(date +'%s_grim.png')")) +hl.bind(super .. " + U", hl.dsp.exec_cmd("grim $HOME/Pictures/Screenshots/$(date +'%s_grim.png')")) + +-- Media controls (locked = works on lockscreen, repeating = held key) +hl.bind("XF86AudioMute", hl.dsp.exec_cmd("pamixer -t"), { locked = true }) +hl.bind("XF86AudioPlay", hl.dsp.exec_cmd("playerctl play-pause"), { locked = true }) +hl.bind("XF86AudioNext", hl.dsp.exec_cmd("playerctl next"), { locked = true }) +hl.bind("XF86AudioPrev", hl.dsp.exec_cmd("playerctl previous"), { locked = true }) +hl.bind("XF86AudioRaiseVolume", hl.dsp.exec_cmd("pamixer -i 5"), { locked = true, repeating = true }) +hl.bind("XF86AudioLowerVolume", hl.dsp.exec_cmd("pamixer -d 5"), { locked = true, repeating = true }) +hl.bind("XF86MonBrightnessUp", hl.dsp.exec_cmd("brightnessctl set +5%"), { locked = true, repeating = true }) +hl.bind("XF86MonBrightnessDown", hl.dsp.exec_cmd("brightnessctl set 5%-"), { locked = true, repeating = true }) + +-- Mouse bindings for move/resize +hl.bind(super .. " + mouse:272", hl.dsp.window.drag()) +hl.bind(super .. " + mouse:273", hl.dsp.window.drag({ resize = true })) diff --git a/home/neovim/treesitter.nix b/home/neovim/treesitter.nix index 8d19c14..5d21b29 100644 --- a/home/neovim/treesitter.nix +++ b/home/neovim/treesitter.nix @@ -15,7 +15,7 @@ settings = { highlight = { - enable = true; + enable = false; additional_vim_regex_highlighting = false; }; }; diff --git a/home/python.nix b/home/python.nix index 29eee44..59b008b 100644 --- a/home/python.nix +++ b/home/python.nix @@ -1,17 +1,19 @@ -{ pkgs, ... }: { +{ pkgs, ... }: +{ home.packages = with pkgs; [ - # Python 3.14 (newest stable) python314 python314Packages.pip python314Packages.virtualenv - # Additional useful tools - python314Packages.pipx # Install Python apps in isolated environments - uv # Fast Python package installer (alternative to pip) + (python314Packages.pipx.overridePythonAttrs (_: { + doCheck = false; + })) + uv ]; - # Set up default Python version - home.sessionVariables = { PYTHON = "${pkgs.python313}/bin/python3"; }; + home.sessionVariables = { + PYTHON = "${pkgs.python313}/bin/python3"; + }; programs.fish.shellAliases = { venv = "python3 -m venv"; diff --git a/home/ssh.nix b/home/ssh.nix index f1275ea..4c4e40c 100644 --- a/home/ssh.nix +++ b/home/ssh.nix @@ -3,35 +3,34 @@ programs.ssh = { enable = true; enableDefaultConfig = false; - matchBlocks = { + settings = { "*" = { - addKeysToAgent = "yes"; + AddKeysToAgent = "yes"; }; "*.cyperpunk.de" = { - identityFile = + IdentityFile = if isDarwin then "/Users/${primaryUser}/.ssh/ssh" else "/home/${primaryUser}/.ssh/ssh"; - user = primaryUser; + User = primaryUser; }; "github.com" = { - identityFile = + IdentityFile = if isDarwin then "/Users/${primaryUser}/.ssh/github" else "/home/${primaryUser}/.ssh/github"; - user = "git"; + User = "git"; }; "git.rz.tu-bs.de" = { - identityFile = + IdentityFile = if isDarwin then "/Users/${primaryUser}/.ssh/github" else "/home/${primaryUser}/.ssh/github"; - - user = "git"; + User = "git"; }; "git.cyperpunk.de" = { - hostname = "git.cyperpunk.de"; - port = 12222; - user = "gitea"; - identityFile = + HostName = "git.cyperpunk.de"; + Port = 12222; + User = "gitea"; + IdentityFile = if isDarwin then "/Users/${primaryUser}/.ssh/ssh" else "/home/${primaryUser}/.ssh/ssh"; }; }; diff --git a/nixos/default.nix b/nixos/default.nix index 204b2b2..b0ec722 100644 --- a/nixos/default.nix +++ b/nixos/default.nix @@ -104,15 +104,15 @@ } // lib.optionalAttrs (!isServer) { dconf.enable = true; - hyprland = { - enable = false; - package = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland; - }; steam.enable = true; appimage = { enable = true; binfmt = true; }; + hyprland = { + enable = true; + package = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland; + }; }; security = lib.mkIf (!isServer) {