Files
Nomarchy/features/desktop/waybar/default.nix
Bernardo Magri dd48411013 feat(scripts): extend nomarchy-welcome into a guided wizard
- Added nomarchy.panelPosition option and state persistence.
- Updated Waybar to respect the panelPosition setting.
- Refactored nomarchy-welcome to use state.json instead of a flag file.
- Added prompts for theme, font, panel position, and starter home.nix generation.
- Updated documentation and roadmap.
2026-04-26 20:02:52 +01:00

51 lines
1.6 KiB
Nix

{ config, pkgs, lib, ... }:
let
activeTheme = config.nomarchy.theme;
# Path to local theme files
themeDir = ./themes + "/${activeTheme}";
hasThemeConfig = builtins.pathExists (themeDir + "/config.jsonc");
hasThemeStyle = builtins.pathExists (themeDir + "/style.css");
# Default fallback files
defaultConfig = ./config/config.jsonc;
defaultStyle = ./config/style.css;
# Selected files
configFile = if hasThemeConfig then (themeDir + "/config.jsonc") else defaultConfig;
styleFile = if hasThemeStyle then (themeDir + "/style.css") else defaultStyle;
rawSettings = builtins.fromJSON (builtins.readFile configFile);
# Modules that only make sense on a laptop. Filtered out of any
# `modules-*` slot when nomarchy.formFactor != "laptop" so a desktop
# build doesn't ship a permanently-empty battery indicator.
laptopOnlyModules = [ "battery" "custom/battery" ];
filterModules = mods:
if config.nomarchy.formFactor == "laptop"
then mods
else builtins.filter (m: !(builtins.elem m laptopOnlyModules)) mods;
settings = rawSettings // {
position = config.nomarchy.panelPosition;
modules-left = filterModules (rawSettings.modules-left or []);
modules-center = filterModules (rawSettings.modules-center or []);
modules-right = filterModules (rawSettings.modules-right or []);
};
in
{
programs.waybar = {
enable = lib.mkDefault true;
systemd.enable = lib.mkDefault true;
settings = lib.mkDefault [ settings ];
style = lib.mkDefault (builtins.readFile styleFile);
};
home.packages = lib.mkDefault (with pkgs; [
font-awesome
]);
}