{ config, lib, pkgs, ... }: with lib; let cfg = config.programs.xmobar; in { options.programs.xmobar = { enable = mkEnableOption "Xmobar, a minimalistic status bar"; package = mkOption { default = pkgs.haskellPackages.xmobar; defaultText = literalExpression "pkgs.haskellPackages.xmobar"; type = types.package; description = '' Package providing the xmobar binary. ''; }; extraConfig = mkOption { default = ""; example = literalExpression '' Config { font = "Fira Code" , borderColor = "#d0d0d0" , border = FullB , borderWidth = 3 , bgColor = "#222" , fgColor = "grey" , position = TopSize C 99 30 , commands = [ Run Cpu ["-t", "cpu: %"] 10 , Run Network "enp3s0" ["-S", "True", "-t", "eth: /"] 10 , Run Memory ["-t","mem: %"] 10 , Run Date "date: %a %d %b %Y %H:%M:%S " "date" 10 , Run StdinReader ] , sepChar = "%" , alignSep = "}{" , template = " %StdinReader% | %cpu% | %memory% | %enp3s0% }{%date% " } ''; type = types.lines; description = '' Extra configuration lines to add to $XDG_CONFIG_HOME/xmobar/.xmobarrc. See for options. ''; }; }; config = mkIf cfg.enable { home.packages = [ cfg.package ]; xdg.configFile."xmobar/.xmobarrc".text = cfg.extraConfig; }; meta.maintainers = with maintainers; [ t4ccer ]; }