diff options
Diffstat (limited to 'tv/5pkgs')
-rw-r--r-- | tv/5pkgs/default.nix | 9 | ||||
-rw-r--r-- | tv/5pkgs/haskell/default.nix | 2 | ||||
l--------- | tv/5pkgs/haskell/lib | 1 | ||||
l--------- | tv/5pkgs/lib | 1 | ||||
-rw-r--r-- | tv/5pkgs/override/default.nix | 2 | ||||
l--------- | tv/5pkgs/override/lib | 1 | ||||
-rw-r--r-- | tv/5pkgs/rpi/default.nix | 4 | ||||
l--------- | tv/5pkgs/rpi/lib | 1 | ||||
-rw-r--r-- | tv/5pkgs/simple/bash-fzf-history.nix | 2 | ||||
-rw-r--r-- | tv/5pkgs/simple/default.nix | 2 | ||||
l--------- | tv/5pkgs/simple/lib | 1 | ||||
-rw-r--r-- | tv/5pkgs/simple/pinentry-urxvt/default.nix | 77 | ||||
l--------- | tv/5pkgs/simple/pinentry-urxvt/lib | 1 | ||||
-rw-r--r-- | tv/5pkgs/simple/q/default.nix | 4 | ||||
l--------- | tv/5pkgs/simple/q/lib | 1 | ||||
-rw-r--r-- | tv/5pkgs/vim/default.nix | 2 | ||||
-rw-r--r-- | tv/5pkgs/vim/hack.nix | 2 | ||||
l--------- | tv/5pkgs/vim/lib | 1 | ||||
-rw-r--r-- | tv/5pkgs/vim/nix.nix | 2 | ||||
-rw-r--r-- | tv/5pkgs/vim/vim.nix | 2 |
20 files changed, 95 insertions, 23 deletions
diff --git a/tv/5pkgs/default.nix b/tv/5pkgs/default.nix index 5a018a166..245d0542b 100644 --- a/tv/5pkgs/default.nix +++ b/tv/5pkgs/default.nix @@ -1,4 +1,4 @@ -with import ../../lib; +with import ./lib; let pushBack = x: xs: if elem x xs then @@ -14,7 +14,6 @@ fix (foldl' (flip extends) (_: super) (map (name: import (./. + "/${name}")) - (filter - (name: name != "default.nix" && !hasPrefix "." name) - (pushBack "override" - (attrNames (readDir ./.)))))) + (pushBack "override" + (attrNames + (filterAttrs isNixDirEntry (readDir ./.)))))) diff --git a/tv/5pkgs/haskell/default.nix b/tv/5pkgs/haskell/default.nix index 33fd2506a..f05223d72 100644 --- a/tv/5pkgs/haskell/default.nix +++ b/tv/5pkgs/haskell/default.nix @@ -1,4 +1,4 @@ -with import <stockholm/lib>; +with import ./lib; let overrides = self: super: mapNixDir (path: self.callPackage path {}) [ diff --git a/tv/5pkgs/haskell/lib b/tv/5pkgs/haskell/lib new file mode 120000 index 000000000..dc598c56d --- /dev/null +++ b/tv/5pkgs/haskell/lib @@ -0,0 +1 @@ +../lib
\ No newline at end of file diff --git a/tv/5pkgs/lib b/tv/5pkgs/lib new file mode 120000 index 000000000..dc598c56d --- /dev/null +++ b/tv/5pkgs/lib @@ -0,0 +1 @@ +../lib
\ No newline at end of file diff --git a/tv/5pkgs/override/default.nix b/tv/5pkgs/override/default.nix index f719a9f69..87b7ce929 100644 --- a/tv/5pkgs/override/default.nix +++ b/tv/5pkgs/override/default.nix @@ -1,4 +1,4 @@ -with import ../../../lib; +with import ./lib; self: super: mapNixDir (path: import path self super) ./. diff --git a/tv/5pkgs/override/lib b/tv/5pkgs/override/lib new file mode 120000 index 000000000..dc598c56d --- /dev/null +++ b/tv/5pkgs/override/lib @@ -0,0 +1 @@ +../lib
\ No newline at end of file diff --git a/tv/5pkgs/rpi/default.nix b/tv/5pkgs/rpi/default.nix index f0ac47f6a..e41d6373f 100644 --- a/tv/5pkgs/rpi/default.nix +++ b/tv/5pkgs/rpi/default.nix @@ -1,6 +1,4 @@ -let - lib = import <stockholm/lib>; -in +with import ./lib; self: super: diff --git a/tv/5pkgs/rpi/lib b/tv/5pkgs/rpi/lib new file mode 120000 index 000000000..dc598c56d --- /dev/null +++ b/tv/5pkgs/rpi/lib @@ -0,0 +1 @@ +../lib
\ No newline at end of file diff --git a/tv/5pkgs/simple/bash-fzf-history.nix b/tv/5pkgs/simple/bash-fzf-history.nix index 88a8e9e4a..1166ec7fd 100644 --- a/tv/5pkgs/simple/bash-fzf-history.nix +++ b/tv/5pkgs/simple/bash-fzf-history.nix @@ -1,4 +1,4 @@ -with import <stockholm/lib>; +with import ./lib; { pkgs , edit-key ? "ctrl-e" diff --git a/tv/5pkgs/simple/default.nix b/tv/5pkgs/simple/default.nix index 9fb45dd1a..82a19a9b1 100644 --- a/tv/5pkgs/simple/default.nix +++ b/tv/5pkgs/simple/default.nix @@ -1,4 +1,4 @@ -with import ../../../lib; +with import ./lib; self: super: diff --git a/tv/5pkgs/simple/lib b/tv/5pkgs/simple/lib new file mode 120000 index 000000000..dc598c56d --- /dev/null +++ b/tv/5pkgs/simple/lib @@ -0,0 +1 @@ +../lib
\ No newline at end of file diff --git a/tv/5pkgs/simple/pinentry-urxvt/default.nix b/tv/5pkgs/simple/pinentry-urxvt/default.nix index 65b76c077..c768a9f5b 100644 --- a/tv/5pkgs/simple/pinentry-urxvt/default.nix +++ b/tv/5pkgs/simple/pinentry-urxvt/default.nix @@ -1,8 +1,7 @@ +with import ./lib; { pkgs, ... }@args: let - lib = import <stockholm/lib>; - # config cannot be declared in the input attribute set because that would # cause callPackage to inject the wrong config. Instead, get it from ... # via args. @@ -20,7 +19,11 @@ let type = lib.types.str; }; display = lib.mkOption { - default = ":0"; + default = null; + type = lib.types.nullOr lib.types.str; + }; + xwud.className = lib.mkOption { + default = "PinentryUrxvtXwudFloat"; type = lib.types.str; }; }; @@ -30,12 +33,76 @@ let in + # pinentry-urxvt - A mechanism for PIN entry utilizing rxvt-unicode + # + # This spawns a PIN entry terminal on top of a tinted screenshot of the + # current display's root window. The display for spawning the terminal can + # be predefined, in which case both the current and the predefined display + # will show the screenshot. + # + # The purpose of the screenshot, aside from looking nice, is to prevent entry + # of the PIN into the wrong window, e.g. by accidentally moving the cursor + # while typing. If necessary, the screenshot can be closed by sending 'q', + # 'Q', or ctrl-c while its focused. + # pkgs.write "pinentry-urxvt" { "/bin/pinentry".link = pkgs.writeDash "pinentry-urxvt-wrapper" '' set -efu + + trap cleanup EXIT + + cleanup() { + rm "$screenshot" + # Kill process group in order to kill screenshot windows. + ${pkgs.utillinux}/bin/kill 0 + } + + screenshot=$(${pkgs.coreutils}/bin/mktemp -t pinentry-urxvt.screenshot.XXXXXXXX) + + ${pkgs.xorg.xwd}/bin/xwd -root | + ${pkgs.imagemagick}/bin/convert xwd:- -fill \#424242 -colorize 80% xwd:"$screenshot" + + show_screenshot() { + ${pkgs.exec "pinentry-urxvt.show_screenshot" { + filename = "${pkgs.xorg.xwud}/bin/xwud"; + argv = [ + cfg.xwud.className + "-noclick" + ]; + }} < "$screenshot" & + wait_for_screenshot $! + } + + # Wait for the xwud window by trying to intercept the call to munmap(). + # If it cannot be intercepted within 0.1s, assume that attaching strace + # wasn't fast enough or xwud doesn't call munmap() anymore. In either + # case fall back to search the window by class name, assuming there can + # be only one per display. + wait_for_screenshot() { + if ! \ + ${pkgs.coreutils}/bin/timeout 0.1 \ + ${pkgs.strace}/bin/strace -p "$1" -e munmap 2>&1 | + read -r _ + then + until ${pkgs.xdotool}/bin/xdotool search \ + --classname ${lib.shell.escape cfg.xwud.className} + do + ${pkgs.coreutils}/bin/sleep 0.1 + done + fi + } + + show_screenshot + + ${lib.optionalString (cfg.display != null) /* sh */ '' + if test "$DISPLAY" != ${lib.shell.escape cfg.display}; then + export DISPLAY=${lib.shell.escape cfg.display} + show_screenshot + fi + ''} + exec 3<&0 4>&1 5>&2 - export DISPLAY=${lib.shell.escape cfg.display} - exec ${pkgs.rxvt_unicode}/bin/urxvt \ + ${pkgs.rxvt_unicode}/bin/urxvt \ -name ${lib.shell.escape cfg.appName} \ -e ${pkgs.writeDash "pinentry-urxvt-tty" '' set -efu diff --git a/tv/5pkgs/simple/pinentry-urxvt/lib b/tv/5pkgs/simple/pinentry-urxvt/lib new file mode 120000 index 000000000..dc598c56d --- /dev/null +++ b/tv/5pkgs/simple/pinentry-urxvt/lib @@ -0,0 +1 @@ +../lib
\ No newline at end of file diff --git a/tv/5pkgs/simple/q/default.nix b/tv/5pkgs/simple/q/default.nix index e17282e17..2ae71db52 100644 --- a/tv/5pkgs/simple/q/default.nix +++ b/tv/5pkgs/simple/q/default.nix @@ -1,5 +1,5 @@ -{ pkgs, ... }: -with import <stockholm/lib>; +with import ./lib; +{ pkgs }: let q-cal = let diff --git a/tv/5pkgs/simple/q/lib b/tv/5pkgs/simple/q/lib new file mode 120000 index 000000000..dc598c56d --- /dev/null +++ b/tv/5pkgs/simple/q/lib @@ -0,0 +1 @@ +../lib
\ No newline at end of file diff --git a/tv/5pkgs/vim/default.nix b/tv/5pkgs/vim/default.nix index e0e2761d2..c143592ad 100644 --- a/tv/5pkgs/vim/default.nix +++ b/tv/5pkgs/vim/default.nix @@ -1,4 +1,4 @@ -with import <stockholm/lib>; +with import ./lib; self: super: { tv = super.tv // { diff --git a/tv/5pkgs/vim/hack.nix b/tv/5pkgs/vim/hack.nix index 0e949688d..922d85ba2 100644 --- a/tv/5pkgs/vim/hack.nix +++ b/tv/5pkgs/vim/hack.nix @@ -1,4 +1,4 @@ -with import <stockholm/lib>; +with import ./lib; { pkgs }: pkgs.tv.vim.makePlugin (pkgs.writeTextFile (let diff --git a/tv/5pkgs/vim/lib b/tv/5pkgs/vim/lib new file mode 120000 index 000000000..dc598c56d --- /dev/null +++ b/tv/5pkgs/vim/lib @@ -0,0 +1 @@ +../lib
\ No newline at end of file diff --git a/tv/5pkgs/vim/nix.nix b/tv/5pkgs/vim/nix.nix index 01f769f16..43caf46c2 100644 --- a/tv/5pkgs/vim/nix.nix +++ b/tv/5pkgs/vim/nix.nix @@ -1,4 +1,4 @@ -with import <stockholm/lib>; +with import ./lib; { pkgs }: pkgs.tv.vim.makePlugin (pkgs.write "vim-syntax-nix-nested" { diff --git a/tv/5pkgs/vim/vim.nix b/tv/5pkgs/vim/vim.nix index 6034dbda8..c5693a243 100644 --- a/tv/5pkgs/vim/vim.nix +++ b/tv/5pkgs/vim/vim.nix @@ -1,4 +1,4 @@ -with import <stockholm/lib>; +with import ./lib; { pkgs }: pkgs.tv.vim.makePlugin (pkgs.writeTextFile (let |