diff --git a/flake.nix b/flake.nix
index bf8bb92..a2bc40c 100644
--- a/flake.nix
+++ b/flake.nix
@@ -123,6 +123,7 @@
({...}: {nixpkgs.config.allowUnfree = true;})
inputs.plasma-manager.homeManagerModules.plasma-manager
inputs.sops-nix.homeManagerModules.sops
+ ./modules
(./home + "/jonas@comfy-station.nix")
];
@@ -141,6 +142,7 @@
modules = [
({...}: {nixpkgs.overlays = [overlay-unstable];})
({...}: {nixpkgs.config.allowUnfree = true;})
+ ./modules
(./home + "/jonas@harbor.nix")
];
@@ -159,6 +161,7 @@
modules = [
({...}: {nixpkgs.overlays = [overlay-unstable];})
({...}: {nixpkgs.config.allowUnfree = true;})
+ ./modules
(./home + "/jonas@monolith.nix")
];
@@ -177,6 +180,7 @@
modules = [
({...}: {nixpkgs.overlays = [overlay-unstable];})
({...}: {nixpkgs.config.allowUnfree = true;})
+ ./modules
./home/jroeger.nix
];
diff --git a/home/jonas@comfy-station.nix b/home/jonas@comfy-station.nix
index 183fef8..7d8e5a6 100644
--- a/home/jonas@comfy-station.nix
+++ b/home/jonas@comfy-station.nix
@@ -1,9 +1,7 @@
{config, ...}: rec {
imports = [
../modules/home/borg.nix
- ../modules/home/doom
../modules/home/firefox.nix
- ../modules/home/hyprland
../modules/home/kdeconnect.nix
../modules/home/kitty
../modules/home/nextcloud
@@ -28,10 +26,11 @@
age.keyFile = "${home.homeDirectory}/.config/sops/age/keys.txt";
};
- doom.enable = true;
- doom.enableCopilot = true;
- doom.withNixPkgs = true;
- doom.withShellPkgs = true;
+ # hive modules
+ hive.doom.enable = true;
+ hive.doom.enableCopilot = true;
+ hive.doom.withNixPkgs = true;
+ hive.doom.withShellPkgs = true;
# Make session variables available in systemd units
# SEE: https://github.com/nix-community/home-manager/pull/5543
diff --git a/home/jonas@harbor.nix b/home/jonas@harbor.nix
index 2c730b7..35c057c 100644
--- a/home/jonas@harbor.nix
+++ b/home/jonas@harbor.nix
@@ -1,6 +1,5 @@
{...}: {
imports = [
- ../modules/home/doom
../modules/home/ranger
../modules/home/zsh
];
@@ -10,9 +9,11 @@
home.username = "jonas";
home.homeDirectory = "/home/jonas";
- doom.enable = true;
- doom.withNixPkgs = true;
- doom.withShellPkgs = true;
+ # hive modules
+ hive.nix-scripts.enable = true;
+ hive.doom.enable = true;
+ hive.doom.withNixPkgs = true;
+ hive.doom.withShellPkgs = true;
# This value determines the Home Manager release that your configuration is
# compatible with. This helps avoid breakage when a new Home Manager release
diff --git a/home/jonas@monolith.nix b/home/jonas@monolith.nix
index 3a67547..59d02aa 100644
--- a/home/jonas@monolith.nix
+++ b/home/jonas@monolith.nix
@@ -1,7 +1,6 @@
{config, ...}: rec {
imports = [
../modules/home/borg.nix
- ../modules/home/doom
../modules/home/firefox.nix
../modules/home/kdeconnect.nix
../modules/home/kitty
@@ -21,10 +20,11 @@
age.keyFile = "${home.homeDirectory}/.config/sops/age/keys.txt";
};
- doom.enable = true;
- doom.enableCopilot = true;
- doom.withNixPkgs = true;
- doom.withShellPkgs = true;
+ # hive moduless
+ hive.doom.enable = true;
+ hive.doom.enableCopilot = true;
+ hive.doom.withNixPkgs = true;
+ hive.doom.withShellPkgs = true;
# Make session variables available in systemd units
# SEE: https://github.com/nix-community/home-manager/pull/5543
diff --git a/home/jroeger.nix b/home/jroeger.nix
index eb212ec..96eafe6 100644
--- a/home/jroeger.nix
+++ b/home/jroeger.nix
@@ -1,6 +1,5 @@
{...}: {
imports = [
- ../modules/home/doom
../modules/home/kitty
../modules/home/ranger
../modules/home/yubikey.nix
@@ -14,11 +13,12 @@
yubikey.pinentry = "gnome3";
- doom.enable = true;
- doom.enableCopilot = true;
- doom.withNixPkgs = true;
- doom.withShellPkgs = true;
- doom.withCXXPkgs = true;
+ # hive modules
+ hive.doom.enable = true;
+ hive.doom.enableCopilot = true;
+ hive.doom.withNixPkgs = true;
+ hive.doom.withShellPkgs = true;
+ hive.doom.withCXXPkgs = true;
# This value determines the Home Manager release that your configuration is
# compatible with. This helps avoid breakage when a new Home Manager release
diff --git a/modules/default.nix b/modules/default.nix
index ea14144..7563f9f 100644
--- a/modules/default.nix
+++ b/modules/default.nix
@@ -1,20 +1,34 @@
-{isHM ? null, ...}: {
+{
+ isHM ? null,
+ lib,
+ ...
+}: {
assertions = [
{
assertion = isHM != null;
message = "The \"home-manager\" flag isHM is required.";
}
];
- imports = [
- ./bin/nix-scripts.nix
- ./desktop/de
- ./desktop/dm
- ./hardware/bluetooth.nix
- ./hardware/sound.nix
- ./hardware/yubikey.nix
- ./networking/wireguard
- ./services/borg-server.nix
- ./services/nextcloud-instance.nix
- ./services/virt-manager.nix
- ];
+ imports =
+ [
+ # modules containing both system and home-manager configs
+ ./bin/nix-scripts.nix
+ ]
+ ++ lib.optionals (! isHM) [
+ # pure system modules
+ ./desktop/de
+ ./desktop/dm
+ ./hardware/bluetooth.nix
+ ./hardware/sound.nix
+ ./hardware/yubikey.nix
+ ./networking/wireguard
+ ./services/borg-server.nix
+ ./services/nextcloud-instance.nix
+ ./services/virt-manager.nix
+ ]
+ ++ lib.optionals isHM [
+ # pure home-manager modules
+ ./home/doom
+ ./home/hyprland
+ ];
}
diff --git a/modules/home/doom/doom.nix b/modules/home/doom/doom.nix
index 7513590..5d3e8b7 100644
--- a/modules/home/doom/doom.nix
+++ b/modules/home/doom/doom.nix
@@ -4,7 +4,7 @@
lib,
...
}: let
- cfg = config.doom;
+ cfg = config.hive.doom;
doom-pkgs = with pkgs; [
fira
fira-code-nerdfont
@@ -81,7 +81,7 @@
fi
'';
in {
- options.doom = {
+ options.hive.doom = {
enable = lib.mkEnableOption "Enable Doom Emacs";
enableCopilot = lib.mkEnableOption "Enable Copilot in Doom Emacs";
withLatexPkgs = lib.mkEnableOption "Enable LaTeX packages in doom path";
diff --git a/modules/home/dunst/config.nix b/modules/home/dunst/config.nix
deleted file mode 100644
index de5a0db..0000000
--- a/modules/home/dunst/config.nix
+++ /dev/null
@@ -1,29 +0,0 @@
-{
- config,
- pkgs,
- ...
-}: {
- services.dunst.settings = {
- global = {
- origin = "top-right";
- frame_color = "#33ccff";
- transparency = 20;
- background = "#000000";
- timeout = 5;
- offset = "20x50";
- force_xwayland = false;
- corner_radius = 15;
- follow = "keyboard";
- progress_bar = true;
- dmenu = "${pkgs.wofi}/bin/wofi --dmenu";
- mouse_left_click = "do_action, close_current";
- mouse_middle_click = "close_current";
- mouse_right_click = "close_all";
- };
-
- urgency_critical = {
- timeout = 15;
- background = "#500005";
- };
- };
-}
diff --git a/modules/home/dunst/default.nix b/modules/home/dunst/default.nix
deleted file mode 100644
index e7f9d0c..0000000
--- a/modules/home/dunst/default.nix
+++ /dev/null
@@ -1,6 +0,0 @@
-{...}: {
- imports = [
- ./config.nix
- ./dunst.nix
- ];
-}
diff --git a/modules/home/dunst/dunst.nix b/modules/home/dunst/dunst.nix
deleted file mode 100644
index 618252e..0000000
--- a/modules/home/dunst/dunst.nix
+++ /dev/null
@@ -1,3 +0,0 @@
-{...}: {
- services.dunst.enable = true;
-}
diff --git a/modules/home/hyprland/config.nix b/modules/home/hyprland/config.nix
index 6ea2b69..12e6788 100644
--- a/modules/home/hyprland/config.nix
+++ b/modules/home/hyprland/config.nix
@@ -4,6 +4,7 @@
lib,
...
}: let
+ cfg = config.hive.hyprland;
screenshot = pkgs.writeShellScriptBin "screenshot" ''
region=0
clip=0
@@ -31,330 +32,332 @@
fi
'';
in {
- services.hypridle.settings = {
- general = {
- # lock_cmd = notify-send "lock!" # dbus/sysd lock command (loginctl lock-session)
- # unlock_cmd = notify-send "unlock!" # same as above, but unlock
- ignore_dbus_inhibit = "false"; # whether to ignore dbus-sent idle-inhibit requests (used by e.g. firefox or steam)
- lock_cmd = "pidof hyprlock || hyprlock"; # avoid starting multiple hyprlock instances.
- before_sleep_cmd = "loginctl lock-session"; # lock before suspend.
- after_sleep_cmd = "hyprctl dispatch dpms on"; # to avoid having to press a key twice to turn on the display.
- };
-
- listener = [
- # Screenlock
- {
- timeout = 180; # in seconds
- on-timeout = "hyprlock"; # command to run when timeout has passed
- # on-resume = notify-send "Welcome back to your desktop!" # command to run when activity is detected after timeout has fired.
- }
- # Suspend
- {
- timeout = 360; # in seconds
- on-timeout = "systemctl suspend"; # command to run when timeout has passed
- # on-resume = notify-send "Welcome back to your desktop!" # command to run when activity is detected after timeout has fired.
- }
- ];
- };
-
- programs.hyprlock = lib.mkIf config.wayland.windowManager.hyprland.enable {
- enable = true;
- settings = {
- background = [
- {
- path = "screenshot"; # only png supported for now
- # color = $color1
-
- # all these options are taken from hyprland, see https://wiki.hyprland.org/Configuring/Variables/#blur for explanations
- blur_size = 4;
- blur_passes = 3; # 0 disables blurring
- noise = 0.0117;
- contrast = 1.3000; # Vibrant!!!
- brightness = 0.8000;
- vibrancy = 0.2100;
- vibrancy_darkness = 0.0;
- }
- ];
-
- # Hours
- label = [
- {
- text = ''cmd[update:1000] echo " $(date +"%H") "'';
- #color = $color6
- font_size = 112;
- # font_family = Geist Mono 10
- shadow_passes = 3;
- shadow_size = 4;
-
- position = "0, 220";
- halign = "center";
- valign = "center";
- }
- {
- text = ''cmd[update:1000] echo " $(date +"%M") "'';
- # color = $color6
- font_size = 112;
- # font_family = Geist Mono 10
- shadow_passes = 3;
- shadow_size = 4;
-
- position = "0, 80";
- halign = "center";
- valign = "center";
- }
- {
- text = ''cmd[update:18000000] echo " "$(date +'%A')" "'';
- # color = $color7
- font_size = 22;
- # font_family = JetBrainsMono Nerd Font 10
-
- position = "0, -10";
- halign = "center";
- valign = "center";
- }
- {
- text = ''cmd[update:18000000] echo " "$(${pkgs.coreutils-full}/bin/date +'%d %b')" "'';
- # color = $color7
- font_size = 18;
- #font_family = JetBrainsMono Nerd Font 10
-
- position = "0, -40";
- halign = "center";
- valign = "center";
- }
- {
- text = ''cmd[update:18000000] echo "So ca. $(${pkgs.curl}/bin/curl -s 'wttr.in?format=%t' | ${pkgs.coreutils-full}/bin/tr -d '+') oder watt."'';
- #color = $color7
- font_size = 18;
- # font_family = Geist Mono 10
-
- position = "0, 40";
- halign = "center";
- valign = "bottom";
- }
- ];
-
- input-field = [
- {
- size = "250, 50";
- outline_thickness = 3;
-
- dots_size = 0.26; # Scale of input-field height, 0.2 - 0.8
- dots_spacing = 0.64; # Scale of dots' absolute size, 0.0 - 1.0
- dots_center = true;
- dots_rouding = -1;
-
- rounding = 22;
- # outer_color = $color0
- # inner_color = $color0
- # font_color = $color6
- fade_on_empty = true;
- placeholder_text = ''Password...''; # Text rendered in the input box when it's empty.
-
- position = "0, 120";
- halign = "center";
- valign = "bottom";
- }
- ];
- };
- };
-
- wayland.windowManager.hyprland = lib.mkIf config.wayland.windowManager.hyprland.enable {
- settings = {
- exec-once = [
- "${pkgs.wpaperd}/bin/wpaperd &"
- ];
-
- "$mod" = "SUPER";
- bind =
- [
- "$mod, RETURN, exec, ${pkgs.kitty}/bin/kitty"
- "$mod, d, exec, ${pkgs.wofi}/bin/wofi --show drun"
- "$mod, h, movefocus, l"
- "$mod, j, movefocus, d"
- "$mod, k, movefocus, u"
- "$mod, l, movefocus, r"
- "$mod, LEFT, movefocus, l"
- "$mod, DOWN, movefocus, d"
- "$mod, UP, movefocus, u"
- "$mod, RIGHT, movefocus, r"
- "$mod SHIFT, h, movewindow, l"
- "$mod SHIFT, j, movewindow, d"
- "$mod SHIFT, k, movewindow, u"
- "$mod SHIFT, l, movewindow, r"
- "$mod SHIFT, LEFT, movewindow, l"
- "$mod SHIFT, DOWN, movewindow, d"
- "$mod SHIFT, UP, movewindow, u"
-
- "$mod CTRL SHIFT, LEFT, moveactive, -10 0"
- "$mod CTRL SHIFT, DOWN, moveactive, 0 10"
- "$mod CTRL SHIFT, UP, moveactive, 0 -10"
- "$mod CTRL SHIFT, RIGHT, moveactive, 10 0"
- "$mod CTRL SHIFT, h, moveactive, -10 0"
- "$mod CTRL SHIFT, j, moveactive, 0 10"
- "$mod CTRL SHIFT, k, moveactive, 0 -10"
- "$mod CTRL SHIFT, l, moveactive, 10 0"
- "$mod SHIFT, q, killactive"
- "$mod CTRL, h, resizeactive, -5% 0%"
- "$mod CTRL, l, resizeactive, 5% 0%"
- "$mod CTRL, j, resizeactive, 0% -5%"
- "$mod CTRL, k, resizeactive, 0% 5%"
- "$mod, SPACE, togglefloating, active"
- "$mod SHIFT, SPACE, centerwindow"
- "$mod, f, fullscreen, 1"
- "$mod SHIFT, f, fullscreen, 0"
- "$mod CTRL, f, fullscreenstate, -1 2"
- "$mod SHIFT, s, pin"
- "$mod SHIFT, x, exec, ${pkgs.hyprland}/bin/hyprctl kill"
- ", XF86AudioRaiseVolume, exec, ${pkgs.pulsemixer}/bin/pulsemixer --change-volume +5"
- ", XF86AudioLowerVolume, exec, ${pkgs.pulsemixer}/bin/pulsemixer --change-volume -5"
- ", XF86AudioMute, exec, ${pkgs.pulsemixer}/bin/pulsemixer --toggle-mute"
- ", XF86AudioMicMute, exec, ${pkgs.pulsemixer}/bin/pulsemixer --toggle-mute --id 1"
- ", XF86MonBrightnessUp, exec, ${pkgs.brightnessctl}/bin/brightnessctl set +5%"
- ", XF86MonBrightnessDown, exec, ${pkgs.brightnessctl}/bin/brightnessctl set 5%-"
- "$mod, 9, exec, ${pkgs.hyprlock}/bin/hyprlock"
- "$mod, 0, exec, ${pkgs.wlogout}/bin/wlogout -b 5"
- "$mod, n, exec, ${pkgs.swaynotificationcenter}/bin/swaync-client -t"
- ", Print, exec, ${screenshot}/bin/screenshot"
- "CTRL, Print, exec, ${screenshot}/bin/screenshot --region"
- "SHIFT, Print, exec, ${screenshot}/bin/screenshot --clip"
- "CTRL SHIFT, Print, exec, ${screenshot}/bin/screenshot --region --clip"
- ]
- ++ (
- # workspaces
- # binds $mod + [shift +] {1..10} to [move to] workspace {1..10}
- builtins.concatLists (builtins.genList (
- x: let
- ws = builtins.toString (x + 1);
- in [
- "$mod, ${ws}, workspace, ${ws}"
- "$mod SHIFT, ${ws}, movetoworkspace, ${ws}"
- "$mod CTRL, ${ws}, movetoworkspacesilent, ${ws}"
- ]
- )
- 8)
- );
- # See https://wiki.hyprland.org/Configuring/Monitors/
- monitor = ",preferred,auto,1";
- env = [
- "GDK_SCALE,1"
- "XCURSOR_SIZE,12"
- ];
-
- xwayland = {
- force_zero_scaling = true;
- };
-
- # See https://wiki.hyprland.org/Configuring/Keywords/ for more
-
- # Execute your favorite apps at launch
- # exec-once = waybar & hyprpaper & firefox
-
- # Source a file (multi-file configs)
- # source = ~/.config/hypr/myColors.conf
-
- # For all categories, see https://wiki.hyprland.org/Configuring/Variables/
- input = {
- kb_layout = "de";
- kb_variant = "deadacute";
- kb_model = "";
- kb_options = "caps:ctrl_modifier";
- kb_rules = "";
- repeat_delay = 250;
- repeat_rate = 30;
- follow_mouse = 1;
-
- touchpad = {
- natural_scroll = "yes";
- };
-
- sensitivity = 0; # -1.0 - 1.0, 0 means no modification.
- };
-
+ config = lib.mkIf cfg.enable {
+ services.hypridle.settings = {
general = {
- # See https://wiki.hyprland.org/Configuring/Variables/ for more
-
- gaps_in = 5;
- gaps_out = 10;
- border_size = 2;
- "col.active_border" = "rgba(33ccffee) rgba(00ff99ee) 45deg";
- "col.inactive_border" = "rgba(595959aa)";
-
- layout = "dwindle";
-
- # Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on
- allow_tearing = false;
+ # lock_cmd = notify-send "lock!" # dbus/sysd lock command (loginctl lock-session)
+ # unlock_cmd = notify-send "unlock!" # same as above, but unlock
+ ignore_dbus_inhibit = "false"; # whether to ignore dbus-sent idle-inhibit requests (used by e.g. firefox or steam)
+ lock_cmd = "pidof hyprlock || hyprlock"; # avoid starting multiple hyprlock instances.
+ before_sleep_cmd = "loginctl lock-session"; # lock before suspend.
+ after_sleep_cmd = "hyprctl dispatch dpms on"; # to avoid having to press a key twice to turn on the display.
};
- layerrule = [
- # blur for wlogout
- "blur, logout_dialog"
-
- # blur for swaync
- "blur, swaync-control-center"
- "blur, swaync-notification-window"
- "ignorezero, swaync-control-center"
- "ignorezero, swaync-notification-window"
- "ignorealpha 0.5, swaync-control-center"
- "ignorealpha 0.5, swaync-notification-window"
+ listener = [
+ # Screenlock
+ {
+ timeout = 180; # in seconds
+ on-timeout = "hyprlock"; # command to run when timeout has passed
+ # on-resume = notify-send "Welcome back to your desktop!" # command to run when activity is detected after timeout has fired.
+ }
+ # Suspend
+ {
+ timeout = 360; # in seconds
+ on-timeout = "systemctl suspend"; # command to run when timeout has passed
+ # on-resume = notify-send "Welcome back to your desktop!" # command to run when activity is detected after timeout has fired.
+ }
];
+ };
- decoration = {
- # See https://wiki.hyprland.org/Configuring/Variables/ for more
+ programs.hyprlock = {
+ enable = true;
+ settings = {
+ background = [
+ {
+ path = "screenshot"; # only png supported for now
+ # color = $color1
- rounding = 10;
+ # all these options are taken from hyprland, see https://wiki.hyprland.org/Configuring/Variables/#blur for explanations
+ blur_size = 4;
+ blur_passes = 3; # 0 disables blurring
+ noise = 0.0117;
+ contrast = 1.3000; # Vibrant!!!
+ brightness = 0.8000;
+ vibrancy = 0.2100;
+ vibrancy_darkness = 0.0;
+ }
+ ];
- blur = {
- enabled = true;
- size = 8;
- passes = 1;
- new_optimizations = true;
- };
- };
+ # Hours
+ label = [
+ {
+ text = ''cmd[update:1000] echo " $(date +"%H") "'';
+ #color = $color6
+ font_size = 112;
+ # font_family = Geist Mono 10
+ shadow_passes = 3;
+ shadow_size = 4;
- animations = {
- enabled = "yes";
+ position = "0, 220";
+ halign = "center";
+ valign = "center";
+ }
+ {
+ text = ''cmd[update:1000] echo " $(date +"%M") "'';
+ # color = $color6
+ font_size = 112;
+ # font_family = Geist Mono 10
+ shadow_passes = 3;
+ shadow_size = 4;
- # Some default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more
+ position = "0, 80";
+ halign = "center";
+ valign = "center";
+ }
+ {
+ text = ''cmd[update:18000000] echo " "$(date +'%A')" "'';
+ # color = $color7
+ font_size = 22;
+ # font_family = JetBrainsMono Nerd Font 10
- bezier = "myBezier, 0.05, 0.9, 0.1, 1.05";
+ position = "0, -10";
+ halign = "center";
+ valign = "center";
+ }
+ {
+ text = ''cmd[update:18000000] echo " "$(${pkgs.coreutils-full}/bin/date +'%d %b')" "'';
+ # color = $color7
+ font_size = 18;
+ #font_family = JetBrainsMono Nerd Font 10
- 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"
+ position = "0, -40";
+ halign = "center";
+ valign = "center";
+ }
+ {
+ text = ''cmd[update:18000000] echo "So ca. $(${pkgs.curl}/bin/curl -s 'wttr.in?format=%t' | ${pkgs.coreutils-full}/bin/tr -d '+') oder watt."'';
+ #color = $color7
+ font_size = 18;
+ # font_family = Geist Mono 10
+
+ position = "0, 40";
+ halign = "center";
+ valign = "bottom";
+ }
+ ];
+
+ input-field = [
+ {
+ size = "250, 50";
+ outline_thickness = 3;
+
+ dots_size = 0.26; # Scale of input-field height, 0.2 - 0.8
+ dots_spacing = 0.64; # Scale of dots' absolute size, 0.0 - 1.0
+ dots_center = true;
+ dots_rouding = -1;
+
+ rounding = 22;
+ # outer_color = $color0
+ # inner_color = $color0
+ # font_color = $color6
+ fade_on_empty = true;
+ placeholder_text = ''Password...''; # Text rendered in the input box when it's empty.
+
+ position = "0, 120";
+ halign = "center";
+ valign = "bottom";
+ }
];
};
+ };
- dwindle = {
- # See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more
- pseudotile = "yes"; # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
- preserve_split = "yes"; # you probably want this
+ wayland.windowManager.hyprland = {
+ settings = {
+ exec-once = [
+ "${pkgs.wpaperd}/bin/wpaperd &"
+ ];
+
+ "$mod" = "SUPER";
+ bind =
+ [
+ "$mod, RETURN, exec, ${pkgs.kitty}/bin/kitty"
+ "$mod, d, exec, ${pkgs.wofi}/bin/wofi --show drun"
+ "$mod, h, movefocus, l"
+ "$mod, j, movefocus, d"
+ "$mod, k, movefocus, u"
+ "$mod, l, movefocus, r"
+ "$mod, LEFT, movefocus, l"
+ "$mod, DOWN, movefocus, d"
+ "$mod, UP, movefocus, u"
+ "$mod, RIGHT, movefocus, r"
+ "$mod SHIFT, h, movewindow, l"
+ "$mod SHIFT, j, movewindow, d"
+ "$mod SHIFT, k, movewindow, u"
+ "$mod SHIFT, l, movewindow, r"
+ "$mod SHIFT, LEFT, movewindow, l"
+ "$mod SHIFT, DOWN, movewindow, d"
+ "$mod SHIFT, UP, movewindow, u"
+
+ "$mod CTRL SHIFT, LEFT, moveactive, -10 0"
+ "$mod CTRL SHIFT, DOWN, moveactive, 0 10"
+ "$mod CTRL SHIFT, UP, moveactive, 0 -10"
+ "$mod CTRL SHIFT, RIGHT, moveactive, 10 0"
+ "$mod CTRL SHIFT, h, moveactive, -10 0"
+ "$mod CTRL SHIFT, j, moveactive, 0 10"
+ "$mod CTRL SHIFT, k, moveactive, 0 -10"
+ "$mod CTRL SHIFT, l, moveactive, 10 0"
+ "$mod SHIFT, q, killactive"
+ "$mod CTRL, h, resizeactive, -5% 0%"
+ "$mod CTRL, l, resizeactive, 5% 0%"
+ "$mod CTRL, j, resizeactive, 0% -5%"
+ "$mod CTRL, k, resizeactive, 0% 5%"
+ "$mod, SPACE, togglefloating, active"
+ "$mod SHIFT, SPACE, centerwindow"
+ "$mod, f, fullscreen, 1"
+ "$mod SHIFT, f, fullscreen, 0"
+ "$mod CTRL, f, fullscreenstate, -1 2"
+ "$mod SHIFT, s, pin"
+ "$mod SHIFT, x, exec, ${pkgs.hyprland}/bin/hyprctl kill"
+ ", XF86AudioRaiseVolume, exec, ${pkgs.pulsemixer}/bin/pulsemixer --change-volume +5"
+ ", XF86AudioLowerVolume, exec, ${pkgs.pulsemixer}/bin/pulsemixer --change-volume -5"
+ ", XF86AudioMute, exec, ${pkgs.pulsemixer}/bin/pulsemixer --toggle-mute"
+ ", XF86AudioMicMute, exec, ${pkgs.pulsemixer}/bin/pulsemixer --toggle-mute --id 1"
+ ", XF86MonBrightnessUp, exec, ${pkgs.brightnessctl}/bin/brightnessctl set +5%"
+ ", XF86MonBrightnessDown, exec, ${pkgs.brightnessctl}/bin/brightnessctl set 5%-"
+ "$mod, 9, exec, ${pkgs.hyprlock}/bin/hyprlock"
+ "$mod, 0, exec, ${pkgs.wlogout}/bin/wlogout -b 5"
+ "$mod, n, exec, ${pkgs.swaynotificationcenter}/bin/swaync-client -t"
+ ", Print, exec, ${screenshot}/bin/screenshot"
+ "CTRL, Print, exec, ${screenshot}/bin/screenshot --region"
+ "SHIFT, Print, exec, ${screenshot}/bin/screenshot --clip"
+ "CTRL SHIFT, Print, exec, ${screenshot}/bin/screenshot --region --clip"
+ ]
+ ++ (
+ # workspaces
+ # binds $mod + [shift +] {1..10} to [move to] workspace {1..10}
+ builtins.concatLists (builtins.genList (
+ x: let
+ ws = builtins.toString (x + 1);
+ in [
+ "$mod, ${ws}, workspace, ${ws}"
+ "$mod SHIFT, ${ws}, movetoworkspace, ${ws}"
+ "$mod CTRL, ${ws}, movetoworkspacesilent, ${ws}"
+ ]
+ )
+ 8)
+ );
+ # See https://wiki.hyprland.org/Configuring/Monitors/
+ monitor = ",preferred,auto,1";
+ env = [
+ "GDK_SCALE,1"
+ "XCURSOR_SIZE,12"
+ ];
+
+ xwayland = {
+ force_zero_scaling = true;
+ };
+
+ # See https://wiki.hyprland.org/Configuring/Keywords/ for more
+
+ # Execute your favorite apps at launch
+ # exec-once = waybar & hyprpaper & firefox
+
+ # Source a file (multi-file configs)
+ # source = ~/.config/hypr/myColors.conf
+
+ # For all categories, see https://wiki.hyprland.org/Configuring/Variables/
+ input = {
+ kb_layout = "de";
+ kb_variant = "deadacute";
+ kb_model = "";
+ kb_options = "caps:ctrl_modifier";
+ kb_rules = "";
+ repeat_delay = 250;
+ repeat_rate = 30;
+ follow_mouse = 1;
+
+ touchpad = {
+ natural_scroll = "yes";
+ };
+
+ sensitivity = 0; # -1.0 - 1.0, 0 means no modification.
+ };
+
+ general = {
+ # See https://wiki.hyprland.org/Configuring/Variables/ for more
+
+ gaps_in = 5;
+ gaps_out = 10;
+ border_size = 2;
+ "col.active_border" = "rgba(33ccffee) rgba(00ff99ee) 45deg";
+ "col.inactive_border" = "rgba(595959aa)";
+
+ layout = "dwindle";
+
+ # Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on
+ allow_tearing = false;
+ };
+
+ layerrule = [
+ # blur for wlogout
+ "blur, logout_dialog"
+
+ # blur for swaync
+ "blur, swaync-control-center"
+ "blur, swaync-notification-window"
+ "ignorezero, swaync-control-center"
+ "ignorezero, swaync-notification-window"
+ "ignorealpha 0.5, swaync-control-center"
+ "ignorealpha 0.5, swaync-notification-window"
+ ];
+
+ decoration = {
+ # See https://wiki.hyprland.org/Configuring/Variables/ for more
+
+ rounding = 10;
+
+ blur = {
+ enabled = true;
+ size = 8;
+ passes = 1;
+ new_optimizations = true;
+ };
+ };
+
+ animations = {
+ enabled = "yes";
+
+ # Some default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more
+
+ 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"
+ ];
+ };
+
+ dwindle = {
+ # See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more
+ pseudotile = "yes"; # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
+ preserve_split = "yes"; # you probably want this
+ };
+
+ master = {
+ # See https://wiki.hyprland.org/Configuring/Master-Layout/ for more
+ # new_is_master = true;
+ };
+
+ gestures = {
+ # See https://wiki.hyprland.org/Configuring/Variables/ for more
+ workspace_swipe = "off";
+ };
+
+ misc = {
+ # See https://wiki.hyprland.org/Configuring/Variables/ for more
+ force_default_wallpaper = 0; # Set to 0 to disable the anime mascot wallpapers
+ };
+
+ # Example per-device config
+ # See https://wiki.hyprland.org/Configuring/Keywords/#executing for more
+ # "device:epic-mouse-v1" = {
+ # sensitivity = -0.5;
+ # };
};
-
- master = {
- # See https://wiki.hyprland.org/Configuring/Master-Layout/ for more
- # new_is_master = true;
- };
-
- gestures = {
- # See https://wiki.hyprland.org/Configuring/Variables/ for more
- workspace_swipe = "off";
- };
-
- misc = {
- # See https://wiki.hyprland.org/Configuring/Variables/ for more
- force_default_wallpaper = 0; # Set to 0 to disable the anime mascot wallpapers
- };
-
- # Example per-device config
- # See https://wiki.hyprland.org/Configuring/Keywords/#executing for more
- # "device:epic-mouse-v1" = {
- # sensitivity = -0.5;
- # };
};
};
}
diff --git a/modules/home/hyprland/default.nix b/modules/home/hyprland/default.nix
index fbd3986..5b5db0a 100644
--- a/modules/home/hyprland/default.nix
+++ b/modules/home/hyprland/default.nix
@@ -1,4 +1,8 @@
-{...}: {
+{lib, ...}: {
+ options.hive.hyprland = {
+ enable = lib.mkEnableOption "Enable Hyprland configuration";
+ };
+
imports = [
./config.nix
./hyprland.nix
diff --git a/modules/home/hyprland/hyprland.nix b/modules/home/hyprland/hyprland.nix
index 4e61ad0..8107d7a 100644
--- a/modules/home/hyprland/hyprland.nix
+++ b/modules/home/hyprland/hyprland.nix
@@ -1,22 +1,31 @@
-{pkgs, ...}: {
- wayland.windowManager.hyprland = {
- enable = true;
- systemd.enable = false;
- systemd.variables = ["--all"];
- xwayland.enable = true;
- };
+{
+ config,
+ lib,
+ pkgs,
+ ...
+}: let
+ cfg = config.hive.hyprland;
+in {
+ config = lib.mkIf cfg.enable {
+ wayland.windowManager.hyprland = {
+ enable = true;
+ systemd.enable = false;
+ systemd.variables = ["--all"];
+ xwayland.enable = true;
+ };
- home.packages = with pkgs; [
- wl-clipboard
- ];
+ home.packages = with pkgs; [
+ wl-clipboard
+ ];
- services.hypridle.enable = true;
+ services.hypridle.enable = true;
- programs.wpaperd = {
- enable = true;
- settings = {
- default = {
- path = ../../../static/wallpaper/stones.jpg;
+ programs.wpaperd = {
+ enable = true;
+ settings = {
+ default = {
+ path = ../../../static/wallpaper/stones.jpg;
+ };
};
};
};