diff --git a/machines/little-rascal/configuration.nix b/machines/little-rascal/configuration.nix index 4fe64e0..33d4c56 100644 --- a/machines/little-rascal/configuration.nix +++ b/machines/little-rascal/configuration.nix @@ -1,5 +1,4 @@ # Little Rascal - Development Laptop Configuration -# Based on congenital-optimist with laptop-specific adjustments { config, pkgs, @@ -18,6 +17,8 @@ # Desktop ../../modules/desktop/niri.nix + ../../modules/desktop/waybar.nix + ../../modules/desktop/gnome.nix ../../modules/desktop/cosmic.nix ../../modules/desktop/fonts.nix ../../modules/desktop/input.nix @@ -47,14 +48,13 @@ ../../modules/security/ssh-keys.nix # Services - ../../modules/services/seatd.nix + #../../modules/services/seatd.nix ]; networking = { hostName = "little-rascal"; networkmanager.enable = true; - # Tailscale for home lab access firewall = { enable = true; allowedUDPPorts = [41641]; # Tailscale @@ -73,7 +73,6 @@ kernelModules = ["kvm-amd" "zram"]; tmp.cleanOnBoot = true; - # zram swap like other machines kernel.sysctl."vm.swappiness" = 180; }; @@ -100,22 +99,23 @@ # Laptop-specific services services = { - # Enable clean seatd/greetd login - seatd-clean.enable = true; + xserver.displayManager.gdm.enable = true; + xserver.displayManager.gdm.wayland = true; # Enable Wayland support + # Enable clean seatd/greetd login (seat management for Wayland compositors) + # seatd-clean.enable = true; - # Power management for laptop - power-profiles-daemon.enable = true; - upower.enable = true; + # power-profiles-daemon.enable = true; + # upower.enable = true; - # Essential services tailscale.enable = true; - blueman.enable = true; + # Bluetooth manager GUI + # blueman.enable = true; - # Firmware updates + # Firmware updates via fwupd fwupd.enable = true; - # Location services for time zone - geoclue2.enable = true; + # Location services (used for automatic time zone, etc.) + # geoclue2.enable = true; }; # Localization diff --git a/machines/little-rascal/hardware-configuration.nix b/machines/little-rascal/hardware-configuration.nix index 9cd1666..c4a0425 100644 --- a/machines/little-rascal/hardware-configuration.nix +++ b/machines/little-rascal/hardware-configuration.nix @@ -62,10 +62,10 @@ }; # Bluetooth support for Intel AX200 - bluetooth = { - enable = true; - powerOnBoot = true; - }; + # bluetooth = { + # enable = true; + # powerOnBoot = true; + # }; }; # Power management for AMD Ryzen 7 4700U diff --git a/modules/desktop/waybar.nix b/modules/desktop/waybar.nix new file mode 100644 index 0000000..61c5d7e --- /dev/null +++ b/modules/desktop/waybar.nix @@ -0,0 +1,155 @@ +{ + config, + pkgs, + ... +}: { + # Ensure waybar is installed + environment.systemPackages = with pkgs; [waybar]; + + # Configure Waybar + environment.etc."xdg/waybar/config".text = '' + { + "layer": "top", + "position": "top", + "height": 30, + "spacing": 4, + "modules-left": ["sway/workspaces"], + "modules-center": [], + "modules-right": ["network", "clock"], + "sway/workspaces": { + "disable-scroll": false, + "all-outputs": true, + "format": "{name}", + "format-icons": { + "1": "1", + "2": "2", + "3": "3", + "4": "4", + "5": "5", + "urgent": "", + "focused": "", + "default": "" + } + }, + "clock": { + "timezone": "Europe/Oslo", + "format": "{:%H:%M}", + "format-alt": "{:%Y-%m-%d %H:%M:%S}", + "tooltip-format": "{calendar}", + "calendar": { + "mode": "year", + "mode-mon-col": 3, + "weeks-pos": "right", + "on-scroll": 1, + "on-click-right": "mode", + "format": { + "months": "{}", + "days": "{}", + "weeks": "W{}", + "weekdays": "{}", + "today": "{}" + } + }, + "actions": { + "on-click-right": "mode", + "on-click-forward": "tz_up", + "on-click-backward": "tz_down", + "on-scroll-up": "shift_up", + "on-scroll-down": "shift_down" + } + }, + "network": { + "format-wifi": "{essid} ({signalStrength}%) ", + "format-ethernet": "{ipaddr}/{cidr} ", + "tooltip-format": "{ifname} via {gwaddr} ", + "format-linked": "{ifname} (No IP) ", + "format-disconnected": "Disconnected ⚠", + "format-alt": "{ifname}: {ipaddr}/{cidr}" + } + } + ''; + + # Style for Waybar + environment.etc."xdg/waybar/style.css".text = '' + * { + border: none; + border-radius: 0; + font-family: 'Inter', 'Font Awesome 6 Free'; + font-size: 13px; + min-height: 0; + } + + window#waybar { + background-color: rgba(43, 48, 59, 0.9); + border-bottom: 3px solid rgba(100, 114, 125, 0.5); + color: #ffffff; + transition-property: background-color; + transition-duration: 0.5s; + } + + window#waybar.hidden { + opacity: 0.2; + } + + #workspaces { + margin: 0 4px; + } + + #workspaces button { + padding: 0 8px; + background-color: transparent; + color: #ffffff; + border-bottom: 3px solid transparent; + transition: all 0.3s ease; + } + + #workspaces button:hover { + background: rgba(0, 0, 0, 0.2); + } + + #workspaces button.focused { + background-color: #64727D; + border-bottom: 3px solid #ffffff; + } + + #workspaces button.urgent { + background-color: #eb4d4b; + color: #ffffff; + } + + #clock, + #network { + padding: 0 10px; + color: #ffffff; + } + + #clock { + background-color: #64727D; + border-radius: 0 8px 8px 0; + } + + #network { + background-color: #2980b9; + border-radius: 8px 0 0 8px; + } + + #network.disconnected { + background-color: #f53c3c; + } + + @keyframes blink { + to { + background-color: #ffffff; + color: #000000; + } + } + + #network.disconnected { + animation-name: blink; + animation-duration: 0.5s; + animation-timing-function: linear; + animation-iteration-count: infinite; + animation-direction: alternate; + } + ''; +}