Merge branch 'master' into stable

* master: (40 commits)
  Remove lazyvim extra configuration too
  Remove lang-specific lazyvim extras until we can make it work on first run
  Ask for default apps on terminal mode too (closes #308)
  Dont halt the original installer for this question
  Add Mainline Kernels as optional install
  Simplify the installer (closes #316)
  Fix indention
  We are already controlling the sleep settings in the overall installer
  Change brightness controls to require ctrl key
  Revert "refactor: replace apt-get with just apt"
  Warn about the potentially long installation time for Obsidian (#303)
  Remove the dev lang for elixir && erlang (I was getting an error)
  Wrap var in quotes
  Fix indentation
  Fix confirmation not setting booleans
  Make the LazyVIM plugins optional and add uninstall scripts for the dev langs and their lazyvim plugins
  Fix indention
  Include the Back button
  Use latest Ruby, just like every other dev environment
  Match "Open in Terminal"
  ...
This commit is contained in:
David Heinemeier Hansson
2025-03-04 14:53:03 +01:00
16 changed files with 260 additions and 126 deletions

View File

@@ -1,47 +1,49 @@
CHOICES=(
"Dev Language Install programming language environment"
"Dev Database Install development database in Docker"
"1password Manage your passwords securely across devices"
"Audacity Record and edit audio"
"Brave Chrome-based browser with built-in ad blocking"
"Cursor The AI Code Editor"
"Doom Emacs Emacs framework with curated list of packages"
"Dropbox Sync files across computers with ease"
"OBS Studio Record screencasts with inputs from both display + webcam"
"Ollama Run LLMs, like Meta's Llama3, locally"
"RubyMine IntelliJ's commercial Ruby editor"
"Spotify Stream music from the world's most popular service"
"Steam Play games from Valve's store"
"VirtualBox Virtual machines to run Windows/Linux"
"Zed Fast all-purpose editor"
"Zoom Attend and host video chat meetings"
"> All Re-run any of the default installers"
"<< Back "
"Dev Language Install programming language environment"
"Dev Database Install development database in Docker"
"1password Manage your passwords securely across devices"
"Audacity Record and edit audio"
"ASDControl Set brightness on Apple Studio and XDR displays via cli"
"Brave Chrome-based browser with built-in ad blocking"
"Cursor The AI Code Editor"
"Doom Emacs Emacs framework with curated list of packages"
"Dropbox Sync files across computers with ease"
"Mainline Kernels Install newer Linux kernels than Ubuntu defaults"
"OBS Studio Record screencasts with inputs from both display + webcam"
"Ollama Run LLMs, like Meta's Llama3, locally"
"RubyMine IntelliJ's commercial Ruby editor"
"Spotify Stream music from the world's most popular service"
"Steam Play games from Valve's store"
"VirtualBox Virtual machines to run Windows/Linux"
"Zed Fast all-purpose editor"
"Zoom Attend and host video chat meetings"
"> All Re-run any of the default installers"
"<< Back "
)
CHOICE=$(gum choose "${CHOICES[@]}" --height 19 --header "Install application")
CHOICE=$(gum choose "${CHOICES[@]}" --height 22 --header "Install application")
if [[ "$CHOICE" == "<< Back"* ]] || [[ -z "$CHOICE" ]]; then
# Don't install anything
echo ""
# Don't install anything
echo ""
elif [[ "$CHOICE" == "> All"* ]]; then
INSTALLER_FILE=$(gum file $OMAKUB_PATH/install)
INSTALLER_FILE=$(gum file $OMAKUB_PATH/install)
[[ -n "$INSTALLER_FILE" ]] &&
gum confirm "Run installer?" &&
source $INSTALLER_FILE &&
gum spin --spinner globe --title "Install completed!" -- sleep 3
[[ -n "$INSTALLER_FILE" ]] &&
gum confirm "Run installer?" &&
source $INSTALLER_FILE &&
gum spin --spinner globe --title "Install completed!" -- sleep 3
else
INSTALLER=$(echo "$CHOICE" | awk -F ' {2,}' '{print $1}' | tr '[:upper:]' '[:lower:]' | sed 's/ /-/g')
INSTALLER=$(echo "$CHOICE" | awk -F ' {2,}' '{print $1}' | tr '[:upper:]' '[:lower:]' | sed 's/ /-/g')
case "$INSTALLER" in
"dev-language") INSTALLER_FILE="$OMAKUB_PATH/install/terminal/select-dev-language.sh" ;;
"dev-database") INSTALLER_FILE="$OMAKUB_PATH/install/terminal/select-dev-storage.sh" ;;
"ollama") INSTALLER_FILE="$OMAKUB_PATH/install/terminal/optional/app-ollama.sh" ;;
*) INSTALLER_FILE="$OMAKUB_PATH/install/desktop/optional/app-$INSTALLER.sh" ;;
esac
case "$INSTALLER" in
"dev-language") INSTALLER_FILE="$OMAKUB_PATH/install/terminal/select-dev-language.sh" ;;
"dev-database") INSTALLER_FILE="$OMAKUB_PATH/install/terminal/select-dev-storage.sh" ;;
"ollama") INSTALLER_FILE="$OMAKUB_PATH/install/terminal/optional/app-ollama.sh" ;;
*) INSTALLER_FILE="$OMAKUB_PATH/install/desktop/optional/app-$INSTALLER.sh" ;;
esac
source $INSTALLER_FILE && gum spin --spinner globe --title "Install completed!" -- sleep 3
source $INSTALLER_FILE && gum spin --spinner globe --title "Install completed!" -- sleep 3
fi
clear

