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>
This commit is contained in:
267
modules/home/waybar.nix
Normal file
267
modules/home/waybar.nix
Normal file
@@ -0,0 +1,267 @@
|
||||
# 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;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user