618 lines
		
	
	
	
		
			16 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			618 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
 | |
|     ];
 | |
|   };
 | |
| }
 |