Evie Litherland-Smith
68b4a7b063
Move system/home/default.nix into system/default.nix, system/home/desktop/default.nix into system/desktop.nix to reduce unnecessary duplication. Moved everything in home/desktop up to home/ and adjusted paths accordingly. Moved wallpapers up to system/ since it makes sense with where it's used. Merge allowUnfreePredicate into single place again since it seems to override rather than combine if used multiple times. Install NoMachine on all machines again by default.
405 lines
11 KiB
Nix
405 lines
11 KiB
Nix
{ config, pkgs, ... }:
|
|
{
|
|
stylix.targets.waybar.enable = false;
|
|
systemd.user.targets.tray.Unit = {
|
|
Description = "Home Manager System Tray";
|
|
Requires = [ "graphical-session.target" ];
|
|
};
|
|
home.packages = [ pkgs.playerctl ]; # For MPRIS to work
|
|
programs.waybar = {
|
|
enable = true;
|
|
systemd.enable = true;
|
|
settings.main = {
|
|
name = "main";
|
|
layer = "top";
|
|
position = "top";
|
|
# Layout
|
|
"modules-left" = [
|
|
"hyprland/workspaces"
|
|
"hyprland/window"
|
|
];
|
|
"modules-center" = [ "mpris" ];
|
|
"modules-right" = [
|
|
"custom/notification"
|
|
"pulseaudio"
|
|
"network"
|
|
"bluetooth"
|
|
"clock#calendar"
|
|
"clock"
|
|
"backlight"
|
|
"battery"
|
|
"custom/weather"
|
|
"systemd-failed-units"
|
|
"tray"
|
|
];
|
|
# Module config
|
|
"hyprland/workspaces" = {
|
|
format = "{icon}";
|
|
format-icons = {
|
|
"1" = " ";
|
|
"2" = " ";
|
|
"3" = " ";
|
|
"4" = " ";
|
|
"5" = " ";
|
|
"6" = " ";
|
|
default = " ";
|
|
};
|
|
all-outputs = false;
|
|
persistent-workspaces = {
|
|
"1" = [ ];
|
|
"2" = [ ];
|
|
"3" = [ ];
|
|
"4" = [ ];
|
|
"5" = [ ];
|
|
"6" = [ ];
|
|
};
|
|
};
|
|
"hyprland/window" = {
|
|
"format" = "{title}";
|
|
"max-length" = 50;
|
|
"rewrite" = {
|
|
"(.*) - GNU Emacs at (.*)" = " $1 [$2]";
|
|
"(alacritty.*)" = " $1";
|
|
"(.*) - mpv" = " $1";
|
|
"swayimg: (.*)" = " $1";
|
|
"swappy" = " swappy";
|
|
"(?:/nix/.*)(btm)" = " Resource Usage [$1]";
|
|
"(?:/nix/.*)(cava)" = " Music Visualiser [$1]";
|
|
"Mozilla Firefox" = " $1";
|
|
"(.*) — Mozilla Firefox" = " $1";
|
|
"Nyxt - (.*)" = " $1";
|
|
"(.*) - Chromium" = " $1";
|
|
"(Signal.*)" = " $1";
|
|
"(WhatsApp for Linux.*)" = " $1";
|
|
"((?:.*)WebCord.*)" = " $1";
|
|
"(Cartridges.*)" = " $1";
|
|
"([Ss]team.*)" = " $1";
|
|
"(Prism Launcher.*)" = " Minecraft ($1)";
|
|
"(.*)(?: *)PrusaSlicer-(.*)" = " $1 PrusaSlicer ($2)";
|
|
"(.*)(?: *)PrusaSlicer G-code Viewer-(.*)" = " $1 G-code Viewer ($2)";
|
|
"FreeCAD (.*)" = " FreeCAD $1";
|
|
"(.*) - Blender.* " = " $1";
|
|
"(Remmina Remote Desktop Client)" = " $1";
|
|
"(NoMachine|Nxplayer.bin)(?: *)(.*)" = " $1 $2";
|
|
};
|
|
};
|
|
mpris = {
|
|
"format" = "{player_icon} {status_icon} | {album} - {artist} - {title}";
|
|
"tooltip-format" = "{player_icon} ({player}) {status_icon} {dynamic}";
|
|
"title-len" = 64;
|
|
"interval" = 1;
|
|
"dynamic-order" = [
|
|
"album"
|
|
"artist"
|
|
"title"
|
|
"position"
|
|
"length"
|
|
];
|
|
"player-icons" = {
|
|
"default" = " ";
|
|
};
|
|
"status-icons" = {
|
|
"playing" = "";
|
|
"paused" = "";
|
|
"stopped" = "";
|
|
};
|
|
"ignored-players" = [ "firefox" ];
|
|
};
|
|
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 = "";
|
|
format-linked = " ";
|
|
format-disconnected = " ";
|
|
tooltip-format = "{essid} ({signalStrength}%)";
|
|
on-click = "${pkgs.networkmanagerapplet}/bin/nm-connection-editor";
|
|
};
|
|
bluetooth = {
|
|
format = "";
|
|
format-disabled = "";
|
|
format-off = "";
|
|
format-on = "";
|
|
format-connected = "";
|
|
tooltip-format = "{status} | {device_alias}";
|
|
on-click = "${pkgs.blueman}/bin/blueman-manager";
|
|
};
|
|
"clock#calendar" =
|
|
let
|
|
size = "${toString config.stylix.fonts.sizes.popups}pt";
|
|
in
|
|
{
|
|
format = " {:%Y-%m-%d}";
|
|
tooltip-format = "<span size='${size}'>{calendar}</span>";
|
|
calendar = {
|
|
mode = "month";
|
|
weeks-pos = "left";
|
|
on-scroll = 1;
|
|
format =
|
|
let
|
|
scheme = config.lib.stylix.scheme.withHashtag;
|
|
in
|
|
{
|
|
months = "<span color='${scheme.red}'><b>{}</b></span>";
|
|
weeks = "<span color='${scheme.cyan}'><i>W{}</i></span>";
|
|
weekdays = "<span color='${scheme.orange}'><u>{}</u></span>";
|
|
days = "<span color='${scheme.base05}'>{}</span>";
|
|
today = "<span color='${scheme.magenta}'><b><u>{}</u></b></span>";
|
|
};
|
|
};
|
|
actions = {
|
|
on-scroll-up = "shift_up";
|
|
on-scroll-down = "shift_down";
|
|
};
|
|
};
|
|
clock.format = " {:%R}";
|
|
backlight = {
|
|
format = "{icon}";
|
|
tooltip-format = "{percent}%";
|
|
format-icons = [
|
|
" "
|
|
" "
|
|
" "
|
|
" "
|
|
" "
|
|
" "
|
|
" "
|
|
" "
|
|
" "
|
|
];
|
|
};
|
|
battery = {
|
|
states = {
|
|
warning = 20;
|
|
critical = 10;
|
|
};
|
|
format = "{icon}";
|
|
format-time = "{H}:{m}";
|
|
format-charging = " ({time})";
|
|
format-plugged = " ";
|
|
format-warning = "{icon}{capacity}%";
|
|
format-critical = "{icon}{capacity}% ({time})";
|
|
tooltip-format = "{capacity}% | {power}W | {time}";
|
|
format-icons = [
|
|
" "
|
|
" "
|
|
" "
|
|
" "
|
|
" "
|
|
" "
|
|
" "
|
|
" "
|
|
" "
|
|
" "
|
|
" "
|
|
];
|
|
};
|
|
"systemd-failed-units" = {
|
|
hide-on-ok = false;
|
|
format = " S:{nr_failed_system} U:{nr_failed_user}";
|
|
format-ok = " ";
|
|
system = true;
|
|
user = true;
|
|
};
|
|
"custom/notification" =
|
|
let
|
|
makoctl = "${config.services.mako.package}/bin/makoctl";
|
|
jq = "${pkgs.jq}/bin/jq";
|
|
in
|
|
{
|
|
exec = "( ${makoctl} list | ${jq} -e '.data[] | length > 0' >/dev/null && echo ' ' ) || echo ' ' ";
|
|
format = "{}";
|
|
on-click = "${makoctl} dismiss -a";
|
|
interval = 3;
|
|
};
|
|
"custom/weather" =
|
|
let
|
|
date-format = "%Y-%m-%d";
|
|
custom-indicator = "{ICON}{temp_C}°C({FeelsLikeC}°C)";
|
|
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 = 20;
|
|
show-passive-items = true;
|
|
spacing = 5;
|
|
};
|
|
};
|
|
style =
|
|
let
|
|
scheme = config.lib.stylix.scheme.withHashtag;
|
|
in
|
|
''
|
|
* {
|
|
all: unset;
|
|
font-family: ${config.stylix.fonts.monospace.name};
|
|
font-size: ${toString config.stylix.fonts.sizes.popups}px;
|
|
}
|
|
|
|
window {
|
|
background: transparent;
|
|
box-shadow: none;
|
|
border: none;
|
|
}
|
|
|
|
window > box {
|
|
color: ${scheme.base05};
|
|
background: ${scheme.base00};
|
|
margin: 5px 5px 0px;
|
|
padding: 0px;
|
|
border-top: 1px solid ${scheme.base04};
|
|
border-radius: 5px;
|
|
}
|
|
|
|
tooltip {
|
|
background: ${scheme.base00};
|
|
border: 1px solid ${scheme.base0E};
|
|
border-radius: 5px;
|
|
box-shadow: none;
|
|
}
|
|
|
|
tooltip label {
|
|
color: ${scheme.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,
|
|
#tray,
|
|
#backlight,
|
|
#battery,
|
|
#custom-weather {
|
|
color: ${scheme.base05};
|
|
}
|
|
|
|
#workspaces button {
|
|
background: transparent;
|
|
color: ${scheme.base05};
|
|
margin: 0px;
|
|
padding: 0px 5px;
|
|
}
|
|
#workspaces button.empty {
|
|
color: ${scheme.base03};
|
|
}
|
|
#workspaces button.active {
|
|
color: ${scheme.base0E};
|
|
}
|
|
#workspaces button.urgent {
|
|
color: ${scheme.base09};
|
|
}
|
|
|
|
#mpris.paused {
|
|
color: ${scheme.base03};
|
|
}
|
|
|
|
#custom-notification {
|
|
color: ${scheme.base08};
|
|
}
|
|
#pulseaudio {
|
|
color: ${scheme.base09};
|
|
}
|
|
#network {
|
|
color: ${scheme.base0A};
|
|
}
|
|
#bluetooth {
|
|
color: ${scheme.base0B};
|
|
}
|
|
#clock.calendar {
|
|
color: ${scheme.base0C};
|
|
}
|
|
#clock {
|
|
color: ${scheme.base0D};
|
|
}
|
|
|
|
#battery.warning {
|
|
color: ${scheme.base09};
|
|
}
|
|
#battery.critical {
|
|
color: ${scheme.base08};
|
|
}
|
|
#battery.charging,
|
|
#battery.plugged {
|
|
color: ${scheme.base0B};
|
|
}
|
|
|
|
#systemd-failed-units.ok {
|
|
color: ${scheme.base0B}
|
|
}
|
|
#systemd-failed-units.degraded {
|
|
color: ${scheme.base08}
|
|
}
|
|
'';
|
|
};
|
|
}
|