nixos-config/modules/nixos/desktop/addons/hyprpanel/default.nix

619 lines
16 KiB
Nix

{
config,
lib,
namespace,
pkgs,
...
}:
let
inherit (lib)
mkIf
mkEnableOption
mkMerge
mkOption
literalExpression
;
cfg = config.${namespace}.desktop.addons.hyprpanel;
username = config.${namespace}.user.name;
settingsFormat = pkgs.formats.json { };
iconColor = "#242438";
light-cyan = "#73daca";
lightBlue = "#414868";
medium-blue = "#9aa5ce";
cyan-blue = "#7dcfff";
navy-blue = "#24283b";
dark-blue = "#1a1b26";
dark-blue-gray = "565f89";
dark-blue-yankees = "#272a3d";
blue-magenta = "#181825";
lightPurple = "#bb9af7";
lightRed = "#f7768e";
red = "#c0caf5";
lightGreen = "#9ece6a";
yellow = "#e0af68";
settings = {
tear = true;
scalingPriority = "hyprland";
font.name = "CodeNewRoman Nerd Font Mono";
bar = {
customModules = {
updates.pollingInterval = 1440000;
ram = {
labelType = "used/total";
icon = " ";
};
cpu = {
label = true;
leftClick = "kitty --hold btop";
icon = " ";
};
};
layouts = {
"0" = {
left = [
"workspaces"
];
middle = [
"windowtitle"
];
right = [
"clock"
];
};
"1" = {
left = [
"dashboard"
"workspaces"
];
middle = [
"windowtitle"
];
right = [
"volume"
"bluetooth"
"battery"
"systray"
"cpu"
"ram"
"clock"
"notifications"
];
};
};
workspaces = {
showAllActive = true;
show_icons = false;
numbered_active_indicator = "underline";
show_numbered = true;
showWsIcons = false;
showApplicationIcons = false;
hideUnoccupied = true;
};
launcher = {
icon = "󱄅";
rightClick = "hyprpanel -t settings-dialog";
};
scrollSpeed = 0;
windowtitle = {
class_name = false;
custom_title = false;
icon = false;
label = true;
title_map = [
];
truncation = true;
};
network = {
label = false;
truncation = false;
};
clock.format = "%a %b %d %H:%M:%S";
notifications.show_total = true;
};
menus = {
clock.time.military = true;
dashboard = {
powermenu.avatar.image = "/home/cholli/Pictures/profile.png";
shortcuts.enabled = false;
directories.left = {
directory1.command = "kitty $HOME/Downloads";
directory3.command = "kitty $HOME/projects";
};
stats = {
enable_gpu = true;
enabled = false;
};
controls.enabled = false;
};
bluetooth = {
showBattery = true;
batteryState = "always";
};
transition = "crossfade";
};
theme = {
bar = {
floating = true;
outer_spacing = "0.2em";
buttons = {
enableBorders = true;
workspaces = {
enableBorder = false;
fontSize = "1.2em";
smartHighlight = false;
active = "#f7768e";
occupied = "#f7768e";
available = "#7dcfff";
hover = "#f7768e";
background = "#272a3d";
numbered_active_highlighted_text_color = "#181825";
numbered_active_underline_color = "#c678dd";
border = "#f7768e";
};
modules = {
power = {
icon = "#181825";
icon_background = "#f7768e";
background = "#272a3d";
border = "#f7768e";
};
ram = {
enableBorder = false;
spacing = "0.45em";
icon = "#181825";
icon_background = "#e0af68";
text = "#e0af68";
background = "#272a3d";
border = "#e0af68";
};
cpu = {
enableBorder = false;
background = "#272a3d";
icon = "#181825";
icon_background = "#f7768e";
text = "#f7768e";
border = "#f7768e";
};
submap = {
background = "#272a3d";
text = "#73daca";
border = "#73daca";
icon = "#181825";
icon_background = "#73daca";
};
};
style = "split";
icon = "#242438";
icon_background = "#bb9af7";
text = "#bb9af7";
hover = "#414868";
background = "#272a3d";
dashboard = {
enableBorder = false;
icon = "#272a3d";
background = "#e0af68";
border = "#e0af68";
};
volume = {
icon = "#272a3d";
text = "#f7768e";
background = "#272a3d";
icon_background = "#f7768e";
border = "#f7768e";
};
notifications = {
total = "#bb9af7";
icon = "#272a3d";
background = "#272a3d";
icon_background = "#bb9af7";
border = "#bb9af7";
};
clock = {
icon = "#272a3d";
text = "#f7768e";
background = "#272a3d";
icon_background = "#f7768e";
border = "#f7768e";
};
systray = {
background = "#272a3d";
border = "#414868";
customIcon = "#c0caf5";
};
bluetooth = {
icon = "#272a3d";
text = "#7dcfff";
background = "#272a3d";
icon_background = "#7dcfff";
border = "#7dcfff";
};
windowtitle = {
icon = "#272a3d";
text = "#f7768e";
background = "#272a3d";
icon_background = "#f7768e";
border = "#f7768e";
enableBorder = false;
};
radius = "0.3em";
borderSize = "0.0em";
padding_x = "0.7rem";
padding_y = "0.2rem";
};
menus = {
monochrome = false;
opacity = 95;
menu = {
dashboard = {
powermenu = {
shutdown = "#f7768e";
confirmation = {
deny = "#f7768e";
confirm = "#9ece6a";
button_text = "#1a1b26";
body = "#c0caf5";
label = "#bb9af7";
border = "#414868";
background = "#1a1b26";
card = "#24283b";
};
sleep = "#7dcfff";
logout = "#9ece6a";
restart = "#e0af68";
};
monitors = {
ram = {
label = "#e0af68";
bar = "#e0af68";
icon = "#e0af68";
};
cpu = {
label = "#f7768e";
bar = "#f7768e";
icon = "#f7768e";
};
bar_background = "#414868";
};
directories = {
right = {
bottom.color = "#bb9af7";
middle.color = "#bb9af7";
top.color = "#73daca";
};
left = {
bottom.color = "#f7768e";
middle.color = "#e0af68";
top.color = "#f7768e";
};
};
controls = {
input = {
text = "#1a1b26";
background = "#f7768e";
};
volume = {
text = "#1a1b26";
background = "#f7768e";
};
notifications = {
text = "#1a1b26";
background = "#e0af68";
};
bluetooth = {
text = "#1a1b26";
background = "#7dcfff";
};
disabled = "#414868";
};
profile.name = "#f7768e";
border.color = "#414868";
background.color = "#1a1b26";
card.color = "#24283b";
};
notifications = {
switch = {
puck = "#565f89";
disabled = "#565f89";
enabled = "#bb9af7";
};
clear = "#f7768e";
switch_divider = "#414868";
border = "#414868";
card = "#24283b";
background = "#1a1b26";
no_notifications_label = "#414868";
label = "#bb9af7";
scrollbar.color = "#bb9af7";
pager = {
button = "#bb9af7";
label = "#565f89";
background = "#1a1b26";
};
};
clock = {
text = "#c0caf5";
border.color = "#414868";
background.color = "#1a1b26";
card.color = "#24283b";
calendar = {
contextdays = "#414868";
days = "#c0caf5";
currentday = "#f7768e";
paginator = "#f7768e";
weekdays = "#f7768e";
yearmonth = "#73daca";
};
time = {
timeperiod = "#73daca";
time = "#f7768e";
};
};
systray = {
dropdownmenu.divider = "#24283b";
dropdownmenu.text = "#c0caf5";
dropdownmenu.background = "#1a1b26";
};
bluetooth = {
iconbutton = {
active = "#7dcfff";
passive = "#c0caf5";
};
icons = {
active = "#7dcfff";
passive = "#565f89";
};
listitems = {
active = "#7dcfff";
passive = "#c0caf5";
};
switch = {
puck = "#565f89";
disabled = "#565f89";
enabled = "#7dcfff";
};
switch_divider = "#414868";
status = "#565f89";
text = "#c0caf5";
label.color = "#7dcfff";
border.color = "#414868";
background.color = "#1a1b26";
card.color = "#24283b";
};
volume = {
text = "#c0caf5";
card.color = "#24283b";
label.color = "#f7768e";
input_slider = {
puck = "#414868";
backgroundhover = "#414868";
background = "#565f89";
primary = "#f7768e";
};
audio_slider = {
puck = "#414868";
backgroundhover = "#414868";
background = "#565f89";
primary = "#f7768e";
};
icons = {
active = "#f7768e";
passive = "#565f89";
};
iconbutton = {
active = "#f7768e";
passive = "#c0caf5";
};
listitems = {
active = "#f7768e";
passive = "#c0caf5";
};
border.color = "#414868";
background.color = "#1a1b26";
};
media = {
card.color = "#24283b";
slider = {
puck = "#565f89";
backgroundhover = "#414868";
background = "#565f89";
primary = "#f7768e";
};
buttons = {
text = "#1a1b26";
background = "#bb9af7";
enabled = "#73daca";
inactive = "#414868";
};
border.color = "#414868";
background.color = "#1a1b26";
album = "#f7768e";
artist = "#73daca";
song = "#bb9af7";
};
power = {
border.color = "#414868";
buttons = {
sleep = {
icon_background = "#7dcfff";
text = "#7dcfff";
background = "#24283b";
icon = "#1a1b26";
};
restart = {
text = "#e0af68";
icon_background = "#e0af68";
icon = "#1a1b26";
background = "#24283b";
};
shutdown = {
icon = "#1a1b26";
background = "#24283b";
icon_background = "#f7768e";
text = "#f7768e";
};
logout = {
icon = "#1a1b26";
background = "#24283b";
text = "#9ece6a";
icon_background = "#9ece6a";
};
};
background.color = "#1a1b26";
scaling = 90;
};
};
background = "#1a1b26";
text = "#c0caf5";
border.color = "#414868";
popover = {
text = "#bb9af7";
background = "#1a1b26";
border = "#1a1b26";
};
tooltip = {
text = "#c0caf5";
background = "#1a1b26";
};
dropdownmenu = {
divider = "#24283b";
text = "#c0caf5";
background = "#1a1b26";
};
slider = {
puck = "#565f89";
backgroundhover = "#414868";
background = "#565f89";
primary = "#bb9af7";
};
progressbar = {
background = "#414868";
foreground = "#bb9af7";
};
iconbuttons = {
active = "#bb9af7";
passive = "#c0caf5";
};
buttons = {
text = "#1a1b26";
disabled = "#565f89";
active = "#f7768e";
default = "#bb9af7";
};
switch = {
puck = "#565f89";
disabled = "#565f89";
enabled = "#bb9af7";
};
icons = {
active = "#bb9af7";
passive = "#414868";
};
listitems = {
active = "#bb9af7";
passive = "#c0caf5";
};
label = "#bb9af7";
feinttext = "#414868";
dimtext = "#414868";
cards = "#24283b";
check_radio_button.background = "#3b4261";
check_radio_button.active = "#bb9af7";
};
transparent = true;
background = "#1a1b26";
margin_sides = "0.0em";
location = "top";
};
osd = {
monitor = 1;
muted_zero = true;
label = "#bb9af7";
icon = "#1a1b26";
bar_overflow_color = "#f7768e";
bar_empty_color = "#414868";
bar_color = "#bb9af7";
icon_container = "#bb9af7";
bar_container = "#1a1b26";
};
notification = {
close_button.label = "#1a1b26";
close_button.background = "#f7768e";
labelicon = "#bb9af7";
text = "#c0caf5";
time = "#9aa5ce";
border = "#565f89";
label = "#bb9af7";
actions.text = "#24283b";
actions.background = "#bb9af7";
background = "#1a1b26";
};
font.size = "1.3rem";
};
notifications = {
monitor = 1;
active_monitor = false;
};
wallpaper = {
pywal = false;
image = "/home/cholli/Pictures/firewatch.jpg";
enable = false;
};
};
in
{
options.${namespace}.desktop.addons.hyprpanel = {
enable = mkEnableOption "Enable HyprIdle";
extraSettings = mkOption {
default = { };
inherit (settingsFormat) type;
description = ''
Additional Options to pass to hyprpanel
'';
example = literalExpression ''
{
}
'';
};
};
config = mkIf cfg.enable {
snowfallorg.users.${username}.home.config = {
wayland.windowManager.hyprland.settings.exec-once = [
"${pkgs.hyprpanel}/bin/hyprpanel"
];
};
${namespace}.home.file = {
".cache/ags/hyprpanel/options_test.json" = {
# source = pkgs.formats.json.generate "options.json" settings;
text = builtins.toJSON settings;
};
};
environment.systemPackages = with pkgs.nerd-fonts; [
jetbrains-mono
];
};
}