feat: changed wayland compositor configuration

- added hyprland initial configuration
- added hyprland plugins
- added kanshi profiles for docked modes
- added misc home manager configuration options
This commit is contained in:
Zhongheng Liu 2024-08-08 18:03:40 +08:00
commit 065b1bac9d
3 changed files with 71 additions and 17 deletions

View file

@ -59,7 +59,35 @@ in
programs.firefox.enable = true; programs.firefox.enable = true;
# Nicely reload system units when changing configs # Nicely reload system units when changing configs
systemd.user.startServices = "sd-switch"; systemd.user.startServices = "sd-switch";
services.kanshi = {
enable = true;
profiles = {
undocked = {
outputs = [
{
criteria = "eDP-1";
scale = 1.0;
status = "enable";
}
];
};
docked = {
outputs = [
{
criteria = "HDMI-A-1";
position = "0,0";
mode = "1920x1080@60Hz";
}
{
criteria = "eDP-1";
position = "0,0";
status = "enable";
}
];
};
};
systemdTarget = "hyprland-session.target";
};
# https://nixos.wiki/wiki/FAQ/When_do_I_update_stateVersion # https://nixos.wiki/wiki/FAQ/When_do_I_update_stateVersion
home.stateVersion = "24.05"; home.stateVersion = "24.05";
} }

View file

@ -1,23 +1,49 @@
{config, pkgs, ... }: {config, pkgs, ... }:
{ {
home.packages = with pkgs; [
foot
];
wayland.windowManager.hyprland = { wayland.windowManager.hyprland = {
# Whether to enable Hyprland wayland compositor # Whether to enable Hyprland wayland compositor
enable = true; enable = true;
# The hyprland package to use # The hyprland package to use
package = pkgs.hyprland; package = pkgs.hyprland;
plugins = with pkgs.hyprlandPlugins; [
hyprbars
hyprfocus
csgo-vulkan-fix
];
# Whether to enable XWayland # Whether to enable XWayland
xwayland.enable = true; xwayland.enable = true;
settings = { settings = {
"$mod" = "SUPER"; "$mod" = "SUPER";
bind = [ bind = [
# foot terminal "$mod, D, exec, dmenu"
"$mod, ENTER, exec, ${pkgs.foot}/bin/foot -f 'BlexMono Nerd Font:size=24' zsh" # firefox quickstart
]; "$mod, F, exec, ${pkgs.firefox}/bin/firefox"
# foot terminal
"$mod, Return, exec, ${pkgs.foot}/bin/foot -f 'BlexMono Nerd Font:size=16' zsh"
] ++ (
# 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)
);
bindm = [ bindm = [
# mouse movements # mouse movements
"$mod, mouse:272, movewindow" "$mod, mouse:272, movewindow"
"$mod, mouse:273, resizewindow" "$mod, mouse:273, resizewindow"
"$mod ALT, mouse:272, resizewindow" "$mod ALT, mouse:272, resizewindow"
]; ];
}; };
# Optional # Optional

View file

@ -34,17 +34,17 @@
''; '';
}; };
}; };
#services.displayManager.sddm = { services.displayManager.sddm = {
# enable = true; enable = true;
# wayland.enable = true; wayland.enable = true;
#};
systemd.user.services.kanshi = {
description = "kanshi daemon";
serviceConfig = {
Type = "simple";
ExecStart = ''${pkgs.kanshi}/bin/kanshi -c kanshi_config_file'';
};
}; };
#systemd.user.services.kanshi = {
# description = "kanshi daemon";
# serviceConfig = {
# Type = "simple";
# ExecStart = ''${pkgs.kanshi}/bin/kanshi -c kanshi_config_file'';
# };
#};
security.polkit.enable = true; security.polkit.enable = true;
services.gnome.gnome-keyring.enable = true; services.gnome.gnome-keyring.enable = true;