{ lib, pkgs, config, ... }: let cfg = config.programs.waybar; waybar-config = builtins.readFile ./assets/system/conf/config; waybar-style = builtins.readFile ./assets/system/conf/style.css; in { options.programs.waybar = { enable = lib.mkEnableOption "Waybar"; package = lib.mkOption { type = lib.types.package; default = pkgs.waybar; description = "Waybar package to use."; }; }; config = lib.mkIf cfg.enable { environment.systemPackages = [ cfg.package ]; systemd.user.services.waybar = { description = "Waybar (status bar for Wayland)"; wantedBy = [ "graphical-session.target" ]; after = [ "graphical-session.target" ]; serviceConfig = { ExecStart = "${cfg.package}/bin/waybar -c ${./assets/system/conf/config} -s ${./assets/system/conf/style.css}"; Restart = "on-failure"; RestartSec = "5s"; }; }; # Create symlinks for config and style system.activationScripts.waybarSetup = lib.mkAfter '' mkdir -p /home/${config.users.users.${config.nixpkgs.config.permittedUsers[0]}.name}/.config/waybar ln -sf ${./assets/system/conf/config} /home/${config.users.users.${config.nixpkgs.config.permittedUsers[0]}.name}/.config/waybar/config ln -sf ${./assets/system/conf/style.css} /home/${config.users.users.${config.nixpkgs.config.permittedUsers[0]}.name}/.config/waybar/style.css ''; }; }