diff options
author | aszlig <aszlig@redmoonstudios.org> | 2015-03-18 02:46:15 +0100 |
---|---|---|
committer | aszlig <aszlig@redmoonstudios.org> | 2015-03-18 02:46:15 +0100 |
commit | e91c0b0c2269a8ab0158863dc1c074daf46001f7 (patch) | |
tree | cfb21b6e78bc61de7b653a71db5af06a61951a72 /modules/user/aszlig/vlock | |
parent | 147ee83ee25b0c5d4a0600b12e31d6c994a5a9ca (diff) |
modules: Move own stuff into modules/user/aszlig.
Some modules might be generic enough to be included in modules/ directly, but for now, let's just get them out of the way. Signed-off-by: aszlig <aszlig@redmoonstudios.org>
Diffstat (limited to 'modules/user/aszlig/vlock')
-rw-r--r-- | modules/user/aszlig/vlock/default.nix | 51 | ||||
-rw-r--r-- | modules/user/aszlig/vlock/message.cat | 18 | ||||
-rw-r--r-- | modules/user/aszlig/vlock/message.colmap | 18 |
3 files changed, 87 insertions, 0 deletions
diff --git a/modules/user/aszlig/vlock/default.nix b/modules/user/aszlig/vlock/default.nix new file mode 100644 index 00000000..11e9a475 --- /dev/null +++ b/modules/user/aszlig/vlock/default.nix @@ -0,0 +1,51 @@ +{ pkgs, config, lib, ... }: + +let + messageFile = pkgs.runCommand "message.cat" {} '' + echo -en '\e[H\e[2J\e[?25l' > "$out" + "${pkgs.aacolorize}/bin/aacolorize" \ + "${./message.cat}" "${./message.colmap}" \ + >> "$out" + ''; + + esc = "\\\\033"; + unlockCSI = "${esc}[16;39H${esc}[?25h${esc}[K"; + + vlock = lib.overrideDerivation pkgs.vlock (o: { + postPatch = (o.postPatch or "") + '' + echo -n '"' > src/message.h + sed -e ':nl;N;$!bnl;s/[\\"]/\\&/g;s/\n/\\n/g' "${messageFile}" \ + >> src/message.h + sed -i -e '$s/$/"/' src/message.h + sed -i -e 's!getenv("VLOCK_MESSAGE")!\n#include "message.h"\n!' \ + src/vlock-main.c + sed -i -re 's/(fprintf[^"]*")(.*user)/\1${unlockCSI}\2/' \ + src/auth-pam.c + ''; + }); +in { + options.vuizvui.vlock.enable = lib.mkEnableOption "console lock"; + + config.systemd.sockets.vlock = { + description = "Console Lock Socket"; + wantedBy = [ "sockets.target" ]; + socketConfig.ListenStream = "/run/console-lock.sock"; + socketConfig.Accept = true; + }; + + config.systemd.services."vlock@" = lib.mkIf config.vuizvui.vlock.enable { + description = "Lock All Consoles"; + serviceConfig.Type = "oneshot"; + + #environment.USER = "%i"; XXX + environment.USER = "aszlig"; + + script = '' + retval=0 + oldvt="$("${pkgs.kbd}/bin/fgconsole")" + "${vlock}/bin/vlock" -asn || retval=$? + if [ $retval -ne 0 ]; then "${pkgs.kbd}/bin/chvt" "$oldvt"; fi + exit $retval + ''; + }; +} diff --git a/modules/user/aszlig/vlock/message.cat b/modules/user/aszlig/vlock/message.cat new file mode 100644 index 00000000..f079e829 --- /dev/null +++ b/modules/user/aszlig/vlock/message.cat @@ -0,0 +1,18 @@ + + . + | + -_ | . .-. .-. .. ,.--., ,===. + `-_ | | '||\.||' `' , , || || ;___ + -_ >:_ | _- ||`\|| || `\/' || || ; + `-_ _-' `-_ | _-' .' `| ;' /'`\ ``=='' ,===' + >:' `:' + _-' | | _- .. .. .. + -' | | _-' || || || + .|. _:< || ,---. .---. ||,-. .--. .--|| + _-' | `-_ _-' `-_ || ||"|| ||''' |.,'' |"/' |,";| + -' | `:< `- ||_ ||_|| ||__ |,\\. ||__ ||_,| + | | `-_ `--'`---' `---' '' `' `---' `---' + ' | `- + | press ENTER to unlock + ` + diff --git a/modules/user/aszlig/vlock/message.colmap b/modules/user/aszlig/vlock/message.colmap new file mode 100644 index 00000000..d7e42fb6 --- /dev/null +++ b/modules/user/aszlig/vlock/message.colmap @@ -0,0 +1,18 @@ + + c + c + cc c b WWW WWW WW BccccB cBBBc + ccc c b WWWWWWWW WW W W Bc cB cccc + bb ccc b bb WWWWWW WW WWWW Bc cB c + bbb bbb ccc b bbb WW WW WW WWWW BcBBcB cBBBc + bbb cbb + bbb c b cc rr rr rr + bb c b ccc rr rr rr + ccb ccc rr rrrrr rrrrr rrrrr rrrr rrrrr + ccc c bbb ccc ccc rr rrRrr rrRRR rrrrr rRrr rrRrr + cc c bbb cc rrr rrrrr rrrr rrrrr rrrr rrrrr + c b bbb rrrrrrrrr rrrrr rr rr rrrrr rrrrr + c b bb + b ppppp PPPPP pp pppppp + b + |