nixpkgs/overlays/dmenu-custom-scripts/default.nix

174 lines
5.1 KiB
Nix
Raw Normal View History

self: super:
let
# Still has many references to Ubuntu system tools.
# Will migrate step by step and update references.
2022-02-11 08:48:35 +01:00
# For now it is cool to have a first custom package which can be installed.
2022-02-11 08:48:35 +01:00
# It already uses nix dunst and dmenu.
# Also things like version switch should not be necessary once I managed nix shells.
dmenu-custom-scripts-calc = super.pkgs.writeShellApplication {
name = "dmenu-custom-scripts-calc";
runtimeInputs = [
super.pkgs.dmenu
super.pkgs.bc
];
text = ''
input=$(dmenu -i)
result=$(echo "$input" | scale=4 bc -l)
echo "$result" | dmenu -i -p "Result:"
'';
};
dmenu-custom-scripts-notifications = super.pkgs.writeShellApplication {
name = "dmenu-custom-scripts-notifications";
runtimeInputs = [
super.pkgs.dmenu
super.pkgs.dunst
];
text = ''
chosen=$(echo -e "pause\nresume" | dmenu -i)
case "$chosen" in
"pause")
dunstctl set-paused true
;;
"resume")
dunstctl set-paused false
;;
*)
exit 0
;;
esac
'';
};
dmenu-custom-scripts-system = super.pkgs.writeShellApplication {
name = "dmenu-custom-scripts-system";
runtimeInputs = [
super.pkgs.dmenu
super.pkgs.dunst
];
text = builtins.readFile ./system.sh;
};
dmenu-custom-scripts-docs-php = super.pkgs.writeShellApplication {
name = "dmenu-custom-scripts-docs-php";
runtimeInputs = [
super.pkgs.dmenu
];
text = ''
file=$(find ~/Projects/docs/php/ -maxdepth 1 -name '*.html' -printf "%f\n" | dmenu -i -l 20 -p "Search Term")
firefox --new-tab "http://php.docs.localhost/$file"
'';
};
dmenu-custom-scripts-php-version = super.pkgs.writeShellApplication {
name = "dmenu-custom-scripts-php-version";
runtimeInputs = [
super.pkgs.dmenu
];
text = ''
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)"
'';
};
dmenu-custom-scripts-xdebug = super.pkgs.writeShellApplication {
name = "dmenu-custom-scripts-xdebug";
runtimeInputs = [
super.pkgs.dmenu
];
text = builtins.readFile ./xdebug.sh;
};
dmenu-custom-scripts-start-videorecording = super.pkgs.writeShellApplication {
name = "dmenu-custom-scripts-start-videorecording";
runtimeInputs = [
super.pkgs.dmenu
];
text = builtins.readFile ./start-videorecording.sh;
};
dmenu-custom-scripts-stop-videorecording = super.pkgs.writeShellApplication {
name = "dmenu-custom-scripts-stop-videorecording";
text = ''
kill "$(cat /tmp/runningRecording.txt)"
rm /tmp/runningRecording.txt
notify-send "Stoped recording"
'';
};
in {
dmenu-custom-scripts = super.pkgs.writeShellApplication {
name = "dmenu_selection";
# TODO: Find way to remove the nix prefixes from "files"
text = ''
scripts=()
scripts+=("${dmenu-custom-scripts-calc.name}")
scripts+=("${dmenu-custom-scripts-notifications.name}")
scripts+=("${dmenu-custom-scripts-system.name}")
scripts+=("${dmenu-custom-scripts-php-version.name}")
scripts+=("${dmenu-custom-scripts-docs-php.name}")
scripts+=("${dmenu-custom-scripts-xdebug.name}")
scripts+=("${dmenu-custom-scripts-start-videorecording.name}")
scripts+=("${dmenu-custom-scripts-stop-videorecording.name}")
OIFS="$IFS" IFS=$'\n'
scriptsString="''${scripts[*]}"
IFS="$OIFS"
action=$(echo -e "$scriptsString" | dmenu -i -l 20)
case "$action" in
"${dmenu-custom-scripts-calc.name}")
bash "${dmenu-custom-scripts-calc}/bin/${dmenu-custom-scripts-calc.name}" || exit 0
;;
"${dmenu-custom-scripts-notifications.name}")
bash "${dmenu-custom-scripts-notifications}/bin/${dmenu-custom-scripts-notifications.name}" || exit 0
;;
"${dmenu-custom-scripts-system.name}")
bash "${dmenu-custom-scripts-system}/bin/${dmenu-custom-scripts-system.name}" || exit 0
;;
"${dmenu-custom-scripts-docs-php.name}")
bash "${dmenu-custom-scripts-docs-php}/bin/${dmenu-custom-scripts-docs-php.name}" || exit 0
;;
"${dmenu-custom-scripts-php-version.name}")
bash "${dmenu-custom-scripts-php-version}/bin/${dmenu-custom-scripts-php-version.name}" || exit 0
;;
"${dmenu-custom-scripts-xdebug.name}")
bash "${dmenu-custom-scripts-xdebug}/bin/${dmenu-custom-scripts-xdebug.name}" || exit 0
;;
"${dmenu-custom-scripts-start-videorecording.name}")
bash "${dmenu-custom-scripts-start-videorecording}/bin/${dmenu-custom-scripts-start-videorecording.name}" || exit 0
;;
"${dmenu-custom-scripts-stop-videorecording.name}")
bash "${dmenu-custom-scripts-stop-videorecording}/bin/${dmenu-custom-scripts-stop-videorecording.name}" || exit 0
;;
*)
exit 0
;;
esac
'';
};
}