write Shell Applications using nix
This commit is contained in:
parent
d872814891
commit
4660468bd0
13 changed files with 185 additions and 165 deletions
|
@ -1,2 +0,0 @@
|
||||||
#!/usr/bin/env zsh
|
|
||||||
curl -s "cheat.sh/$1" | bat
|
|
122
bin/cproton.sh
122
bin/cproton.sh
|
@ -1,122 +0,0 @@
|
||||||
#!/usr/bin/env bash
|
|
||||||
baseuri="https://github.com/GloriousEggroll/proton-ge-custom/releases/download"
|
|
||||||
latesturi="https://api.github.com/repos/GloriousEggroll/proton-ge-custom/releases/latest"
|
|
||||||
parameter="${1}"
|
|
||||||
installComplete=false;
|
|
||||||
dstpath="$HOME/.steam/root/compatibilitytools.d" #### Destinationforlder of the Proton installations
|
|
||||||
restartSteam=2
|
|
||||||
autoInstall=false
|
|
||||||
#### Set restartSteam=0 to not restart steam after installing Proton (Keep process untouched)
|
|
||||||
#### Set restartSteam=1 to autorestart steam after installing Proton
|
|
||||||
#### Set restartSteam=2 to to get a y/n prompt asking if you want to restart Steam after each installation.
|
|
||||||
|
|
||||||
#### Set autoInstall=true to skip the installation prompt and install the latest not-installed, or any forced Proton GE builds
|
|
||||||
#### Set autoInstall=false to display a installation-confirmation prompt when installing a Proton GE build
|
|
||||||
|
|
||||||
# ########################################## CProton - Custom Proton Installscript 0.2.2 ##########################################
|
|
||||||
# Disclaimer: Subversions like the MCC versions of Proton 4.21-GE-1, will install as it's main version and not install separately.
|
|
||||||
# For now, this may result in false "not installed"-detections or errors while force installing a specific subversion.
|
|
||||||
|
|
||||||
PrintReleases() {
|
|
||||||
echo "----------Description----------"
|
|
||||||
echo ""
|
|
||||||
echo "Run './cproton.sh [VersionName]'"
|
|
||||||
echo "to download specific versions."
|
|
||||||
echo ""
|
|
||||||
echo "------------Releases------------"
|
|
||||||
curl -s https://api.github.com/repos/GloriousEggroll/proton-ge-custom/releases | grep -H "tag_name" | cut -d \" -f4
|
|
||||||
echo "--------------------------------"
|
|
||||||
}
|
|
||||||
|
|
||||||
InstallProtonGE() {
|
|
||||||
rsp="$(curl -sI "$url" | head -1)"
|
|
||||||
echo "$rsp" | grep -q 302 || {
|
|
||||||
echo "$rsp"
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
|
|
||||||
[ -d "$dstpath" ] || {
|
|
||||||
mkdir "$dstpath"
|
|
||||||
echo [Info] Created "$dstpath"
|
|
||||||
}
|
|
||||||
curl -sL "$url" > $dstpath/Proton-"$version".tar.gz # Download archive first
|
|
||||||
if [ ! -z "$sha512url" ]; then # If there is no sha512 the sha512url is empty
|
|
||||||
if [ $(sha512sum $dstpath/Proton-"$version".tar.gz | cut -b -128) == $((curl -sL $sha512url)| cut -b -128) ]; then # Only the first 128 bytes are significant
|
|
||||||
tar xfzv $dstpath/Proton-"$version".tar.gz -C "$dstpath"
|
|
||||||
installComplete=true
|
|
||||||
else
|
|
||||||
echo "sha512sum did not match! Stopping installation."
|
|
||||||
installComplete=false
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
tar xfzv $dstpath/Proton-"$version".tar.gz -C "$dstpath"
|
|
||||||
installComplete=true
|
|
||||||
fi
|
|
||||||
rm $dstpath/Proton-"$version".tar.gz
|
|
||||||
}
|
|
||||||
|
|
||||||
RestartSteam() {
|
|
||||||
if [ "$( pgrep steam )" != "" ]; then
|
|
||||||
echo "Restarting Steam"
|
|
||||||
pkill -TERM steam #restarting Steam
|
|
||||||
sleep 5s
|
|
||||||
nohup steam </dev/null &>/dev/null &
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
RestartSteamCheck() {
|
|
||||||
if [ "$( pgrep steam )" != "" ] && [ "$installComplete" = true ]; then
|
|
||||||
if [ $restartSteam == 2 ]; then
|
|
||||||
read -r -p "Do you want to restart Steam? <y/N> " prompt
|
|
||||||
if [[ $prompt == "y" || $prompt == "Y" || $prompt == "yes" || $prompt == "Yes" ]]; then
|
|
||||||
RestartSteam
|
|
||||||
else
|
|
||||||
exit 2
|
|
||||||
fi
|
|
||||||
elif [ $restartSteam == 0 ]; then
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
RestartSteam
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
InstallationPrompt() {
|
|
||||||
if [ "$autoInstall" = true ]; then
|
|
||||||
if [ ! -d "$dstpath"/Proton-"$version" ]; then
|
|
||||||
InstallProtonGE
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
read -r -p "Do you want to try to download and (re)install this release? <y/N> " prompt
|
|
||||||
if [[ $prompt == "y" || $prompt == "Y" || $prompt == "yes" || $prompt == "Yes" ]]; then
|
|
||||||
InstallProtonGE
|
|
||||||
else
|
|
||||||
echo "Operation canceled"
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
if [ -z "$parameter" ]; then
|
|
||||||
version="$(curl -s $latesturi | grep -E -m1 "tag_name" | cut -d \" -f4)"
|
|
||||||
url=$(curl -s $latesturi | grep -E -m1 "browser_download_url.*.tar.gz" | cut -d \" -f4)
|
|
||||||
sha512url=$(curl -s $latesturi | grep -E -m1 "browser_download_url.*.sha512sum" | cut -d \" -f4)
|
|
||||||
if [ -d "$dstpath"/Proton-"$version" ]; then
|
|
||||||
echo "Proton $version is the latest version and is already installed."
|
|
||||||
else
|
|
||||||
echo "Proton $version is the latest version and is not installed yet."
|
|
||||||
fi
|
|
||||||
elif [ "$parameter" == "-l" ]; then
|
|
||||||
PrintReleases
|
|
||||||
else
|
|
||||||
url=$baseuri/"$parameter"/Proton-"$parameter".tar.gz
|
|
||||||
if [ -d "$dstpath"/Proton-"$parameter" ]; then
|
|
||||||
echo "Proton $parameter is already installed."
|
|
||||||
else
|
|
||||||
echo "Proton $parameter is not installed yet."
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ ! "$parameter" == "-l" ]; then
|
|
||||||
InstallationPrompt
|
|
||||||
RestartSteamCheck
|
|
||||||
fi
|
|
|
@ -1,19 +0,0 @@
|
||||||
#!/usr/bin/env nix-shell
|
|
||||||
#! nix-shell -p pulseaudio -i bash
|
|
||||||
|
|
||||||
# get the default sink
|
|
||||||
default_sink="$(pactl info | grep -e "Default Sink:" | awk '{print $3}')"
|
|
||||||
echo "current default: $default_sink"
|
|
||||||
|
|
||||||
# get the sinks
|
|
||||||
sinks="$(pactl list sinks short | awk '{print $2}')"
|
|
||||||
|
|
||||||
# filter out the default sink
|
|
||||||
not_active="$(echo "$sinks" | grep -v -e "$default_sink")"
|
|
||||||
|
|
||||||
# get the sink after the dafault one
|
|
||||||
next_sink="$(echo -e "$sinks\n$not_active" | grep -e "$default_sink" -A 1 | tail -n 1 )"
|
|
||||||
|
|
||||||
# set the new default-sink
|
|
||||||
pactl set-default-sink "$next_sink"
|
|
||||||
echo "new default: $next_sink"
|
|
9
bin/sup
9
bin/sup
|
@ -1,9 +0,0 @@
|
||||||
#!/usr/bin/env bash
|
|
||||||
pushd ~/.dotfiles
|
|
||||||
if [[ $1 =~ (update) ]]; then
|
|
||||||
sudo nixos-rebuild switch --flake .# --recreate-lock-file
|
|
||||||
fi
|
|
||||||
if [[ $1 =~ (apply) ]]; then
|
|
||||||
sudo nixos-rebuild switch --flake .#
|
|
||||||
fi
|
|
||||||
popd
|
|
|
@ -1,5 +0,0 @@
|
||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
awk '/^[a-z]/ && last {print "<small>",$0,"\t",last,"</small>"} {last=""} /^#/{last=$0}' ~/.config/sxhkd/sxhkdrc |
|
|
||||||
column -t -s $'\t' |
|
|
||||||
rofi -dmenu -i -markup-rows -no-show-icons -width 1000 -lines 15 -yoffset 40
|
|
9
modules/cli/bin/cheat.nix
Normal file
9
modules/cli/bin/cheat.nix
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
{ pkgs }:
|
||||||
|
|
||||||
|
pkgs.writeShellApplication {
|
||||||
|
name = "cheat";
|
||||||
|
|
||||||
|
runtimeInputs = with pkgs; [ curl bat ];
|
||||||
|
|
||||||
|
text = ''curl -s "cheat.sh/$1" | bat'';
|
||||||
|
}
|
25
modules/cli/bin/cycleSinks.nix
Normal file
25
modules/cli/bin/cycleSinks.nix
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
{ pkgs }:
|
||||||
|
|
||||||
|
pkgs.writeShellApplication {
|
||||||
|
name = "cycle_sinks";
|
||||||
|
|
||||||
|
runtimeInputs = with pkgs; [ pulseaudio ];
|
||||||
|
text = ''
|
||||||
|
# get the default sink
|
||||||
|
default_sink="$(pactl info | grep -e "Default Sink:" | awk '{print $3}')"
|
||||||
|
echo "current default: $default_sink"
|
||||||
|
|
||||||
|
# get the sinks
|
||||||
|
sinks="$(pactl list sinks short | awk '{print $2}')"
|
||||||
|
|
||||||
|
# filter out the default sink
|
||||||
|
not_active="$(echo "$sinks" | grep -v -e "$default_sink")"
|
||||||
|
|
||||||
|
# get the sink after the dafault one
|
||||||
|
next_sink="$(echo -e "$sinks\n$not_active" | grep -e "$default_sink" -A 1 | tail -n 1 )"
|
||||||
|
|
||||||
|
# set the new default-sink
|
||||||
|
pactl set-default-sink "$next_sink"
|
||||||
|
echo "new default: $next_sink"
|
||||||
|
'';
|
||||||
|
}
|
11
modules/cli/bin/default.nix
Normal file
11
modules/cli/bin/default.nix
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
cheat = import ./cheat.nix { inherit pkgs; };
|
||||||
|
cycleSinks = import ./cycleSinks.nix { inherit pkgs; };
|
||||||
|
protonge = import ./protonge.nix { inherit pkgs; };
|
||||||
|
sxhkdHelp = import ./sxhkdHelp.nix { inherit pkgs; };
|
||||||
|
in {
|
||||||
|
home-manager.users.moritz.home.packages =
|
||||||
|
[ cycleSinks cheat sxhkdHelp protonge ];
|
||||||
|
}
|
127
modules/cli/bin/protonge.nix
Normal file
127
modules/cli/bin/protonge.nix
Normal file
|
@ -0,0 +1,127 @@
|
||||||
|
{ pkgs }:
|
||||||
|
|
||||||
|
pkgs.writeShellApplication {
|
||||||
|
name = "protonge";
|
||||||
|
runtimeInputs = with pkgs; [ curl ];
|
||||||
|
text = ''
|
||||||
|
baseuri="https://github.com/GloriousEggroll/proton-ge-custom/releases/download"
|
||||||
|
latesturi="https://api.github.com/repos/GloriousEggroll/proton-ge-custom/releases/latest"
|
||||||
|
installComplete=false;
|
||||||
|
dstpath="$HOME/.steam/root/compatibilitytools.d" #### Destinationforlder of the Proton installations
|
||||||
|
restartSteam=2
|
||||||
|
autoInstall=false
|
||||||
|
#### Set restartSteam=0 to not restart steam after installing Proton (Keep process untouched)
|
||||||
|
#### Set restartSteam=1 to autorestart steam after installing Proton
|
||||||
|
#### Set restartSteam=2 to to get a y/n prompt asking if you want to restart Steam after each installation.
|
||||||
|
|
||||||
|
#### Set autoInstall=true to skip the installation prompt and install the latest not-installed, or any forced Proton GE builds
|
||||||
|
#### Set autoInstall=false to display a installation-confirmation prompt when installing a Proton GE build
|
||||||
|
|
||||||
|
# ########################################## CProton - Custom Proton Installscript 0.2.2 ##########################################
|
||||||
|
# Disclaimer: Subversions like the MCC versions of Proton 4.21-GE-1, will install as it's main version and not install separately.
|
||||||
|
# For now, this may result in false "not installed"-detections or errors while force installing a specific subversion.
|
||||||
|
|
||||||
|
PrintReleases() {
|
||||||
|
echo "----------Description----------"
|
||||||
|
echo ""
|
||||||
|
echo "Run './cproton.sh [VersionName]'"
|
||||||
|
echo "to download specific versions."
|
||||||
|
echo ""
|
||||||
|
echo "------------Releases------------"
|
||||||
|
curl -s https://api.github.com/repos/GloriousEggroll/proton-ge-custom/releases | grep -H "tag_name" | cut -d \" -f4
|
||||||
|
echo "--------------------------------"
|
||||||
|
}
|
||||||
|
|
||||||
|
InstallProtonGE() {
|
||||||
|
rsp="$(curl -sI "$url" | head -1)"
|
||||||
|
echo "$rsp" | grep -q 302 || {
|
||||||
|
echo "$rsp"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
[ -d "$dstpath" ] || {
|
||||||
|
mkdir "$dstpath"
|
||||||
|
echo [Info] Created "$dstpath"
|
||||||
|
}
|
||||||
|
curl -sL "$url" > "$dstpath/Proton-$version.tar.gz" # Download archive first
|
||||||
|
if [ -n "$sha512url" ]; then # If there is no sha512 the sha512url is empty
|
||||||
|
if [ "$(sha512sum "$dstpath/Proton-$version.tar.gz" | cut -b -128)" == "$(curl -sL "$sha512url"| cut -b -128)" ]; then # Only the first 128 bytes are significant
|
||||||
|
tar xfzv "$dstpath/Proton-$version.tar.gz" -C "$dstpath"
|
||||||
|
installComplete=true
|
||||||
|
else
|
||||||
|
echo "sha512sum did not match! Stopping installation."
|
||||||
|
installComplete=false
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
tar xfzv "$dstpath/Proton-$version.tar.gz" -C "$dstpath"
|
||||||
|
installComplete=true
|
||||||
|
fi
|
||||||
|
rm "$dstpath/Proton-$version.tar.gz"
|
||||||
|
}
|
||||||
|
|
||||||
|
RestartSteam() {
|
||||||
|
if [ "$( pgrep steam )" != "" ]; then
|
||||||
|
echo "Restarting Steam"
|
||||||
|
pkill -TERM steam #restarting Steam
|
||||||
|
sleep 5s
|
||||||
|
nohup steam </dev/null &>/dev/null &
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
RestartSteamCheck() {
|
||||||
|
if [ "$( pgrep steam )" != "" ] && [ "$installComplete" = true ]; then
|
||||||
|
if [ $restartSteam == 2 ]; then
|
||||||
|
read -r -p "Do you want to restart Steam? <y/N> " prompt
|
||||||
|
if [[ $prompt == "y" || $prompt == "Y" || $prompt == "yes" || $prompt == "Yes" ]]; then
|
||||||
|
RestartSteam
|
||||||
|
else
|
||||||
|
exit 2
|
||||||
|
fi
|
||||||
|
elif [ $restartSteam == 0 ]; then
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
RestartSteam
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
InstallationPrompt() {
|
||||||
|
if [ "$autoInstall" = true ]; then
|
||||||
|
if [ ! -d "$dstpath"/Proton-"$version" ]; then
|
||||||
|
InstallProtonGE
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
read -r -p "Do you want to try to download and (re)install this release? <y/N> " prompt
|
||||||
|
if [[ $prompt == "y" || $prompt == "Y" || $prompt == "yes" || $prompt == "Yes" ]]; then
|
||||||
|
InstallProtonGE
|
||||||
|
else
|
||||||
|
echo "Operation canceled"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
if [[ $# -eq 0 ]]; then
|
||||||
|
version="$(curl -s $latesturi | grep -E -m1 "tag_name" | cut -d \" -f4)"
|
||||||
|
url=$(curl -s $latesturi | grep -E -m1 "browser_download_url.*.tar.gz" | cut -d \" -f4)
|
||||||
|
sha512url=$(curl -s $latesturi | grep -E -m1 "browser_download_url.*.sha512sum" | cut -d \" -f4)
|
||||||
|
if [ -d "$dstpath"/Proton-"$version" ]; then
|
||||||
|
echo "Proton $version is the latest version and is already installed."
|
||||||
|
else
|
||||||
|
echo "Proton $version is the latest version and is not installed yet."
|
||||||
|
fi
|
||||||
|
InstallationPrompt
|
||||||
|
RestartSteamCheck
|
||||||
|
elif [ "''${1}" == "-l" ]; then
|
||||||
|
PrintReleases
|
||||||
|
else
|
||||||
|
url=$baseuri/"''${1}"/Proton-"''${1}".tar.gz
|
||||||
|
if [ -d "$dstpath"/Proton-"''${1}" ]; then
|
||||||
|
echo "Proton ''${1} is already installed."
|
||||||
|
else
|
||||||
|
echo "Proton ''${1} is not installed yet."
|
||||||
|
fi
|
||||||
|
InstallationPrompt
|
||||||
|
RestartSteamCheck
|
||||||
|
fi
|
||||||
|
'';
|
||||||
|
}
|
11
modules/cli/bin/sxhkdHelp.nix
Normal file
11
modules/cli/bin/sxhkdHelp.nix
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
{ pkgs }:
|
||||||
|
|
||||||
|
pkgs.writeShellApplication {
|
||||||
|
name = "sxhkd-help";
|
||||||
|
runtimeInputs = with pkgs; [ rofi ];
|
||||||
|
text = ''
|
||||||
|
awk '/^[a-z]/ && last {print "<small>",$0,"\t",last,"</small>"} {last=""} /^#/{last=$0}' ~/.config/sxhkd/sxhkdrc |
|
||||||
|
column -t -s $'\t' |
|
||||||
|
rofi -dmenu -i -markup-rows -no-show-icons -width 1000 -lines 15 -yoffset 40
|
||||||
|
'';
|
||||||
|
}
|
|
@ -1,7 +1,7 @@
|
||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
{
|
{
|
||||||
imports = [ ./adb.nix ./direnv.nix ./git.nix ./nix.nix ./zsh.nix ];
|
imports = [ ./bin ./adb.nix ./direnv.nix ./git.nix ./nix.nix ./zsh.nix ];
|
||||||
home-manager.users.moritz = {
|
home-manager.users.moritz = {
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
# archives
|
# archives
|
||||||
|
|
|
@ -32,12 +32,6 @@
|
||||||
home.username = "moritz";
|
home.username = "moritz";
|
||||||
home.homeDirectory = "/home/moritz";
|
home.homeDirectory = "/home/moritz";
|
||||||
|
|
||||||
home.sessionPath = [ "/home/moritz/bin" ];
|
|
||||||
home.file."bin" = {
|
|
||||||
recursive = true;
|
|
||||||
source = ../bin;
|
|
||||||
};
|
|
||||||
|
|
||||||
xdg.userDirs = {
|
xdg.userDirs = {
|
||||||
enable = true;
|
enable = true;
|
||||||
createDirectories = true;
|
createDirectories = true;
|
||||||
|
|
|
@ -94,7 +94,7 @@ super + c
|
||||||
|
|
||||||
# Show help
|
# Show help
|
||||||
super + h
|
super + h
|
||||||
~/bin/sxhkd-help
|
sxhkd-help
|
||||||
|
|
||||||
# Apps
|
# Apps
|
||||||
# start firefox
|
# start firefox
|
||||||
|
|
Loading…
Reference in a new issue