xmobar: add module (#2120)

* xmobar: Add module

* xmobar: Add test case

xmobar: Add test default.nix

* xmobar: Order lists alphabetically

* xmobar: Change colon to comma in description

* xmobar: Fix macos tests

* xmobar: Remove extra line

* xmobar: Add literalExample

Co-authored-by: Sumner Evans <me@sumnerevans.com>

* xmobar: Update extraConfig description

Co-authored-by: Sumner Evans <me@sumnerevans.com>
This commit is contained in:
t4ccer 2021-06-29 21:02:43 +02:00 committed by GitHub
parent 5b08b33e8f
commit 3f6cb409ca
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 123 additions and 0 deletions

3
.github/CODEOWNERS vendored
View file

@ -194,6 +194,9 @@
/modules/programs/waybar.nix @berbiche /modules/programs/waybar.nix @berbiche
/tests/modules/programs/waybar @berbiche /tests/modules/programs/waybar @berbiche
/modules/programs/xmobar.nix @t4ccer
/tests/modules/programs/xmobar @t4ccer
/modules/programs/z-lua.nix @marsam /modules/programs/z-lua.nix @marsam
/modules/programs/zathura.nix @rprospero /modules/programs/zathura.nix @rprospero

View file

@ -146,6 +146,7 @@ let
(loadModule ./programs/vscode.nix { }) (loadModule ./programs/vscode.nix { })
(loadModule ./programs/vscode/haskell.nix { }) (loadModule ./programs/vscode/haskell.nix { })
(loadModule ./programs/waybar.nix { condition = hostPlatform.isLinux; }) (loadModule ./programs/waybar.nix { condition = hostPlatform.isLinux; })
(loadModule ./programs/xmobar.nix { })
(loadModule ./programs/z-lua.nix { }) (loadModule ./programs/z-lua.nix { })
(loadModule ./programs/zathura.nix { }) (loadModule ./programs/zathura.nix { })
(loadModule ./programs/zoxide.nix { }) (loadModule ./programs/zoxide.nix { })

View file

@ -0,0 +1,59 @@
{ 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 = literalExample "pkgs.haskellPackages.xmobar";
type = types.package;
description = ''
Package providing the <command>xmobar</command> binary.
'';
};
extraConfig = mkOption {
default = "";
example = literalExample ''
Config
{ font = "Fira Code"
, borderColor = "#d0d0d0"
, border = FullB
, borderWidth = 3
, bgColor = "#222"
, fgColor = "grey"
, position = TopSize C 99 30
, commands =
[ Run Cpu ["-t", "cpu: <fc=#4eb4fa><bar> <total>%</fc>"] 10
, Run Network "enp3s0" ["-S", "True", "-t", "eth: <fc=#4eb4fa><rx></fc>/<fc=#4eb4fa><tx></fc>"] 10
, Run Memory ["-t","mem: <fc=#4eb4fa><usedbar> <usedratio>%</fc>"] 10
, Run Date "date: <fc=#4eb4fa>%a %d %b %Y %H:%M:%S </fc>" "date" 10
, Run StdinReader
]
, sepChar = "%"
, alignSep = "}{"
, template = " %StdinReader% | %cpu% | %memory% | %enp3s0% }{%date% "
}
'';
type = types.lines;
description = ''
Extra configuration lines to add to
<filename>$XDG_CONFIG_HOME/xmobar/.xmobarrc</filename>.
See
<link xlink:href="https://xmobar.org/#configuration" />
for options.
'';
};
};
config = mkIf cfg.enable {
home.packages = [ cfg.package ];
xdg.configFile."xmobar/.xmobarrc".text = cfg.extraConfig;
};
meta.maintainers = with maintainers; [ t4ccer ];
}

View file

@ -112,6 +112,7 @@ import nmt {
./modules/programs/rofi-pass ./modules/programs/rofi-pass
./modules/programs/terminator ./modules/programs/terminator
./modules/programs/waybar ./modules/programs/waybar
./modules/programs/xmobar
./modules/services/barrier ./modules/services/barrier
./modules/services/dropbox ./modules/services/dropbox
./modules/services/emacs ./modules/services/emacs

View file

@ -0,0 +1,19 @@
Config
{ font = "Fira Code"
, borderColor = "#d0d0d0"
, border = FullB
, borderWidth = 3
, bgColor = "#222"
, fgColor = "grey"
, position = TopSize C 99 30
, commands =
[ Run Cpu ["-t", "cpu: <fc=#4eb4fa><bar> <total>%</fc>"] 10
, Run Network "enp3s0" ["-S", "True", "-t", "eth: <fc=#4eb4fa><rx></fc>/<fc=#4eb4fa><tx></fc>"] 10
, Run Memory ["-t","mem: <fc=#4eb4fa><usedbar> <usedratio>%</fc>"] 10
, Run Date "date: <fc=#4eb4fa>%a %d %b %Y %H:%M:%S </fc>" "date" 10
, Run StdinReader
]
, sepChar = "%"
, alignSep = "}{"
, template = " %StdinReader% | %cpu% | %memory% | %enp3s0% }{%date% "
}

View file

@ -0,0 +1,39 @@
{ config, lib, pkgs, ... }:
with lib;
{
config = {
programs.xmobar = {
enable = true;
extraConfig = ''
Config
{ font = "Fira Code"
, borderColor = "#d0d0d0"
, border = FullB
, borderWidth = 3
, bgColor = "#222"
, fgColor = "grey"
, position = TopSize C 99 30
, commands =
[ Run Cpu ["-t", "cpu: <fc=#4eb4fa><bar> <total>%</fc>"] 10
, Run Network "enp3s0" ["-S", "True", "-t", "eth: <fc=#4eb4fa><rx></fc>/<fc=#4eb4fa><tx></fc>"] 10
, Run Memory ["-t","mem: <fc=#4eb4fa><usedbar> <usedratio>%</fc>"] 10
, Run Date "date: <fc=#4eb4fa>%a %d %b %Y %H:%M:%S </fc>" "date" 10
, Run StdinReader
]
, sepChar = "%"
, alignSep = "}{"
, template = " %StdinReader% | %cpu% | %memory% | %enp3s0% }{%date% "
}
'';
};
nmt.script = ''
assertFileExists home-files/.config/xmobar/.xmobarrc
assertFileContent \
home-files/.config/xmobar/.xmobarrc \
${./basic-configuration.expected}
'';
};
}

View file

@ -0,0 +1 @@
{ xmobar-basic-configuration = ./basic-configuration.nix; }