{ pkgs, lib, config, ... }: let unstable = import { }; activeTasks = pkgs.writers.writeBash "active-tasks" '' ${pkgs.taskwarrior}/bin/task export +checklist status:pending +READY | \ ${pkgs.jq}/bin/jq \ --raw-output ' sort_by(.description) | reverse | .[] | "[ \( .id ) ] \( .description )" ' echo ${pkgs.taskwarrior}/bin/task export \ +ACTIVE status:pending \ | ${pkgs.jq}/bin/jq --raw-output '.[] | "⇒ \(.id) \(.description)"' ''; userHighlight = map ({ user, ... }: user) (builtins.attrValues config.programs.custom.browser.configList); activeUsers = pkgs.writers.writeBash "active-users" '' ${pkgs.procps}/bin/ps -eo user \ | ${pkgs.gnused}/bin/sed '1 d' \ | ${pkgs.coreutils}/bin/sort \ | ${pkgs.coreutils}/bin/uniq \ | ${pkgs.gnugrep}/bin/egrep --color=always '(${ pkgs.lib.concatStringsSep "|" userHighlight })|$' ''; qJson = { wtf = { term = "rxvt-unicode-256color"; colors.border = { focusable = "darkslateblue"; focused = "orange"; normal = "green"; }; grid = { columns = [ 33 40 36 0 ]; rows = [ 9 3 7 6 0 ]; }; refreshInterval = 1; mods = { digitalclock = { title = ""; type = "digitalclock"; enabled = true; color = "white"; font = "bigfont"; hourFormat = 24; refreshInterval = 1; position.top = 0; position.left = 0; position.height = 1; position.width = 1; }; clocks = { title = ""; type = "clocks"; enabled = true; border = false; colors.rows = { even = "white"; odd = "white"; }; locations = { Berlin = "Europe/Berlin"; Wellington = "Pacific/Auckland"; }; sort = "alphabetical"; position.top = 1; position.left = 0; position.height = 1; position.width = 1; refreshInterval = 60; }; resourceusage = { title = ""; cpuCombined = false; enabled = true; position.top = 0; position.left = 1; position.height = 1; position.width = 1; refreshInterval = 5; }; power = { enabled = true; position.top = 2; position.left = 0; position.height = 1; position.width = 1; refreshInterval = 100; title = "Power"; }; rates = { type = "exchangerates"; title = "rates"; enabled = true; focusable = false; position.top = 3; position.left = 0; position.height = 1; position.width = 1; rates.NZD = [ "EUR" ]; rates.EUR = [ "NZD" ]; }; prettyweather = { enabled = true; title = ""; city = "Wellington"; position.top = 0; position.left = 2; position.height = 1; position.width = 1; unit = "m"; view = 0; language = "en"; refreshInterval = 3600; }; calendar = { type = "cmdrunner"; title = ""; focusable = false; args = [ "-3" "--monday" "--color=never" "-w" ]; cmd = "cal"; enabled = true; position.top = 1; position.left = 1; position.height = 2; position.width = 2; refreshInterval = 3600; }; uptime = { type = "cmdrunner"; title = "uptime"; focusable = false; cmd = "uptime"; enabled = true; position.top = 3; position.left = 1; position.height = 1; position.width = 2; refreshInterval = 300; }; active-users = { type = "cmdrunner"; title = "users"; focusable = false; cmd = activeUsers; enabled = true; position.top = 0; position.left = 3; position.height = 4; position.width = 1; refreshInterval = 30; }; active-tasks = { type = "cmdrunner"; title = "active tasks"; focusable = false; cmd = activeTasks; enabled = true; position.top = 4; position.left = 0; position.height = 1; position.width = 4; refreshInterval = 60; }; }; }; }; qConfig = pkgs.writeText "config.yml" (builtins.toJSON qJson); q = pkgs.writers.writeBashBin "q" '' ${unstable.wtf}/bin/wtfutil --config=${toString qConfig} ''; in { services.upower.enable = true; environment.systemPackages = [ unstable.wtf q #activeUsers #activeTasks pkgs.upower ]; }