Files
quincy/modules/home/waybar.nix
Brandon Lucas 58e4232f2f Initial commit: Nomarchy NixOS configuration
An opinionated NixOS configuration with Hyprland, featuring:

- Modular flake-based architecture
- Parameterized user configuration (username, timezone, locale, etc.)
- Classical/antiquity theme with Thomas Cole wallpapers
- Full Hyprland setup with waybar, rofi, swaync
- Custom utility scripts (screenshots, screen recording, WiFi QR)
- Neovim with LSP support
- Interactive installer for existing NixOS systems
- ISO builder for fresh installations

Flake outputs:
- nixosConfigurations.example - Test configuration
- nixosConfigurations.installer - ISO installer
- packages.iso - Bootable ISO image
- apps.default - Interactive installer
- lib.mkHost - Host builder function
- templates.default - Starter template

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-15 02:44:33 -05:00

268 lines
6.4 KiB
Nix
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Waybar status bar configuration
{
config,
lib,
pkgs,
...
}: {
programs.waybar = {
enable = true;
style = ''
* {
font-family: "JetBrainsMono Nerd Font Mono", "JetBrainsMono NF", monospace;
font-size: 14px;
min-height: 0;
}
window#waybar {
background-color: rgba(26, 22, 17, 0.92);
color: #d4c4a8;
border-bottom: 2px solid rgba(139, 90, 43, 0.6);
}
#workspaces button {
padding: 0 8px;
color: #8b7355;
border-radius: 4px;
margin: 4px 2px;
}
#workspaces button.active {
color: #d4a857;
background-color: rgba(180, 134, 11, 0.2);
}
#workspaces button:hover {
background-color: rgba(139, 90, 43, 0.15);
}
#custom-help {
padding: 0 10px;
margin: 4px 2px;
border-radius: 4px;
background-color: rgba(212, 168, 87, 0.3);
color: #d4a857;
font-weight: bold;
}
#custom-help:hover {
background-color: rgba(212, 168, 87, 0.5);
}
#clock, #battery, #network, #pulseaudio, #cpu, #memory, #tray {
padding: 0 12px;
margin: 4px 2px;
border-radius: 4px;
background-color: rgba(45, 38, 32, 0.85);
}
#clock {
color: #d4a857;
font-weight: bold;
}
#battery {
color: #8a9a5b;
}
#battery.charging {
color: #d4a857;
}
#battery.warning:not(.charging) {
color: #c9a227;
}
#battery.critical:not(.charging) {
color: #a63d40;
animation: blink 0.5s linear infinite alternate;
}
#network {
color: #7a9cb8;
}
#network.disconnected {
color: #a63d40;
}
#bluetooth {
color: #7a9cb8;
}
#bluetooth.connected {
color: #8a9a5b;
}
#bluetooth.disabled {
color: #5c5346;
}
#language {
color: #c67b5c;
font-weight: bold;
min-width: 20px;
}
#pulseaudio {
color: #c9a227;
}
#pulseaudio.muted {
color: #5c5346;
}
#cpu {
color: #b85c38;
}
#memory {
color: #c67b5c;
}
#tray {
padding: 0 8px;
}
@keyframes blink {
to {
background-color: #722f37;
color: #d4c4a8;
}
}
#custom-recording {
color: #ff4444;
font-weight: bold;
animation: blink 1s linear infinite;
padding: 0 10px;
}
'';
settings = {
mainBar = {
layer = "top";
position = "top";
height = 34;
spacing = 4;
modules-left = ["custom/help" "hyprland/workspaces" "hyprland/window"];
modules-center = ["custom/recording" "clock"];
modules-right = ["hyprland/language" "tray" "cpu" "memory" "pulseaudio" "bluetooth" "network" "battery"];
"custom/recording" = {
exec = "[ -f /tmp/recording-status ] && echo '󰑊 REC' || echo ''";
interval = 1;
format = "{}";
on-click = "~/.local/bin/screen-record";
tooltip = "Click to stop recording";
};
"custom/help" = {
format = "?";
tooltip = "Quick Actions (Super+/)";
on-click = "~/.local/bin/quick-actions";
};
"hyprland/workspaces" = {
format = "{name}";
on-click = "activate";
};
"hyprland/window" = {
max-length = 50;
separate-outputs = true;
};
clock = {
format = "{:%H:%M %a %b %d}";
format-alt = "{:%I:%M %p %a %b %d}";
tooltip-format = "<tt><small>{calendar}</small></tt>";
calendar = {
mode = "month";
weeks-pos = "right";
format = {
months = "<span color='#d4a857'><b>{}</b></span>";
days = "<span color='#d4c4a8'>{}</span>";
weeks = "<span color='#8b7355'>W{}</span>";
weekdays = "<span color='#c9a227'>{}</span>";
today = "<span color='#a63d40'><b><u>{}</u></b></span>";
};
};
};
cpu = {
format = "CPU {usage}%";
tooltip = true;
interval = 2;
};
memory = {
format = "RAM {percentage}%";
tooltip-format = "{used:0.1f}GB / {total:0.1f}GB";
interval = 2;
};
battery = {
states = {
warning = 30;
critical = 15;
};
format = "BAT {capacity}%";
format-charging = "CHR {capacity}%";
format-plugged = "PLG {capacity}%";
format-icons = ["" "" "" "" ""];
tooltip-format = "{timeTo}";
};
network = {
format-wifi = "󰖩 {essid}";
format-ethernet = "󰈀 {ipaddr}";
format-disconnected = "󰖪 ";
tooltip-format-wifi = "{essid} {signalStrength}% {ipaddr}";
tooltip-format-ethernet = "IP: {ipaddr}";
on-click = "~/.local/bin/wifi-menu";
on-click-right = "nm-connection-editor";
};
bluetooth = {
format = "󰂯";
format-connected = "󰂱 {device_alias}";
format-disabled = "󰂲";
tooltip-format = "{controller_alias}\n{status}";
tooltip-format-connected = "{controller_alias}\n{device_enumerate}";
tooltip-format-enumerate-connected = "{device_alias}";
on-click = "blueman-manager";
on-click-right = "~/.local/bin/bluetooth-toggle";
};
"hyprland/language" = {
format = "{}";
format-en = "EN";
format-gr = "ΕΛ";
tooltip-format = "{long} ({variant})";
on-click = "hyprctl switchxkblayout all next";
};
pulseaudio = {
format = "{icon} {volume}%";
format-muted = "󰖁 ";
format-icons = {
default = ["󰕿" "󰖀" "󰕾"];
headphone = "󰋋";
};
tooltip-format = "{desc}";
on-click = "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle";
on-click-right = "pavucontrol";
on-scroll-up = "wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+";
on-scroll-down = "wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-";
};
tray = {
icon-size = 18;
spacing = 8;
};
};
};
};
}