diff --git a/flake.lock b/flake.lock
index 55293e3..04e0bcb 100644
--- a/flake.lock
+++ b/flake.lock
@@ -1,5 +1,38 @@
{
"nodes": {
+ "aquamarine": {
+ "inputs": {
+ "hyprutils": [
+ "hyprland",
+ "hyprutils"
+ ],
+ "hyprwayland-scanner": [
+ "hyprland",
+ "hyprwayland-scanner"
+ ],
+ "nixpkgs": [
+ "hyprland",
+ "nixpkgs"
+ ],
+ "systems": [
+ "hyprland",
+ "systems"
+ ]
+ },
+ "locked": {
+ "lastModified": 1782073106,
+ "narHash": "sha256-dnS5SaZlPqR1E0dPXaPc+lFkBwLUbAgbwsVMk7uA6dY=",
+ "owner": "hyprwm",
+ "repo": "aquamarine",
+ "rev": "6d6e2384f381def4ea4ea81543cba4bbdac72457",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hyprwm",
+ "repo": "aquamarine",
+ "type": "github"
+ }
+ },
"crane": {
"locked": {
"lastModified": 1754269165,
@@ -97,6 +130,22 @@
}
},
"flake-compat": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1767039857,
+ "narHash": "sha256-vNpUSpF5Nuw8xvDLj2KCwwksIbjua2LZCqhV1LNRDns=",
+ "owner": "NixOS",
+ "repo": "flake-compat",
+ "rev": "5edf11c44bc78a0d334f6334cdaf7d60d732daab",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "repo": "flake-compat",
+ "type": "github"
+ }
+ },
+ "flake-compat_2": {
"flake": false,
"locked": {
"lastModified": 1747046372,
@@ -112,7 +161,7 @@
"type": "github"
}
},
- "flake-compat_2": {
+ "flake-compat_3": {
"locked": {
"lastModified": 1767039857,
"narHash": "sha256-vNpUSpF5Nuw8xvDLj2KCwwksIbjua2LZCqhV1LNRDns=",
@@ -127,7 +176,7 @@
"type": "github"
}
},
- "flake-compat_3": {
+ "flake-compat_4": {
"locked": {
"lastModified": 1733328505,
"narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=",
@@ -206,7 +255,7 @@
},
"flake-utils": {
"inputs": {
- "systems": "systems_2"
+ "systems": "systems_3"
},
"locked": {
"lastModified": 1731533236,
@@ -224,7 +273,7 @@
},
"flake-utils_2": {
"inputs": {
- "systems": "systems_4"
+ "systems": "systems_5"
},
"locked": {
"lastModified": 1731533236,
@@ -321,9 +370,358 @@
"type": "github"
}
},
+ "hyprcursor": {
+ "inputs": {
+ "hyprlang": [
+ "hyprland",
+ "hyprlang"
+ ],
+ "nixpkgs": [
+ "hyprland",
+ "nixpkgs"
+ ],
+ "systems": [
+ "hyprland",
+ "systems"
+ ]
+ },
+ "locked": {
+ "lastModified": 1776511930,
+ "narHash": "sha256-fCpwFiTW0rT7oKJqr3cqHMnkwypSwQKpbtUEtxdkgrM=",
+ "owner": "hyprwm",
+ "repo": "hyprcursor",
+ "rev": "39435900785d0c560c6ae8777d29f28617d031ef",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hyprwm",
+ "repo": "hyprcursor",
+ "type": "github"
+ }
+ },
+ "hyprgraphics": {
+ "inputs": {
+ "hyprutils": [
+ "hyprland",
+ "hyprutils"
+ ],
+ "nixpkgs": [
+ "hyprland",
+ "nixpkgs"
+ ],
+ "systems": [
+ "hyprland",
+ "systems"
+ ]
+ },
+ "locked": {
+ "lastModified": 1782566056,
+ "narHash": "sha256-haEZcHzYrePnjFOYSWTbxm/Nrla0aPslJfmvdCvqtVc=",
+ "owner": "hyprwm",
+ "repo": "hyprgraphics",
+ "rev": "c6e7b9f673f4360bc813d3dc75028f75ee88d3f8",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hyprwm",
+ "repo": "hyprgraphics",
+ "type": "github"
+ }
+ },
+ "hyprland": {
+ "inputs": {
+ "aquamarine": "aquamarine",
+ "hyprcursor": "hyprcursor",
+ "hyprgraphics": "hyprgraphics",
+ "hyprland-guiutils": "hyprland-guiutils",
+ "hyprland-protocols": "hyprland-protocols",
+ "hyprlang": "hyprlang",
+ "hyprutils": "hyprutils",
+ "hyprwayland-scanner": "hyprwayland-scanner",
+ "hyprwire": "hyprwire",
+ "nixpkgs": "nixpkgs_4",
+ "pre-commit-hooks": "pre-commit-hooks",
+ "systems": "systems_2",
+ "xdph": "xdph"
+ },
+ "locked": {
+ "lastModified": 1784359482,
+ "narHash": "sha256-2EHBXr5rQ/wytZA3drczqyckSWsZ1C+5Kc815Pf0nys=",
+ "owner": "hyprwm",
+ "repo": "Hyprland",
+ "rev": "55ce25bd67ab6f2ae7d60883f6c626be7d2ee12f",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hyprwm",
+ "repo": "Hyprland",
+ "type": "github"
+ }
+ },
+ "hyprland-guiutils": {
+ "inputs": {
+ "aquamarine": [
+ "hyprland",
+ "aquamarine"
+ ],
+ "hyprgraphics": [
+ "hyprland",
+ "hyprgraphics"
+ ],
+ "hyprlang": [
+ "hyprland",
+ "hyprlang"
+ ],
+ "hyprtoolkit": "hyprtoolkit",
+ "hyprutils": [
+ "hyprland",
+ "hyprutils"
+ ],
+ "hyprwayland-scanner": [
+ "hyprland",
+ "hyprwayland-scanner"
+ ],
+ "nixpkgs": [
+ "hyprland",
+ "nixpkgs"
+ ],
+ "systems": [
+ "hyprland",
+ "systems"
+ ]
+ },
+ "locked": {
+ "lastModified": 1782563850,
+ "narHash": "sha256-rs/EzgrgPHbCtJjFZN4aR1HYldH/0NtGAempWVpWQTs=",
+ "owner": "hyprwm",
+ "repo": "hyprland-guiutils",
+ "rev": "5ba080ee036c30cb2485f2647ff8a61f7aa08178",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hyprwm",
+ "repo": "hyprland-guiutils",
+ "type": "github"
+ }
+ },
+ "hyprland-plugins": {
+ "inputs": {
+ "hyprland": [
+ "hyprland"
+ ],
+ "nixpkgs": [
+ "hyprland-plugins",
+ "hyprland",
+ "nixpkgs"
+ ],
+ "systems": [
+ "hyprland-plugins",
+ "hyprland",
+ "systems"
+ ]
+ },
+ "locked": {
+ "lastModified": 1784102347,
+ "narHash": "sha256-piRpwar7VZI3YviYo0a/UMFz9+rLesfv3nRLGKxjVGg=",
+ "owner": "hyprwm",
+ "repo": "hyprland-plugins",
+ "rev": "7644cecdb947060682891a0db2a0cdc5c0b9e704",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hyprwm",
+ "repo": "hyprland-plugins",
+ "type": "github"
+ }
+ },
+ "hyprland-protocols": {
+ "inputs": {
+ "nixpkgs": [
+ "hyprland",
+ "nixpkgs"
+ ],
+ "systems": [
+ "hyprland",
+ "systems"
+ ]
+ },
+ "locked": {
+ "lastModified": 1772460177,
+ "narHash": "sha256-/6G/MsPvtn7bc4Y32pserBT/Z4SUUdBd4XYJpOEKVR4=",
+ "owner": "hyprwm",
+ "repo": "hyprland-protocols",
+ "rev": "1cb6db5fd6bb8aee419f4457402fa18293ace917",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hyprwm",
+ "repo": "hyprland-protocols",
+ "type": "github"
+ }
+ },
+ "hyprlang": {
+ "inputs": {
+ "hyprutils": [
+ "hyprland",
+ "hyprutils"
+ ],
+ "nixpkgs": [
+ "hyprland",
+ "nixpkgs"
+ ],
+ "systems": [
+ "hyprland",
+ "systems"
+ ]
+ },
+ "locked": {
+ "lastModified": 1777320127,
+ "narHash": "sha256-Qu+Wf2Bp5qUjyn2YpZNq8a7JyzTGowhT1knrwE38a9U=",
+ "owner": "hyprwm",
+ "repo": "hyprlang",
+ "rev": "090117506ddc3d7f26e650ff344d378c2ec329cc",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hyprwm",
+ "repo": "hyprlang",
+ "type": "github"
+ }
+ },
+ "hyprtoolkit": {
+ "inputs": {
+ "aquamarine": [
+ "hyprland",
+ "hyprland-guiutils",
+ "aquamarine"
+ ],
+ "hyprgraphics": [
+ "hyprland",
+ "hyprland-guiutils",
+ "hyprgraphics"
+ ],
+ "hyprlang": [
+ "hyprland",
+ "hyprland-guiutils",
+ "hyprlang"
+ ],
+ "hyprutils": [
+ "hyprland",
+ "hyprland-guiutils",
+ "hyprutils"
+ ],
+ "hyprwayland-scanner": [
+ "hyprland",
+ "hyprland-guiutils",
+ "hyprwayland-scanner"
+ ],
+ "nixpkgs": [
+ "hyprland",
+ "hyprland-guiutils",
+ "nixpkgs"
+ ],
+ "systems": [
+ "hyprland",
+ "hyprland-guiutils",
+ "systems"
+ ]
+ },
+ "locked": {
+ "lastModified": 1782554491,
+ "narHash": "sha256-+p3MlyN/nqRefcf2IckPlGRUn9+hielqpS9XClbLleM=",
+ "owner": "hyprwm",
+ "repo": "hyprtoolkit",
+ "rev": "bdba25ced39ea39ab004a8f31593ba0b0ff1ca35",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hyprwm",
+ "repo": "hyprtoolkit",
+ "type": "github"
+ }
+ },
+ "hyprutils": {
+ "inputs": {
+ "nixpkgs": [
+ "hyprland",
+ "nixpkgs"
+ ],
+ "systems": [
+ "hyprland",
+ "systems"
+ ]
+ },
+ "locked": {
+ "lastModified": 1783002634,
+ "narHash": "sha256-xGqHIUK0wIZoW7SiMalwvO6uGOO/VrlQwoRobpE7dDI=",
+ "owner": "hyprwm",
+ "repo": "hyprutils",
+ "rev": "41fb809557abd29a57151b6e1aaeabd05f9437e1",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hyprwm",
+ "repo": "hyprutils",
+ "type": "github"
+ }
+ },
+ "hyprwayland-scanner": {
+ "inputs": {
+ "nixpkgs": [
+ "hyprland",
+ "nixpkgs"
+ ],
+ "systems": [
+ "hyprland",
+ "systems"
+ ]
+ },
+ "locked": {
+ "lastModified": 1777159683,
+ "narHash": "sha256-Jxixw6wZphUp+nHYxOKUYSckL17QMBx2d5Zp0rJHr1g=",
+ "owner": "hyprwm",
+ "repo": "hyprwayland-scanner",
+ "rev": "b8632713a6beaf28b56f2a7b0ab2fb7088dbb404",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hyprwm",
+ "repo": "hyprwayland-scanner",
+ "type": "github"
+ }
+ },
+ "hyprwire": {
+ "inputs": {
+ "hyprutils": [
+ "hyprland",
+ "hyprutils"
+ ],
+ "nixpkgs": [
+ "hyprland",
+ "nixpkgs"
+ ],
+ "systems": [
+ "hyprland",
+ "systems"
+ ]
+ },
+ "locked": {
+ "lastModified": 1778410714,
+ "narHash": "sha256-o6RzFj4nJXaPRY7EM01siuCQeT41RfwwmcmFQqwFJJg=",
+ "owner": "hyprwm",
+ "repo": "hyprwire",
+ "rev": "85148a8e612808cf5ddb25d0b3c5840f3498a7dc",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hyprwm",
+ "repo": "hyprwire",
+ "type": "github"
+ }
+ },
"hytale-launcher": {
"inputs": {
- "nixpkgs": "nixpkgs_4"
+ "nixpkgs": "nixpkgs_5"
},
"locked": {
"lastModified": 1781228795,
@@ -342,7 +740,7 @@
"impermanence": {
"inputs": {
"home-manager": "home-manager_2",
- "nixpkgs": "nixpkgs_5"
+ "nixpkgs": "nixpkgs_6"
},
"locked": {
"lastModified": 1769548169,
@@ -361,7 +759,7 @@
"lanzaboote": {
"inputs": {
"crane": "crane",
- "flake-compat": "flake-compat",
+ "flake-compat": "flake-compat_2",
"flake-parts": "flake-parts",
"nixpkgs": [
"nixpkgs"
@@ -408,7 +806,7 @@
"naersk": {
"inputs": {
"fenix": "fenix",
- "nixpkgs": "nixpkgs_9"
+ "nixpkgs": "nixpkgs_10"
},
"locked": {
"lastModified": 1763384566,
@@ -484,9 +882,9 @@
},
"nix-alien": {
"inputs": {
- "flake-compat": "flake-compat_2",
+ "flake-compat": "flake-compat_3",
"nix-index-database": "nix-index-database",
- "nixpkgs": "nixpkgs_6"
+ "nixpkgs": "nixpkgs_7"
},
"locked": {
"lastModified": 1778849865,
@@ -609,6 +1007,22 @@
}
},
"nixpkgs_10": {
+ "locked": {
+ "lastModified": 1752077645,
+ "narHash": "sha256-HM791ZQtXV93xtCY+ZxG1REzhQenSQO020cu6rHtAPk=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "be9e214982e20b8310878ac2baa063a961c1bdf6",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixpkgs-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_11": {
"locked": {
"lastModified": 1775710090,
"narHash": "sha256-ar3rofg+awPB8QXDaFJhJ2jJhu+KqN/PRCXeyuXR76E=",
@@ -654,6 +1068,22 @@
}
},
"nixpkgs_4": {
+ "locked": {
+ "lastModified": 1784120854,
+ "narHash": "sha256-KesHgItiZPgGX740axSiQLcIQ8D24MDqNpkKYWIek8k=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "753cc8a3a87467296ddd1fa93f0cc3e81120ee46",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_5": {
"locked": {
"lastModified": 1781074563,
"narHash": "sha256-md8WlXOlfnIeHeOScMTTHFyf2d6iaTwPl2apR5EQ3P4=",
@@ -669,7 +1099,7 @@
"type": "github"
}
},
- "nixpkgs_5": {
+ "nixpkgs_6": {
"locked": {
"lastModified": 1768564909,
"narHash": "sha256-Kell/SpJYVkHWMvnhqJz/8DqQg2b6PguxVWOuadbHCc=",
@@ -685,7 +1115,7 @@
"type": "github"
}
},
- "nixpkgs_6": {
+ "nixpkgs_7": {
"locked": {
"lastModified": 1778443072,
"narHash": "sha256-zi7/fsqM/kFdNuED//4WOCUtezGtKKqRNORjMvfwjnA=",
@@ -701,7 +1131,7 @@
"type": "github"
}
},
- "nixpkgs_7": {
+ "nixpkgs_8": {
"locked": {
"lastModified": 1781074563,
"narHash": "sha256-md8WlXOlfnIeHeOScMTTHFyf2d6iaTwPl2apR5EQ3P4=",
@@ -717,7 +1147,7 @@
"type": "github"
}
},
- "nixpkgs_8": {
+ "nixpkgs_9": {
"locked": {
"lastModified": 1780336545,
"narHash": "sha256-vhVhuXzFrIOfcssC/9hDHx7MHzDKjF3keHuREOQqQiQ=",
@@ -733,27 +1163,11 @@
"type": "github"
}
},
- "nixpkgs_9": {
- "locked": {
- "lastModified": 1752077645,
- "narHash": "sha256-HM791ZQtXV93xtCY+ZxG1REzhQenSQO020cu6rHtAPk=",
- "owner": "NixOS",
- "repo": "nixpkgs",
- "rev": "be9e214982e20b8310878ac2baa063a961c1bdf6",
- "type": "github"
- },
- "original": {
- "owner": "NixOS",
- "ref": "nixpkgs-unstable",
- "repo": "nixpkgs",
- "type": "github"
- }
- },
"nixvim": {
"inputs": {
"flake-parts": "flake-parts_2",
- "nixpkgs": "nixpkgs_8",
- "systems": "systems_3"
+ "nixpkgs": "nixpkgs_9",
+ "systems": "systems_4"
},
"locked": {
"lastModified": 1781287460,
@@ -771,7 +1185,7 @@
},
"nps": {
"inputs": {
- "flake-compat": "flake-compat_3",
+ "flake-compat": "flake-compat_4",
"flake-utils": "flake-utils_2",
"naersk": "naersk",
"nixpkgs": [
@@ -813,6 +1227,28 @@
"type": "github"
}
},
+ "pre-commit-hooks": {
+ "inputs": {
+ "flake-compat": "flake-compat",
+ "nixpkgs": [
+ "hyprland",
+ "nixpkgs"
+ ]
+ },
+ "locked": {
+ "lastModified": 1783008725,
+ "narHash": "sha256-jGiy6+sxjNWXSjp25uoJuNfyH9zBK1PEDY0lVoL4ibQ=",
+ "owner": "cachix",
+ "repo": "git-hooks.nix",
+ "rev": "bca82caa46d5ec0f5d422c61fb1e30bc51313cbe",
+ "type": "github"
+ },
+ "original": {
+ "owner": "cachix",
+ "repo": "git-hooks.nix",
+ "type": "github"
+ }
+ },
"pre-commit-hooks-nix": {
"inputs": {
"flake-compat": [
@@ -846,6 +1282,8 @@
"elephant": "elephant",
"hardware": "hardware",
"home-manager": "home-manager",
+ "hyprland": "hyprland",
+ "hyprland-plugins": "hyprland-plugins",
"hytale-launcher": "hytale-launcher",
"impermanence": "impermanence",
"lanzaboote": "lanzaboote",
@@ -854,7 +1292,7 @@
"nix-alien": "nix-alien",
"nix-darwin": "nix-darwin",
"nix-flatpak": "nix-flatpak",
- "nixpkgs": "nixpkgs_7",
+ "nixpkgs": "nixpkgs_8",
"nixpkgs-stable": "nixpkgs-stable_2",
"nixvim": "nixvim",
"nps": "nps",
@@ -938,6 +1376,21 @@
}
},
"systems_2": {
+ "locked": {
+ "lastModified": 1689347949,
+ "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=",
+ "owner": "nix-systems",
+ "repo": "default-linux",
+ "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nix-systems",
+ "repo": "default-linux",
+ "type": "github"
+ }
+ },
+ "systems_3": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
@@ -952,7 +1405,7 @@
"type": "github"
}
},
- "systems_3": {
+ "systems_4": {
"locked": {
"lastModified": 1774449309,
"narHash": "sha256-brhZ8DmuGtzkCYHJg4HEd602amKm89Y9ytsFZ5uWD1w=",
@@ -968,7 +1421,7 @@
"type": "github"
}
},
- "systems_4": {
+ "systems_5": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
@@ -983,7 +1436,7 @@
"type": "github"
}
},
- "systems_5": {
+ "systems_6": {
"locked": {
"lastModified": 1689347949,
"narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=",
@@ -1023,8 +1476,8 @@
"elephant": [
"elephant"
],
- "nixpkgs": "nixpkgs_10",
- "systems": "systems_5"
+ "nixpkgs": "nixpkgs_11",
+ "systems": "systems_6"
},
"locked": {
"lastModified": 1781164128,
@@ -1040,6 +1493,47 @@
"type": "github"
}
},
+ "xdph": {
+ "inputs": {
+ "hyprland-protocols": [
+ "hyprland",
+ "hyprland-protocols"
+ ],
+ "hyprlang": [
+ "hyprland",
+ "hyprlang"
+ ],
+ "hyprutils": [
+ "hyprland",
+ "hyprutils"
+ ],
+ "hyprwayland-scanner": [
+ "hyprland",
+ "hyprwayland-scanner"
+ ],
+ "nixpkgs": [
+ "hyprland",
+ "nixpkgs"
+ ],
+ "systems": [
+ "hyprland",
+ "systems"
+ ]
+ },
+ "locked": {
+ "lastModified": 1782644412,
+ "narHash": "sha256-/iSa/bL1QQFLv+uJ9gI0N87J8gOeZXvca7EjoPGKE6w=",
+ "owner": "hyprwm",
+ "repo": "xdg-desktop-portal-hyprland",
+ "rev": "c01c99fc278ec68c82e9865923088f043c7c1621",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hyprwm",
+ "repo": "xdg-desktop-portal-hyprland",
+ "type": "github"
+ }
+ },
"xwayland-satellite-stable": {
"flake": false,
"locked": {
diff --git a/flake.nix b/flake.nix
index bf5cf6b..57782b9 100644
--- a/flake.nix
+++ b/flake.nix
@@ -57,6 +57,12 @@
niri.url = "github:sodiboo/niri-flake";
niri.inputs.nixpkgs.follows = "nixpkgs";
+ # Hyprland
+ hyprland.url = "github:hyprwm/Hyprland";
+ # hyprland.inputs.nixpkgs.follows = "nixpkgs";
+ hyprland-plugins.url = "github:hyprwm/hyprland-plugins";
+ hyprland-plugins.inputs.hyprland.follows = "hyprland";
+
# Walker
elephant.url = "github:abenz1267/elephant";
walker.url = "github:abenz1267/walker";
diff --git a/home/christoph/default.nix b/home/christoph/default.nix
index 8de3465..1b70d84 100644
--- a/home/christoph/default.nix
+++ b/home/christoph/default.nix
@@ -79,34 +79,13 @@ in
hyprland = {
enable = nixosConfig.programs.hyprland.enable;
- dunst.enable = !config.homemodules.hyprpanel.enable; # Disable for hyprpanel
bars.enable = false;
- dynamicCursor.enable = false;
- trails.enable = true;
- hyprspace.enable = false; # Always broken
hyprpanel.enable = false;
- caelestia.enable = false;
keybindings = {
main-mod = "SUPER";
bindings = lib.mergeAttrsList [
- # Use Rofi if we don't have caelestia
- (lib.optionalAttrs (!config.homemodules.hyprland.caelestia.enable) {
- "$mainMod, a" = ["exec, rofi -drun-show-actions -show drun"];
- "$mainMod, c" = ["exec, clipman pick --tool=rofi"];
- "$mainMod SHIFT, l" = ["exec, loginctl lock-session"];
- })
-
- # Caelestia
- (lib.optionalAttrs (config.homemodules.hyprland.caelestia.enable) {
- "$mainMod, a" = ["exec, caelestia shell drawers toggle launcher"];
- # "$mainMod, c" = ["exec, caelestia clipboard"];
- "$mainMod SHIFT, l" = ["exec, caelestia shell lock lock"];
-
- "$mainMod, escape" = ["exec, caelestia shell drawers toggle session"];
- })
-
{
# Applications
"$mainMod, t" = ["exec, kitty"];
diff --git a/home/christoph/nixtop/default.nix b/home/christoph/nixtop/default.nix
index f04637f..f8b9637 100644
--- a/home/christoph/nixtop/default.nix
+++ b/home/christoph/nixtop/default.nix
@@ -4,28 +4,28 @@
homemodules = {
# TODO: Niri config (needs to modularize niri module)
- # hyprland = {
- # keyboard = {
- # layout = "us";
- # variant = "altgr-intl";
- # option = "nodeadkeys";
- # };
- #
- # monitors = {
- # "eDP-1" = {
- # width = 1920;
- # height = 1080;
- # rate = 60;
- # x = 0;
- # y = 0;
- # scale = 1;
- # };
- # };
- #
- # workspaces = {
- # "eDP-1" = [1 2 3 4 5 6 7 8 9];
- # };
- # };
+ hyprland = {
+ keyboard = {
+ layout = "us";
+ variant = "altgr-intl";
+ option = "nodeadkeys";
+ };
+
+ monitors = {
+ "eDP-1" = {
+ width = 1920;
+ height = 1080;
+ rate = 60;
+ x = 0;
+ y = 0;
+ scale = 1;
+ };
+ };
+
+ workspaces = {
+ "eDP-1" = [1 2 3 4 5 6 7 8 9];
+ };
+ };
waybar.monitors = ["eDP-1"];
};
diff --git a/home/homemodules/hyprland/autostart.nix b/home/homemodules/hyprland/autostart.nix
index e10a459..9981f7c 100644
--- a/home/homemodules/hyprland/autostart.nix
+++ b/home/homemodules/hyprland/autostart.nix
@@ -5,14 +5,8 @@
hyprland,
}:
builtins.concatLists [
- (lib.optionals hyprland.dunst.enable ["dunst"]) # Notifications
(lib.optionals hyprland.hyprpanel.enable ["hyprpanel"]) # Panel
- (lib.optionals hyprland.caelestia.enable ["caelestia shell"]) # Panel/Shell # TODO: Crashes on startup
[
- # Start clipboard management
- "wl-paste -t text --watch clipman store --no-persist"
- "wl-paste -p -t text --watch clipman store -P --histpath=\"~/.local/share/clipman-primary.json\""
-
"hyprctl setcursor ${config.home.pointerCursor.name} ${builtins.toString config.home.pointerCursor.size}"
"hyprsunset --identity"
diff --git a/home/homemodules/hyprland/caelestia.nix b/home/homemodules/hyprland/caelestia.nix
deleted file mode 100644
index 58cd927..0000000
--- a/home/homemodules/hyprland/caelestia.nix
+++ /dev/null
@@ -1,516 +0,0 @@
-{
- config,
- hyprland,
- color,
-}: {
- enable = hyprland.caelestia.enable;
-
- systemd = {
- enable = false; # Start from hyprland autostart
- target = "graphical-session.target";
- environment = [];
- };
-
- settings = {
- appearance = {
- anim = {durations = {scale = 1;};};
- font = {
- family = {
- clock = "Rubik";
- material = "Material Symbols Rounded";
- mono = color.font;
- sans = color.font;
- };
- size = {scale = 1;};
- };
-
- padding = {scale = 1;};
- rounding = {scale = 1;};
- spacing = {scale = 1;};
-
- transparency = {
- base = 0.85;
- enabled = false;
- layers = 0.4;
- };
- };
-
- background = {
- desktopClock = {enabled = false;};
- enabled = true;
-
- # Lags when visible on both monitors (different refresh rates?)
- visualiser = {
- autoHide = true;
- blur = true;
- enabled = false;
- rounding = 1;
- spacing = 1;
- };
- };
-
- bar = {
- clock = {showIcon = true;};
- dragThreshold = 20;
-
- entries = [
- {
- enabled = true;
- id = "logo";
- }
- {
- enabled = true;
- id = "workspaces";
- }
- {
- enabled = true;
- id = "spacer";
- }
- {
- enabled = true;
- id = "activeWindow";
- }
- {
- enabled = true;
- id = "spacer";
- }
- {
- enabled = true;
- id = "clock";
- }
- {
- enabled = true;
- id = "tray";
- }
- {
- enabled = true;
- id = "statusIcons";
- }
- {
- enabled = true;
- id = "power";
- }
- ];
-
- persistent = true;
-
- popouts = {
- activeWindow = true;
- statusIcons = true;
- tray = true;
- };
-
- scrollActions = {
- brightness = false;
- volume = true;
- workspaces = true;
- };
-
- showOnHover = true;
-
- status = {
- showAudio = true;
- showBattery = false;
- showBluetooth = true;
- showKbLayout = false;
- showLockStatus = true;
- showMicrophone = false;
- showNetwork = true;
- };
-
- tray = {
- background = true;
- compact = false;
- iconSubs = [];
- recolour = false;
- };
-
- workspaces = {
- activeIndicator = true;
- activeLabel = "";
- activeTrail = true;
- label = " ";
- occupiedBg = false;
- occupiedLabel = "";
- perMonitorWorkspaces = false;
- showWindows = false;
- shown = 10;
-
- # Pick them here: https://fonts.google.com/icons
- specialWorkspaceIcons = [
- {
- icon = "music_note";
- name = "rmpc";
- }
- {
- icon = "memory";
- name = "btop";
- }
- {
- icon = "mark_chat_unread";
- name = "ferdium";
- }
- {
- icon = "network_intelligence";
- name = "msty";
- }
- ];
- };
- };
-
- border = {
- rounding = 25;
- thickness = 10;
- };
-
- dashboard = {
- dragThreshold = 50;
- enabled = true;
- mediaUpdateInterval = 500;
- showOnHover = true;
- };
-
- general = {
- apps = {
- audio = ["kitty" "--title=NcpaMixer" "-e" "ncpamixer"];
- explorer = ["kitty" "--title=Yazi" "-e" "yazi"];
- playback = ["mpv"];
- terminal = ["kitty"];
- };
-
- battery = {
- criticalLevel = 3;
- warnLevels = [
- {
- icon = "battery_android_frame_2";
- level = 20;
- message = "You might want to plug in a charger";
- title = "Low battery";
- }
- {
- icon = "battery_android_frame_1";
- level = 10;
- message = "You should probably plug in a charger now";
- title = "Did you see the previous message?";
- }
- {
- critical = true;
- icon = "battery_android_alert";
- level = 5;
- message = "PLUG THE CHARGER RIGHT NOW!!";
- title = "Critical battery level";
- }
- ];
- };
-
- idle = {
- inhibitWhenAudio = true;
- lockBeforeSleep = true;
- timeouts = [
- {
- idleAction = "lock";
- timeout = 600;
- }
- {
- # idleAction = "dpms off";
- # returnAction = "dpms on";
- idleAction = "echo 'idle'";
- returnAction = "echo 'return'";
- timeout = 10000;
- }
- {
- # idleAction = ["systemctl" "suspend-then-hibernate"];
- idleAction = ["echo" "'idle'"];
- timeout = 20000;
- }
- ];
- };
- };
-
- launcher = {
- actionPrefix = ">";
- actions = [
- {
- command = ["autocomplete" "calc"];
- dangerous = false;
- description = "Do simple math equations (powered by Qalc)";
- enabled = true;
- icon = "calculate";
- name = "Calculator";
- }
- {
- command = ["autocomplete" "scheme"];
- dangerous = false;
- description = "Change the current colour scheme";
- enabled = true;
- icon = "palette";
- name = "Scheme";
- }
- {
- command = ["autocomplete" "wallpaper"];
- dangerous = false;
- description = "Change the current wallpaper";
- enabled = true;
- icon = "image";
- name = "Wallpaper";
- }
- {
- command = ["autocomplete" "variant"];
- dangerous = false;
- description = "Change the current scheme variant";
- enabled = true;
- icon = "colors";
- name = "Variant";
- }
- {
- command = ["autocomplete" "transparency"];
- dangerous = false;
- description = "Change shell transparency";
- enabled = false;
- icon = "opacity";
- name = "Transparency";
- }
- {
- command = ["caelestia" "wallpaper" "-r"];
- dangerous = false;
- description = "Switch to a random wallpaper";
- enabled = false;
- icon = "casino";
- name = "Random";
- }
- {
- command = ["setMode" "light"];
- dangerous = false;
- description = "Change the scheme to light mode";
- enabled = true;
- icon = "light_mode";
- name = "Light";
- }
- {
- command = ["setMode" "dark"];
- dangerous = false;
- description = "Change the scheme to dark mode";
- enabled = true;
- icon = "dark_mode";
- name = "Dark";
- }
- {
- command = ["systemctl" "poweroff"];
- dangerous = true;
- description = "Shutdown the system";
- enabled = true;
- icon = "power_settings_new";
- name = "Shutdown";
- }
- {
- command = ["systemctl" "reboot"];
- dangerous = true;
- description = "Reboot the system";
- enabled = true;
- icon = "cached";
- name = "Reboot";
- }
- {
- command = ["loginctl" "terminate-user" ""];
- dangerous = true;
- description = "Log out of the current session";
- enabled = true;
- icon = "exit_to_app";
- name = "Logout";
- }
- {
- command = ["loginctl" "lock-session"];
- dangerous = false;
- description = "Lock the current session";
- enabled = true;
- icon = "lock";
- name = "Lock";
- }
- {
- command = ["systemctl" "suspend-then-hibernate"];
- dangerous = false;
- description = "Suspend then hibernate";
- enabled = false;
- icon = "bedtime";
- name = "Sleep";
- }
- ];
-
- dragThreshold = 50;
- enableDangerousActions = true;
- hiddenApps = [];
- maxShown = 7;
- maxWallpapers = 9;
- showOnHover = false;
- specialPrefix = "@";
- useFuzzy = {
- actions = false;
- apps = false;
- schemes = false;
- variants = false;
- wallpapers = false;
- };
- vimKeybinds = false;
- };
-
- lock = {recolourLogo = false;};
-
- notifs = {
- actionOnClick = false;
- clearThreshold = 0.3;
- defaultExpireTimeout = 5000;
- expandThreshold = 20;
- expire = true;
- };
-
- osd = {
- enableBrightness = false;
- enableMicrophone = true;
- enabled = true;
- hideDelay = 2000;
- };
-
- paths = {
- mediaGif = "root:/assets/bongocat.gif";
- sessionGif = "root:/assets/kurukuru.gif";
- wallpaperDir = "~/NixFlake/wallpapers";
- };
-
- services = {
- audioIncrement = 0.1;
- defaultPlayer = "MPD";
- gpuType = "";
- maxVolume = 1;
- playerAliases = [
- {
- from = "com.github.th_ch.youtube_music";
- to = "YT Music";
- }
- ];
- smartScheme = true;
- useFahrenheit = false;
- useTwelveHourClock = false;
- visualiserBars = 45;
- weatherLocation = "Dortmund, Germany";
- };
-
- session = {
- commands = {
- hibernate = ["systemctl" "hibernate"];
- logout = ["loginctl" "terminate-user" ""];
- reboot = ["systemctl" "reboot"];
- shutdown = ["systemctl" "poweroff"];
- };
- dragThreshold = 30;
- enabled = true;
- vimKeybinds = false;
- };
-
- sidebar = {
- dragThreshold = 80;
- enabled = true;
- };
-
- utilities = {
- enabled = true;
- maxToasts = 4;
- toasts = {
- audioInputChanged = true;
- audioOutputChanged = true;
- capsLockChanged = true;
- chargingChanged = true;
- configLoaded = true;
- dndChanged = true;
- gameModeChanged = true;
- kbLayoutChanged = false;
- nowPlaying = false;
- numLockChanged = true;
- vpnChanged = true;
- };
-
- vpn = {
- enabled = false;
- provider = [
- {
- displayName = "Wireguard (Your VPN)";
- interface = "your-connection-name";
- name = "wireguard";
- }
- ];
- };
- };
- };
-
- cli = {
- enable = hyprland.caelestia.enable;
-
- settings = {
- record = {extraArgs = [];};
-
- theme = {
- enableBtop = false;
- enableDiscord = false;
- enableFuzzel = false;
- enableGtk = false;
- enableHypr = false;
- enableQt = false;
- enableSpicetify = false;
- enableTerm = false;
- };
-
- toggles = {
- communication = {
- discord = {
- command = ["discord"];
- enable = false;
- match = [{class = "discord";}];
- move = true;
- };
- whatsapp = {
- enable = false;
- match = [{class = "whatsapp";}];
- move = true;
- };
- };
-
- music = {
- feishin = {
- enable = false;
- match = [{class = "feishin";}];
- move = true;
- };
- spotify = {
- command = ["spicetify" "watch" "-s"];
- enable = false;
- match = [{class = "Spotify";} {initialTitle = "Spotify";} {initialTitle = "Spotify Free";}];
- move = true;
- };
- };
-
- sysmon = {
- btop = {
- command = ["kitty" "--title" "Btop" "-e" "btop"];
- enable = false;
- match = [
- {
- class = "btop";
- title = "Btop";
- workspace = {name = "special:sysmon";};
- }
- ];
- };
- };
-
- todo = {
- todoist = {
- command = ["todoist"];
- enable = false;
- match = [{class = "Todoist";}];
- move = true;
- };
- };
- };
- wallpaper = {postHook = "echo $WALLPAPER_PATH";};
- };
- };
-}
diff --git a/home/homemodules/hyprland/default.nix b/home/homemodules/hyprland/default.nix
index e61d2a0..a65c461 100644
--- a/home/homemodules/hyprland/default.nix
+++ b/home/homemodules/hyprland/default.nix
@@ -24,6 +24,11 @@
in {
options.homemodules.hyprland = import ./options.nix {inherit lib mylib;};
+ # TODO: Extract common niri/hyprland stuff to modules (e.g., dunst), so no configs are duplicated
+ # TODO: Remove unnecessary bullshit
+ # TODO: Switch to lua config
+ # TODO: Synchronize with niri mappings
+
config = lib.mkIf hyprland.enable {
assertions = [
{
@@ -34,10 +39,6 @@ in {
assertion = builtins.hasAttr "hyprlock" nixosConfig.security.pam.services;
message = "Can't enable Hyprland module without Hyprlock PAM service!";
}
- {
- assertion = hyprland.hyprpanel.enable != hyprland.caelestia.enable;
- message = "Can't enable Hyprpanel and Caelestia at the same time!";
- }
];
gtk = {
@@ -60,18 +61,17 @@ in {
};
packages = with pkgs; [
- hyprpaper # Wallpaper setter
hyprpicker # Color picker
# hyprpolkitagent # Ugly polkit authentication GUI
hyprland-qt-support
hyprsunset # Blue light filter
wl-clipboard
- clipman # Clipboard manager (wl-paste)
+ # clipman # Clipboard manager (wl-paste)
libnotify
inotify-tools # Includes inotifywait
- ncpamixer # Audio control
+ # ncpamixer # Audio control
slurp # Region selector for screensharing
grim # Grab images from compositor
@@ -121,49 +121,27 @@ in {
programs = {
hyprlock = import ./hyprlock.nix {inherit config hyprland color;};
- caelestia = import ./caelestia.nix {inherit config hyprland color;};
};
services = {
- dunst = import ./dunst.nix {inherit pkgs config hyprland color;};
hypridle = import ./hypridle.nix {inherit config hyprland color;};
- hyprpaper = import ./hyprpaper.nix {inherit config hyprland color;};
};
# Make sure the units only start when using Hyprland
- systemd.user.services.dunst.Unit.After = lib.mkIf hyprland.dunst.enable (lib.mkForce ["hyprland-session.target"]);
- systemd.user.services.dunst.Unit.PartOf = lib.mkIf hyprland.dunst.enable (lib.mkForce ["hyprland-session.target"]);
- systemd.user.services.hypridle.Install.WantedBy = lib.mkIf (!hyprland.caelestia.enable) (lib.mkForce ["hyprland-session.target"]);
- systemd.user.services.hypridle.Unit.After = lib.mkIf (!hyprland.caelestia.enable) (lib.mkForce ["hyprland-session.target"]);
- systemd.user.services.hypridle.Unit.PartOf = lib.mkIf (!hyprland.caelestia.enable) (lib.mkForce ["hyprland-session.target"]);
- systemd.user.services.hyprpaper.Install.WantedBy = lib.mkIf (!hyprland.caelestia.enable) (lib.mkForce ["hyprland-session.target"]);
- systemd.user.services.hyprpaper.Unit.After = lib.mkIf (!hyprland.caelestia.enable) (lib.mkForce ["hyprland-session.target"]);
- systemd.user.services.hyprpaper.Unit.PartOf = lib.mkIf (!hyprland.caelestia.enable) (lib.mkForce ["hyprland-session.target"]);
+ systemd.user.services.hypridle.Install.WantedBy = lib.mkForce ["hyprland-session.target"];
+ systemd.user.services.hypridle.Unit.After = lib.mkForce ["hyprland-session.target"];
+ systemd.user.services.hypridle.Unit.PartOf = lib.mkForce ["hyprland-session.target"];
wayland.windowManager.hyprland = {
enable = true;
package = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland;
portalPackage = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.xdg-desktop-portal-hyprland;
+ configType = "hyprlang"; # TODO: lua
systemd.enable = true; # Enable hyprland-session.target
systemd.variables = ["--all"]; # Import PATH into systemd
xwayland.enable = true;
- plugins = builtins.concatLists [
- (lib.optionals
- hyprland.bars.enable
- [inputs.hyprland-plugins.packages.${pkgs.stdenv.hostPlatform.system}.hyprbars])
- (lib.optionals
- hyprland.dynamicCursor.enable
- [inputs.hypr-dynamic-cursors.packages.${pkgs.stdenv.hostPlatform.system}.hypr-dynamic-cursors])
- (lib.optionals
- hyprland.trails.enable
- [inputs.hyprland-plugins.packages.${pkgs.stdenv.hostPlatform.system}.hyprtrails])
- (lib.optionals
- hyprland.hyprspace.enable
- [inputs.hyprspace.packages.${pkgs.stdenv.hostPlatform.system}.Hyprspace])
- ];
-
settings = import ./settings.nix {
inherit
lib
diff --git a/home/homemodules/hyprland/dunst.nix b/home/homemodules/hyprland/dunst.nix
deleted file mode 100644
index 2bd9656..0000000
--- a/home/homemodules/hyprland/dunst.nix
+++ /dev/null
@@ -1,36 +0,0 @@
-{
- pkgs,
- config,
- hyprland,
- color,
-}: {
- enable = hyprland.dunst.enable;
-
- iconTheme.package = color.iconPackage;
- iconTheme.name = color.iconTheme;
-
- settings = {
- global = {
- monitor = config.homemodules.waybar.monitor;
- font = "${color.font} 11";
- offset = "10x10";
- background = color.hexS.base;
- foreground = color.hexS.text;
- frame_width = 2;
- corner_radius = 6;
- separator_color = "frame";
- };
-
- urgency_low = {
- frame_color = color.hexS.green;
- };
-
- urgency_normal = {
- frame_color = color.hexS.green;
- };
-
- urgency_critical = {
- frame_color = color.hexS.red;
- };
- };
-}
diff --git a/home/homemodules/hyprland/hypridle.nix b/home/homemodules/hyprland/hypridle.nix
index b6315a0..ee7a8dd 100644
--- a/home/homemodules/hyprland/hypridle.nix
+++ b/home/homemodules/hyprland/hypridle.nix
@@ -3,7 +3,7 @@
hyprland,
color,
}: {
- enable = !hyprland.caelestia.enable;
+ enable = true;
settings = {
general = {
diff --git a/home/homemodules/hyprland/hyprland-nixinator.nix b/home/homemodules/hyprland/hyprland-nixinator.nix
deleted file mode 100644
index e8c236f..0000000
--- a/home/homemodules/hyprland/hyprland-nixinator.nix
+++ /dev/null
@@ -1,44 +0,0 @@
-{
- keyboard = {
- layout = "us";
- variant = "altgr-intl";
- option = "nodeadkeys";
- };
-
- monitors = {
- "DP-1" = {
- width = 3440;
- height = 1440;
- rate = 165;
- x = 1920;
- y = 0;
- scale = 1;
- };
-
- "DP-2" = {
- width = 1920;
- height = 1080;
- rate = 60;
- x = 0;
- y = 0;
- scale = 1;
- };
- };
-
- workspaces = {
- "DP-1" = [1 2 3 4 5 6 7 8 9];
- "DP-2" = [10];
- };
-
- autostart = {
- delayed = [
- "fcitx5"
- ];
- };
-
- floating = [
- {
- class = "fcitx";
- }
- ];
-}
diff --git a/home/homemodules/hyprland/hyprland.nix b/home/homemodules/hyprland/hyprland.nix
deleted file mode 100644
index d935e16..0000000
--- a/home/homemodules/hyprland/hyprland.nix
+++ /dev/null
@@ -1,186 +0,0 @@
-{
- nixosConfig,
- config,
- lib,
- pkgs,
-}: {
- enable = nixosConfig.programs.hyprland.enable;
- dunst.enable = !config.homemodules.hyprpanel.enable; # Disable for hyprpanel
- bars.enable = false;
- dynamicCursor.enable = false;
- trails.enable = true;
- hyprspace.enable = false; # Always broken
- hyprpanel.enable = false;
- caelestia.enable = false;
-
- keybindings = {
- main-mod = "SUPER";
-
- bindings = lib.mergeAttrsList [
- # Use Rofi if we don't have caelestia
- (lib.optionalAttrs (!config.homemodules.hyprland.caelestia.enable) {
- "$mainMod, a" = ["exec, rofi -drun-show-actions -show drun"];
- "$mainMod, c" = ["exec, clipman pick --tool=rofi"];
- "$mainMod SHIFT, l" = ["exec, loginctl lock-session"];
- })
-
- # Caelestia
- (lib.optionalAttrs (config.homemodules.hyprland.caelestia.enable) {
- "$mainMod, a" = ["exec, caelestia shell drawers toggle launcher"];
- # "$mainMod, c" = ["exec, caelestia clipboard"];
- "$mainMod SHIFT, l" = ["exec, caelestia shell lock lock"];
-
- "$mainMod, escape" = ["exec, caelestia shell drawers toggle session"];
- })
-
- {
- # Applications
- "$mainMod, t" = ["exec, kitty"];
- "$mainMod, e" = ["exec, kitty --title=Yazi yazi"];
- "$mainMod, n" = ["exec, neovide"];
- # "$mainMod, r" = ["exec, kitty --title=Rmpc rmpc"];
- "$mainMod CTRL, n" = ["exec, kitty --title=Navi navi"];
- "$mainMod SHIFT, n" = ["exec, neovide ${config.paths.dotfiles}/navi/christoph.cheat"];
- "$mainMod SHIFT, f" = ["exec, neovide ${config.paths.dotfiles}/flake.nix"];
- # "ALT, tab" = ["exec, rofi -show window"];
-
- # Screenshots
- "$mainMod, p" = ["exec, hyprpicker --autocopy --format=hex"];
- "$mainMod, s" = ["exec, grim -g \"$(slurp)\""];
- "$mainMod SHIFT, s" = ["exec, grim -g \"$(slurp)\" - | wl-copy"];
-
- # Audio
- ", XF86AudioRaiseVolume" = ["exec, wpctl set-volume -l 1.5 @DEFAULT_AUDIO_SINK@ 5%+"];
- ", XF86AudioLowerVolume" = ["exec, wpctl set-volume -l 1.5 @DEFAULT_AUDIO_SINK@ 5%-"];
- ", XF86AudioPlay" = ["exec, playerctl play-pause"];
- ", XF86AudioPrev" = ["exec, playerctl previous"];
- ", XF86AudioNext" = ["exec, playerctl next"];
-
- # Brightness
- ", XF86MonBrightnessDown" = ["exec, hyprctl hyprsunset gamma -10"];
- ", XF86MonBrightnessUp" = ["exec, hyprctl hyprsunset gamma +10"];
- "$mainMod, XF86MonBrightnessDown" = ["exec, hyprctl hyprsunset temperature 5750"];
- "$mainMod, XF86MonBrightnessUp" = ["exec, hyprctl hyprsunset identity"];
-
- "CTRL ALT, f" = let
- hyprctl = "${config.wayland.windowManager.hyprland.package}/bin/hyprctl";
- grep = "${pkgs.gnugrep}/bin/grep";
- awk = "${pkgs.gawk}/bin/gawk";
- notify = "${pkgs.libnotify}/bin/notify-send";
-
- toggleMouseFocus = pkgs.writeScriptBin "hypr-toggle-mouse-focus" ''
- CURRENT=$(${hyprctl} getoption input:follow_mouse | ${grep} int | ${awk} -F' ' '{print $2}')
-
- if [[ "$CURRENT" == "1" ]]; then
- ${hyprctl} keyword input:follow_mouse 0
- ${notify} "Disabled Mouse Focus!"
- else
- ${hyprctl} keyword input:follow_mouse 1
- ${notify} "Enabled Mouse Focus!"
- fi
- '';
- in ["exec, ${toggleMouseFocus}/bin/hypr-toggle-mouse-focus"];
-
- # "CTRL ALT, t" = ["exec, bash -c 'systemctl --user restart hyprpanel.service'"];
- }
- ];
-
- ws-bindings = {
- # "" = "";
- "1" = "1";
- "2" = "2";
- "3" = "3";
- "4" = "4";
- "5" = "5";
- "6" = "6";
- "7" = "7";
- "8" = "8";
- "9" = "9";
- "10" = "0";
- };
-
- special-ws-bindings = {
- "ferdium" = "x";
- "msty" = "z";
- "btop" = "b";
- "rmpc" = "r";
- };
- };
-
- autostart = {
- immediate = [
- "kitty --hold fastfetch"
- "zeal"
- "nextcloud --background"
- "protonvpn-app"
-
- # "kdeconnect-indicator" # started by services.kdeconnect.indicator
- ];
-
- delayed = [
- "keepassxc" # The tray doesn't work when started too early
- ];
-
- special-silent = {
- "ferdium" = ["ferdium"];
- "msty" = ["msty"];
- "btop" = ["kitty --title=Btop btop"];
- "rmpc" = ["kitty --title=Rmpc rmpc"];
- };
- };
-
- windowrules = [
- # Fix jetbrains tooltip flicker
- "match:class ^(jetbrains-.*)$, match:title ^(win[0-9]+)$, float 1"
- "match:class ^(jetbrains-.*)$, match:title ^(win[0-9]+)$, no_initial_focus 1"
- ];
-
- workspacerules = {
- "1" = [];
- "2" = ["Zotero" "neovide" "code-url-handler"];
- "3" = ["obsidian"];
- "4" = ["firefox" "Google-chrome" "chromium-browser" "org.qutebrowser.qutebrowser"];
- "5" = ["steam"];
- "6" = ["steam_app_(.+)"];
- "7" = ["signal"];
- "8" = ["tidal-hifi"];
- "9" = ["discord"];
- "10" = ["python3"];
- };
-
- floating = [
- {class = "org.kde.polkit-kde-authentication-agent-1";}
- {
- class = "thunar";
- title = "File Operation Progress";
- }
- {class = "ffplay";}
- {class = "Unity";}
- ];
-
- transparent-opacity = "0.75";
-
- transparent = [
- "kitty"
- "Alacritty"
- "discord"
- "signal"
- "vesktop"
- "Spotify"
- "tidal-hifi"
- "obsidian"
- "firefox"
- "org.qutebrowser.qutebrowser"
- "jetbrains-clion"
- "jetbrains-idea"
- "jetbrains-pycharm"
- "jetbrains-rustrover"
- "jetbrains-rider"
- "jetbrains-webstorm"
- "code-url-handler"
- "neovide"
- "steam"
- "ferdium"
- "Msty"
- ];
-}
diff --git a/home/homemodules/hyprland/hyprpaper.nix b/home/homemodules/hyprland/hyprpaper.nix
deleted file mode 100644
index fd2454d..0000000
--- a/home/homemodules/hyprland/hyprpaper.nix
+++ /dev/null
@@ -1,28 +0,0 @@
-{
- config,
- hyprland,
- color,
-}: {
- enable = !hyprland.caelestia.enable;
-
- settings = {
- ipc = "on";
- splash = false;
- splash_offset = 2.0;
-
- # Wallpapers have to be preloaded to be displayed
- preload = let
- mkPreload = name: "${config.paths.nixflake}/wallpapers/${name}.jpg";
- in
- color.wallpapers |> builtins.map mkPreload;
-
- wallpaper = let
- mkWallpaper = monitor:
- "${monitor}, "
- + "${config.paths.nixflake}/wallpapers/${color.wallpaper}.jpg";
- in
- hyprland.monitors
- |> builtins.attrNames
- |> builtins.map mkWallpaper;
- };
-}
diff --git a/home/homemodules/hyprland/options.nix b/home/homemodules/hyprland/options.nix
index 5052d8f..4d95b00 100644
--- a/home/homemodules/hyprland/options.nix
+++ b/home/homemodules/hyprland/options.nix
@@ -5,13 +5,8 @@
}: {
enable = lib.mkEnableOption "Hyprland Window Manager + Compositor";
- dunst.enable = lib.mkEnableOption "Enable Dunst notification daemon";
bars.enable = lib.mkEnableOption "Enable window bars";
- dynamicCursor.enable = lib.mkEnableOption "Enable dynamic cursors";
- trails.enable = lib.mkEnableOption "Enable dynamic window trails";
- hyprspace.enable = lib.mkEnableOption "Enable Hyprspace workspace overview";
hyprpanel.enable = lib.mkEnableOption "Enable Hyprpanel";
- caelestia.enable = lib.mkEnableOption "Enable Caelestia";
keyboard = {
layout = lib.mkOption {
diff --git a/home/homemodules/hyprland/settings.nix b/home/homemodules/hyprland/settings.nix
index 5aaea83..9bc1d48 100644
--- a/home/homemodules/hyprland/settings.nix
+++ b/home/homemodules/hyprland/settings.nix
@@ -237,123 +237,5 @@
on_double_click = "hyprctl dispatch fullscreen 1";
};
})
-
- (lib.optionalAttrs hyprland.dynamicCursor.enable {
- dynamic-cursors = {
- # enables the plugin
- enabled = true;
-
- # sets the cursor behaviour, supports these values:
- # tilt - tilt the cursor based on x-velocity
- # rotate - rotate the cursor based on movement direction
- # stretch - stretch the cursor shape based on direction and velocity
- # none - do not change the cursors behaviour
- mode = "rotate";
-
- # minimum angle difference in degrees after which the shape is changed
- # smaller values are smoother, but more expensive for hw cursors
- threshold = 2;
-
- # for mode = rotate
- rotate = {
- # length in px of the simulated stick used to rotate the cursor
- # most realistic if this is your actual cursor size
- length = 20;
-
- # clockwise offset applied to the angle in degrees
- # this will apply to ALL shapes
- offset = 0.0;
- };
-
- # for mode = tilt
- tilt = {
- # controls how powerful the tilt is, the lower, the more power
- # this value controls at which speed (px/s) the full tilt is reached
- # the full tilt being 60° in both directions
- limit = 1000;
-
- # relationship between speed and tilt, supports these values:
- # linear - a linear function is used
- # quadratic - a quadratic function is used (most realistic to actual air drag)
- # negative_quadratic - negative version of the quadratic one, feels more aggressive
- # see `activation` in `src/mode/utils.cpp` for how exactly the calculation is done
- function = "negative_quadratic";
-
- # time window (ms) over which the speed is calculated
- # higher values will make slow motions smoother but more delayed
- window = 100;
- };
-
- # configure shake to find
- # magnifies the cursor if its is being shaken
- shake = {
- # enables shake to find
- enabled = false;
-
- # use nearest-neighbour (pixelated) scaling when shaking
- # may look weird when effects are enabled
- nearest = true;
-
- # controls how soon a shake is detected
- # lower values mean sooner
- threshold = 3.0;
-
- # magnification level immediately after shake start
- base = 1.5;
- # magnification increase per second when continuing to shake
- speed = 0.0;
- # how much the speed is influenced by the current shake intensitiy
- influence = 0.0;
-
- # maximal magnification the cursor can reach
- # values below 1 disable the limit (e.g. 0)
- limit = 0.0;
-
- # time in millseconds the cursor will stay magnified after a shake has ended
- timeout = 1000;
-
- # show cursor behaviour `tilt`, `rotate`, etc. while shaking
- effects = true;
-
- # enable ipc events for shake
- # see the `ipc` section below
- ipc = false;
- };
-
- # use hyprcursor to get a higher resolution texture when the cursor is magnified
- # see the `hyprcursor` section below
- hyprcursor = {
- # use nearest-neighbour (pixelated) scaling when magnifing beyond texture size
- # this will also have effect without hyprcursor support being enabled
- # 0 / false - never use pixelated scaling
- # 1 / true - use pixelated when no highres image
- # 2 - always use pixleated scaling
- nearest = true;
-
- # enable dedicated hyprcursor support
- enabled = true;
-
- # resolution in pixels to load the magnified shapes at
- # be warned that loading a very high-resolution image will take a long time and might impact memory consumption
- # -1 means we use [normal cursor size] * [shake:base option]
- resolution = -1;
-
- # shape to use when clientside cursors are being magnified
- # see the shape-name property of shape rules for possible names
- # specifying clientside will use the actual shape, but will be pixelated
- fallback = "clientside";
- };
- };
- })
-
- (lib.optionalAttrs hyprland.trails.enable {
- hyprtrails = {
- color = "rgb(${color.hex.accent})";
- };
- })
-
- (lib.optionalAttrs hyprland.hyprspace.enable {
- overview = {};
- })
];
}
diff --git a/system/default.nix b/system/default.nix
index 913b52a..8d6b2de 100644
--- a/system/default.nix
+++ b/system/default.nix
@@ -318,8 +318,8 @@ with mylib.networking; {
gpu-screen-recorder.enable = !headless;
hyprland = {
- enable = true;
- # enable = !headless;
+ # enable = true;
+ enable = !headless;
package = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland;
portalPackage = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.xdg-desktop-portal-hyprland;