diff --git a/hosts/dragyx/flocke/configuration.nix b/hosts/dragyx/flocke/configuration.nix index 8e4f41d..c626128 100644 --- a/hosts/dragyx/flocke/configuration.nix +++ b/hosts/dragyx/flocke/configuration.nix @@ -5,6 +5,7 @@ ../../../options/common/pin-registry.nix ../../../options/common/preserve-system.nix ../../../options/desktop/fonts.nix + ./packages.nix ]; @@ -12,18 +13,16 @@ time.timeZone = "Europe/Zurich"; security.sudo.package = pkgs.sudo.override { withInsults = true; }; - services.xserver = { - enable = true; - displayManager = { + services.displayManager = { sessionPackages = [ pkgs.hyprland ]; # pkgs.gnome.gnome-session.sessions ]; defaultSession = "hyprland"; sddm = { enable = true; - }; + wayland.enable = true; }; - windowManager.hypr.enable = true; }; + hardware.bluetooth.enable = true; hardware.bluetooth.powerOnBoot = true; @@ -110,18 +109,22 @@ modules = { other = { - system = { + system = rec { hostname = "flocke"; username = "dragyx"; - monitors = { - name = "LaptopMain"; - resolution = { - x = 2256; - y = 1504; - }; - scale = 1.0; - refresh_rate = 60; - }; + gitPath = "/home/${username}/repos/nichts"; + monitors = [ + { + name = "LaptopMain"; + device = "eDP-1"; + resolution = { + x = 2256; + y = 1504; + }; + scale = 1.175; + refresh_rate = 60; + } + ]; }; home-manager = { enable = true; @@ -134,7 +137,7 @@ mpv.enable = true; schizofox.enable = true; obs.enable = true; - neovim.enable = true; + # neovim.enable = true; git = { enable = true; userName = "Dragyx"; diff --git a/hosts/dragyx/flocke/packages.nix b/hosts/dragyx/flocke/packages.nix index a4a4afe..4c43613 100644 --- a/hosts/dragyx/flocke/packages.nix +++ b/hosts/dragyx/flocke/packages.nix @@ -28,7 +28,7 @@ in android-tools signal-desktop nextcloud-client - etcher + # etcher vlc audacity thunderbird diff --git a/modules/gui/WM/hyprland.nix b/modules/gui/WM/hyprland.nix index c65b784..a3a45ae 100644 --- a/modules/gui/WM/hyprland.nix +++ b/modules/gui/WM/hyprland.nix @@ -15,12 +15,9 @@ in config = mkIf cfg.enable { programs.xwayland.enable = true; - /* programs.hyprland = { - enable = true; - xwayland = true; + enable = true; }; - */ services.gnome.gnome-keyring.enable = mkDefault cfg.gnome-keyring; systemd.user.services.polkit-gnome-authentication-agent-1 = mkIf cfg.gnome-keyring { description = "polkit-gnome-authentication-agent-1"; @@ -48,15 +45,8 @@ in dunst # wireplumber - unstable.xwayland + xwayland pciutils # lspci is needed by hyprland - # from some obscure tutorial on youtube - # xorg.libxcb - # mesa - libglvnd - egl-wayland - libdrm - vulkan-tools dunst swww flameshot @@ -66,15 +56,20 @@ in wl-clipboard ]; - programs.hyprland = { + wayland.windowManager.hyprland = { enable = true; + systemd.enable = true; + xwayland.enable = true; settings = { - exec-once = mkIf cfg.gnome-keyring "${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1"; + exec-once = [ + "waybar" + ] ++ (if cfg.gnome-keyring then ["${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1"] + else []); monitor = map ( - m: "${m.device},${m.resolution.x}x${m.resolution.y}@${m.refresh_rate},${m.position.x}x${m.position.y},${m.scale},transform,${m.transform}" + m: "${m.device},${builtins.toString m.resolution.x}x${builtins.toString m.resolution.y}@${builtins.toString m.refresh_rate},${builtins.toString m.position.x}x${builtins.toString m.position.y},${builtins.toString m.scale},transform,${builtins.toString m.transform}" ) monitors; #TODO: default value input = { - kb_layout = console.keyMap; + kb_layout = "us"; natural_scroll = true; sensitivity = 0; }; @@ -82,9 +77,9 @@ in gaps_in = 2; gaps_out = 1; border_size = 1; - col.active_border = "rgba(33ccffee) rgba(00ff99ee) 45deg"; - col.inactive_border = "rgba(595959aa)"; - layout = dwindle; + "col.active_border" = "rgba(33ccffee) rgba(00ff99ee) 45deg"; + "col.inactive_border" = "rgba(595959aa)"; + layout = "dwindle"; }; decoration.rounding = 5; misc.disable_hyprland_logo = true; @@ -106,77 +101,76 @@ in gestures.workspace_swipe = true; debug.enable_stdout_logs = true; bind = [ + # Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more + "SUPER, RETURN, exec, alacritty" + "SUPER SHIFT, RETURN, exec, rofi -show drun" + "SUPER SHIFT, Q, killactive," + "SUPER, M, exit, " + "SUPER, B, exec, firefox" + "SUPER, f, fullscreen" + "SUPER, E, exec, nautilus --new-window " + "SUPER, V, togglefloating, " + "SUPER, P, pseudo, # dwindle" + "SUPER, S, togglesplit, # dwindle" + "SUPER, C, exec, /home/vali/.config/wallpaper/colorscheme-setter" + ",PRINT, exec, flameshot" - - # Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more - "SUPER, RETURN, exec, alacritty" - "SUPER SHIFT, RETURN, exec, rofi -show drun" - "SUPER SHIFT, Q, killactive," - "SUPER, M, exit, " - "SUPER, B, exec, firefox" - "SUPER, f, fullscreen" - "SUPER, E, exec, nautilus --new-window " - "SUPER, V, togglefloating, " - "SUPER, P, pseudo, # dwindle" - "SUPER, S, togglesplit, # dwindle" - "SUPER, C, exec, /home/vali/.config/wallpaper/colorscheme-setter" - ",PRINT, exec, flameshot" - - "binde = ,XF86MonBrightnessUp, exec, brightnessctl set 10%+" - "binde = ,XF86MonBrightnessDown, exec, brightnessctl set 10%-" - - # Example volume button that allows press and hold, volume limited to 150%" - "binde = ,XF86AudioRaiseVolume, exec, wpctl set-volume -l 1.5 @DEFAULT_AUDIO_SINK@ 5%+" - # Example volume button that will activate even while an input inhibitor is active" - "binde = ,XF86AudioLowerVolume, exec, wpctl set-volume -l 1.5 @DEFAULT_AUDIO_SINK@ 5%-" - ",XF86AudioMute, exec, $ wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle" - - # Move focus with mainMod + arrow keys" - "SUPER, h, movefocus, l" - "SUPER, l, movefocus, r" - "SUPER, k, movefocus, u" - "SUPER, j, movefocus, d" - - # move window to next / previous workspace" - "SUPER CTRL, h, movetoworkspace, -1" - "SUPER CTRL, l, movetoworkspace, +1" - - # move to next / previous workspace" - "SUPER CTRL, h, workspace, -1" - "SUPER CTRL, l, workspace, +1" - - - # 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" - - # Scroll through existing workspaces with mainMod + scroll" - "SUPER, mouse_down, workspace, e+1" - "SUPER, mouse_up, workspace, e-1" - " - # Move/resize windows with mainMod + LMB/RMB and dragging" - #bindm = SUPER, mouse:272, movewindow" - #bindm = SUPER, mouse:273, resizewindow" + + # Move focus with mainMod + arrow keys" + "SUPER, h, movefocus, l" + "SUPER, l, movefocus, r" + "SUPER, k, movefocus, u" + "SUPER, j, movefocus, d" + + # move window to next / previous workspace" + "SUPER CTRL, h, movetoworkspace, -1" + "SUPER CTRL, l, movetoworkspace, +1" + + # move to next / previous workspace" + "SUPER CTRL, h, workspace, -1" + "SUPER CTRL, l, workspace, +1" + + + # 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" + + # Scroll through existing workspaces with mainMod + scroll" + "SUPER, mouse_down, workspace, e+1" + "SUPER, mouse_up, workspace, e-1" + + # Move/resize windows with mainMod + LMB/RMB and dragging + "SUPER, mouse:272, movewindow" + # "bindm = SUPER, mouse:273, resizewindow" + ]; + binde = [ + ",XF86MonBrightnessUp, exec, brightnessctl set 10%+" + ",XF86MonBrightnessDown, exec, brightnessctl set 10%-" + # Example volume button that allows press and hold, volume limited to 150%" + ",XF86AudioRaiseVolume, exec, wpctl set-volume -l 1.5 @DEFAULT_AUDIO_SINK@ 5%+" + # Example volume button that will activate even while an input inhibitor is active" + ",XF86AudioLowerVolume, exec, wpctl set-volume -l 1.5 @DEFAULT_AUDIO_SINK@ 5%-" + ",XF86AudioMute, exec, $ wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle" ]; }; }; diff --git a/options/desktop/monitors.nix b/options/desktop/monitors.nix index a9036e7..42f40b5 100644 --- a/options/desktop/monitors.nix +++ b/options/desktop/monitors.nix @@ -7,63 +7,69 @@ with lib; List of monitors to use "; default = []; - type = with types; listOf submodule { - name = mkOption { - type = types.str; - description = "Give your monitor a cute name"; - default = "monitor0(I am lazy)"; - }; - device = mkOption { - type = types.str; - description = "The actual device name of the monitor"; - }; - resolution = mkOption { - type = types.submodule { - width = mkOption { - type = types.int; - description = "monitor width"; - default = "1920"; - }; - height = mkOption { - type = types.int; - description = "monitor height"; - default = "1080"; + type = with types; types.listOf (submodule { + options = { + name = mkOption { + type = types.str; + description = "Give your monitor a cute name"; + default = "monitor0(I am lazy)"; + }; + device = mkOption { + type = types.str; + description = "The actual device name of the monitor"; + }; + resolution = mkOption { + type = types.submodule { + options = { + x = mkOption { + type = types.int; + description = "monitor width"; + default = "1920"; + }; + y = mkOption { + type = types.int; + description = "monitor height"; + default = "1080"; + }; + }; }; }; - }; - scale = mkOption { - type = types.number; - description = "monitor scale"; - default = 1.0; - }; - refresh_rate = mkOption { - type = types.int; - description = "monitor refresh rate (in Hz)"; - default = 60; - }; - position = mkOption { - type = types.submodule { - x = mkOption { - type = types.int; - default = 0; + scale = mkOption { + type = types.number; + description = "monitor scale"; + default = 1.0; + }; + refresh_rate = mkOption { + type = types.int; + description = "monitor refresh rate (in Hz)"; + default = 60; + }; + position = mkOption { + type = types.submodule { + options = { + x = mkOption { + type = types.int; + default = 0; + }; + y = mkOption { + type = types.int; + default = 0; + }; + }; }; - y = mkOption { - type = types.int; - default = 0; + description = "absolute monitor posititon"; + default = { + x = 0; + y = 0; }; }; - description = "absolute monitor posititon"; - default = { - x = 0; - y = 0; + transform = mkOption { + type = types.ints.between 0 3; + description = "Rotation of the monitor counterclockwise"; + default = 0; }; }; - transform = mkOption { - type = types.ints.between 0 3; - description = "Rotation of the monitor counterclockwise"; - default = 0; - }; - }; + }); }; }