Evie Litherland-Smith
ecc9fae75a
Motivated by the xz backdoor bug, switch NixOS system to track 23.11 instead of unstable, and will bump version numbers as they come along rather than do rolling release. Reverted a couple of changes that were introduced in recent nixpkgs versions, only major one was switching back to swaylock as hyprlock isn't in nixpkgs 23.11 Remove stylix and replace with lower-level base16.nix, partly because stylix was doing something strange pulling in extra flakes (and breaking on 23.11), partly because I was most of the way there anyway. Remove last references to stylix in config, mostly just changing stylix.colors to scheme (from base16) and defining fonts in specialArgs to be used in the same way as before.
346 lines
9.4 KiB
Nix
346 lines
9.4 KiB
Nix
{
|
|
config,
|
|
pkgs,
|
|
fonts,
|
|
scheme,
|
|
accentColour ? "base07",
|
|
...
|
|
}: {
|
|
systemd.user.targets.tray.Unit = {
|
|
Description = "Home Manager System Tray";
|
|
Requires = ["graphical-session-pre.target"];
|
|
};
|
|
programs.waybar = {
|
|
enable = true;
|
|
settings.main = {
|
|
layer = "top";
|
|
position = "top";
|
|
# Layout
|
|
"modules-left" = [
|
|
"hyprland/workspaces"
|
|
];
|
|
"modules-center" = [
|
|
"hyprland/window"
|
|
"mpris"
|
|
];
|
|
"modules-right" = [
|
|
"custom/notification"
|
|
"pulseaudio"
|
|
"network"
|
|
"bluetooth"
|
|
"clock#calendar"
|
|
"clock"
|
|
"backlight"
|
|
"battery"
|
|
"custom/weather"
|
|
"tray"
|
|
];
|
|
# Module config
|
|
"hyprland/window" = {
|
|
"format" = "{title}";
|
|
"rewrite" = {
|
|
"(.*) - GNU Emacs at (.*)" = " $1 [$2]";
|
|
"(Alacritty.*)" = " $1";
|
|
"(.*) - mpv" = " $1";
|
|
"(btm)" = " Resource Usage [$1]";
|
|
"(cava)" = " Music Visualiser [$1]";
|
|
"(.*) - Thunar" = " $1";
|
|
"Nyxt - (.*)" = " $1";
|
|
"Mozilla Firefox" = " $1";
|
|
"(.*) — Mozilla Firefox" = " $1";
|
|
"((?:.*)WebCord.*)" = " $1";
|
|
"(Signal.*)" = " $1";
|
|
"(WhatsApp for Linux.*)" = " $1";
|
|
"([Ss]team)" = " $1";
|
|
"(Prism Launcher.*)" = " Minecraft ($1)";
|
|
"Microsoft Teams(?: classic)?(?: - )?(.*)(?: \| Microsoft Teams)?" = " $1";
|
|
};
|
|
"separate-outputs" = true;
|
|
};
|
|
"hyprland/workspaces" = {
|
|
format = "{icon}";
|
|
format-icons = {
|
|
"1" = " ";
|
|
"2" = " ";
|
|
"3" = " ";
|
|
"4" = " ";
|
|
"5" = " ";
|
|
"6" = " ";
|
|
"7" = " ";
|
|
"8" = " ";
|
|
"9" = " ";
|
|
"10" = " ";
|
|
default = " ";
|
|
urgent = " ";
|
|
};
|
|
show-special = false;
|
|
sort-by-number = true;
|
|
all-outputs = false;
|
|
persistent-workspaces = {
|
|
"1" = [];
|
|
"2" = [];
|
|
"3" = [];
|
|
"4" = [];
|
|
"5" = [];
|
|
};
|
|
};
|
|
mpris = {
|
|
"format" = "{player_icon} {status_icon} {artist} - {title}";
|
|
"tooltip-format" = "{player_icon} ({player}) {dynamic}";
|
|
"title-len" = 48;
|
|
"interval" = 1;
|
|
"dynamic-order" = [
|
|
"album"
|
|
"artist"
|
|
"title"
|
|
"position"
|
|
"length"
|
|
];
|
|
"player-icons" = {
|
|
"default" = " ";
|
|
"emms" = " ";
|
|
"firefox" = " ";
|
|
"mpv" = " ";
|
|
};
|
|
"status-icons" = {
|
|
"playing" = "";
|
|
"paused" = "";
|
|
"stopped" = "";
|
|
};
|
|
"ignored-players" = [];
|
|
};
|
|
pulseaudio = {
|
|
scroll-step = 5;
|
|
format = "{format_source}{icon}{volume}%";
|
|
format-muted = "{format_source} ";
|
|
format-source = " ";
|
|
format-source-muted = " ";
|
|
format-icons = {
|
|
car = " ";
|
|
default = [" " " " " "];
|
|
hands-free = " ";
|
|
headset = " ";
|
|
phone = " ";
|
|
portable = " ";
|
|
headphone = " ";
|
|
};
|
|
on-click = "${pkgs.pavucontrol}/bin/pavucontrol";
|
|
on-click-right = "${pkgs.pamixer}/bin/pamixer -t";
|
|
on-scroll-up = "${pkgs.pamixer}/bin/pamixer -i 5";
|
|
on-scroll-down = "${pkgs.pamixer}/bin/pamixer -d 5";
|
|
};
|
|
disk = {
|
|
format = " {percentage_used}%";
|
|
path = config.home.homeDirectory;
|
|
};
|
|
cpu = {
|
|
format = " {usage}%";
|
|
tooltip = false;
|
|
};
|
|
memory = {format = " {}%";};
|
|
temperature = {
|
|
critical-threshold = 80;
|
|
format = "{icon} {temperatureC}°C";
|
|
format-icons = ["" "" ""];
|
|
};
|
|
network = {
|
|
format-icons = [" " " " " " " "];
|
|
format-wifi = "{icon}";
|
|
format-ethernet = " ";
|
|
tooltip-format = "{essid} ({signalStrength}%)";
|
|
format-linked = " ";
|
|
format-disconnected = " ";
|
|
};
|
|
bluetooth = {
|
|
format = "";
|
|
format-disabled = "";
|
|
format-off = "";
|
|
format-on = "";
|
|
format-connected = "";
|
|
tooltip-format = "{status} | {device_alias}";
|
|
on-click = "${pkgs.bluez}/bin/bluetoothctl power on";
|
|
on-click-right = "${pkgs.bluez}/bin/bluetoothctl power off";
|
|
};
|
|
"clock#calendar" = {
|
|
# format = "{: %Y-%m-%d}";
|
|
format = "{:%Y-%m-%d}"; # TEMP, see https://github.com/Alexays/Waybar/issues/3021
|
|
tooltip-format = "<tt><small>{calendar}</small></tt>";
|
|
calendar = {
|
|
mode = "month";
|
|
mode-mon-col = 3;
|
|
weeks-pos = "left";
|
|
on-scroll = 1;
|
|
on-click-right = "mode";
|
|
format = {
|
|
months = "<span color='#ffead3'><b>{}</b></span>";
|
|
days = "<span color='#ecc6d9'><b>{}</b></span>";
|
|
weeks = "<span color='#99ffdd'><b>W{}</b></span>";
|
|
weekdays = "<span color='#ffcc66'><b>{}</b></span>";
|
|
today = "<span color='#ff6699'><b><u>{}</u></b></span>";
|
|
};
|
|
};
|
|
actions = {
|
|
on-click-right = "mode";
|
|
on-scroll-up = "shift_up";
|
|
on-scroll-down = "shift_down";
|
|
};
|
|
};
|
|
clock = {
|
|
# format = "{: %R}";
|
|
format = "{:%R}"; # TEMP, see https://github.com/Alexays/Waybar/issues/3021
|
|
};
|
|
backlight = {
|
|
format = "{icon}";
|
|
tooltip-format = "{percent}%";
|
|
format-icons = [" " " " " " " " " " " " " " " " " "];
|
|
};
|
|
battery = {
|
|
states = {
|
|
warning = 30;
|
|
critical = 20;
|
|
};
|
|
format = "{icon}";
|
|
format-charging = " ";
|
|
format-plugged = " ";
|
|
tooltip-format = "{capacity}% {time}";
|
|
format-icons = [" " " " " " " " " " " " " " " " " " " " " "];
|
|
};
|
|
"custom/notification" = let
|
|
swaync = pkgs.swaynotificationcenter;
|
|
in {
|
|
"tooltip" = false;
|
|
"format" = "{icon}{}";
|
|
"format-icons" = {
|
|
"notification" = " ";
|
|
"none" = " ";
|
|
"dnd-notification" = " ";
|
|
"dnd-none" = " ";
|
|
"inhibited-notification" = " ";
|
|
"inhibited-none" = " ";
|
|
"dnd-inhibited-notification" = " ";
|
|
"dnd-inhibited-none" = " ";
|
|
};
|
|
"return-type" = "json";
|
|
"exec-if" = "which ${swaync}/bin/swaync-client";
|
|
"exec" = "${swaync}/bin/swaync-client -swb";
|
|
"on-click" = "${swaync}/bin/swaync-client -t -sw";
|
|
"on-click-right" = "${swaync}/bin/swaync-client -d -sw";
|
|
"escape" = true;
|
|
};
|
|
"custom/weather" = let
|
|
date-format = "%Y-%m-%d";
|
|
custom-indicator = "{ICON}{temp_C}({FeelsLikeC})";
|
|
in {
|
|
"format" = "{}°";
|
|
"tooltip" = true;
|
|
"interval" = 900; # Every 15 minutes
|
|
"exec" = ''${pkgs.wttrbar}/bin/wttrbar --location Didcot --date-format "${date-format}" --custom-indicator "${custom-indicator}"'';
|
|
"return-type" = "json";
|
|
};
|
|
tray = {
|
|
icon-size = fonts.sizes.desktop;
|
|
show-passive-items = true;
|
|
spacing = 5;
|
|
};
|
|
};
|
|
style = with scheme.withHashtag; let
|
|
accent = scheme.withHashtag.${accentColour};
|
|
in ''
|
|
* {
|
|
all: unset;
|
|
font-size: ${toString fonts.sizes.desktop}px;
|
|
font-family: "${fonts.monospace.name}";
|
|
}
|
|
|
|
window {
|
|
background: transparent;
|
|
}
|
|
|
|
window > box {
|
|
color: ${base05};
|
|
background: alpha(${base00}, 0.8);
|
|
margin: 5px 10px 0px;
|
|
padding: 0px;
|
|
border: 1px solid ${accent};
|
|
border-radius: 10px;
|
|
}
|
|
|
|
tooltip {
|
|
/* TODO make transparent when I can fix the blurls issue */
|
|
/* background: alpha(${base00}, 0.8); */
|
|
background: ${base00};
|
|
border: 1px solid ${accent};
|
|
border-radius: 10px;
|
|
}
|
|
|
|
tooltip label {
|
|
color: ${base05};
|
|
border: none;
|
|
padding: 5px;
|
|
margin: 0px;
|
|
}
|
|
|
|
#workspaces,
|
|
#window,
|
|
#mpris,
|
|
#pulseaudio,
|
|
#network,
|
|
#bluetooth,
|
|
#backlight,
|
|
#battery,
|
|
#clock,
|
|
#custom-notification,
|
|
#custom-weather,
|
|
#tray {
|
|
margin: 0px;
|
|
padding: 1px 5px;
|
|
}
|
|
|
|
#workspaces,
|
|
#window,
|
|
#mpris,
|
|
#tray,
|
|
#backlight,
|
|
#battery,
|
|
#custom-weather {
|
|
color: ${base05};
|
|
}
|
|
|
|
#workspaces button {
|
|
background: transparent;
|
|
color: ${base05};
|
|
margin: 0px;
|
|
padding: 0px 5px;
|
|
}
|
|
#workspaces button.empty {
|
|
color: ${base03};
|
|
}
|
|
#workspaces button.active {
|
|
color: ${accent};
|
|
}
|
|
#workspaces button.urgent {
|
|
color: ${base09};
|
|
}
|
|
|
|
#custom-notification {
|
|
color: ${base08};
|
|
}
|
|
#pulseaudio {
|
|
color: ${base09};
|
|
}
|
|
#network {
|
|
color: ${base0A};
|
|
}
|
|
#bluetooth {
|
|
color: ${base0B};
|
|
}
|
|
#clock.calendar {
|
|
color: ${base0C};
|
|
}
|
|
#clock {
|
|
color: ${base0D};
|
|
}
|
|
'';
|
|
};
|
|
}
|