Add gnome-keyring as libsecret backend, swap git-credential-helper and mbsync to using libsecret/secret-tool. Add helper script to check for and request mbsync passwords if missing. Add GNOME Seahorse for viewing passwords graphically. Remove email/work.nix and merge back into default.nix Don't auto start protonmail-bridge, use the GUI instead so it doesn't need to unlock all my keychains immediately Move 3D modelling software to Vanguard only, instead of all personal devices. Move waybar back to top of screen and adjust all corner radii to 5px from 10px Re-enable swayfx blur_ignore_transparent now that it's added to nixpkgs, re-enable shadows
345 lines
9.4 KiB
Nix
345 lines
9.4 KiB
Nix
{
|
|
config,
|
|
pkgs,
|
|
fonts,
|
|
accentColourName,
|
|
...
|
|
}: {
|
|
systemd.user.targets.tray.Unit = {
|
|
Description = "Home Manager System Tray";
|
|
Requires = ["graphical-session.target"];
|
|
};
|
|
programs.waybar = {
|
|
enable = true;
|
|
systemd.enable = true;
|
|
settings.main = {
|
|
name = "main";
|
|
layer = "top";
|
|
position = "top";
|
|
# Layout
|
|
"modules-left" = [
|
|
"sway/workspaces"
|
|
"sway/window"
|
|
];
|
|
"modules-center" = [];
|
|
"modules-right" = [
|
|
"mpris"
|
|
"custom/notification"
|
|
"pulseaudio"
|
|
"network"
|
|
"bluetooth"
|
|
"clock#calendar"
|
|
"clock"
|
|
"backlight"
|
|
"battery"
|
|
"custom/weather"
|
|
"tray"
|
|
];
|
|
# Module config
|
|
"sway/workspaces" = {
|
|
format = "{icon}";
|
|
format-icons = {
|
|
"1" = " ";
|
|
"2" = " ";
|
|
"3" = " ";
|
|
"4" = " ";
|
|
"5" = " ";
|
|
"6" = " ";
|
|
default = " ";
|
|
urgent = " ";
|
|
};
|
|
all-outputs = false;
|
|
persistent-workspaces = {
|
|
"1" = [];
|
|
"2" = [];
|
|
"3" = [];
|
|
"4" = [];
|
|
"5" = [];
|
|
"6" = [];
|
|
};
|
|
};
|
|
"sway/window" = {
|
|
"format" = "{title}";
|
|
"max-length" = 50;
|
|
"rewrite" = {
|
|
"(.*) - GNU Emacs at (.*)" = " $1 [$2]";
|
|
"(alacritty.*)" = " $1";
|
|
"(.*) - mpv" = " $1";
|
|
"swayimg: (.*)" = " $1";
|
|
"(btm)" = " Resource Usage [$1]";
|
|
"(cava)" = " Music Visualiser [$1]";
|
|
"(.*) - Thunar" = " $1";
|
|
"Mozilla Firefox" = " $1";
|
|
"(.*) — Mozilla Firefox" = " $1";
|
|
"Nyxt - (.*)" = " $1";
|
|
"(.*) - Chromium" = " $1";
|
|
"(Signal.*)" = " $1";
|
|
"((?:.*)WebCord.*)" = " $1";
|
|
"(Cartridges.*)" = " $1";
|
|
"([Ss]team.*)" = " $1";
|
|
"(Prism Launcher.*)" = " Minecraft ($1)";
|
|
"(X2Go Client)" = " $1";
|
|
"(NoMachine|Nxplayer.bin) (.*)" = " $1 $2";
|
|
};
|
|
};
|
|
mpris = {
|
|
"format" = "{status_icon} {player_icon} {artist} - {title}";
|
|
"tooltip-format" = "{player_icon} ({player}) {dynamic}";
|
|
"title-len" = 64;
|
|
"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 = builtins.floor fonts.sizes.popups;
|
|
show-passive-items = true;
|
|
spacing = 5;
|
|
};
|
|
};
|
|
style = let
|
|
sc = config.scheme.withHashtag;
|
|
alpha = "0.85";
|
|
in ''
|
|
* {
|
|
all: unset;
|
|
font-size: ${toString (builtins.floor (builtins.div fonts.sizes.popups 10))}em;
|
|
font-family: ${fonts.monospace.name};
|
|
}
|
|
|
|
window {
|
|
background: transparent;
|
|
box-shadow: none;
|
|
}
|
|
|
|
window > box {
|
|
color: ${sc.base05};
|
|
background: alpha(${sc.base00}, ${alpha});
|
|
margin: 5px 5px 0px;
|
|
padding: 0px;
|
|
border-top: 1px solid ${sc.base04};
|
|
border-radius: 5px;
|
|
}
|
|
|
|
tooltip {
|
|
background: ${sc.base00};
|
|
border: 1px solid ${sc.${accentColourName}};
|
|
border-radius: 5px;
|
|
box-shadow: none;
|
|
}
|
|
|
|
tooltip label {
|
|
color: ${sc.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: ${sc.base05};
|
|
}
|
|
|
|
#workspaces button {
|
|
background: transparent;
|
|
color: ${sc.base05};
|
|
margin: 0px;
|
|
padding: 0px 5px;
|
|
}
|
|
#workspaces button.persistent {
|
|
color: ${sc.base03};
|
|
}
|
|
#workspaces button.focused {
|
|
color: ${sc.${accentColourName}};
|
|
}
|
|
#workspaces button.urgent {
|
|
color: ${sc.base09};
|
|
}
|
|
|
|
#custom-notification {
|
|
color: ${sc.base08};
|
|
}
|
|
#pulseaudio {
|
|
color: ${sc.base09};
|
|
}
|
|
#network {
|
|
color: ${sc.base0A};
|
|
}
|
|
#bluetooth {
|
|
color: ${sc.base0B};
|
|
}
|
|
#clock.calendar {
|
|
color: ${sc.base0C};
|
|
}
|
|
#clock {
|
|
color: ${sc.base0D};
|
|
}
|
|
'';
|
|
};
|
|
}
|