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)" ]; }; };