View File

@@ -1,34 +1,32 @@
# Exit immediately if a command exits with a non-zero status
set -e
# Desktop software and tweaks will only be installed if we're running Gnome
RUNNING_GNOME=$([[ "$XDG_CURRENT_DESKTOP" == *"GNOME"* ]] && echo true || echo false)
# Check the distribution name and version and abort if incompatible
source ~/.local/share/omakub/install/check-version.sh
if $RUNNING_GNOME; then
# Ask for app choices
echo "Get ready to make a few choices..."
source ~/.local/share/omakub/install/terminal/required/app-gum.sh >/dev/null
source ~/.local/share/omakub/install/first-run-choices.sh
# Desktop software and tweaks will only be installed if we're running Gnome
if [[ "$XDG_CURRENT_DESKTOP" == *"GNOME"* ]]; then
# Ensure computer doesn't go to sleep or lock while installing
gsettings set org.gnome.desktop.screensaver lock-enabled false
gsettings set org.gnome.desktop.session idle-delay 0
echo "Get ready to make a few choices..."
source ~/.local/share/omakub/install/terminal/required/app-gum.sh >/dev/null
source ~/.local/share/omakub/install/first-run-choices.sh
echo "Installing terminal and desktop tools..."
else
echo "Only installing terminal tools..."
fi
# Install terminal tools
source ~/.local/share/omakub/install/terminal.sh
# Install terminal tools
source ~/.local/share/omakub/install/terminal.sh
if $RUNNING_GNOME; then
# Install desktop tools and tweaks
source ~/.local/share/omakub/install/desktop.sh
# Revert to normal idle and lock settings
gsettings set org.gnome.desktop.screensaver lock-enabled true
gsettings set org.gnome.desktop.session idle-delay 300
else
echo "Only installing terminal tools..."
source ~/.local/share/omakub/install/terminal.sh
fi

View File

