Migrate custom dmenu selection

Add my very first own derivation (via overlay).
Use existing scripts for dmenu.
"Build" result for nix out of the scripts,
e.g. replace references to nix dependencies.
Create proper output so nix can move it to proper places.
This commit is contained in:
Daniel Siepmann 2022-02-08 13:39:25 +01:00
parent 953922fc5c
commit fdde37afd7
Signed by: Daniel Siepmann
GPG key ID: 33D6629915560EF4
12 changed files with 185 additions and 0 deletions

View file

@ -35,6 +35,7 @@
# System tools
pkgs.dmenu
pkgs.networkmanager_dmenu
pkgs.dmenu-custom-scripts
pkgs.dunst
pkgs.st

View file

@ -0,0 +1,20 @@
self: super: {
dmenu-custom-scripts = super.stdenv.mkDerivation {
name = "dmenu-custom-scripts";
src = ./src;
buildPhase = ''
mkdir -p "$out/bin"
'';
installPhase = ''
declare -xp
cp -r * "$out/bin/"
sed -i 's#\$dmenu#${super.pkgs.dmenu}/bin/dmenu#' $out/bin/dmenu_selection
sed -i "s#\$out#$out/bin#" $out/bin/dmenu_selection
sed -i 's#\$dmenu#${super.pkgs.dmenu}/bin/dmenu#' $out/bin/scripts/*
sed -i 's#\$dunstctl#${super.pkgs.dunst}/bin/dunstctl#' $out/bin/scripts/*
'';
};
}

View file

@ -0,0 +1,6 @@
Still has many references to Ubuntu system tools.
Will migrate step by step and update references.
For now it is cool to have a first custom package which can be installed.
It already uses nix dunst and dmenu.

View file

@ -0,0 +1,10 @@
#!/bin/bash
pushd "$out/scripts"
# use "." for files in folder, use "*" for subfolder as well
chosen=$(ls -1 . | $dmenu -i -l 20)
popd
sh "$out/scripts/$chosen" || exit 0

View file

@ -0,0 +1,5 @@
#!/bin/bash
input=$($dmenu -i)
result=$(echo $input | scale=4 bc -l)
echo $result | $dmenu -i -p "Result:"

View file

@ -0,0 +1,6 @@
#!/bin/bash
chosen=$(echo "1\n2\n"| $dmenu -i -l 20 -p "$(composer --version)")
composer selfupdate --$chosen
pkill -SIGRTMIN+10 i3blocks
notify-send "switching composer version" "$(composer --version)"

View file

@ -0,0 +1,4 @@
#!/bin/bash
file=$(ls ~/Projects/docs/php/ | $dmenu -i -l 20 -p "Search Term")
firefox --new-tab http://php.docs.localhost/$file

View file

@ -0,0 +1,7 @@
#!/bin/bash
nodechosen=$(update-alternatives --list node | $dmenu -i -l 20 -p "$(node --version | cut -d'.' -f1,2 | sed s/v//)")
npmchoosen="$(dirname $(dirname $nodechosen))/lib/node_modules"
sudo update-alternatives --set node $nodechosen > /dev/null
sudo update-alternatives --set npm $npmchoosen > /dev/null
pkill -SIGRTMIN+10 i3blocks

View file

@ -0,0 +1,14 @@
#!/bin/bash
chosen=$(echo "pause\nresume" | $dmenu -i)
case "$chosen" in
"pause")
$dunstctl set-paused true
;;
"resume")
$dunstctl set-paused false
;;
*)
exit 0
;;
esac

View file

@ -0,0 +1,6 @@
#!/bin/bash
chosen=$(update-alternatives --list php | $dmenu -i -l 20 -p "$(php --version | head -1 | cut -d' ' -f2 | cut -d'.' -f1,2)")
sudo update-alternatives --set php $chosen > /dev/null
pkill -SIGRTMIN+10 i3blocks
notify-send "switching php version" "$(php --version)"

View file

@ -0,0 +1,43 @@
#!/bin/bash
# i3lock -i /home/daniels/Pictures/urknall.png
# TODO: Stop all software before logout
# https://faq.i3wm.org/question/239/how-do-i-suspendlockscreen-and-logout.1.html#post-id-1927
chosen=$(echo "lock\nsuspend\nlogout" | $dmenu -i)
case "$chosen" in
"lock")
# See: https://faq.i3wm.org/question/5654/how-can-i-disable-notifications-when-the-screen-locks-and-enable-them-again-when-unlocking/index.html#post-id-5655
# suspend message display
pkill -u "$USER" -USR1 dunst
# guess i3lock via nix points to other PAM and therefore does not identify by password
i3lock -c '#2E3436'
# i3lock \
# --clock \
# --indicator \
# --pass-media-keys \
# --color=#2E3436 \
# --timecolor=#9CD9F0FF \
# --datecolor=#9CD9F0FF \
# --insidecolor=#2E3436FF \
# --ringcolor=#9CD9F0FF \
# --insidevercolor=#9CD9F0FF \
# --ringvercolor=#72B3CCFF \
# --veriftext="checking"
# resume message display
pkill -u "$USER" -USR2 dunst
;;
"suspend")
systemctl suspend
;;
"logout")
i3-msg exit
;;
# "hibernate")
# i3lock -c 2E3436
# systemctl hibernate
# ;;
*)
exit 0
;;
esac

View file

@ -0,0 +1,63 @@
#!/bin/bash
activeString=""
action=$(echo "enable\ndisable\n" | $dmenu -i -p "$activeString")
case "$action" in
"enable")
sudo /bin/ln -s /etc/php/5.6/mods-available/xdebug.ini /etc/php/5.6/cli/conf.d/20-xdebug.ini
sudo /bin/ln -s /etc/php/5.6/mods-available/xdebug.ini /etc/php/5.6/fpm/conf.d/20-xdebug.ini
sudo /bin/ln -s /etc/php/7.0/mods-available/xdebug.ini /etc/php/7.0/cli/conf.d/20-xdebug.ini
sudo /bin/ln -s /etc/php/7.0/mods-available/xdebug.ini /etc/php/7.0/fpm/conf.d/20-xdebug.ini
sudo /bin/ln -s /etc/php/7.1/mods-available/xdebug.ini /etc/php/7.1/cli/conf.d/20-xdebug.ini
sudo /bin/ln -s /etc/php/7.1/mods-available/xdebug.ini /etc/php/7.1/fpm/conf.d/20-xdebug.ini
sudo /bin/ln -s /etc/php/7.2/mods-available/xdebug.ini /etc/php/7.2/cli/conf.d/20-xdebug.ini
sudo /bin/ln -s /etc/php/7.2/mods-available/xdebug.ini /etc/php/7.2/fpm/conf.d/20-xdebug.ini
sudo /bin/ln -s /etc/php/7.3/mods-available/xdebug.ini /etc/php/7.3/cli/conf.d/20-xdebug.ini
sudo /bin/ln -s /etc/php/7.3/mods-available/xdebug.ini /etc/php/7.3/fpm/conf.d/20-xdebug.ini
sudo /bin/ln -s /etc/php/7.4/mods-available/xdebug.ini /etc/php/7.4/cli/conf.d/20-xdebug.ini
sudo /bin/ln -s /etc/php/7.4/mods-available/xdebug.ini /etc/php/7.4/fpm/conf.d/20-xdebug.ini
sudo /bin/ln -s /etc/php/8.0/mods-available/xdebug.ini /etc/php/8.0/cli/conf.d/20-xdebug.ini
sudo /bin/ln -s /etc/php/8.0/mods-available/xdebug.ini /etc/php/8.0/fpm/conf.d/20-xdebug.ini
;;
"disable")
sudo /usr/bin/unlink /etc/php/5.6/cli/conf.d/20-xdebug.ini
sudo /usr/bin/unlink /etc/php/5.6/fpm/conf.d/20-xdebug.ini
sudo /usr/bin/unlink /etc/php/7.0/cli/conf.d/20-xdebug.ini
sudo /usr/bin/unlink /etc/php/7.0/fpm/conf.d/20-xdebug.ini
sudo /usr/bin/unlink /etc/php/7.1/cli/conf.d/20-xdebug.ini
sudo /usr/bin/unlink /etc/php/7.1/fpm/conf.d/20-xdebug.ini
sudo /usr/bin/unlink /etc/php/7.2/cli/conf.d/20-xdebug.ini
sudo /usr/bin/unlink /etc/php/7.2/fpm/conf.d/20-xdebug.ini
sudo /usr/bin/unlink /etc/php/7.3/cli/conf.d/20-xdebug.ini
sudo /usr/bin/unlink /etc/php/7.3/fpm/conf.d/20-xdebug.ini
sudo /usr/bin/unlink /etc/php/7.4/cli/conf.d/20-xdebug.ini
sudo /usr/bin/unlink /etc/php/7.4/fpm/conf.d/20-xdebug.ini
sudo /usr/bin/unlink /etc/php/8.0/cli/conf.d/20-xdebug.ini
sudo /usr/bin/unlink /etc/php/8.0/fpm/conf.d/20-xdebug.ini
;;
*)
exit 0
;;
esac
sudo /bin/systemctl reload php5.6-fpm.service
sudo /bin/systemctl reload php7.0-fpm.service
sudo /bin/systemctl reload php7.1-fpm.service
sudo /bin/systemctl reload php7.2-fpm.service
sudo /bin/systemctl reload php7.3-fpm.service
sudo /bin/systemctl reload php7.4-fpm.service
sudo /bin/systemctl reload php8.0-fpm.service
pkill -SIGRTMIN+10 i3blocks
notify-send "switching xdebug: $action"