diff options
Diffstat (limited to 'pkgs/simple')
| -rw-r--r-- | pkgs/simple/alacritty-tv.nix | 61 | ||||
| -rw-r--r-- | pkgs/simple/dic.nix | 37 | ||||
| -rw-r--r-- | pkgs/simple/editor-input.nix | 2 | ||||
| -rwxr-xr-x | pkgs/simple/fzmenu/bin/otpmenu | 31 | ||||
| -rwxr-xr-x | pkgs/simple/fzmenu/bin/passmenu | 31 | ||||
| -rw-r--r-- | pkgs/simple/fzmenu/default.nix | 14 | ||||
| -rw-r--r-- | pkgs/simple/hc.nix | 4 | ||||
| -rw-r--r-- | pkgs/simple/otherutils.nix | 15 | ||||
| -rw-r--r-- | pkgs/simple/pinentry-urxvt/default.nix | 2 | ||||
| -rw-r--r-- | pkgs/simple/q/default.nix | 6 | ||||
| -rw-r--r-- | pkgs/simple/viljetic-pages/index.html | 1 | ||||
| -rw-r--r-- | pkgs/simple/with-tmpdir.nix | 29 | ||||
| -rw-r--r-- | pkgs/simple/writePolkitRules.nix | 72 | ||||
| -rw-r--r-- | pkgs/simple/xextras.nix | 19 |
14 files changed, 288 insertions, 36 deletions
diff --git a/pkgs/simple/alacritty-tv.nix b/pkgs/simple/alacritty-tv.nix index bea5776..ebf609e 100644 --- a/pkgs/simple/alacritty-tv.nix +++ b/pkgs/simple/alacritty-tv.nix @@ -5,18 +5,33 @@ pkgs.symlinkJoin { paths = [ (pkgs.writeDashBin "alacritty" '' # usage: - # alacritty [--profile=PROFILE] [--singleton] [ARGS...] + # alacritty [--dtach] [--profile=PROFILE] [--singleton] [COMMAND [ARGS...]] # where # PROFILE must have a corresponding file /etc/alacritty/PROFILE.toml set -efu + dtach= profile=default - case ''${1-} in - --profile=*) - profile=''${1#--profile=} - shift - esac + singleton= + while :; do + case ''${1-} in + --dtach) + dtach=1 + shift + ;; + --profile=*) + profile=''${1#--profile=} + shift + ;; + --singleton) + singleton=1 + shift + ;; + *) + break + esac + done config=/etc/alacritty/$profile.toml @@ -26,17 +41,29 @@ pkgs.symlinkJoin { config=/etc/alacritty/default.toml fi - case ''${1-} in - --singleton) - shift - if ! ${pkgs.alacritty}/bin/alacritty --config-file "$config" msg create-window "$@"; then - ${pkgs.alacritty}/bin/alacritty --config-file "$config" "$@" & - fi - ;; - *) - exec ${pkgs.alacritty}/bin/alacritty --config-file "$config" "$@" - ;; - esac + export WINIT_X11_SCALE_FACTOR=$( + ${pkgs.haskellPackages.xoutinfo}/bin/xoutinfo | + ${pkgs.jq}/bin/jq .device_scale_factor + ) + + if test "$dtach" = 1; then + if test $# = 0; then + _CURRENT_DESKTOP_NAME=''${_CURRENT_DESKTOP_NAME-$(${pkgs.xextras}/bin/net-current-desktop)} + SHELL=''${SHELL-${pkgs.bash}/bin/bash} + sock=$XDG_RUNTIME_DIR/Alacritty-$DISPLAY-dtach-$_CURRENT_DESKTOP_NAME-$$.sock + set -- -e ${pkgs.dtach}/bin/dtach -c "$sock" -r winch -z "$SHELL" + else + echo 'alacritty-tv: warning: option --dtach ignored: arguments provided' >&2 + fi + fi + + if test "$singleton" = 1; then + if ! ${pkgs.alacritty}/bin/alacritty --config-file "$config" msg create-window "$@"; then + ${pkgs.alacritty}/bin/alacritty --config-file "$config" "$@" & + fi + else + exec ${pkgs.alacritty}/bin/alacritty --config-file "$config" "$@" + fi '') pkgs.alacritty ]; diff --git a/pkgs/simple/dic.nix b/pkgs/simple/dic.nix new file mode 100644 index 0000000..0875c73 --- /dev/null +++ b/pkgs/simple/dic.nix @@ -0,0 +1,37 @@ +{ lib, pkgs, stdenv }: + +stdenv.mkDerivation { + name = "dic"; + + src = pkgs.fetchgit { + url = https://cgit.ni.krebsco.de/dic; + rev = "refs/tags/v1.1.1"; + sha256 = "1gbj967a5hj53fdkkxijqgwnl9hb8kskz0cmpjq7v65ffz3v6vag"; + }; + + phases = [ + "unpackPhase" + "installPhase" + ]; + + installPhase = + let + path = lib.makeBinPath [ + pkgs.coreutils + pkgs.curl + pkgs.gnused + pkgs.gnugrep + pkgs.util-linux + ]; + in + '' + mkdir -p $out/bin + + sed \ + 's,^main() {$,&\n PATH=${path}; export PATH,' \ + < ./dic \ + > $out/bin/dic + + chmod +x $out/bin/dic + ''; +} diff --git a/pkgs/simple/editor-input.nix b/pkgs/simple/editor-input.nix index 536084d..0591f2f 100644 --- a/pkgs/simple/editor-input.nix +++ b/pkgs/simple/editor-input.nix @@ -1,7 +1,7 @@ { pkgs }: pkgs.writeDashBin "editor-input" '' exec \ - ${pkgs.utillinux}/bin/setsid -f \ + ${pkgs.util-linux}/bin/setsid -f \ ${pkgs.with-tmpdir}/bin/with-tmpdir -t editor-input.XXXXXXXX \ ${pkgs.writeDash "editor-input.sh" '' f=$TMPDIR/input diff --git a/pkgs/simple/fzmenu/bin/otpmenu b/pkgs/simple/fzmenu/bin/otpmenu index 714ab7c..59706c1 100755 --- a/pkgs/simple/fzmenu/bin/otpmenu +++ b/pkgs/simple/fzmenu/bin/otpmenu @@ -1,8 +1,22 @@ #! /bin/sh +# usage: otpmenu [--phase2-method=METHOD] +# where METHOD is either copy or type, type being the default. set -efu #PATH= +while test $# -gt 0; do + case $1 in + --phase2-method=copy|--phase2-method=type) + export FZMENU_PHASE2_METHOD=${1#*=} + shift 1 + ;; + *) + echo "$0: error: bad argument: $1" >&2 + exit 1 + esac +done + case ${FZMENU_PHASE-0} in 0) export FZMENU_PHASE=1 @@ -25,7 +39,7 @@ case ${FZMENU_PHASE-0} in exec fzf \ --history=/dev/null \ --no-sort \ - --prompt='OTP: ' \ + --prompt="${FZMENU_PHASE2_METHOD-type} otp: " \ ) then export FZMENU_PHASE=2 @@ -38,8 +52,19 @@ case ${FZMENU_PHASE-0} in # lucidatypewriter, causing a warning to be printed to stderr. font='-*-clean-*-*-*-*-*-*-*-*-*-*-iso10646-1' pass=$(pass otp code "$FZMENU_RESULT/otp") - printf %s "$pass" | - xvkbd -xrm "xvkbd*Font: $font" -xsendevent -file - + case ${FZMENU_PHASE2_METHOD-type} in + copy) + printf %s "$pass" | + xsel -p -i -t 60000 + ;; + type) + printf %s "$pass" | + xvkbd -xrm "xvkbd*Font: $font" -xsendevent -file - + ;; + *) + echo "$0: error: bad phase2 method: $FZMENU_PHASE2_METHOD" >&2 + exit -1 + esac ;; *) echo "$0: error: bad phase: $FZMENU_PHASE" >&2 diff --git a/pkgs/simple/fzmenu/bin/passmenu b/pkgs/simple/fzmenu/bin/passmenu index a798925..0b07174 100755 --- a/pkgs/simple/fzmenu/bin/passmenu +++ b/pkgs/simple/fzmenu/bin/passmenu @@ -1,8 +1,22 @@ #! /bin/sh +# usage: passmenu [--phase2-method=METHOD] +# where METHOD is either copy or type, type being the default. set -efu #PATH= +while test $# -gt 0; do + case $1 in + --phase2-method=copy|--phase2-method=type) + export FZMENU_PHASE2_METHOD=${1#*=} + shift 1 + ;; + *) + echo "$0: error: bad argument: $1" >&2 + exit 1 + esac +done + case ${FZMENU_PHASE-0} in 0) export FZMENU_PHASE=1 @@ -26,7 +40,7 @@ case ${FZMENU_PHASE-0} in exec fzf \ --history=/dev/null \ --no-sort \ - --prompt='pass: ' \ + --prompt="${FZMENU_PHASE2_METHOD-type} pass: " \ ) then export FZMENU_PHASE=2 @@ -39,8 +53,19 @@ case ${FZMENU_PHASE-0} in # lucidatypewriter, causing a warning to be printed to stderr. font='-*-clean-*-*-*-*-*-*-*-*-*-*-iso10646-1' pass=$(pass show "$FZMENU_RESULT") - printf %s "$pass" | - xvkbd -xrm "xvkbd*Font: $font" -xsendevent -file - + case ${FZMENU_PHASE2_METHOD-type} in + copy) + printf %s "$pass" | + xsel -p -i -t 60000 + ;; + type) + printf %s "$pass" | + xvkbd -xrm "xvkbd*Font: $font" -xsendevent -file - + ;; + *) + echo "$0: error: bad phase2 method: $FZMENU_PHASE2_METHOD" >&2 + exit -1 + esac ;; *) echo "$0: error: bad phase: $FZMENU_PHASE" >&2 diff --git a/pkgs/simple/fzmenu/default.nix b/pkgs/simple/fzmenu/default.nix index c4dccbf..9a9bda6 100644 --- a/pkgs/simple/fzmenu/default.nix +++ b/pkgs/simple/fzmenu/default.nix @@ -17,8 +17,8 @@ pkgs.runCommand "fzmenu" { cp -r ${./bin} $out/bin substituteInPlace $out/bin/otpmenu \ - --replace '#! /bin/sh' '#! ${pkgs.dash}/bin/dash' \ - --replace '#PATH=' PATH=${lib.makeBinPath [ + --replace-fail '#! /bin/sh' '#! ${pkgs.dash}/bin/dash' \ + --replace-fail '#PATH=' PATH=${lib.makeBinPath [ pkgs.coreutils pkgs.dash pkgs.findutils @@ -27,14 +27,15 @@ pkgs.runCommand "fzmenu" { (pkgs.pass.withExtensions (ext: [ ext.pass-otp ])) - pkgs.utillinux + pkgs.util-linux + pkgs.xsel pkgs.xvkbd terminal ]} substituteInPlace $out/bin/passmenu \ - --replace '#! /bin/sh' '#! ${pkgs.dash}/bin/dash' \ - --replace '#PATH=' PATH=${lib.makeBinPath [ + --replace-fail '#! /bin/sh' '#! ${pkgs.dash}/bin/dash' \ + --replace-fail '#PATH=' PATH=${lib.makeBinPath [ pkgs.coreutils pkgs.dash pkgs.findutils @@ -43,7 +44,8 @@ pkgs.runCommand "fzmenu" { (pkgs.pass.withExtensions (ext: [ ext.pass-otp ])) - pkgs.utillinux + pkgs.util-linux + pkgs.xsel pkgs.xvkbd terminal ]} diff --git a/pkgs/simple/hc.nix b/pkgs/simple/hc.nix index 086445e..15550dc 100644 --- a/pkgs/simple/hc.nix +++ b/pkgs/simple/hc.nix @@ -1,5 +1,5 @@ { fetchgit, lib, makeWrapper, stdenv -, coreutils, findutils, gawk, gnugrep, qrencode, texlive, utillinux, zbar +, coreutils, findutils, gawk, gnugrep, qrencode, texlive, util-linux, zbar }: stdenv.mkDerivation rec { @@ -28,7 +28,7 @@ stdenv.mkDerivation rec { gnugrep qrencode texlive.combined.scheme-full - utillinux + util-linux zbar ]} ''; diff --git a/pkgs/simple/otherutils.nix b/pkgs/simple/otherutils.nix new file mode 100644 index 0000000..5c946d2 --- /dev/null +++ b/pkgs/simple/otherutils.nix @@ -0,0 +1,15 @@ +{ pkgs, stdenv }: + +stdenv.mkDerivation rec { + pname = "otherutils"; + version = "1.1.0"; + src = pkgs.fetchgit { + url = "https://cgit.krebsco.de/otherutils"; + rev = "refs/tags/${version}"; + hash = "sha256-eiMTIXTEsq+DGlOw+fcU2cgRkuPWTy5lm/L5heuhDxM="; + }; + env = { + PREFIX = placeholder "out"; + }; +} + diff --git a/pkgs/simple/pinentry-urxvt/default.nix b/pkgs/simple/pinentry-urxvt/default.nix index 808d00a..e79b09f 100644 --- a/pkgs/simple/pinentry-urxvt/default.nix +++ b/pkgs/simple/pinentry-urxvt/default.nix @@ -51,7 +51,7 @@ in trap cleanup EXIT cleanup() { - ${pkgs.utillinux}/bin/kill -- $(${pkgs.coreutils}/bin/cat "$displayers") + ${pkgs.util-linux}/bin/kill -- $(${pkgs.coreutils}/bin/cat "$displayers") rm "$displayers" rm "$screenshot" } diff --git a/pkgs/simple/q/default.nix b/pkgs/simple/q/default.nix index ca4a466..5944dd9 100644 --- a/pkgs/simple/q/default.nix +++ b/pkgs/simple/q/default.nix @@ -17,11 +17,11 @@ let in /* sh */ '' cols=$(${pkgs.ncurses}/bin/tput cols) if test $cols -ge ${toString (need_width 3)}; then - ${pkgs.utillinux}/bin/cal --color=always -mw3 + ${pkgs.util-linux}/bin/cal --color=always -mw3 elif test $cols -ge ${toString (need_width 2)}; then - ${pkgs.utillinux}/bin/cal --color=always -mw -n 2 + ${pkgs.util-linux}/bin/cal --color=always -mw -n 2 elif test $cols -ge ${toString (need_width 1)}; then - ${pkgs.utillinux}/bin/cal --color=always -mw1 + ${pkgs.util-linux}/bin/cal --color=always -mw1 else : fi | diff --git a/pkgs/simple/viljetic-pages/index.html b/pkgs/simple/viljetic-pages/index.html index c268cb9..9394cf7 100644 --- a/pkgs/simple/viljetic-pages/index.html +++ b/pkgs/simple/viljetic-pages/index.html @@ -4,6 +4,7 @@ <i>This page intentionally left blank.</i> <!-- mailto:tomislav@viljetic.de + matrix:u/@tomislav:viljetic.de https://github.com/4z3 irc://irc.hackint.org/tv,isnick irc://irc.libera.chat/tv,isnick diff --git a/pkgs/simple/with-tmpdir.nix b/pkgs/simple/with-tmpdir.nix new file mode 100644 index 0000000..9862671 --- /dev/null +++ b/pkgs/simple/with-tmpdir.nix @@ -0,0 +1,29 @@ +{ stdenv, fetchgit, coreutils, dash, ... }: + +stdenv.mkDerivation { + name = "with-tmpdir-1"; + + src = fetchgit { + url = http://cgit.ni.krebsco.de/with-tmpdir; + rev = "3243c02ed8cd27a04c080bd39560204980f6c16a"; + sha256 = "80ee6cafb2c337999ddcd1e41747d6256b7cfcea605358c2046eb7e3729555c6"; + }; + + phases = [ + "unpackPhase" + "installPhase" + ]; + + installPhase = '' + mkdir -p $out/bin + + { echo '#! ${dash}/bin/dash' + echo 'OLDPATH=$PATH' + echo 'PATH=${coreutils}/bin' + sed '$s/^/#/' ./with-tmpdir + echo '(PATH=$OLDPATH; exec "$@")' + } > $out/bin/with-tmpdir + + chmod +x $out/bin/with-tmpdir + ''; +} diff --git a/pkgs/simple/writePolkitRules.nix b/pkgs/simple/writePolkitRules.nix new file mode 100644 index 0000000..af4cb49 --- /dev/null +++ b/pkgs/simple/writePolkitRules.nix @@ -0,0 +1,72 @@ +{ lib, pkgs, ... }: + +name: text: + +pkgs.runCommand name { + nativeBuildInputs = [ + pkgs.eslint + ]; + eslintConfig = /* js */ '' + // ESLint flat config for Polkit rules (Duktape 2.7) + export default [ + { + files: [${builtins.toJSON name}], + languageOptions: { + ecmaVersion: 2016, + sourceType: 'script', + globals: { + polkit: 'readonly', + }, + }, + linterOptions: { + reportUnusedDisableDirectives: true, + }, + rules: { + 'no-unused-vars': 'warn', + 'no-undef': 'error', + 'no-console': 'off', + 'prefer-const': 'warn', + 'no-confusing-arrow': [ + 'error', + { allowParens: true }, + ], + 'no-constant-condition': 'warn', + 'no-restricted-syntax': [ + 'error', + { + selector: 'AwaitExpression', + message: 'Async/await is not supported in Polkit rules.', + }, + { + selector: 'ImportDeclaration', + message: 'Modules are not supported.', + }, + { + selector: 'ExportNamedDeclaration', + message: 'Modules are not supported.', + }, + { + selector: 'NewExpression[callee.name="Promise"]', + message: 'Promises are not supported in Duktape.', + }, + { + selector: 'ClassDeclaration', + message: 'Class syntax may behave inconsistently in Duktape.', + }, + ] + } + } + ]; + ''; + polkitRules = text; + passAsFile = [ + "eslintConfig" + "polkitRules" + ]; +} /* sh */ '' + name=${lib.escapeShellArg name} + ln -s "$polkitRulesPath" "$name" + ln -s "$eslintConfigPath" eslint.config.js + eslint "$name" + cp -L "$name" "$out" +'' diff --git a/pkgs/simple/xextras.nix b/pkgs/simple/xextras.nix new file mode 100644 index 0000000..c9c0308 --- /dev/null +++ b/pkgs/simple/xextras.nix @@ -0,0 +1,19 @@ +{ pkgs }: + +pkgs.write "xextras" { + "/bin/net-current-desktop".link = + pkgs.writeDash "net-current-desktop" '' + # SYNOPSIS + # net-current-desktop + # + ${pkgs.xorg.xprop}/bin/xprop -notype -root 32i _NET_CURRENT_DESKTOP 8s _NET_DESKTOP_NAMES | + ${pkgs.jq}/bin/jq -Rrs ' + split("\n") | map(select(.!="") | split(" = ") | { name: .[0], value: .[1] }) | from_entries | + { + _NET_CURRENT_DESKTOP: (._NET_CURRENT_DESKTOP | tonumber), + _NET_DESKTOP_NAMES: (._NET_DESKTOP_NAMES | "[\(ltrimstr("._NET_DESKTOP_NAMES = "))]" | fromjson) + } | + ._NET_DESKTOP_NAMES[._NET_CURRENT_DESKTOP] + ' + ''; +} |
