From 139e36a39353d9821e773743ed4e796d8c96a58d Mon Sep 17 00:00:00 2001 From: aszlig Date: Fri, 2 May 2014 02:27:33 +0200 Subject: i3: Factor out conky configuration for i3bar. Now we're generating full conky config files and we now have a new conky.nix, which generates shell scripts for the left and right screens, that run conky with the right configuration files. Signed-off-by: aszlig --- modules/i3/conky.nix | 84 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 modules/i3/conky.nix (limited to 'modules/i3/conky.nix') diff --git a/modules/i3/conky.nix b/modules/i3/conky.nix new file mode 100644 index 00000000..9463ae32 --- /dev/null +++ b/modules/i3/conky.nix @@ -0,0 +1,84 @@ +{ pkgs ? import {} }: + +with pkgs.lib; + +let + mkConfig = text: pkgs.writeText "conkyrc" '' + cpu_avg_samples 2 + net_avg_samples 2 + no_buffers yes + out_to_console yes + out_to_ncurses no + out_to_stderr no + extra_newline no + update_interval 1.0 + uppercase no + use_spacer none + pad_percents 3 + use_spacer left + TEXT + ${text} + ''; + + cexpr = name: args: "\${${name} ${concatStringsSep " " args}}"; + + primaryNetInterface = "enp0s25"; + + mkCpuLoad = threads: let + mkThread = thread: (cexpr "cpu" [ "cpu${toString thread}" ]) + "%"; + loads = map mkThread (range 1 threads); + in concatStringsSep " " loads; + + mkCpuTemp = cores: let + mkCore = core: (cexpr "platform" [ + "coretemp.0" + "temp" + "${toString (core + 1)}" + ]) + "C"; + temps = map mkCore (range 1 cores); + in concatStringsSep " " temps; + + mkNetInfo = iface: let + upspeed = cexpr "upspeed" [ iface ]; + downspeed = cexpr "downspeed" [ iface ]; + in "${upspeed} ${downspeed}"; + + mkDiskFree = path: let + used = cexpr "fs_used" [ path ]; + size = cexpr "fs_size" [ path ]; + in "${used}/${size}"; + + gpuTemp = "${cexpr "hwmon" [ "0" "temp" "1" ]}C"; + + weather = (cexpr "weather" [ + "http://weather.noaa.gov/pub/data/observations/metar/stations/" + "EDMA" + "temperature" + ]) + "C"; + + mkConky = args: let + time = cexpr "time" [ "%a %b %d %T %Z %Y" ]; + text = concatStringsSep " | " (args ++ singleton time); + conky = pkgs.conky.override { + weatherMetar = true; + }; + cfg = mkConfig text; + in pkgs.writeScript "conky-run.sh" '' + #!${pkgs.stdenv.shell} + ${conky}/bin/conky -c "${cfg}" + ''; + +in { + left = mkConky [ + "CPU: ${mkCpuLoad 8} - ${cexpr "cpu" [ "cpu0" ]}%" + "MEM: $mem/$memmax - $memperc%" + "SWAP: $swap/$swapmax $swapperc%" + ]; + + right = mkConky [ + "NET: ${mkNetInfo primaryNetInterface}" + "DF: ${mkDiskFree "/"}" + "LAVG: $loadavg" + "TEMP - CPU: ${mkCpuTemp 4} - GPU: ${gpuTemp} - OUTSIDE: ${weather}" + ]; +} -- cgit 1.4.1