mirror of
https://github.com/kmein/niveum
synced 2026-03-16 18:21:07 +01:00
226 lines
5.5 KiB
Nix
226 lines
5.5 KiB
Nix
{
|
|
writers,
|
|
formats,
|
|
wtf,
|
|
himalaya,
|
|
lib,
|
|
jq,
|
|
gh,
|
|
curl,
|
|
khal,
|
|
todoman,
|
|
gnused,
|
|
coreutils,
|
|
astrolog,
|
|
weatherCityIds ? [2950159],
|
|
}: let
|
|
rowCount = 10;
|
|
columnCount = 6;
|
|
|
|
yaml = formats.yaml {};
|
|
command = args:
|
|
{
|
|
enabled = true;
|
|
type = "cmdrunner";
|
|
}
|
|
// args;
|
|
configuration.wtf = rec {
|
|
grid = {
|
|
columns = lib.replicate columnCount 32;
|
|
rows = lib.replicate rowCount 5;
|
|
};
|
|
mods.vdir_khal = command {
|
|
title = "Calendar";
|
|
cmd = "${khal}/bin/khal";
|
|
args = ["--color" "list" "--exclude-calendar" "calendarium-tridentinum"];
|
|
refreshInterval = "1m";
|
|
position = rec {
|
|
top = 0;
|
|
left = columnCount - width + 1;
|
|
height = rowCount - mods.vdir_todo.position.height;
|
|
width = 1;
|
|
};
|
|
};
|
|
mods.vdir_todo = command {
|
|
title = "Agenda";
|
|
cmd = writers.writeDash "vdir_todo" "${todoman}/bin/todo --color=always -h | ${coreutils}/bin/tac";
|
|
refreshInterval = "1m";
|
|
position = {
|
|
top = 8;
|
|
left = 0;
|
|
height = 2;
|
|
width = columnCount + 1;
|
|
};
|
|
};
|
|
mods.weather = {
|
|
enabled = true;
|
|
cityids = weatherCityIds;
|
|
position = {
|
|
top = 6;
|
|
left = 2;
|
|
height = 2;
|
|
width = 1;
|
|
};
|
|
refreshInterval = "15m";
|
|
language = "DE";
|
|
tempUnit = "C";
|
|
useEmoji = true;
|
|
compact = true;
|
|
};
|
|
mods.btc = command {
|
|
title = "BTC";
|
|
cmd = writers.writeDash "btc" "${curl}/bin/curl -sSL https://rate.sx/BTC | ${gnused}/bin/sed -n '34,36p'";
|
|
refreshInterval = "1h";
|
|
position = {
|
|
top = 6;
|
|
left = 0;
|
|
height = 1;
|
|
width = 2;
|
|
};
|
|
};
|
|
mods.xmr = command {
|
|
title = "XMR";
|
|
cmd = writers.writeDash "xmr" "${curl}/bin/curl -sSL https://rate.sx/XMR | ${gnused}/bin/sed -n '34,36p'";
|
|
refreshInterval = "1h";
|
|
position = {
|
|
top = 7;
|
|
left = 0;
|
|
height = 1;
|
|
width = 2;
|
|
};
|
|
};
|
|
mods.top = command {
|
|
title = "uptime";
|
|
cmd = writers.writeDash "top" "top -b -n 1 -E g | ${gnused}/bin/sed -n '1,5p'";
|
|
refreshInterval = "30s";
|
|
position = {
|
|
top = 0;
|
|
left = 0;
|
|
height = 2;
|
|
width = 3;
|
|
};
|
|
enabled = false;
|
|
};
|
|
mods.resourceusage = {
|
|
enabled = true;
|
|
cpuCombined = false;
|
|
position = {
|
|
top = 0;
|
|
left = 0;
|
|
height = 2;
|
|
width = 1;
|
|
};
|
|
refreshInterval = "1s";
|
|
showCPU = true;
|
|
showMem = true;
|
|
showSwp = false;
|
|
};
|
|
mods.ipapi = {
|
|
enabled = true;
|
|
position = {
|
|
top = 0;
|
|
left = 1;
|
|
height = 2;
|
|
width = 2;
|
|
};
|
|
refreshInterval = "150s";
|
|
};
|
|
mods.disk-usage = command {
|
|
enabled = false;
|
|
cmd = "df";
|
|
args = ["-h"];
|
|
refreshInterval = "1m";
|
|
position = {
|
|
top = 2;
|
|
left = 1;
|
|
height = 2;
|
|
width = 2;
|
|
};
|
|
};
|
|
mods.email = command {
|
|
title = "Email";
|
|
cmd = writers.writeDash "email" ''
|
|
${himalaya}/bin/himalaya accounts --output json \
|
|
| ${jq}/bin/jq -r 'map(.name) | join("\n")' \
|
|
| while read -r account
|
|
do
|
|
${himalaya}/bin/himalaya list --account "$account" -o json \
|
|
| ${jq}/bin/jq -r '
|
|
map(select(.flags == [])
|
|
| "\u001b[33m\(.from.addr)\u001b[0m \(.subject)") | join("\n")
|
|
'
|
|
done
|
|
'';
|
|
refreshInterval = "5m";
|
|
position = {
|
|
top = 2;
|
|
left = 0;
|
|
height = 4;
|
|
width = 3;
|
|
};
|
|
};
|
|
mods.gh-status = command {
|
|
enabled = true;
|
|
title = "GitHub";
|
|
cmd = writers.writeDash "gh-status" ''
|
|
${gh}/bin/gh api notifications \
|
|
| ${jq}/bin/jq -r 'map("\u001b[35m\(.repository.full_name)\u001b[0m \(.subject.title)") | join("\n")'
|
|
'';
|
|
refreshInterval = "5m";
|
|
position = {
|
|
top = 4;
|
|
left = 3;
|
|
height = 4;
|
|
width = 3;
|
|
};
|
|
};
|
|
mods.astro-aspects = command {
|
|
title = "Aspects";
|
|
enabled = false;
|
|
cmd = writers.writeDash "astro-aspects" "${astrolog}/bin/astrolog -n -zN Berlin -d";
|
|
refreshInterval = "1h";
|
|
position = {
|
|
top = 7;
|
|
left = 3;
|
|
height = 1;
|
|
width = 2;
|
|
};
|
|
};
|
|
mods.feed = command {
|
|
title = "Feed";
|
|
cmd = writers.writeDash "feed" ''
|
|
${curl}/bin/curl -u "$WTF_MINIFLUX_API_KEY" --basic -s 'https://feed.kmein.de/v1/entries?status=unread&direction=desc' \
|
|
| ${jq}/bin/jq -r '
|
|
.total as $total | (
|
|
.entries
|
|
| map(select(.feed | .hide_globally| not) | "\(.feed.category.title) \u001b[32m\(.author)\u001b[0m \(.title)")
|
|
| join("\n")
|
|
)'
|
|
'';
|
|
# position = { top = 0; left = 5; height = 5; width = 1; };
|
|
position = {
|
|
top = 0;
|
|
left = 3;
|
|
height = 4;
|
|
width = 3;
|
|
};
|
|
refreshInterval = "15m";
|
|
};
|
|
mods.astro-positions = command {
|
|
enabled = false;
|
|
title = "Positions";
|
|
cmd = writers.writeDash "astro-positions" "${astrolog}/bin/astrolog -q $(date +'%m %d %Y %H:%M') -zN Berlin | ${gnused}/bin/sed -n '4,16p' | ${coreutils}/bin/cut -c 1-33";
|
|
refreshInterval = "1h";
|
|
position = {
|
|
top = 5;
|
|
left = 5;
|
|
height = 3;
|
|
width = 1;
|
|
};
|
|
};
|
|
};
|
|
in
|
|
writers.writeDashBin "dashboard" ''
|
|
exec ${wtf}/bin/wtfutil --config=${yaml.generate "config.yml" configuration}
|
|
''
|