diff --git a/home.nix b/home.nix index 7ae72e5..1827be2 100644 --- a/home.nix +++ b/home.nix @@ -37,12 +37,15 @@ with import {}; # '') pkgs.bitwarden + pkgs.dunst pkgs.element-desktop pkgs.fd pkgs.fluffychat + pkgs.gzip pkgs.htop pkgs.jellyfin-media-player pkgs.keepassxc + pkgs.kitty pkgs.less pkgs.ncdu pkgs.pandoc @@ -50,6 +53,8 @@ with import {}; #pkgs.pytest pkgs.shellcheck pkgs.tmux + pkgs.waybar + pkgs.wofi pkgs.vlc ]; @@ -93,6 +98,7 @@ with import {}; imports = [ ./modules/applications/emacs/default.nix + ./modules/window_managers/hyprland/default.nix ]; programs.bash.enable = true; @@ -187,7 +193,5 @@ with import {}; }; }; - xdg = { - enable = true; - }; + xdg.enable = true; } diff --git a/modules/applications/emacs/default.nix b/modules/applications/emacs/default.nix index 28acf40..d8c3d95 100644 --- a/modules/applications/emacs/default.nix +++ b/modules/applications/emacs/default.nix @@ -1,8 +1,8 @@ { config, lib, pkgs, ... }: let + emacs = pkgs.emacs29-pgtk; doomSync = (let - emacs = pkgs.emacs; git = pkgs.git; in '' export PATH=${emacs}/bin:${git}/bin:$PATH diff --git a/modules/window_managers/hyprland/default.nix b/modules/window_managers/hyprland/default.nix new file mode 100644 index 0000000..fd3dc0e --- /dev/null +++ b/modules/window_managers/hyprland/default.nix @@ -0,0 +1,75 @@ +{ config, lib, pkgs, ... }: + +{ + imports = [ + ./hyprpaper.nix + ]; + + + wayland.windowManager.hyprland = { + enable = true; + settings = { + monitor = ",preferred,auto,1.5"; + + "$mod" = "SUPER"; + "$terminal" = "kitty"; + "$fileManager" = "dolphin"; + "$menu" = "wofi --show drun"; + + exec-once = [ + "waybar" + "dunst" + ]; + + env = [ + "XCURSOR_SIZE,24" + "HYPRCURSOR_SIZE,24" + ]; + + input = { + kb_layout = "us"; + kb_options = "caps:escape"; + follow_mouse = 1; + touchpad.natural_scroll = false; + }; + + windowrulev2 = [ + # I can guess, but I should figure out what this actually does + "suppressevent maximize, class:.*" + ]; + + bind = + [ + "SHIFT_$mod, Q, killactive" + "SHIFT_$mod, E, exit" + "$mod, D, exec, $menu" + "$mod, Return, exec, $terminal" + "$mod, H, movefocus, l" + "$mod, L, movefocus, r" + "$mod, K, movefocus, u" + "$mod, J, movefocus, d" + "SHIFT_$mod, H, swapwindow, l" + "SHIFT_$mod, L, swapwindow, r" + "SHIFT_$mod, K, swapwindow, u" + "SHIFT_$mod, J, swapwindow, d" + "$mod, M, fullscreen, 0" + ] + ++ ( + # workspaces + # binds $mod + [shift +] {1..10} to [move to] workspace {1..10} + builtins.concatLists (builtins.genList ( + x: let + ws = let + c = (x + 1) / 10; + in + builtins.toString (x + 1 - (c * 10)); + in [ + "$mod, ${ws}, workspace, ${toString (x + 1)}" + "$mod SHIFT, ${ws}, movetoworkspace, ${toString (x + 1)}" + ] + ) + 10) + ); + }; + }; +} diff --git a/modules/window_managers/hyprland/hyprpaper.nix b/modules/window_managers/hyprland/hyprpaper.nix new file mode 100644 index 0000000..38c4e45 --- /dev/null +++ b/modules/window_managers/hyprland/hyprpaper.nix @@ -0,0 +1,21 @@ +{ config, lib, pkgs, ... }: + +{ + services.hyprpaper = { + enable = true; + settings = { + ipc = "on"; + splash = false; + preload = [ + "${config.xdg.dataHome}/wallpaper.jpg" + ]; + wallpaper = [ + ",${config.xdg.dataHome}/wallpaper.jpg" + ]; + }; + }; + + xdg.dataFile."wallpaper.jpg" = { + source = ./wallpaper.jpg; + }; +} diff --git a/modules/window_managers/hyprland/wallpaper.jpg b/modules/window_managers/hyprland/wallpaper.jpg new file mode 100644 index 0000000..64d23c1 Binary files /dev/null and b/modules/window_managers/hyprland/wallpaper.jpg differ