diff --git a/flake.lock b/flake.lock
index 9a3b9ba..2d7f9ff 100644
--- a/flake.lock
+++ b/flake.lock
@@ -41,11 +41,11 @@
"rust-analyzer-src": "rust-analyzer-src"
},
"locked": {
- "lastModified": 1725777030,
- "narHash": "sha256-mieHgCmdbr/Tok3djbEVnNyLtnxEv5PHngN8wBu+RJA=",
+ "lastModified": 1726036322,
+ "narHash": "sha256-9Hwl4lzB5yFah00OaXSMDPDubCy99wtLgsYxMVpMwlM=",
"owner": "nix-community",
"repo": "fenix",
- "rev": "7c59cc75e7d2328753b00766ab0a78a075609b25",
+ "rev": "3e50a3c915882f07cb3f6c246f09febc4ad36c3e",
"type": "github"
},
"original": {
@@ -320,11 +320,11 @@
]
},
"locked": {
- "lastModified": 1725781935,
- "narHash": "sha256-o6LRtdpgBTzev9n243Ktu3rn0/qsv0frFyJwU6vJsdE=",
+ "lastModified": 1726036828,
+ "narHash": "sha256-ZQHbpyti0jcAKnwQY1lwmooecLmSG6wX1JakQ/eZNeM=",
"owner": "nix-community",
"repo": "home-manager",
- "rev": "ec4c6928bbacc89cf10e9c959a7a47cbaad95344",
+ "rev": "8a1671642826633586d12ac3158e463c7a50a112",
"type": "github"
},
"original": {
@@ -395,11 +395,11 @@
"xdph": "xdph"
},
"locked": {
- "lastModified": 1725752806,
- "narHash": "sha256-UwmsA7O9Wofu6YWldyR8NDv1bzxNICIg85/uOrVq69Y=",
+ "lastModified": 1725976150,
+ "narHash": "sha256-Dv4XEWRcVFZhBDbj11/zuuXyf7TGHFVU1IGH9W/yPX8=",
"ref": "refs/heads/main",
- "rev": "312411fc7073143a8bf1fc3ba23ef403b7d15eee",
- "revCount": 5195,
+ "rev": "155d44016d0cb11332c454db73d59030cdbd7b13",
+ "revCount": 5209,
"submodules": true,
"type": "git",
"url": "https://github.com/hyprwm/Hyprland"
@@ -592,11 +592,11 @@
},
"nixos-hardware": {
"locked": {
- "lastModified": 1725716377,
- "narHash": "sha256-7NzW9O/cAw7iWzRfh7Oo/SuSudL4a1YTKS6yoh3tMck=",
+ "lastModified": 1725885300,
+ "narHash": "sha256-5RLEnou1/GJQl+Wd+Bxaj7QY7FFQ9wjnFq1VNEaxTmc=",
"owner": "nixos",
"repo": "nixos-hardware",
- "rev": "04a1cda0c1725094a4db703cccbb956b7558f5a6",
+ "rev": "166dee4f88a7e3ba1b7a243edb1aca822f00680e",
"type": "github"
},
"original": {
@@ -614,11 +614,11 @@
]
},
"locked": {
- "lastModified": 1725358307,
- "narHash": "sha256-su/Nzp2X8JlaD9wPYQGXeTilaVa5H06X7A3kqCLJNuo=",
+ "lastModified": 1725882169,
+ "narHash": "sha256-v5L+Dh6KdyycIgcdIc6SQ1fRNNvFJmYz02+fyeptA2o=",
"owner": "nix-community",
"repo": "NixOS-WSL",
- "rev": "8a89995f745b1a9029d654c391a0f62ca03f7fe7",
+ "rev": "34b95b3962f5b3436d4bae5091d1b2ff7c1eb180",
"type": "github"
},
"original": {
@@ -721,11 +721,11 @@
},
"nixpkgs_5": {
"locked": {
- "lastModified": 1724819573,
- "narHash": "sha256-GnR7/ibgIH1vhoy8cYdmXE6iyZqKqFxQSVkFgosBh6w=",
+ "lastModified": 1725634671,
+ "narHash": "sha256-v3rIhsJBOMLR8e/RNWxr828tB+WywYIoajrZKFM+0Gg=",
"owner": "nixos",
"repo": "nixpkgs",
- "rev": "71e91c409d1e654808b2621f28a327acfdad8dc2",
+ "rev": "574d1eac1c200690e27b8eb4e24887f8df7ac27c",
"type": "github"
},
"original": {
@@ -758,11 +758,11 @@
"rust-analyzer-src": {
"flake": false,
"locked": {
- "lastModified": 1725630423,
- "narHash": "sha256-gNCLk3Zg7JlAwmWbVHTH6f3+iqdeQ4fheOotCZy8x5M=",
+ "lastModified": 1725985110,
+ "narHash": "sha256-0HKj+JI6rtxaE6Kzcd6HyFNbEFJRsLy5DoNgVF1pyRM=",
"owner": "rust-lang",
"repo": "rust-analyzer",
- "rev": "08c7bbc2dbe4dcc8968484f1a0e1e6fe7a1d4f6d",
+ "rev": "bcc708992104c2059f310fbc3ac00bfc377f9ea8",
"type": "github"
},
"original": {
@@ -846,11 +846,11 @@
"nixpkgs-stable": "nixpkgs-stable"
},
"locked": {
- "lastModified": 1725765163,
- "narHash": "sha256-rfd2c47iVSFI6bRYy5l8wRijRBaYDeU7dM8XCDUGqlA=",
+ "lastModified": 1725922448,
+ "narHash": "sha256-ruvh8tlEflRPifs5tlpa0gkttzq4UtgXkJQS7FusgFE=",
"owner": "Mic92",
"repo": "sops-nix",
- "rev": "b68757cd2c3fa66d6ccaa0d046ce42a9324e0070",
+ "rev": "cede1a08039178ac12957733e97ab1006c6b6892",
"type": "github"
},
"original": {
@@ -967,11 +967,11 @@
]
},
"locked": {
- "lastModified": 1725203932,
- "narHash": "sha256-VLULC/OnI+6R9KEP2OIGk+uLJJsfRlaLouZ5gyFd2+Y=",
+ "lastModified": 1725228143,
+ "narHash": "sha256-kbSiPA5oXiz1+1eVoRslMi5wylHD6SDT8dS9eZAxXAM=",
"owner": "hyprwm",
"repo": "xdg-desktop-portal-hyprland",
- "rev": "2425e8f541525fa7409d9f26a8ffaf92a3767251",
+ "rev": "11e15b437e7efc39e452f36e15a183225d6bfa39",
"type": "github"
},
"original": {
@@ -985,11 +985,11 @@
"nixpkgs": "nixpkgs_5"
},
"locked": {
- "lastModified": 1725529174,
- "narHash": "sha256-6hhiPXXZw24jaQJKJgaLIZ9Z8iEs25Sb+xMqEv6t2Go=",
+ "lastModified": 1726001766,
+ "narHash": "sha256-ADvEWfo0AuHR06ah1nnzOyhsG05/b5QpUc7vFNbiEfM=",
"owner": "MarceColl",
"repo": "zen-browser-flake",
- "rev": "5fce6f9bc9b2bda1f0281fcbef3160903ddc5882",
+ "rev": "06505a088396e2c0b9ad100302502783a6bcdb40",
"type": "github"
},
"original": {
diff --git a/flake.nix b/flake.nix
index 26117a6..c787f58 100644
--- a/flake.nix
+++ b/flake.nix
@@ -25,6 +25,8 @@
inputs.nixpkgs.follows = "unstable";
};
+ ###
+ # hyprland stuff
hyprland.url = "git+https://github.com/hyprwm/Hyprland?submodules=1";
hyprland-plugins = {
url = "github:hyprwm/hyprland-plugins";
diff --git a/modules/nixos/graphical-interface/desktop-manager/addons/waybar/config b/modules/nixos/graphical-interface/desktop-manager/addons/waybar/config
new file mode 100644
index 0000000..e41ba2f
--- /dev/null
+++ b/modules/nixos/graphical-interface/desktop-manager/addons/waybar/config
@@ -0,0 +1,39 @@
+{
+ "height": 24, // Waybar height (to be removed for auto height)
+ "modules-left": ["hyprland/workspaces"],
+ "modules-center": ["hyprland/window"],
+ "modules-right": ["tray", "idle_inhibitor", "pulseaudio", "clock"],
+ "hyprland/window": {
+ "separate-outputs": true
+ },
+ "idle_inhibitor": {
+ "format": "{icon}",
+ "format-icons": {
+ "activated": "",
+ "deactivated": ""
+ }
+ },
+ "tray": {
+ // "icon-size": 21,
+ "spacing": 10
+ },
+ "clock": {
+ "timezone": "Europe/Berlin",
+ "tooltip-format": "{:%Y %B}\n{calendar}",
+ "format": "{:L%Y-%m-%d [%a] %H:%M}"
+ },
+ "pulseaudio": {
+ "scroll-step": 5, // %, can be a float
+ "format": "{icon} {volume}% {format_source}",
+ "format-bluetooth": " {icon} {volume}% {format_source}",
+ "format-bluetooth-muted": " {icon} {format_source}",
+ "format-muted": "{format_source}",
+ "format-source": " {volume}%",
+ "format-source-muted": "",
+ "format-icons": {
+ "default": ["", "", ""]
+ },
+ "on-click": "pavucontrol",
+ "on-click-right": "foot -a pw-top pw-top"
+ },
+}
diff --git a/modules/nixos/graphical-interface/desktop-manager/addons/waybar/default.nix b/modules/nixos/graphical-interface/desktop-manager/addons/waybar/default.nix
new file mode 100644
index 0000000..9792460
--- /dev/null
+++ b/modules/nixos/graphical-interface/desktop-manager/addons/waybar/default.nix
@@ -0,0 +1,35 @@
+{
+ lib,
+ config,
+ options,
+ pkgs,
+ namespace,
+ ...
+}:
+let
+ cfg = config.${namespace}.graphical-interface.desktop-manager.addons.waybar;
+
+ inherit (lib)
+ mkEnableOption
+ mkOption
+ mkIf
+ types
+ ;
+in
+{
+ options.${namespace}.graphical-interface.desktop-manager.addons.waybar = {
+ enable = mkEnableOption "Waybar";
+ package = mkOption {
+ type = types.package;
+ default = pkgs.waybar;
+ description = "The package to use for Waybar";
+ };
+ };
+
+ config = mkIf cfg.enable {
+ wyrdgard.home.file = {
+ ".config/waybar/config".source = ./config;
+ ".config/waybar/style.css".source = ./style.css;
+ };
+ };
+}
diff --git a/modules/nixos/graphical-interface/desktop-manager/addons/waybar/style.css b/modules/nixos/graphical-interface/desktop-manager/addons/waybar/style.css
new file mode 100644
index 0000000..16e5762
--- /dev/null
+++ b/modules/nixos/graphical-interface/desktop-manager/addons/waybar/style.css
@@ -0,0 +1,182 @@
+window#waybar {
+ background: transparent;
+ /* background-color: rgba(43, 48, 59, 0.5); */
+ /* border-bottom: 3px solid rgba(100, 114, 125, 0.5); */
+ color: #ffffff;
+ transition-property: background-color;
+ transition-duration: .5s;
+}
+
+window#waybar.hidden {
+ opacity: 0.2;
+}
+
+#waybar.empty #window {
+ background-color: transparent;
+}
+
+#workspaces {
+}
+
+#window {
+ margin: 2px;
+ padding-left: 8px;
+ padding-right: 8px;
+ background-color: rgba(0,0,0,0.3);
+ font-size:14px;
+ font-weight: bold;
+}
+
+button {
+ /* Use box-shadow instead of border so the text isn't offset */
+ box-shadow: inset 0 -3px transparent;
+ /* Avoid rounded borders under each button name */
+ border: none;
+ border-radius: 0;
+}
+
+/* https://github.com/Alexays/Waybar/wiki/FAQ#the-workspace-buttons-have-a-strange-hover-effect */
+button:hover {
+ background: inherit;
+ border-top: 2px solid #c9545d;
+}
+
+#workspaces button {
+ padding: 0 4px;
+ /* background-color: rgba(0,0,0,0.3); */
+}
+
+#workspaces button:hover {
+}
+
+#workspaces button.focused {
+ /* box-shadow: inset 0 -2px #c9545d; */
+ background-color: rgba(0,0,0,0.3);
+ color:#c9545d;
+ border-top: 2px solid #c9545d;
+}
+
+#workspaces button.urgent {
+ background-color: #eb4d4b;
+}
+
+#mode {
+ background-color: #64727D;
+ border-bottom: 3px solid #ffffff;
+}
+
+#clock,
+#battery,
+#cpu,
+#memory,
+#disk,
+#temperature,
+#backlight,
+#network,
+#pulseaudio,
+#wireplumber,
+#custom-media,
+#tray,
+#mode,
+#idle_inhibitor,
+#scratchpad,
+#mpd {
+ margin: 2px;
+ padding-left: 4px;
+ padding-right: 4px;
+ background-color: rgba(0,0,0,0.3);
+ color: #ffffff;
+}
+
+/* If workspaces is the leftmost module, omit left margin */
+.modules-left > widget:first-child > #workspaces {
+ margin-left: 0;
+}
+
+/* If workspaces is the rightmost module, omit right margin */
+.modules-right > widget:last-child > #workspaces {
+ margin-right: 0;
+}
+
+#clock {
+ font-size:14px;
+ font-weight: bold;
+}
+
+#battery icon {
+ color: red;
+}
+
+#battery.charging, #battery.plugged {
+ color: #ffffff;
+ background-color: #26A65B;
+}
+
+@keyframes blink {
+ to {
+ background-color: #ffffff;
+ color: #000000;
+ }
+}
+
+#battery.warning:not(.charging) {
+ background-color: #f53c3c;
+ color: #ffffff;
+ animation-name: blink;
+ animation-duration: 0.5s;
+ animation-timing-function: linear;
+ animation-iteration-count: infinite;
+ animation-direction: alternate;
+}
+
+#battery.critical:not(.charging) {
+ background-color: #f53c3c;
+ color: #ffffff;
+ animation-name: blink;
+ animation-duration: 0.5s;
+ animation-timing-function: linear;
+ animation-iteration-count: infinite;
+ animation-direction: alternate;
+}
+
+label:focus {
+ background-color: #000000;
+}
+
+#network.disconnected {
+ background-color: #f53c3c;
+}
+
+#temperature.critical {
+ background-color: #eb4d4b;
+}
+
+#idle_inhibitor.activated {
+ background-color: #ecf0f1;
+ color: #2d3436;
+}
+
+#tray > .passive {
+ -gtk-icon-effect: dim;
+}
+
+#tray > .needs-attention {
+ -gtk-icon-effect: highlight;
+ background-color: #eb4d4b;
+}
+
+/*
+
+window#waybar.solo {
+background-color: #FFFFFF;
+}
+
+window#waybar.termite {
+background-color: #3F3F3F;
+}
+
+window#waybar.chromium {
+background-color: #000000;
+border: none;
+}
+ */
diff --git a/modules/nixos/graphical-interface/desktop-manager/hyprland/default.nix b/modules/nixos/graphical-interface/desktop-manager/hyprland/default.nix
index e5ec4ef..73f55c3 100644
--- a/modules/nixos/graphical-interface/desktop-manager/hyprland/default.nix
+++ b/modules/nixos/graphical-interface/desktop-manager/hyprland/default.nix
@@ -40,6 +40,8 @@ in
wl-screenrec
wlr-randr
grimblast
+
+ waybar
];
services.xserver = enabled;
@@ -52,6 +54,8 @@ in
};
wyrdgard = {
+ graphical-interface.desktop-manager.addons.waybar = enabled;
+
nix.extra-substituters.${cachix-url} = {
key = cachix-key;
};
@@ -66,8 +70,16 @@ in
"$mod" = "SUPER";
exec-once = [
- "steam"
- "discord"
+ "waybar"
+ "[workspace 3 silent] steam"
+ "[workspace 2 silent] discord"
+ "[workspace 2 silent] noisetorch"
+ "[workspace 4 silent] 1password"
+ "[workspace 1 silent] zen"
+ ];
+
+ windowrulev2 = [
+ "workspace 3 silent, class:^(steam)$, title:^(Steam)"
];
general = {
@@ -82,6 +94,10 @@ in
resize_on_border = true;
};
+ misc = {
+ force_default_wallpaper = 2;
+ };
+
decoration = {
rounding = 16;
blur = {
diff --git a/systems/x86_64-linux/yggdrasil/default.nix b/systems/x86_64-linux/yggdrasil/default.nix
index 2fae8a0..08a524b 100644
--- a/systems/x86_64-linux/yggdrasil/default.nix
+++ b/systems/x86_64-linux/yggdrasil/default.nix
@@ -36,10 +36,21 @@ in
#Vertical
"HDMI-A-1,1920x1080@144, auto-right, 1, transform, 1"
];
+
+ exec-once = [
+ "hyprctl dispatch moveworkspacetomonitor 4 HDMI-A-1"
+ ];
+
workspace = [
- "1, monitor:DP-2"
- "2, monitor:HDMI-A-1"
- "3, monitor:DP-2 on-created-empty:zen"
+ "1, monitor:DP-2, persistant:true"
+ "2, monitor:HDMI-A-1, persistant:true"
+ "3, monitor:DP-2, persistant:true, defaultName:3 Steam"
+ "4, monitor:HDMI-A-1: persistant:true, defaultName:4 1Password"
+ "5, monitor:DP-2, persistant:true"
+ ];
+
+ windowrulev2 = [
+ "workspace 2, class:^(steam)$, title:^(Friends List)"
];
};
};