@@ -1,18 +1,18 @@
#!/bin/bash
if [ ! -f /etc/os-release ]; then
echo "$(tput setaf 1)Error: Unable to determine OS. /etc/os-release file not found."
echo "Installation stopped."
exit 1
echo "$(tput setaf 1)Error: Unable to determine OS. /etc/os-release file not found."
echo "Installation stopped."
exit 1
fi
. /etc/os-release
# Check if running on Ubuntu 24.04 or higher
if [ "$ID" != "ubuntu" ] || [ $(echo "$VERSION_ID >= 24.04" | bc) != 1 ]; then
echo "$(tput setaf 1)Error: OS requirement not met"
echo "You are currently running: $ID $VERSION_ID"
echo "OS required: Ubuntu 24.04 or higher"
echo "Installation stopped."
exit 1
echo "$(tput setaf 1)Error: OS requirement not met"
echo "You are currently running: $ID $VERSION_ID"
echo "OS required: Ubuntu 24.04 or higher"
echo "Installation stopped."
exit 1
fi

View File

@@ -1,13 +1,5 @@
# Ensure computer doesn't go to sleep or lock while installing
gsettings set org.gnome.desktop.screensaver lock-enabled false
gsettings set org.gnome.desktop.session idle-delay 0
# Run desktop installers
for installer in ~/.local/share/omakub/install/desktop/*.sh; do source $installer; done
# Revert to normal idle and lock settings
gsettings set org.gnome.desktop.screensaver lock-enabled true
gsettings set org.gnome.desktop.session idle-delay 300
# Logout to pickup changes
gum confirm "Ready to reboot for all settings to take effect?" && sudo reboot

View File

@@ -5,3 +5,75 @@ cp ~/.local/share/omakub/configs/alacritty.toml ~/.config/alacritty/alacritty.to
cp ~/.local/share/omakub/themes/tokyo-night/alacritty.toml ~/.config/alacritty/theme.toml
cp ~/.local/share/omakub/configs/alacritty/fonts/CaskaydiaMono.toml ~/.config/alacritty/font.toml
cp ~/.local/share/omakub/configs/alacritty/font-size.toml ~/.config/alacritty/font-size.toml
# Make alacritty default terminal emulator
sudo update-alternatives --set x-terminal-emulator /usr/bin/alacritty
# Adding alacritty to nautilus contextual menu requires the python wrapper for the libraries
sudo apt install -y python3-nautilus
mkdir -p ~/.local/share/nautilus-python/extensions/
cat > ~/.local/share/nautilus-python/extensions/open-alacritty.py <<TECHNICALLYNOTACONFIGSOHEREDOCCEDITIS
import os
from urllib.parse import unquote
from gi.repository import Nautilus, GObject
from typing import List
class OpenTerminalExtension(GObject.GObject, Nautilus.MenuProvider):
def _open_terminal(self, file: Nautilus.FileInfo) -> None:
filename = unquote(file.get_uri()[7:])
os.chdir(filename)
os.system("alacritty")
def menu_activate_cb(
self,
menu: Nautilus.MenuItem,
file: Nautilus.FileInfo,
) -> None:
self._open_terminal(file)
def menu_background_activate_cb(
self,
menu: Nautilus.MenuItem,
file: Nautilus.FileInfo,
) -> None:
self._open_terminal(file)
def get_file_items(
self,
files: List[Nautilus.FileInfo],
) -> List[Nautilus.MenuItem]:
if len(files) != 1:
return []
file = files[0]
if not file.is_directory() or file.get_uri_scheme() != "file":
return []
item = Nautilus.MenuItem(
name="NautilusPython::openterminal_file_item",
label="Open in Alacritty",
tip="Open Alacritty In %s" % file.get_name(),
)
item.connect("activate", self.menu_activate_cb, file)
return [
item,
]
def get_background_items(
self,
current_folder: Nautilus.FileInfo,
) -> List[Nautilus.MenuItem]:
item = Nautilus.MenuItem(
name="NautilusPython::openterminal_file_item2",
label="Open in Alacritty",
tip="Open Alacritty In %s" % current_folder.get_name(),
)
item.connect("activate", self.menu_background_activate_cb, current_folder)
return [
item,
]
TECHNICALLYNOTACONFIGSOHEREDOCCEDITIS

View File

@@ -1,2 +1,3 @@
# Obsidian is a multi-platform note taking application. See https://obsidian.md
gum spin --spinner meter --title "Obsidian installation about to start. It may take up to 20 minutes on some systems!" -- sleep 3
flatpak install -y flathub md.obsidian.Obsidian

View File

@@ -0,0 +1,15 @@
# Install asdcontrol
git clone https://github.com/nikosdion/asdcontrol.git /tmp/asdcontrol
cd /tmp/asdcontrol
make
sudo make install
cd -
rm -rf /tmp/asdcontrol
# Setup sudo-less controls
echo 'KERNEL=="hiddev*", ATTRS{idVendor}=="05ac", ATTRS{idProduct}=="9243", GROUP="users", OWNER="root", MODE="0660"' | sudo tee /etc/udev/rules.d/50-apple-xdr.rules >/dev/null
echo 'KERNEL=="hiddev*", ATTRS{idVendor}=="05ac", ATTRS{idProduct}=="1114", GROUP="users", OWNER="root", MODE="0660"' | sudo tee /etc/udev/rules.d/50-apple-studio.rules >/dev/null
sudo udevadm control --reload-rules
# Reboot to pickup changes
gum confirm "Ready to reboot for brightness controls to be available?" && sudo reboot

View File

@@ -37,11 +37,11 @@ gsettings set org.gnome.desktop.wm.keybindings switch-to-workspace-5 "['<Super>5
gsettings set org.gnome.desktop.wm.keybindings switch-to-workspace-6 "['<Super>6']"
# Reserve slots for custom keybindings
gsettings set org.gnome.settings-daemon.plugins.media-keys custom-keybindings "['/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom1/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom2/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom3/']"
gsettings set org.gnome.settings-daemon.plugins.media-keys custom-keybindings "['/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom1/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom2/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom3/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom4/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom5/']"
# Set ulauncher to Super+Space
gsettings set org.gnome.desktop.wm.keybindings switch-input-source "@as []"
gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/ name 'ulauncher-toggle'
gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/ name 'Ulauncher'
gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/ command 'ulauncher-toggle'
gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/ binding '<Super>space'
@@ -51,11 +51,21 @@ gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/or
gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom1/ binding '<Control>Print'
# Start a new alacritty window (rather than just switch to the already open one)
gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom2/ name 'alacritty'
gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom2/ name 'New Alacritty Window'
gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom2/ command 'alacritty'
gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom2/ binding '<Shift><Alt>2'
# Start a new Chrome window (rather than just switch to the already open one)
gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom3/ name 'new chrome'
gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom3/ name 'New Chrome Window'
gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom3/ command 'google-chrome'
gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom3/ binding '<Shift><Alt>1'
# Turn bightness down on Apple monitor (requires ASDControl installed)
gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom4/ name 'Apple Brightness Down (ASDControl)'
gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom4/ binding '<Control>F1'
gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom4/ command "sh -c 'asdcontrol \$(asdcontrol --detect /dev/usb/hiddev* 2>/dev/null | sed -n \"s|^\(/dev/usb/hiddev[0-9]*\):.*|\1|p\") -- -5000'"
# Turn bightness up on Apple monitor (requires ADSControl installed)
gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom5/ name 'Apple Brightness Up (ASDControl)'
gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom5/ binding '<Control>F2'
gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom5/ command "sh -c 'asdcontrol \$(asdcontrol --detect /dev/usb/hiddev* 2>/dev/null | sed -n \"s|^\(/dev/usb/hiddev[0-9]*\):.*|\1|p\") -- +5000'"

View File

@@ -1,6 +1,9 @@
OPTIONAL_APPS=("1password" "Spotify" "Zoom" "Dropbox")
DEFAULT_OPTIONAL_APPS='1password,Spotify,Zoom'
export OMAKUB_FIRST_RUN_OPTIONAL_APPS=$(gum choose "${OPTIONAL_APPS[@]}" --no-limit --selected $DEFAULT_OPTIONAL_APPS --height 7 --header "Select optional apps" | tr ' ' '-')
# Only ask for default desktop app choices when running Gnome
if [[ "$XDG_CURRENT_DESKTOP" == *"GNOME"* ]]; then
OPTIONAL_APPS=("1password" "Spotify" "Zoom" "Dropbox")
DEFAULT_OPTIONAL_APPS='1password,Spotify,Zoom'
export OMAKUB_FIRST_RUN_OPTIONAL_APPS=$(gum choose "${OPTIONAL_APPS[@]}" --no-limit --selected $DEFAULT_OPTIONAL_APPS --height 7 --header "Select optional apps" | tr ' ' '-')
fi
AVAILABLE_LANGUAGES=("Ruby on Rails" "Node.js" "Go" "PHP" "Python" "Elixir" "Rust" "Java")
SELECTED_LANGUAGES="Ruby on Rails","Node.js"

View File

@@ -7,26 +7,26 @@ sudo cp -R nvim-linux-x86_64/share /usr/local/
rm -rf nvim-linux-x86_64 nvim.tar.gz
cd -
# Install luarocks and tree-sitter-cli to resolve lazyvim :checkheatlh warnings
# Install luarocks and tree-sitter-cli to resolve lazyvim :checkhealth warnings
sudo apt install -y luarocks tree-sitter-cli
# Only attempt to set configuration if Neovim has never been run
if [ ! -d "$HOME/.config/nvim" ]; then
# Use LazyVim
git clone https://github.com/LazyVim/starter ~/.config/nvim
# Remove the .git folder, so you can add it to your own repo later
rm -rf ~/.config/nvim/.git
# Use LazyVim
git clone https://github.com/LazyVim/starter ~/.config/nvim
# Remove the .git folder, so you can add it to your own repo later
rm -rf ~/.config/nvim/.git
# Make everything match the terminal transparency
mkdir -p ~/.config/nvim/plugin/after
cp ~/.local/share/omakub/configs/neovim/transparency.lua ~/.config/nvim/plugin/after/
# Make everything match the terminal transparency
mkdir -p ~/.config/nvim/plugin/after
cp ~/.local/share/omakub/configs/neovim/transparency.lua ~/.config/nvim/plugin/after/
# Default to Tokyo Night theme
cp ~/.local/share/omakub/themes/tokyo-night/neovim.lua ~/.config/nvim/lua/plugins/theme.lua
# Default to Tokyo Night theme
cp ~/.local/share/omakub/themes/tokyo-night/neovim.lua ~/.config/nvim/lua/plugins/theme.lua
fi
# Replace desktop launcher with one running inside Alacritty
if [[ -d ~/.local/share/applications ]]; then
sudo rm -rf /usr/share/applications/nvim.desktop
source ~/.local/share/omakub/applications/Neovim.sh
sudo rm -rf /usr/share/applications/nvim.desktop
source ~/.local/share/omakub/applications/Neovim.sh
fi

View File

@@ -0,0 +1,3 @@
sudo add-apt-repository ppa:cappelikan/ppa
sudo apt update -y
sudo apt install -y mainline

View File

@@ -1,45 +1,45 @@
# Install default programming languages
if [[ -v OMAKUB_FIRST_RUN_LANGUAGES ]]; then
languages=$OMAKUB_FIRST_RUN_LANGUAGES
languages=$OMAKUB_FIRST_RUN_LANGUAGES
else
AVAILABLE_LANGUAGES=("Ruby on Rails" "Node.js" "Go" "PHP" "Python" "Elixir" "Rust" "Java")
languages=$(gum choose "${AVAILABLE_LANGUAGES[@]}" --no-limit --height 10 --header "Select programming languages")
AVAILABLE_LANGUAGES=("Ruby on Rails" "Node.js" "Go" "PHP" "Python" "Elixir" "Rust" "Java")
languages=$(gum choose "${AVAILABLE_LANGUAGES[@]}" --no-limit --height 10 --header "Select programming languages")
fi
if [[ -n "$languages" ]]; then
for language in $languages; do
case $language in
Ruby)
mise use --global ruby@3.4
mise x ruby -- gem install rails --no-document
;;
Node.js)
mise use --global node@lts
;;
Go)
mise use --global go@latest
;;
PHP)
sudo add-apt-repository -y ppa:ondrej/php
sudo apt -y install php8.4 php8.4-{curl,apcu,intl,mbstring,opcache,pgsql,mysql,sqlite3,redis,xml,zip}
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php composer-setup.php --quiet && sudo mv composer.phar /usr/local/bin/composer
rm composer-setup.php
;;
Python)
mise use --global python@latest
;;
Elixir)
mise use --global erlang@latest
mise use --global elixir@latest
mise x elixir -- mix local.hex --force
;;
Rust)
bash -c "$(curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs)" -- -y
;;
Java)
mise use --global java@latest
;;
esac
done
for language in $languages; do
case $language in
Ruby)
mise use --global ruby@latest
mise x ruby -- gem install rails --no-document
;;
Node.js)
mise use --global node@lts
;;
Go)
mise use --global go@latest
;;
PHP)
sudo add-apt-repository -y ppa:ondrej/php
sudo apt -y install php8.4 php8.4-{curl,apcu,intl,mbstring,opcache,pgsql,mysql,sqlite3,redis,xml,zip}
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php composer-setup.php --quiet && sudo mv composer.phar /usr/local/bin/composer
rm composer-setup.php
;;
Python)
mise use --global python@latest
;;
Elixir)
mise use --global erlang@latest
mise use --global elixir@latest
mise x elixir -- mix local.hex --force
;;
Rust)
bash -c "$(curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs)" -- -y
;;
Java)
mise use --global java@latest
;;
esac
done
fi

View File

@@ -0,0 +1 @@
sudo apt remove -y mainline

42
uninstall/dev-language.sh Normal file
View File

@@ -0,0 +1,42 @@
# Uninstall default programming languages
if [[ -v OMAKUB_FIRST_RUN_LANGUAGES ]]; then
languages=$OMAKUB_FIRST_RUN_LANGUAGES
else
AVAILABLE_LANGUAGES=("Ruby on Rails" "Node.js" "Go" "PHP" "Python" "Elixir" "Rust" "Java")
languages=$(gum choose "${AVAILABLE_LANGUAGES[@]}" --no-limit --height 10 --header "Select programming languages to uninstall")
fi
if [[ -n $languages ]]; then
for language in $languages; do
case $language in
Ruby)
mise uninstall ruby@3.4
mise x ruby -- gem uninstall rails
;;
Node.js)
mise uninstall node@lts
;;
Go)
mise uninstall go@latest
;;
PHP)
sudo apt -y purge php8.4 php8.4-{curl,apcu,intl,mbstring,opcache,pgsql,mysql,sqlite3,redis,xml,zip}
sudo add-apt-repository -y --remove ppa:ondrej/php
sudo rm /usr/local/bin/composer
;;
Python)
mise uninstall python@latest
;;
Elixir)
mise uninstall elixir@latest
mise uninstall erlang@latest
;;
Rust)
rustup self uninstall -y
;;
Java)
mise uninnstall java@latest
;;
esac
done
fi

View File

@@ -1,4 +0,0 @@
sudo apt -y purge "php8.3*"
sudo add-apt-repository -y --remove ppa:ondrej/php
sudo rm /usr/local/bin/composer

View File

@@ -1 +0,0 @@
rustup self uninstall -y