From 1c881b385e58d65cb80a7f5f7e7bd446ad16de31 Mon Sep 17 00:00:00 2001 From: Adithya Nair Date: Thu, 27 Apr 2023 22:44:21 +0530 Subject: [PATCH] switch to hyprland from nixpkgs --- flake.lock | 88 ----------- flake.nix | 9 +- home/default.nix | 3 +- home/programs/zsh.nix | 2 +- home/wm/hyprland/default.nix | 282 +++++++++++++++++------------------ 5 files changed, 144 insertions(+), 240 deletions(-) diff --git a/flake.lock b/flake.lock index 9c2e36c..50879bc 100644 --- a/flake.lock +++ b/flake.lock @@ -221,50 +221,6 @@ "type": "github" } }, - "hyprland": { - "inputs": { - "hyprland-protocols": "hyprland-protocols", - "nixpkgs": [ - "nixpkgs" - ], - "wlroots": "wlroots", - "xdph": "xdph" - }, - "locked": { - "lastModified": 1681907187, - "narHash": "sha256-9SE7RAHSCq1nAT/oZiqhtZT4cQVcLt/dfOdPro4++5s=", - "owner": "hyprwm", - "repo": "Hyprland", - "rev": "6225591dbd77919beafc632e0795c6296e1da876", - "type": "github" - }, - "original": { - "owner": "hyprwm", - "repo": "Hyprland", - "type": "github" - } - }, - "hyprland-protocols": { - "inputs": { - "nixpkgs": [ - "hyprland", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1681065697, - "narHash": "sha256-QPzwwlGKX95tl6ZEshboZbEwwAXww6lNLdVYd6T9Mrc=", - "owner": "hyprwm", - "repo": "hyprland-protocols", - "rev": "4d29e48433270a2af06b8bc711ca1fe5109746cd", - "type": "github" - }, - "original": { - "owner": "hyprwm", - "repo": "hyprland-protocols", - "type": "github" - } - }, "impermanence": { "locked": { "lastModified": 1682268411, @@ -477,7 +433,6 @@ "root": { "inputs": { "home-manager": "home-manager", - "hyprland": "hyprland", "impermanence": "impermanence", "lanzaboote": "lanzaboote", "nixos-hardware": "nixos-hardware", @@ -539,49 +494,6 @@ "repo": "flake-utils", "type": "github" } - }, - "wlroots": { - "flake": false, - "locked": { - "host": "gitlab.freedesktop.org", - "lastModified": 1680810405, - "narHash": "sha256-LmI/4Yp/pOOoI4RxLRx9I90NBsiqdRLVOfbATKlgpkg=", - "owner": "wlroots", - "repo": "wlroots", - "rev": "7abda952d0000b72d240fe1d41457b9288f0b6e5", - "type": "gitlab" - }, - "original": { - "host": "gitlab.freedesktop.org", - "owner": "wlroots", - "repo": "wlroots", - "type": "gitlab" - } - }, - "xdph": { - "inputs": { - "hyprland-protocols": [ - "hyprland", - "hyprland-protocols" - ], - "nixpkgs": [ - "hyprland", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1681127512, - "narHash": "sha256-vklOOhBj5W8fii6yN4L2WY5ZeifBmsq3+mJ2wC1Pk9U=", - "owner": "hyprwm", - "repo": "xdg-desktop-portal-hyprland", - "rev": "04f579377a32781ce57c9cf4ba2a5bcb7f53fa97", - "type": "github" - }, - "original": { - "owner": "hyprwm", - "repo": "xdg-desktop-portal-hyprland", - "type": "github" - } } }, "root": "root", diff --git a/flake.nix b/flake.nix index 188cf0f..ae153f5 100644 --- a/flake.nix +++ b/flake.nix @@ -11,11 +11,6 @@ inputs.nixpkgs.follows = "nixpkgs"; }; - hyprland = { - url = "github:hyprwm/Hyprland"; - inputs.nixpkgs.follows = "nixpkgs"; - }; - impermanence = { url = "github:nix-community/impermanence"; }; @@ -31,7 +26,7 @@ }; }; - outputs = { self, nixpkgs, home-manager, hyprland, impermanence, lanzaboote, nixos-hardware, nixvim }@inputs: { + outputs = { self, nixpkgs, home-manager, impermanence, lanzaboote, nixos-hardware, nixvim }@inputs: { formatter."x86_64-linux" = nixpkgs.legacyPackages."x86_64-linux".nixpkgs-fmt; nixosConfigurations = { Skipper = nixpkgs.lib.nixosSystem { @@ -39,7 +34,7 @@ specialArgs = inputs; modules = [ { - nixpkgs.overlays = [ (import ./packages) hyprland.overlays.default ]; + nixpkgs.overlays = [ (import ./packages) ]; nixpkgs.hostPlatform = nixpkgs.lib.mkDefault "x86_64-linux"; system.configurationRevision = nixpkgs.lib.mkIf (self ? rev) self.rev; } diff --git a/home/default.nix b/home/default.nix index dac1521..ccda3f1 100644 --- a/home/default.nix +++ b/home/default.nix @@ -1,4 +1,4 @@ -{ hyprland, impermanence, nixvim, pkgs, ... }: +{ impermanence, nixvim, pkgs, ... }: let user = (import ../secrets.nix).users; in @@ -11,7 +11,6 @@ in imports = [ impermanence.nixosModules.home-manager.impermanence nixvim.homeManagerModules.nixvim - hyprland.homeManagerModules.default ./gtk.nix ./persistence.nix diff --git a/home/programs/zsh.nix b/home/programs/zsh.nix index 58a0eac..c3c7f96 100644 --- a/home/programs/zsh.nix +++ b/home/programs/zsh.nix @@ -15,7 +15,7 @@ ''; profileExtra = '' if [ -z $DISPLAY ] && [ "$(tty)" = "/dev/tty1" ] ; then - exec ${config.wayland.windowManager.hyprland.package}/bin/Hyprland + exec ${pkgs.hyprland}/bin/Hyprland fi ''; shellAliases = { diff --git a/home/wm/hyprland/default.nix b/home/wm/hyprland/default.nix index cf87274..08c44e8 100644 --- a/home/wm/hyprland/default.nix +++ b/home/wm/hyprland/default.nix @@ -2,7 +2,7 @@ let brightnessctl = "${pkgs.brightnessctl}/bin/brightnessctl"; grim = "${pkgs.grim}/bin/grim"; - hyprctl = "${config.wayland.windowManager.hyprland.package}/bin/hyprctl"; + hyprctl = "${pkgs.hyprland}/bin/hyprctl"; kitty = "${config.programs.kitty.package}/bin/kitty"; playerctl = "${pkgs.playerctl}/bin/playerctl"; rofi = "${config.programs.rofi.package}/bin/rofi"; @@ -14,176 +14,174 @@ let change-wallpaper = "${pkgs.scripts}/bin/chpaper \${HOME}/Pictures/Wallpapers"; in { - wayland.windowManager.hyprland = { - enable = true; - systemdIntegration = true; - recommendedEnvironment = true; - extraConfig = '' - monitor = eDP-1, 1920x1080, 0x0, 1 - monitor = , preferred, auto, 1 + home.packages = with pkgs; [ + hyprland + ]; + xdg.configFile."hypr/hyprland.conf".text = '' + monitor = eDP-1, 1920x1080, 0x0, 1 + monitor = , preferred, auto, 1 - general { - col.active_border = rgb(bd93f9) - col.inactive_border = rgba(44475aaa) - col.group_border = rgba(282a36dd) - col.group_border_active = rgb(bd93f9) + general { + col.active_border = rgb(bd93f9) + col.inactive_border = rgba(44475aaa) + col.group_border = rgba(282a36dd) + col.group_border_active = rgb(bd93f9) - border_size = 1 - gaps_in = 2 - gaps_out = 4 + border_size = 1 + gaps_in = 2 + gaps_out = 4 - layout = master + layout = master + } + + decoration { + col.shadow = rgba(1E202966) + drop_shadow = yes + shadow_range = 60 + shadow_offset = 1 2 + shadow_render_power = 3 + shadow_scale = 0.97 + + rounding = 5 + dim_around = 0.6 + } + + input { + touchpad { + clickfinger_behavior = true + disable_while_typing = true + natural_scroll = true + tap-to-click = true } + } - decoration { - col.shadow = rgba(1E202966) - drop_shadow = yes - shadow_range = 60 - shadow_offset = 1 2 - shadow_render_power = 3 - shadow_scale = 0.97 + misc { + disable_hyprland_logo = true + disable_splash_rendering = true + } - rounding = 5 - dim_around = 0.6 - } + master { + new_is_master = true + new_on_top = true + mfact = 0.65 + } - input { - touchpad { - clickfinger_behavior = true - disable_while_typing = true - natural_scroll = true - tap-to-click = true - } - } + animation = windows,1,3,default,slide + animation = fade,1,3,default + animation = border,1,3,default + animation = borderangle,1,3,default + animation = workspaces,1,3,default,slide - misc { - disable_hyprland_logo = true - disable_splash_rendering = true - } + windowrulev2 = bordercolor rgb(ff5555),xwayland:1 - master { - new_is_master = true - new_on_top = true - mfact = 0.65 - } + windowrulev2 = workspace 2,class:^(firefox)$,title:^(Mozilla Firefox)$ - animation = windows,1,3,default,slide - animation = fade,1,3,default - animation = border,1,3,default - animation = borderangle,1,3,default - animation = workspaces,1,3,default,slide + windowrulev2 = float,class:^(firefox)$,title:^(Library)$ - windowrulev2 = bordercolor rgb(ff5555),xwayland:1 + windowrulev2 = nofullscreenrequest,class:^(firefox)$,title:^(Firefox — Sharing Indicator)$ + windowrulev2 = float,class:^(firefox)$,title:^(Firefox — Sharing Indicator)$ + windowrulev2 = move 95% 50%,class:^(firefox)$,title:^(Firefox — Sharing Indicator)$ - windowrulev2 = workspace 2,class:^(firefox)$,title:^(Mozilla Firefox)$ + windowrulev2 = float,class:^(pavucontrol)$,title:^(Volume Control)$ + windowrulev2 = size 50% 50%,class:^(pavucontrol)$,title:^(Volume Control)$ + windowrulev2 = center,class:^(pavucontrol)$,title:^(Volume Control)$ - windowrulev2 = float,class:^(firefox)$,title:^(Library)$ + windowrulev2 = float,class:^(.blueman-manager-wrapped)$ + windowrulev2 = size 50% 50%,class:^(.blueman-manager-wrapped)$ + windowrulev2 = center,class:^(.blueman-manager-wrapped)$ - windowrulev2 = nofullscreenrequest,class:^(firefox)$,title:^(Firefox — Sharing Indicator)$ - windowrulev2 = float,class:^(firefox)$,title:^(Firefox — Sharing Indicator)$ - windowrulev2 = move 95% 50%,class:^(firefox)$,title:^(Firefox — Sharing Indicator)$ + windowrulev2 = float,class:^(mpv)$ + windowrulev2 = size 90% 90%,class:^(mpv)$ + windowrulev2 = center,class:^(mpv)$ + windowrulev2 = dimaround,class:^(mpv)$ - windowrulev2 = float,class:^(pavucontrol)$,title:^(Volume Control)$ - windowrulev2 = size 50% 50%,class:^(pavucontrol)$,title:^(Volume Control)$ - windowrulev2 = center,class:^(pavucontrol)$,title:^(Volume Control)$ + windowrulev2 = float,class:^(eog)$ + windowrulev2 = size 90% 90%,class:^(eog)$ + windowrulev2 = center,class:^(eog)$ + windowrulev2 = dimaround,class:^(eog)$ - windowrulev2 = float,class:^(.blueman-manager-wrapped)$ - windowrulev2 = size 50% 50%,class:^(.blueman-manager-wrapped)$ - windowrulev2 = center,class:^(.blueman-manager-wrapped)$ + windowrulev2 = float,class:^(org.gnome.Nautilus)$ + windowrulev2 = center,class:^(org.gnome.Nautilus)$ + windowrulev2 = size 60% 60%,class:^(org.gnome.Nautilus)$ - windowrulev2 = float,class:^(mpv)$ - windowrulev2 = size 90% 90%,class:^(mpv)$ - windowrulev2 = center,class:^(mpv)$ - windowrulev2 = dimaround,class:^(mpv)$ + windowrulev2 = float,class:^(gnome-system-monitor)$ + windowrulev2 = center,class:^(gnome-system-monitor)$ + windowrulev2 = size 60% 50%,class:^(gnome-system-monitor)$ - windowrulev2 = float,class:^(eog)$ - windowrulev2 = size 90% 90%,class:^(eog)$ - windowrulev2 = center,class:^(eog)$ - windowrulev2 = dimaround,class:^(eog)$ + windowrulev2 = float,class:^(virt-manager)$ + windowrulev2 = size 25% 50%,class:^(virt-manager)$,title:^(Virtual Machine Manager)$ + windowrulev2 = move 5%% 10%,class:^(virt-manager)$,title:^(Virtual Machine Manager)$ - windowrulev2 = float,class:^(org.gnome.Nautilus)$ - windowrulev2 = center,class:^(org.gnome.Nautilus)$ - windowrulev2 = size 60% 60%,class:^(org.gnome.Nautilus)$ + windowrulev2 = float,class:^(.yubioath-flutter-wrapped)$ + windowrulev2 = center,class:^(.yubioath-flutter-wrapped)$ - windowrulev2 = float,class:^(gnome-system-monitor)$ - windowrulev2 = center,class:^(gnome-system-monitor)$ - windowrulev2 = size 60% 50%,class:^(gnome-system-monitor)$ + windowrulev2 = float,class:^(yubico.org.)$ + windowrulev2 = center,class:^(yubico.org.)$ - windowrulev2 = float,class:^(virt-manager)$ - windowrulev2 = size 25% 50%,class:^(virt-manager)$,title:^(Virtual Machine Manager)$ - windowrulev2 = move 5%% 10%,class:^(virt-manager)$,title:^(Virtual Machine Manager)$ + windowrulev2 = dimaround,class:^(gcr-prompter)$ - windowrulev2 = float,class:^(.yubioath-flutter-wrapped)$ - windowrulev2 = center,class:^(.yubioath-flutter-wrapped)$ + exec-once = ${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1 + exec-once = ${hyprctl} setcursor ${config.gtk.cursorTheme.name} 24 + exec-once = ${change-wallpaper} + exec-once = ${pkgs.udiskie}/bin/udiskie --no-automount --tray - windowrulev2 = float,class:^(yubico.org.)$ - windowrulev2 = center,class:^(yubico.org.)$ + bindm = SUPER,mouse:272, movewindow + bindm = SUPER_SHIFT,mouse:272, resizewindow - windowrulev2 = dimaround,class:^(gcr-prompter)$ + bind = SUPER_SHIFT,Q, killactive, + bind = SUPER_SHIFT,space, togglefloating,active + bind = SUPER_SHIFT,space, centerwindow + bind = SUPER_SHIFT,F, fullscreen,0 + bind = SUPER_ALT,F, fullscreen,1 - exec-once = ${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1 - exec-once = ${hyprctl} setcursor ${config.gtk.cursorTheme.name} 24 - exec-once = ${change-wallpaper} - exec-once = ${pkgs.udiskie}/bin/udiskie --no-automount --tray + bind = SUPER_SHIFT,C, exec, ${hyprctl} reload + bind = SUPER_SHIFT,C, exec, systemctl --user restart swayidle.service + bind = SUPER_SHIFT,C, exec, systemctl --user restart kanshi.service + bind = SUPER_SHIFT,C, exec, systemctl --user reload waybar.service - bindm = SUPER,mouse:272, movewindow - bindm = SUPER_SHIFT,mouse:272, resizewindow + bind = SUPER,Return, exec, ${kitty} ${tmux} new + bind = SUPER_SHIFT,Return, exec, ${kitty} + bind = SUPER,d, exec, ${rofi} -show drun + bind = SUPER,escape, exec, ${swaylock} -f -i /tmp/lockpaper.jpg + bind = SUPER_SHIFT,W, exec, ${change-wallpaper} + bind = SUPER_SHIFT,escape, exec, ${pkgs.scripts}/bin/power-menu + bind = SUPER,f11, exec, ${pkgs.scripts}/bin/tmux-sessions - bind = SUPER_SHIFT,Q, killactive, - bind = SUPER_SHIFT,space, togglefloating,active - bind = SUPER_SHIFT,space, centerwindow - bind = SUPER_SHIFT,F, fullscreen,0 - bind = SUPER_ALT,F, fullscreen,1 + bindr = ,print, exec, ${grim} "''$(${xdg-user-dir} PICTURES)/Screenshots/screenshot-''$(date +%Y-%m-%d-%H-%M-%S).png" + bindr = SHIFT,print, exec, ${grim} -g "''$(${slurp})" "''$(${xdg-user-dir} PICTURES)/Screenshots/screenshot-''$(date +%Y-%m-%d-%H-%M-%S).png" - bind = SUPER_SHIFT,C, exec, ${hyprctl} reload - bind = SUPER_SHIFT,C, exec, systemctl --user restart swayidle.service - bind = SUPER_SHIFT,C, exec, systemctl --user restart kanshi.service - bind = SUPER_SHIFT,C, exec, systemctl --user reload waybar.service + bind = SUPER,1, workspace, 1 + bind = SUPER,2, workspace, 2 + bind = SUPER,3, workspace, 3 + bind = SUPER,4, workspace, 4 + bind = SUPER,5, workspace, 5 + bind = SUPER,6, workspace, 6 + bind = SUPER,7, workspace, 7 + bind = SUPER,8, workspace, 8 + bind = SUPER,9, workspace, 9 - bind = SUPER,Return, exec, ${kitty} ${tmux} new - bind = SUPER_SHIFT,Return, exec, ${kitty} - bind = SUPER,d, exec, ${rofi} -show drun - bind = SUPER,escape, exec, ${swaylock} -f -i /tmp/lockpaper.jpg - bind = SUPER_SHIFT,W, exec, ${change-wallpaper} - bind = SUPER_SHIFT,escape, exec, ${pkgs.scripts}/bin/power-menu - bind = SUPER,f11, exec, ${pkgs.scripts}/bin/tmux-sessions + bind = SUPER_SHIFT,1, movetoworkspace, 1 + bind = SUPER_SHIFT,2, movetoworkspace, 2 + bind = SUPER_SHIFT,3, movetoworkspace, 3 + bind = SUPER_SHIFT,4, movetoworkspace, 4 + bind = SUPER_SHIFT,5, movetoworkspace, 5 + bind = SUPER_SHIFT,6, movetoworkspace, 6 + bind = SUPER_SHIFT,7, movetoworkspace, 7 + bind = SUPER_SHIFT,8, movetoworkspace, 8 + bind = SUPER_SHIFT,9, movetoworkspace, 9 - bindr = ,print, exec, ${grim} "''$(${xdg-user-dir} PICTURES)/Screenshots/screenshot-''$(date +%Y-%m-%d-%H-%M-%S).png" - bindr = SHIFT,print, exec, ${grim} -g "''$(${slurp})" "''$(${xdg-user-dir} PICTURES)/Screenshots/screenshot-''$(date +%Y-%m-%d-%H-%M-%S).png" + bind = SUPER,l, layoutmsg,cyclenext + bind = SUPER,h, layoutmsg,cycleprev + bind = SUPER,m, layoutmsg,focusmaster + bind = SUPER_SHIFT,m, layoutmsg,swapwithmaster - bind = SUPER,1, workspace, 1 - bind = SUPER,2, workspace, 2 - bind = SUPER,3, workspace, 3 - bind = SUPER,4, workspace, 4 - bind = SUPER,5, workspace, 5 - bind = SUPER,6, workspace, 6 - bind = SUPER,7, workspace, 7 - bind = SUPER,8, workspace, 8 - bind = SUPER,9, workspace, 9 - - bind = SUPER_SHIFT,1, movetoworkspace, 1 - bind = SUPER_SHIFT,2, movetoworkspace, 2 - bind = SUPER_SHIFT,3, movetoworkspace, 3 - bind = SUPER_SHIFT,4, movetoworkspace, 4 - bind = SUPER_SHIFT,5, movetoworkspace, 5 - bind = SUPER_SHIFT,6, movetoworkspace, 6 - bind = SUPER_SHIFT,7, movetoworkspace, 7 - bind = SUPER_SHIFT,8, movetoworkspace, 8 - bind = SUPER_SHIFT,9, movetoworkspace, 9 - - bind = SUPER,l, layoutmsg,cyclenext - bind = SUPER,h, layoutmsg,cycleprev - bind = SUPER,m, layoutmsg,focusmaster - bind = SUPER_SHIFT,m, layoutmsg,swapwithmaster - - binde = ,XF86MonBrightnessUp, exec, ${brightnessctl} set +5% - binde = ,XF86MonBrightnessDown, exec, ${brightnessctl} set 5%- - bind = ,XF86AudioMute, exec, ${wpctl} set-mute @DEFAULT_AUDIO_SINK@ toggle - binde = ,XF86AudioRaiseVolume, exec, ${wpctl} set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+ - binde = ,XF86AudioLowerVolume, exec, ${wpctl} set-volume @DEFAULT_AUDIO_SINK@ 5%- - bind = ,XF86AudioPlay, exec, ${playerctl} play-pause - bind = ,XF86AudioNext, exec, ${playerctl} next - bind = ,XF86AudioPrev, exec, ${playerctl} previous - ''; - }; + binde = ,XF86MonBrightnessUp, exec, ${brightnessctl} set +5% + binde = ,XF86MonBrightnessDown, exec, ${brightnessctl} set 5%- + bind = ,XF86AudioMute, exec, ${wpctl} set-mute @DEFAULT_AUDIO_SINK@ toggle + binde = ,XF86AudioRaiseVolume, exec, ${wpctl} set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+ + binde = ,XF86AudioLowerVolume, exec, ${wpctl} set-volume @DEFAULT_AUDIO_SINK@ 5%- + bind = ,XF86AudioPlay, exec, ${playerctl} play-pause + bind = ,XF86AudioNext, exec, ${playerctl} next + bind = ,XF86AudioPrev, exec, ${playerctl} previous + ''; }