diff options
author | makefu <github@syntax-fehler.de> | 2016-06-06 21:27:50 +0200 |
---|---|---|
committer | makefu <github@syntax-fehler.de> | 2016-06-06 21:27:50 +0200 |
commit | b34b3f4763990049a21b7cfceb4b087b0ba88284 (patch) | |
tree | 151b5f1aecbf1001e7e2c3c6d9a79e6780a816a5 | |
parent | 7bf16ae48c44bd1459dc45b95bb7afe83db627e1 (diff) | |
parent | 06a7bdf7964695f198357b6985bf2594b3484e13 (diff) |
Merge remote-tracking branch 'prism/master'
-rw-r--r-- | Makefile | 12 | ||||
-rw-r--r-- | tv/1systems/xu.nix | 1 | ||||
-rw-r--r-- | tv/2configs/xserver/default.nix | 4 | ||||
-rw-r--r-- | tv/5pkgs/default.nix | 1 | ||||
-rw-r--r-- | tv/5pkgs/q/default.nix | 193 | ||||
-rw-r--r-- | tv/5pkgs/xmonad-tv.nix | 25 |
6 files changed, 223 insertions, 13 deletions
@@ -48,6 +48,14 @@ $(if $(target_user),,$(error unbound variable: target_user)) $(if $(target_port),,$(error unbound variable: target_port)) $(if $(target_path),,$(error unbound variable: target_path)) +build = \ + nix-build \ + --no-out-link \ + --show-trace \ + -I nixos-config=$(nixos-config) \ + -I stockholm=$(stockholm) \ + -E "let build = import <stockholm>; in $(1)" + evaluate = \ nix-instantiate \ --eval \ @@ -74,6 +82,10 @@ deploy: env STOCKHOLM_VERSION="$$STOCKHOLM_VERSION" \ nixos-rebuild switch --show-trace -I $(target_path) +# usage: make build.pkgs.get +build build.:;@$(call build,$${expr-eval}) +build.%:;@$(call build,$@) + # usage: make LOGNAME=shared system=wolf eval.config.krebs.build.host.name eval eval.:;@$(call evaluate,$${expr-eval}) eval.%:;@$(call evaluate,$@) diff --git a/tv/1systems/xu.nix b/tv/1systems/xu.nix index 96a0545..a79ae49 100644 --- a/tv/1systems/xu.nix +++ b/tv/1systems/xu.nix @@ -60,6 +60,7 @@ with config.krebs.lib; nmap p7zip pass + q qrencode texLive tmux diff --git a/tv/2configs/xserver/default.nix b/tv/2configs/xserver/default.nix index 965c3bb..c41c0a8 100644 --- a/tv/2configs/xserver/default.nix +++ b/tv/2configs/xserver/default.nix @@ -74,8 +74,8 @@ in { }; serviceConfig = { SyslogIdentifier = "xmonad"; - ExecStart = "${pkgs.xmonad-tv}/bin/xmonad-tv"; - ExecStop = "${pkgs.xmonad-tv}/bin/xmonad-tv --shutdown"; + ExecStart = "${pkgs.xmonad-tv}/bin/xmonad"; + ExecStop = "${pkgs.xmonad-tv}/bin/xmonad --shutdown"; User = user.name; WorkingDirectory = user.home; }; diff --git a/tv/5pkgs/default.nix b/tv/5pkgs/default.nix index 05dc028..da3c914 100644 --- a/tv/5pkgs/default.nix +++ b/tv/5pkgs/default.nix @@ -17,6 +17,7 @@ erlang = pkgs.erlangR16; }; ff = pkgs.callPackage ./ff {}; + q = pkgs.callPackage ./q {}; viljetic-pages = pkgs.callPackage ./viljetic-pages {}; xmonad-tv = import ./xmonad-tv.nix { inherit pkgs; }; }; diff --git a/tv/5pkgs/q/default.nix b/tv/5pkgs/q/default.nix new file mode 100644 index 0000000..1d08a54 --- /dev/null +++ b/tv/5pkgs/q/default.nix @@ -0,0 +1,193 @@ +{ pkgs, ... }: +let + q-cal = let + # XXX 23 is the longest line of cal's output + pad = ''{ + ${pkgs.gnused}/bin/sed ' + # rtrim + s/ *$// + + # delete last empty line + ''${/^$/d} + ' \ + | ${pkgs.gawk}/bin/awk '{printf "%-23s\n", $0}' \ + | ${pkgs.gnused}/bin/sed ' + # colorize header + 1,2s/.*/[30;1m&[39;22m/ + + # colorize week number + s/^[ 1-9][0-9]/[30;1m&[39;22m/ + ' + }''; + in '' + ${pkgs.coreutils}/bin/paste \ + <(${pkgs.utillinux}/bin/cal -mw \ + $(${pkgs.coreutils}/bin/date +'%m %Y' -d 'last month') \ + | ${pad} + ) \ + <(${pkgs.utillinux}/bin/cal -mw \ + | ${pkgs.gnused}/bin/sed ' + # colorize day of month + s/\(^\| \)'"$(${pkgs.coreutils}/bin/date +%e)"'\>/[31;1m&[39;22m/ + ' \ + | ${pad} + ) \ + <(${pkgs.utillinux}/bin/cal -mw \ + $(${pkgs.coreutils}/bin/date +'%m %Y' -d 'next month') \ + | ${pad} + ) \ + | ${pkgs.gnused}/bin/sed 's/\t/ /g' + ''; + + q-isodate = '' + ${pkgs.coreutils}/bin/date \ + '+[1m%Y-%m-%d[;30mT[;38;5;085m%H:%M[m:%S%:z' + ''; + + # Singapore's red is #ED2E38 + q-sgtdate = '' + TZ=Asia/Singapore \ + ${pkgs.coreutils}/bin/date \ + '+[1m%Y-%m-%d[;30mT[;38;5;088m%H:%M[m:%S%:z' + ''; + + q-gitdir = '' + if test -d .git; then + #git status --porcelain + branch=$( + ${pkgs.git}/bin/git branch \ + | ${pkgs.gnused}/bin/sed -rn 's/^\* (.*)/\1/p' + ) + echo "± $LOGNAME@''${HOSTNAME-$(${pkgs.nettools}/bin/hostname)}:$PWD .git $branch" + fi + ''; + + q-power_supply = '' + for uevent in /sys/class/power_supply/*/uevent; do + if test -f $uevent; then + eval "$(${pkgs.gnused}/bin/sed -n ' + s/^\([A-Z_]\+=\)\(.*\)/\1'\'''\2'\'''/p + ' $uevent)" + + if test "x''${POWER_SUPPLY_CHARGE_NOW-}" = x; then + continue + fi + + charge_percentage=$(echo " + scale=2 + $POWER_SUPPLY_CHARGE_NOW / $POWER_SUPPLY_CHARGE_FULL + " | ${pkgs.bc}/bin/bc) + + lfc=$POWER_SUPPLY_CHARGE_FULL + rc=$POWER_SUPPLY_CHARGE_NOW + #rc=2800 + N=78; N=76 + N=10 + n=$(echo $N-1 | ${pkgs.bc}/bin/bc) + centi=$(echo "$rc*100/$lfc" | ${pkgs.bc}/bin/bc) + deci=$(echo "$rc*$N/$lfc" | ${pkgs.bc}/bin/bc) + energy_evel=$( + echo -n '☳ ' # TRIGRAM FOR THUNDER + if test $centi -ge 42; then echo -n '[1;32m' + elif test $centi -ge 23; then echo -n '[1;33m' + elif test $centi -ge 11; then echo -n '[1;31m' + else echo -n '[5;1;31m'; fi + for i in $(${pkgs.coreutils}/bin/seq 1 $deci); do + echo -n ■ + done + echo -n '[;30m' + for i in $(${pkgs.coreutils}/bin/seq $deci $n); do + echo -n ■ + done + echo '[m' $rc #/ $lfc + ) + echo "$energy_evel $charge_percentage" + fi + done + ''; + + q-virtualization = '' + echo "VT: $(${pkgs.systemd}/bin/systemd-detect-virt)" + ''; + + q-wireless = '' + for dev in $( + ${pkgs.iw}/bin/iw dev \ + | ${pkgs.gnused}/bin/sed -n 's/^\s*Interface\s\+\([0-9a-z]\+\)$/\1/p' + ); do + inet=$(${pkgs.iproute}/bin/ip addr show $dev \ + | ${pkgs.gnused}/bin/sed -n ' + s/.*inet \([0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+\).*/\1/p + ') \ + || unset inet + ssid=$(${pkgs.iw}/bin/iw dev $dev link \ + | ${pkgs.gnused}/bin/sed -n ' + s/.*\tSSID: \(.*\)/\1/p + ') \ + || unset ssid + echo "$dev''${inet+ $inet}''${ssid+ $ssid}" + done + ''; + + q-online = '' + if ${pkgs.curl}/bin/curl -s google.com >/dev/null; then + echo '[32;1monline[m' + else + echo offline + fi + ''; + + q-thermal_zone = '' + for i in /sys/class/thermal/thermal_zone*; do + type=$(${pkgs.coreutils}/bin/cat $i/type) + temp=$(${pkgs.coreutils}/bin/cat $i/temp) + printf '%s %s°C\n' $type $(echo $temp / 1000 | ${pkgs.bc}/bin/bc) + done + ''; + + q-todo = '' + TODO_file=$HOME/TODO + if test -e "$TODO_file"; then + ${pkgs.coreutils}/bin/cat "$TODO_file" \ + | ${pkgs.gawk}/bin/gawk -v now=$(${pkgs.coreutils}/bin/date +%s) ' + BEGIN { print "remind=0" } + /^[0-9]/{ + x = $1 + gsub(".", "\\\\&", x) + rest = substr($0, index($0, " ")) + rest = $0 + sub(" *", "", rest) + gsub(".", "\\\\&", rest) + print "test $(${pkgs.coreutils}/bin/date +%s -d"x") -lt "now" && \ + echo \"\x1b[38;5;208m\""rest esc "\"\x1b[m\" && \ + (( remind++ ))" + } + END { print "test $remind = 0 && echo \"nothing to remind\"" } + ' \ + | { + # bash needed for (( ... )) + ${pkgs.bash}/bin/bash + } + else + echo "$TODO_file: no such file or directory" + fi + ''; + +in +# bash needed for <(...) +pkgs.writeBashBin "q" '' + set -eu + export PATH=/var/empty + ${q-cal} + echo + ${q-isodate} + ${q-sgtdate} + (${q-gitdir}) & + (${q-power_supply}) & + (${q-virtualization}) & + (${q-wireless}) & + (${q-online}) & + (${q-thermal_zone}) & + wait + ${q-todo} +'' diff --git a/tv/5pkgs/xmonad-tv.nix b/tv/5pkgs/xmonad-tv.nix index 74e43dc..04e7e83 100644 --- a/tv/5pkgs/xmonad-tv.nix +++ b/tv/5pkgs/xmonad-tv.nix @@ -1,14 +1,15 @@ { pkgs, ... }: -pkgs.writeHaskellBin "xmonad-tv" { - depends = [ - "containers" - "unix" - "X11" - "xmonad" - "xmonad-contrib" - "xmonad-stockholm" - ]; -} '' +pkgs.writeHaskell "xmonad-tv" { + executables.xmonad = { + extra-depends = [ + "containers" + "unix" + "X11" + "xmonad" + "xmonad-contrib" + "xmonad-stockholm" + ]; + text = '' {-# LANGUAGE DeriveDataTypeable #-} -- for XS {-# LANGUAGE FlexibleContexts #-} -- for xmonad' {-# LANGUAGE LambdaCase #-} @@ -299,4 +300,6 @@ wGSConfig = def allWorkspaceNames :: W.StackSet i l a sid sd -> X [i] allWorkspaceNames ws = return $ map W.tag (W.hidden ws) ++ [W.tag $ W.workspace $ W.current ws] -'' + ''; + }; +} |