Initial commit
- Create a basic bootable system with Hyprland, a browser and some
basic utilities
Change-Id: I4178e1185de319c45c6a4f2711fe035f50777e08
diff --git a/modules/home/hyprland/default.nix b/modules/home/hyprland/default.nix
new file mode 100644
index 0000000..a2f8b88
--- /dev/null
+++ b/modules/home/hyprland/default.nix
@@ -0,0 +1,93 @@
+{ pkgs, config, inputs, system, ... }: let
+ lock = "${pkgs.waylock}/bin/waylock";
+in {
+
+ # TODO: Eww, SwayNC, hyprland-per-window-layout, waylock, hy3, anyrun, hypr-empty
+
+ home.packages = [ pkgs.hyprpicker ];
+
+ minion.touchpadGestures.enable = true;
+
+ services.fusuma.settings.swipe = let
+ hyprctl = "${config.wayland.windowManager.hyprland.package}/bin/hyprctl";
+ jq = "${pkgs.jq}/bin/jq";
+ awk = "${pkgs.gawk}/bin/awk";
+ in {
+ "3".up.command = "${hyprctl} dispatch fullscreen 0";
+ "3".down.command = "${hyprctl} dispatch fullscreen 0";
+ "4".down.command = lock;
+ "3".left.command = "${hyprctl} dispatch workspace $(${hyprctl} activeworkspace -j | ${jq} .id | ${awk} '{print $1+1}')";
+ "3".right.command = "${hyprctl} dispatch workspace $(${hyprctl} activeworkspace -j | ${jq} .id | ${awk} '{print $1-1}')";
+ };
+
+ wayland.windowManager.hyprland = {
+ enable = true;
+
+ xwayland.enable = true;
+ systemd.enable = true;
+
+ settings = let
+ mod = "SUPER";
+ terminal = "${pkgs.kitty}/bin/kitty";
+ menu = "${inputs.anyrun.packages.${system}.anyrun}/bin/anyrun";
+ in {
+ misc = {
+ disable_hyprland_logo = true;
+ disable_splash_rendering = true;
+ };
+
+ exec-once = "${pkgs.hyprpaper}/bin/hyprpaper";
+
+ monitor = [
+ "eDP-1,preferred,0x0,1"
+ "desc:Dell Inc. DELL P2715Q V7WP95AV914L,preferred,2256x-1956,1,transform,1"
+ "desc:AOC 2460G5 0x00023C3F,preferred,336x-1080,1"
+ ",preferred,auto,1" # https://wiki.hyprland.org/Configuring/Monitors/
+ ];
+
+ input = {
+ kb_layout = "us";
+ kb_variant = "dvorak";
+ natural_scroll = true;
+
+ touchpad = {
+ natural_scroll = true;
+ };
+ };
+
+ xwayland = {
+ force_zero_scaling = true;
+ };
+
+ bind = [
+ "${mod}, Q, killactive"
+ "${mod}, SPACE, togglefloating"
+ "${mod}, RETURN, exec, ${terminal}"
+ "${mod}, down, movefocus, d"
+ "${mod}, up, movefocus, u"
+ "${mod}, right, movefocus, r"
+ "${mod}, left, movefocus, l"
+ "${mod}, L, exec, ${lock}"
+ "${mod}, D, exec, ${menu}"
+ ] ++ (
+ 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 = [
+ "${mod}, mouse:272, movewindow"
+ "${mod}, mouse:273, resizewindow"
+ ];
+ };
+ };
+}
\ No newline at end of file