From 494becb0387f79bed0f3bdb304a119a232295e8c Mon Sep 17 00:00:00 2001 From: Tony Messias Date: Sun, 8 Sep 2024 22:30:52 -0300 Subject: [PATCH 01/40] Remove the lazyvim.json config --- configs/neovim/lazyvim.json | 4 ---- install/terminal/app-neovim.sh | 2 -- 2 files changed, 6 deletions(-) delete mode 100644 configs/neovim/lazyvim.json diff --git a/configs/neovim/lazyvim.json b/configs/neovim/lazyvim.json deleted file mode 100644 index eaa6749..0000000 --- a/configs/neovim/lazyvim.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "extras": [ "lazyvim.plugins.extras.lang.go" ], - "version": 6 -} diff --git a/install/terminal/app-neovim.sh b/install/terminal/app-neovim.sh index a5ea1a4..6a399a0 100644 --- a/install/terminal/app-neovim.sh +++ b/install/terminal/app-neovim.sh @@ -22,8 +22,6 @@ if [ ! -d "$HOME/.config/nvim" ]; then # Default to Tokyo Night theme cp ~/.local/share/omakub/themes/tokyo-night/neovim.lua ~/.config/nvim/lua/plugins/theme.lua - # Enable default extras - cp ~/.local/share/omakub/configs/neovim/lazyvim.json ~/.config/nvim/lazyvim.json fi # Replace desktop launcher with one running inside Alacritty From 46859d8d2b893e4bb22d2865f7dc26a4cc14a61f Mon Sep 17 00:00:00 2001 From: Tony Messias Date: Sun, 8 Sep 2024 22:31:01 -0300 Subject: [PATCH 02/40] Enable lazyvim extras based on the language --- install/terminal/select-dev-language.sh | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/install/terminal/select-dev-language.sh b/install/terminal/select-dev-language.sh index 08c5ee8..2fc8716 100644 --- a/install/terminal/select-dev-language.sh +++ b/install/terminal/select-dev-language.sh @@ -6,6 +6,16 @@ else languages=$(gum choose "${AVAILABLE_LANGUAGES[@]}" --no-limit --height 10 --header "Select programming languages") fi +enable_lazyvim_extras() { + local temp_file=$(mktemp /tmp/omakub.XXXXX) + local extras=("$@") + local jq_extras=$(printf '"%s",' "${extras[@]}") + jq_extras="[${jq_extras%,}]" + + jq --argjson extras "$jq_extras" '.extras |= (. + $extras | unique)' ~/.config/nvim/lazyvim.json >"$temp_file" && + mv "$temp_file" ~/.config/nvim/lazyvim.json +} + if [[ -n "$languages" ]]; then for language in $languages; do case $language in @@ -15,9 +25,13 @@ if [[ -n "$languages" ]]; then ;; Node.js) mise use --global node@lts + + enable_lazyvim_extras "lazyvim.plugins.extras.lang.typescript" ;; Go) mise use --global go@latest + + enable_lazyvim_extras "lazyvim.plugins.extras.lang.go" ;; PHP) sudo add-apt-repository -y ppa:ondrej/php @@ -25,6 +39,8 @@ if [[ -n "$languages" ]]; then 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 + + enable_lazyvim_extras "lazyvim.plugins.extras.lang.php" "lazyvim.plugins.extras.lang.typescript" ;; Python) mise use --global python@latest From 8b4102521aed1ed6910aa2605ac38dce7be140af Mon Sep 17 00:00:00 2001 From: Tony Messias Date: Fri, 25 Oct 2024 12:37:19 -0300 Subject: [PATCH 03/40] Remove TypeScript extras plugin when install PHP --- install/terminal/select-dev-language.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/terminal/select-dev-language.sh b/install/terminal/select-dev-language.sh index 2fc8716..319ab9c 100644 --- a/install/terminal/select-dev-language.sh +++ b/install/terminal/select-dev-language.sh @@ -40,7 +40,7 @@ if [[ -n "$languages" ]]; then php composer-setup.php --quiet && sudo mv composer.phar /usr/local/bin/composer rm composer-setup.php - enable_lazyvim_extras "lazyvim.plugins.extras.lang.php" "lazyvim.plugins.extras.lang.typescript" + enable_lazyvim_extras "lazyvim.plugins.extras.lang.php" ;; Python) mise use --global python@latest From b78a3c04586957ba622e94e4cdd3a6da764cdde8 Mon Sep 17 00:00:00 2001 From: han Date: Tue, 21 Jan 2025 21:59:57 +0700 Subject: [PATCH 04/40] Resolved the lazyvim checkhealth warnings for luarocks and tree-sitter --- install/terminal/app-neovim.sh | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/install/terminal/app-neovim.sh b/install/terminal/app-neovim.sh index 0ccebfe..368bd1e 100644 --- a/install/terminal/app-neovim.sh +++ b/install/terminal/app-neovim.sh @@ -7,26 +7,29 @@ sudo cp -R nvim-linux64/share /usr/local/ rm -rf nvim-linux64 nvim.tar.gz cd - +# Install luarocks and tree-sitter-cli to resolve lazyvim :checkheatlh 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 - # Enable default extras - cp ~/.local/share/omakub/configs/neovim/lazyvim.json ~/.config/nvim/lazyvim.json + # Enable default extras + cp ~/.local/share/omakub/configs/neovim/lazyvim.json ~/.config/nvim/lazyvim.json 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 From 30bde14bbb749e6a23db2e7500066c4e8d212e58 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Wed, 5 Feb 2025 09:34:34 +0100 Subject: [PATCH 05/40] Add greeting, arm, blowing emojis --- defaults/xcompose | 3 +++ 1 file changed, 3 insertions(+) diff --git a/defaults/xcompose b/defaults/xcompose index 24a6b72..116d75d 100644 --- a/defaults/xcompose +++ b/defaults/xcompose @@ -20,3 +20,6 @@ include "%L"

: "🙏" # pray : "😉" # wink : "👌" # OK + : "👋" # greeting + : "💪" # arm + : "🤯" # blowing From a3d99027282debd90315e680bdbfe7389ddc3691 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Wed, 5 Feb 2025 09:41:04 +0100 Subject: [PATCH 06/40] Add migration for new emojis --- migrations/1738744474.sh | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 migrations/1738744474.sh diff --git a/migrations/1738744474.sh b/migrations/1738744474.sh new file mode 100644 index 0000000..0f1847c --- /dev/null +++ b/migrations/1738744474.sh @@ -0,0 +1,3 @@ +# Local XCompose must change for included files to be picked up by ibus +sed -i '1i # Touched to update for Omakub defaults [5/2/2025]' ~/.XCompose +ibus restart From d77d719d15318c82ac26582b29f789287f3d6e16 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Wed, 5 Feb 2025 09:49:20 +0100 Subject: [PATCH 07/40] Prepare for 1.1.7 release --- version | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version b/version index 0664a8f..2bf1ca5 100644 --- a/version +++ b/version @@ -1 +1 @@ -1.1.6 +1.1.7 From 84f9e4a3a48c060a1eeeabf0d01327361f8ca661 Mon Sep 17 00:00:00 2001 From: Tony Messias Date: Wed, 5 Feb 2025 11:35:13 -0300 Subject: [PATCH 08/40] Rename variables --- install/terminal/select-dev-language.sh | 99 +++++++++++++------------ 1 file changed, 52 insertions(+), 47 deletions(-) diff --git a/install/terminal/select-dev-language.sh b/install/terminal/select-dev-language.sh index 319ab9c..5d48f41 100644 --- a/install/terminal/select-dev-language.sh +++ b/install/terminal/select-dev-language.sh @@ -1,61 +1,66 @@ # 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 enable_lazyvim_extras() { - local temp_file=$(mktemp /tmp/omakub.XXXXX) - local extras=("$@") - local jq_extras=$(printf '"%s",' "${extras[@]}") - jq_extras="[${jq_extras%,}]" + local config_file="$HOME/.config/nvim/lazyvim.json" + local extras=("$@") - jq --argjson extras "$jq_extras" '.extras |= (. + $extras | unique)' ~/.config/nvim/lazyvim.json >"$temp_file" && - mv "$temp_file" ~/.config/nvim/lazyvim.json + local tmp_file + tmp_file=$(mktemp /tmp/omakub.XXXXX) + + local extras_json + extras_json=$(printf '"%s",' "${extras[@]}") + extras_json="[${extras_json%,}]" + + jq --argjson extras "$extras_json" '.extras |= (. + $extras | unique)' "$config_file" >"$tmp_file" + mv "$tmp_file" "$config_file" } if [[ -n "$languages" ]]; then - for language in $languages; do - case $language in - Ruby) - mise use --global ruby@3.3 - mise x ruby -- gem install rails --no-document - ;; - Node.js) - mise use --global node@lts + for language in $languages; do + case $language in + Ruby) + mise use --global ruby@3.3 + mise x ruby -- gem install rails --no-document + ;; + Node.js) + mise use --global node@lts - enable_lazyvim_extras "lazyvim.plugins.extras.lang.typescript" - ;; - Go) - mise use --global go@latest + enable_lazyvim_extras "lazyvim.plugins.extras.lang.typescript" + ;; + Go) + mise use --global go@latest - enable_lazyvim_extras "lazyvim.plugins.extras.lang.go" - ;; - PHP) - sudo add-apt-repository -y ppa:ondrej/php - sudo apt -y install php8.3 php8.3-{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 + enable_lazyvim_extras "lazyvim.plugins.extras.lang.go" + ;; + PHP) + sudo add-apt-repository -y ppa:ondrej/php + sudo apt -y install php8.3 php8.3-{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 - enable_lazyvim_extras "lazyvim.plugins.extras.lang.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 + enable_lazyvim_extras "lazyvim.plugins.extras.lang.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 From 6ba5e0b919700b192b647a556ee96abd592b1475 Mon Sep 17 00:00:00 2001 From: Tony Messias Date: Wed, 5 Feb 2025 11:52:49 -0300 Subject: [PATCH 09/40] Use a in-place file editing trick instead of relying on a tmp file --- install/terminal/select-dev-language.sh | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/install/terminal/select-dev-language.sh b/install/terminal/select-dev-language.sh index 5d48f41..7750c18 100644 --- a/install/terminal/select-dev-language.sh +++ b/install/terminal/select-dev-language.sh @@ -10,15 +10,12 @@ enable_lazyvim_extras() { local config_file="$HOME/.config/nvim/lazyvim.json" local extras=("$@") - local tmp_file - tmp_file=$(mktemp /tmp/omakub.XXXXX) - local extras_json extras_json=$(printf '"%s",' "${extras[@]}") extras_json="[${extras_json%,}]" - jq --argjson extras "$extras_json" '.extras |= (. + $extras | unique)' "$config_file" >"$tmp_file" - mv "$tmp_file" "$config_file" + # This is cheating to mimic an in-place editing of files (without a tmp file)... + { rm "$config_file" && jq --argjson extras "$extras_json" '.extras |= (. + $extras | unique)' >"$config_file" } <"$config_file" } if [[ -n "$languages" ]]; then From 47f627e5fd104307ca83099d68cdd65d36b60508 Mon Sep 17 00:00:00 2001 From: Tony Messias Date: Wed, 5 Feb 2025 12:02:00 -0300 Subject: [PATCH 10/40] Fix missing a semicolon --- install/terminal/select-dev-language.sh | 78 ++++++++++++------------- 1 file changed, 39 insertions(+), 39 deletions(-) diff --git a/install/terminal/select-dev-language.sh b/install/terminal/select-dev-language.sh index de30b18..66a7b1f 100644 --- a/install/terminal/select-dev-language.sh +++ b/install/terminal/select-dev-language.sh @@ -15,46 +15,46 @@ enable_lazyvim_extras() { extras_json="[${extras_json%,}]" # This is cheating to mimic an in-place editing of files (without a tmp file)... - { rm "$config_file" && jq --argjson extras "$extras_json" '.extras |= (. + $extras | unique)' >"$config_file" } <"$config_file" + { rm "$config_file" && jq --argjson extras "$extras_json" '.extras |= (. + $extras | unique)' >"$config_file"; } <"$config_file" } 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 - enable_lazyvim_extras "lazyvim.plugins.extras.lang.typescript" - ;; - Go) - mise use --global go@latest - enable_lazyvim_extras "lazyvim.plugins.extras.lang.go" - ;; - 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 - enable_lazyvim_extras "lazyvim.plugins.extras.lang.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@3.4 + mise x ruby -- gem install rails --no-document + ;; + Node.js) + mise use --global node@lts + enable_lazyvim_extras "lazyvim.plugins.extras.lang.typescript" + ;; + Go) + mise use --global go@latest + enable_lazyvim_extras "lazyvim.plugins.extras.lang.go" + ;; + 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 + enable_lazyvim_extras "lazyvim.plugins.extras.lang.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 From 70f759e856ed4aed78d825affdd5dd6a5cd130b1 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Wed, 5 Feb 2025 19:34:11 +0100 Subject: [PATCH 11/40] Add ASDControl to set Apple Studio and XDR display brightness from cli --- bin/omakub-sub/install.sh | 39 +++++++++++----------- defaults/bash/aliases | 11 ++++++ install/desktop/optional/app-asdcontrol.sh | 12 +++++++ 3 files changed, 43 insertions(+), 19 deletions(-) create mode 100644 install/desktop/optional/app-asdcontrol.sh diff --git a/bin/omakub-sub/install.sh b/bin/omakub-sub/install.sh index 48f49fc..f1a8cd0 100644 --- a/bin/omakub-sub/install.sh +++ b/bin/omakub-sub/install.sh @@ -1,25 +1,26 @@ 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" + "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 20 --header "Install application") if [[ "$CHOICE" == "<< Back"* ]] || [[ -z "$CHOICE" ]]; then # Don't install anything diff --git a/defaults/bash/aliases b/defaults/bash/aliases index 0a95107..c841ef3 100644 --- a/defaults/bash/aliases +++ b/defaults/bash/aliases @@ -36,3 +36,14 @@ webm2mp4() { output_file="${input_file%.webm}.mp4" ffmpeg -i "$input_file" -c:v libx264 -preset slow -crf 22 -c:a aac -b:a 192k "$output_file" } + +# Allow brightness controls if ASDControl is installed +if [ -f "/usr/local/bin/asdcontrol" ]; then + export APPLE_DISPLAY_DEV=$(asdcontrol --detect /dev/usb/hiddev* | sed -n 's|^\(/dev/usb/hiddev[0-9]*\):.*|\1|p') + + alias brup="asdcontrol $APPLE_DISPLAY_DEV -- +10000" + alias brdown="asdcontrol $APPLE_DISPLAY_DEV -- -10000" + + alias brmax="asdcontrol $APPLE_DISPLAY_DEV -- +60000" + alias brmin="asdcontrol $APPLE_DISPLAY_DEV -- -60000" +fi diff --git a/install/desktop/optional/app-asdcontrol.sh b/install/desktop/optional/app-asdcontrol.sh new file mode 100644 index 0000000..31604b0 --- /dev/null +++ b/install/desktop/optional/app-asdcontrol.sh @@ -0,0 +1,12 @@ +# 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 From 4aa3b2c4def7ad166b340f814e7e9fad106d0a1c Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Wed, 5 Feb 2025 19:43:25 +0100 Subject: [PATCH 12/40] Silence permission errors --- defaults/bash/aliases | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/defaults/bash/aliases b/defaults/bash/aliases index c841ef3..feb74ed 100644 --- a/defaults/bash/aliases +++ b/defaults/bash/aliases @@ -39,7 +39,7 @@ webm2mp4() { # Allow brightness controls if ASDControl is installed if [ -f "/usr/local/bin/asdcontrol" ]; then - export APPLE_DISPLAY_DEV=$(asdcontrol --detect /dev/usb/hiddev* | sed -n 's|^\(/dev/usb/hiddev[0-9]*\):.*|\1|p') + export APPLE_DISPLAY_DEV=$(asdcontrol --detect /dev/usb/hiddev* 2>/dev/null | sed -n 's|^\(/dev/usb/hiddev[0-9]*\):.*|\1|p') alias brup="asdcontrol $APPLE_DISPLAY_DEV -- +10000" alias brdown="asdcontrol $APPLE_DISPLAY_DEV -- -10000" From 4e19fb9e6871e84fddc2ebc0d870572488b05ac1 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Wed, 5 Feb 2025 19:46:57 +0100 Subject: [PATCH 13/40] Reboot required for udev rules to be picked up --- install/desktop/optional/app-asdcontrol.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/install/desktop/optional/app-asdcontrol.sh b/install/desktop/optional/app-asdcontrol.sh index 31604b0..13d19d8 100644 --- a/install/desktop/optional/app-asdcontrol.sh +++ b/install/desktop/optional/app-asdcontrol.sh @@ -10,3 +10,6 @@ rm -rf /tmp/asdcontrol 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 From 89971ae60e5a0dab197aae2a4e48b0b9fbfbd5e5 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Wed, 5 Feb 2025 19:48:23 +0100 Subject: [PATCH 14/40] Fix indentation --- bin/omakub-sub/install.sh | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/bin/omakub-sub/install.sh b/bin/omakub-sub/install.sh index f1a8cd0..4c6f0c8 100644 --- a/bin/omakub-sub/install.sh +++ b/bin/omakub-sub/install.sh @@ -23,26 +23,26 @@ CHOICES=( CHOICE=$(gum choose "${CHOICES[@]}" --height 20 --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 From c01beae0eaa2bf260c500229e5f2553306d12fed Mon Sep 17 00:00:00 2001 From: Andrew Garner Date: Tue, 11 Feb 2025 16:19:52 +0000 Subject: [PATCH 15/40] Fix :checkhealth typo in Neovim install script --- install/terminal/app-neovim.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/terminal/app-neovim.sh b/install/terminal/app-neovim.sh index 3b24758..569e8f7 100644 --- a/install/terminal/app-neovim.sh +++ b/install/terminal/app-neovim.sh @@ -7,7 +7,7 @@ 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 From 3d2738a86358711c46947859e25017e45085a0b1 Mon Sep 17 00:00:00 2001 From: "Irving A.J. Rivas Z." Date: Fri, 14 Feb 2025 19:33:36 -0400 Subject: [PATCH 16/40] Better Alacritty Integration - Set alacritty as the preferred x terminal emulator, so that e.g. Ctrl+Alt+T opens Alacritty - Install the nautilus-python extension and a script that results in adding an "Open Alacritty" option to the Nautilus File Manager context menu --- install/desktop/app-alacritty.sh | 72 ++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) diff --git a/install/desktop/app-alacritty.sh b/install/desktop/app-alacritty.sh index 4957733..e308ff1 100644 --- a/install/desktop/app-alacritty.sh +++ b/install/desktop/app-alacritty.sh @@ -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 < 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 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 Alacritty", + tip="Open Alacritty In %s" % current_folder.get_name(), + ) + item.connect("activate", self.menu_background_activate_cb, current_folder) + + return [ + item, + ] +TECHNICALLYNOTACONFIGSOHEREDOCCEDITIS From 081c50bfda3461c7a188b45ba1e03230a874ef9c Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sat, 22 Feb 2025 19:24:01 +0100 Subject: [PATCH 17/40] Control Apple Brightness via F1/F2 instead of aliases More natural --- defaults/bash/aliases | 11 ----------- install/desktop/set-gnome-hotkeys.sh | 12 +++++++++++- 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/defaults/bash/aliases b/defaults/bash/aliases index feb74ed..0a95107 100644 --- a/defaults/bash/aliases +++ b/defaults/bash/aliases @@ -36,14 +36,3 @@ webm2mp4() { output_file="${input_file%.webm}.mp4" ffmpeg -i "$input_file" -c:v libx264 -preset slow -crf 22 -c:a aac -b:a 192k "$output_file" } - -# Allow brightness controls if ASDControl is installed -if [ -f "/usr/local/bin/asdcontrol" ]; then - export APPLE_DISPLAY_DEV=$(asdcontrol --detect /dev/usb/hiddev* 2>/dev/null | sed -n 's|^\(/dev/usb/hiddev[0-9]*\):.*|\1|p') - - alias brup="asdcontrol $APPLE_DISPLAY_DEV -- +10000" - alias brdown="asdcontrol $APPLE_DISPLAY_DEV -- -10000" - - alias brmax="asdcontrol $APPLE_DISPLAY_DEV -- +60000" - alias brmin="asdcontrol $APPLE_DISPLAY_DEV -- -60000" -fi diff --git a/install/desktop/set-gnome-hotkeys.sh b/install/desktop/set-gnome-hotkeys.sh index 02e3569..8b45dbd 100644 --- a/install/desktop/set-gnome-hotkeys.sh +++ b/install/desktop/set-gnome-hotkeys.sh @@ -37,7 +37,7 @@ gsettings set org.gnome.desktop.wm.keybindings switch-to-workspace-5 "['5 gsettings set org.gnome.desktop.wm.keybindings switch-to-workspace-6 "['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 []" @@ -59,3 +59,13 @@ 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/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/ 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 '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 '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 '/usr/local/bin/asdcontrol \$(asdcontrol --detect /dev/usb/hiddev* 2>/dev/null | sed -n \"s|^\(/dev/usb/hiddev[0-9]*\):.*|\1|p\") -- -10000'" + +# 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 '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 '/usr/local/bin/asdcontrol \$(asdcontrol --detect /dev/usb/hiddev* 2>/dev/null | sed -n \"s|^\(/dev/usb/hiddev[0-9]*\):.*|\1|p\") -- +10000'" From 08d894955a16a4a78d1eae26f260af41a1cb98b9 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sat, 22 Feb 2025 19:24:16 +0100 Subject: [PATCH 18/40] Clarify binding names --- install/desktop/set-gnome-hotkeys.sh | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/install/desktop/set-gnome-hotkeys.sh b/install/desktop/set-gnome-hotkeys.sh index 8b45dbd..ff3f360 100644 --- a/install/desktop/set-gnome-hotkeys.sh +++ b/install/desktop/set-gnome-hotkeys.sh @@ -41,7 +41,7 @@ gsettings set org.gnome.settings-daemon.plugins.media-keys custom-keybindings "[ # 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 'space' @@ -51,21 +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 '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 '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 '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 '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 '/usr/local/bin/asdcontrol \$(asdcontrol --detect /dev/usb/hiddev* 2>/dev/null | sed -n \"s|^\(/dev/usb/hiddev[0-9]*\):.*|\1|p\") -- -10000'" +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\") -- -10000'" # 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 '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 '/usr/local/bin/asdcontrol \$(asdcontrol --detect /dev/usb/hiddev* 2>/dev/null | sed -n \"s|^\(/dev/usb/hiddev[0-9]*\):.*|\1|p\") -- +10000'" +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\") -- +10000'" From eb93c7c0ca961899de95bdb937bc10176d25be74 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sat, 22 Feb 2025 19:32:44 +0100 Subject: [PATCH 19/40] Use smaller steps for finer tuning --- install/desktop/set-gnome-hotkeys.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/install/desktop/set-gnome-hotkeys.sh b/install/desktop/set-gnome-hotkeys.sh index ff3f360..4ac25bd 100644 --- a/install/desktop/set-gnome-hotkeys.sh +++ b/install/desktop/set-gnome-hotkeys.sh @@ -63,9 +63,9 @@ gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/or # 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 '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\") -- -10000'" +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 '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\") -- +10000'" +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'" From 81c6b58d94d1bc09a2a988a4ee1d92e472b4d93a Mon Sep 17 00:00:00 2001 From: billybonks Date: Sun, 23 Feb 2025 20:08:15 +0800 Subject: [PATCH 20/40] refactor: replace apt-get with just apt i was exploring why we are running update many places in the codebase and noticed we used apt-get in the start but it doesnt seem required, so proposing to stream line the commands with just one --- boot.sh | 4 ++-- install/terminal/required/app-gum.sh | 2 +- uninstall/app-1password.sh | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/boot.sh b/boot.sh index b489a85..df02916 100755 --- a/boot.sh +++ b/boot.sh @@ -12,8 +12,8 @@ echo -e "$ascii_art" echo "=> Omakub is for fresh Ubuntu 24.04+ installations only!" echo -e "\nBegin installation (or abort with ctrl+c)..." -sudo apt-get update >/dev/null -sudo apt-get install -y git >/dev/null +sudo apt update >/dev/null +sudo apt install -y git >/dev/null echo "Cloning Omakub..." rm -rf ~/.local/share/omakub diff --git a/install/terminal/required/app-gum.sh b/install/terminal/required/app-gum.sh index 4fc1e32..54bb726 100644 --- a/install/terminal/required/app-gum.sh +++ b/install/terminal/required/app-gum.sh @@ -2,6 +2,6 @@ cd /tmp GUM_VERSION="0.14.3" # Use known good version wget -qO gum.deb "https://github.com/charmbracelet/gum/releases/download/v${GUM_VERSION}/gum_${GUM_VERSION}_amd64.deb" -sudo apt-get install -y ./gum.deb +sudo apt install -y ./gum.deb rm gum.deb cd - diff --git a/uninstall/app-1password.sh b/uninstall/app-1password.sh index e815522..173ea84 100755 --- a/uninstall/app-1password.sh +++ b/uninstall/app-1password.sh @@ -2,4 +2,4 @@ sudo rm /etc/apt/sources.list.d/1password.list sudo rm /usr/share/keyrings/1password-archive-keyring.gpg sudo rm /usr/share/debsig/keyrings/AC2D62742012EA22/debsig.gpg sudo rm -r /etc/debsig/policies/AC2D62742012EA22/ -sudo apt-get remove --purge -y 1password 1password-cli +sudo apt remove --purge -y 1password 1password-cli From 969d3558ee319adb71f3c41be85daf0560a1d84a Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sat, 1 Mar 2025 18:51:54 +0100 Subject: [PATCH 21/40] Match "Open in Terminal" --- install/desktop/app-alacritty.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/install/desktop/app-alacritty.sh b/install/desktop/app-alacritty.sh index e308ff1..c6e3a31 100644 --- a/install/desktop/app-alacritty.sh +++ b/install/desktop/app-alacritty.sh @@ -53,7 +53,7 @@ class OpenTerminalExtension(GObject.GObject, Nautilus.MenuProvider): item = Nautilus.MenuItem( name="NautilusPython::openterminal_file_item", - label="Open Alacritty", + label="Open in Alacritty", tip="Open Alacritty In %s" % file.get_name(), ) item.connect("activate", self.menu_activate_cb, file) @@ -68,7 +68,7 @@ class OpenTerminalExtension(GObject.GObject, Nautilus.MenuProvider): ) -> List[Nautilus.MenuItem]: item = Nautilus.MenuItem( name="NautilusPython::openterminal_file_item2", - label="Open Alacritty", + label="Open in Alacritty", tip="Open Alacritty In %s" % current_folder.get_name(), ) item.connect("activate", self.menu_background_activate_cb, current_folder) From 90e15abd36b3dfae3272721910abd592e0386162 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sat, 1 Mar 2025 19:08:50 +0100 Subject: [PATCH 22/40] Use latest Ruby, just like every other dev environment --- install/terminal/select-dev-language.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/terminal/select-dev-language.sh b/install/terminal/select-dev-language.sh index b325d8a..fe62c33 100644 --- a/install/terminal/select-dev-language.sh +++ b/install/terminal/select-dev-language.sh @@ -10,7 +10,6 @@ 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) @@ -42,4 +41,5 @@ if [[ -n "$languages" ]]; then ;; esac done + mise use --global ruby@latest fi From 2d20e3503ed2fa066eabd2f40d23f1621ef6d1c0 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sat, 1 Mar 2025 19:09:01 +0100 Subject: [PATCH 23/40] Include the Back button --- bin/omakub-sub/install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/omakub-sub/install.sh b/bin/omakub-sub/install.sh index 4c6f0c8..958196d 100644 --- a/bin/omakub-sub/install.sh +++ b/bin/omakub-sub/install.sh @@ -20,7 +20,7 @@ CHOICES=( "<< Back " ) -CHOICE=$(gum choose "${CHOICES[@]}" --height 20 --header "Install application") +CHOICE=$(gum choose "${CHOICES[@]}" --height 21 --header "Install application") if [[ "$CHOICE" == "<< Back"* ]] || [[ -z "$CHOICE" ]]; then # Don't install anything From 7847f4d4d51d193810d56a98b840028da46a6b13 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sat, 1 Mar 2025 19:09:04 +0100 Subject: [PATCH 24/40] Fix indention --- install/terminal/select-dev-language.sh | 74 ++++++++++++------------- 1 file changed, 37 insertions(+), 37 deletions(-) diff --git a/install/terminal/select-dev-language.sh b/install/terminal/select-dev-language.sh index fe62c33..fe84952 100644 --- a/install/terminal/select-dev-language.sh +++ b/install/terminal/select-dev-language.sh @@ -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 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 From 86762428dcc04bb364b52085c869ac6990e5c410 Mon Sep 17 00:00:00 2001 From: Tony Messias Date: Sun, 2 Mar 2025 10:48:42 -0300 Subject: [PATCH 25/40] Make the LazyVIM plugins optional and add uninstall scripts for the dev langs and their lazyvim plugins --- install/terminal/select-dev-language.sh | 10 +++-- uninstall/dev-language.sh | 59 +++++++++++++++++++++++++ uninstall/php.sh | 4 -- uninstall/rust.sh | 1 - 4 files changed, 66 insertions(+), 8 deletions(-) create mode 100644 uninstall/dev-language.sh delete mode 100644 uninstall/php.sh delete mode 100644 uninstall/rust.sh diff --git a/install/terminal/select-dev-language.sh b/install/terminal/select-dev-language.sh index 66a7b1f..40c28cb 100644 --- a/install/terminal/select-dev-language.sh +++ b/install/terminal/select-dev-language.sh @@ -6,6 +6,8 @@ else languages=$(gum choose "${AVAILABLE_LANGUAGES[@]}" --no-limit --height 10 --header "Select programming languages") fi +install_extras=$(gum confirm "Would you like to enable the LazyVIM extras plugins (if available) too?") + enable_lazyvim_extras() { local config_file="$HOME/.config/nvim/lazyvim.json" local extras=("$@") @@ -27,11 +29,11 @@ if [[ -n "$languages" ]]; then ;; Node.js) mise use --global node@lts - enable_lazyvim_extras "lazyvim.plugins.extras.lang.typescript" + $install_extras && enable_lazyvim_extras "lazyvim.plugins.extras.lang.typescript" ;; Go) mise use --global go@latest - enable_lazyvim_extras "lazyvim.plugins.extras.lang.go" + $install_extras && enable_lazyvim_extras "lazyvim.plugins.extras.lang.go" ;; PHP) sudo add-apt-repository -y ppa:ondrej/php @@ -39,7 +41,7 @@ if [[ -n "$languages" ]]; then 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 - enable_lazyvim_extras "lazyvim.plugins.extras.lang.php" + $install_extras && enable_lazyvim_extras "lazyvim.plugins.extras.lang.php" ;; Python) mise use --global python@latest @@ -48,9 +50,11 @@ if [[ -n "$languages" ]]; then mise use --global erlang@latest mise use --global elixir@latest mise x elixir -- mix local.hex --force + $install_extras && enable_lazyvim_extras "lazyvim.plugins.extras.lang.elixir" "lazyvim.plugins.extras.lang.erlang" ;; Rust) bash -c "$(curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs)" -- -y + $install_extras && enable_lazyvim_extras "lazyvim.plugins.extras.lang.rust" ;; Java) mise use --global java@latest diff --git a/uninstall/dev-language.sh b/uninstall/dev-language.sh new file mode 100644 index 0000000..2c98e71 --- /dev/null +++ b/uninstall/dev-language.sh @@ -0,0 +1,59 @@ +# 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 + +disable_lazyvim_extras() { + local config_file="$HOME/.config/nvim/lazyvim.json" + local extras=("$@") + + local extras_json + extras_json=$(printf '"%s",' "${extras[@]}") + extras_json="[${extras_json%,}]" + + # This is cheating to mimic an in-place editing of files (without a tmp file)... + { rm "$config_file" && jq --argjson extras "$extras_json" '.extras |= (. - $extras)' >"$config_file"; } <"$config_file" +} + +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 + disable_lazyvim_extras "lazyvim.plugins.extras.lang.typescript" + ;; + Go) + mise uninstall go@latest + disable_lazyvim_extras "lazyvim.plugins.extras.lang.go" + ;; + 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 + disable_lazyvim_extras "lazyvim.plugins.extras.lang.php" + ;; + Python) + mise uninstall python@latest + ;; + Elixir) + mise uninstall elixir@latest + mise uninstall erlang@latest + disable_lazyvim_extras "lazyvim.plugins.extras.lang.elixir" "lazyvim.plugins.extras.lang.erlang" + ;; + Rust) + rustup self uninstall -y + disable_lazyvim_extras "lazyvim.plugins.extras.lang.rust" + ;; + Java) + mise uninnstall java@latest + ;; + esac + done +fi diff --git a/uninstall/php.sh b/uninstall/php.sh deleted file mode 100644 index da7db13..0000000 --- a/uninstall/php.sh +++ /dev/null @@ -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 diff --git a/uninstall/rust.sh b/uninstall/rust.sh deleted file mode 100644 index 93dcd9d..0000000 --- a/uninstall/rust.sh +++ /dev/null @@ -1 +0,0 @@ -rustup self uninstall -y From e1d7c4a8e3b06b011b1f61dc467179f851964d27 Mon Sep 17 00:00:00 2001 From: Tony Messias Date: Sun, 2 Mar 2025 11:01:51 -0300 Subject: [PATCH 26/40] Fix confirmation not setting booleans --- install/terminal/select-dev-language.sh | 88 ++++++++++++------------- 1 file changed, 44 insertions(+), 44 deletions(-) diff --git a/install/terminal/select-dev-language.sh b/install/terminal/select-dev-language.sh index 863584b..0fdcac2 100644 --- a/install/terminal/select-dev-language.sh +++ b/install/terminal/select-dev-language.sh @@ -1,12 +1,12 @@ # 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 -install_extras=$(gum confirm "Would you like to enable the LazyVIM extras plugins (if available) too?") +install_extras=$(gum confirm "Would you like to enable the LazyVIM extras plugins (if available) too?" && echo true || echo false) enable_lazyvim_extras() { local config_file="$HOME/.config/nvim/lazyvim.json" @@ -21,44 +21,44 @@ enable_lazyvim_extras() { } if [[ -n "$languages" ]]; then - 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 - $install_extras && enable_lazyvim_extras "lazyvim.plugins.extras.lang.typescript" - ;; - Go) - mise use --global go@latest - $install_extras && enable_lazyvim_extras "lazyvim.plugins.extras.lang.go" - ;; - 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 - $install_extras && enable_lazyvim_extras "lazyvim.plugins.extras.lang.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 - $install_extras && enable_lazyvim_extras "lazyvim.plugins.extras.lang.elixir" "lazyvim.plugins.extras.lang.erlang" - ;; - Rust) - bash -c "$(curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs)" -- -y - $install_extras && enable_lazyvim_extras "lazyvim.plugins.extras.lang.rust" - ;; - 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 + $install_extras && enable_lazyvim_extras "lazyvim.plugins.extras.lang.typescript" + ;; + Go) + mise use --global go@latest + $install_extras && enable_lazyvim_extras "lazyvim.plugins.extras.lang.go" + ;; + 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 + $install_extras && enable_lazyvim_extras "lazyvim.plugins.extras.lang.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 + $install_extras && enable_lazyvim_extras "lazyvim.plugins.extras.lang.elixir" "lazyvim.plugins.extras.lang.erlang" + ;; + Rust) + bash -c "$(curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs)" -- -y + $install_extras && enable_lazyvim_extras "lazyvim.plugins.extras.lang.rust" + ;; + Java) + mise use --global java@latest + ;; + esac + done fi From 08b614e662d818cf2a36b14b77cbd6129e419488 Mon Sep 17 00:00:00 2001 From: Tony Messias Date: Mon, 3 Mar 2025 17:08:33 -0300 Subject: [PATCH 27/40] Fix indentation --- install/terminal/select-dev-language.sh | 102 ++++++++++++------------ uninstall/dev-language.sh | 96 +++++++++++----------- 2 files changed, 99 insertions(+), 99 deletions(-) diff --git a/install/terminal/select-dev-language.sh b/install/terminal/select-dev-language.sh index 0fdcac2..365b858 100644 --- a/install/terminal/select-dev-language.sh +++ b/install/terminal/select-dev-language.sh @@ -1,64 +1,64 @@ # 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 install_extras=$(gum confirm "Would you like to enable the LazyVIM extras plugins (if available) too?" && echo true || echo false) enable_lazyvim_extras() { - local config_file="$HOME/.config/nvim/lazyvim.json" - local extras=("$@") + local config_file="$HOME/.config/nvim/lazyvim.json" + local extras=("$@") - local extras_json - extras_json=$(printf '"%s",' "${extras[@]}") - extras_json="[${extras_json%,}]" + local extras_json + extras_json=$(printf '"%s",' "${extras[@]}") + extras_json="[${extras_json%,}]" - # This is cheating to mimic an in-place editing of files (without a tmp file)... - { rm "$config_file" && jq --argjson extras "$extras_json" '.extras |= (. + $extras | unique)' >"$config_file"; } <"$config_file" + # This is cheating to mimic an in-place editing of files (without a tmp file)... + { rm "$config_file" && jq --argjson extras "$extras_json" '.extras |= (. + $extras | unique)' >"$config_file"; } <"$config_file" } -if [[ -n "$languages" ]]; then - 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 - $install_extras && enable_lazyvim_extras "lazyvim.plugins.extras.lang.typescript" - ;; - Go) - mise use --global go@latest - $install_extras && enable_lazyvim_extras "lazyvim.plugins.extras.lang.go" - ;; - 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 - $install_extras && enable_lazyvim_extras "lazyvim.plugins.extras.lang.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 - $install_extras && enable_lazyvim_extras "lazyvim.plugins.extras.lang.elixir" "lazyvim.plugins.extras.lang.erlang" - ;; - Rust) - bash -c "$(curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs)" -- -y - $install_extras && enable_lazyvim_extras "lazyvim.plugins.extras.lang.rust" - ;; - Java) - mise use --global java@latest - ;; - esac - done +if [[ -n $languages ]]; then + 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 + $install_extras && enable_lazyvim_extras "lazyvim.plugins.extras.lang.typescript" + ;; + Go) + mise use --global go@latest + $install_extras && enable_lazyvim_extras "lazyvim.plugins.extras.lang.go" + ;; + 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 + $install_extras && enable_lazyvim_extras "lazyvim.plugins.extras.lang.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 + $install_extras && enable_lazyvim_extras "lazyvim.plugins.extras.lang.elixir" "lazyvim.plugins.extras.lang.erlang" + ;; + Rust) + bash -c "$(curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs)" -- -y + $install_extras && enable_lazyvim_extras "lazyvim.plugins.extras.lang.rust" + ;; + Java) + mise use --global java@latest + ;; + esac + done fi diff --git a/uninstall/dev-language.sh b/uninstall/dev-language.sh index 2c98e71..415f610 100644 --- a/uninstall/dev-language.sh +++ b/uninstall/dev-language.sh @@ -1,59 +1,59 @@ # Uninstall 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 to uninstall") + 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 disable_lazyvim_extras() { - local config_file="$HOME/.config/nvim/lazyvim.json" - local extras=("$@") + local config_file="$HOME/.config/nvim/lazyvim.json" + local extras=("$@") - local extras_json - extras_json=$(printf '"%s",' "${extras[@]}") - extras_json="[${extras_json%,}]" + local extras_json + extras_json=$(printf '"%s",' "${extras[@]}") + extras_json="[${extras_json%,}]" - # This is cheating to mimic an in-place editing of files (without a tmp file)... - { rm "$config_file" && jq --argjson extras "$extras_json" '.extras |= (. - $extras)' >"$config_file"; } <"$config_file" + # This is cheating to mimic an in-place editing of files (without a tmp file)... + { rm "$config_file" && jq --argjson extras "$extras_json" '.extras |= (. - $extras)' >"$config_file"; } <"$config_file" } -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 - disable_lazyvim_extras "lazyvim.plugins.extras.lang.typescript" - ;; - Go) - mise uninstall go@latest - disable_lazyvim_extras "lazyvim.plugins.extras.lang.go" - ;; - 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 - disable_lazyvim_extras "lazyvim.plugins.extras.lang.php" - ;; - Python) - mise uninstall python@latest - ;; - Elixir) - mise uninstall elixir@latest - mise uninstall erlang@latest - disable_lazyvim_extras "lazyvim.plugins.extras.lang.elixir" "lazyvim.plugins.extras.lang.erlang" - ;; - Rust) - rustup self uninstall -y - disable_lazyvim_extras "lazyvim.plugins.extras.lang.rust" - ;; - Java) - mise uninnstall java@latest - ;; - esac - done +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 + disable_lazyvim_extras "lazyvim.plugins.extras.lang.typescript" + ;; + Go) + mise uninstall go@latest + disable_lazyvim_extras "lazyvim.plugins.extras.lang.go" + ;; + 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 + disable_lazyvim_extras "lazyvim.plugins.extras.lang.php" + ;; + Python) + mise uninstall python@latest + ;; + Elixir) + mise uninstall elixir@latest + mise uninstall erlang@latest + disable_lazyvim_extras "lazyvim.plugins.extras.lang.elixir" "lazyvim.plugins.extras.lang.erlang" + ;; + Rust) + rustup self uninstall -y + disable_lazyvim_extras "lazyvim.plugins.extras.lang.rust" + ;; + Java) + mise uninnstall java@latest + ;; + esac + done fi From 8f1d664d5e1408d40470325b35e179f4e55b7c5c Mon Sep 17 00:00:00 2001 From: Tony Messias Date: Mon, 3 Mar 2025 17:10:33 -0300 Subject: [PATCH 28/40] Wrap var in quotes --- install/terminal/select-dev-language.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/terminal/select-dev-language.sh b/install/terminal/select-dev-language.sh index 365b858..ff508f9 100644 --- a/install/terminal/select-dev-language.sh +++ b/install/terminal/select-dev-language.sh @@ -20,7 +20,7 @@ enable_lazyvim_extras() { { rm "$config_file" && jq --argjson extras "$extras_json" '.extras |= (. + $extras | unique)' >"$config_file"; } <"$config_file" } -if [[ -n $languages ]]; then +if [[ -n "$languages" ]]; then for language in $languages; do case $language in Ruby) From 79f675b60828ad1c954d5f53242f873d209b7c9b Mon Sep 17 00:00:00 2001 From: Tony Messias Date: Mon, 3 Mar 2025 17:19:25 -0300 Subject: [PATCH 29/40] Remove the dev lang for elixir && erlang (I was getting an error) --- install/terminal/select-dev-language.sh | 1 - uninstall/dev-language.sh | 1 - 2 files changed, 2 deletions(-) diff --git a/install/terminal/select-dev-language.sh b/install/terminal/select-dev-language.sh index ff508f9..89a1ffd 100644 --- a/install/terminal/select-dev-language.sh +++ b/install/terminal/select-dev-language.sh @@ -50,7 +50,6 @@ if [[ -n "$languages" ]]; then mise use --global erlang@latest mise use --global elixir@latest mise x elixir -- mix local.hex --force - $install_extras && enable_lazyvim_extras "lazyvim.plugins.extras.lang.elixir" "lazyvim.plugins.extras.lang.erlang" ;; Rust) bash -c "$(curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs)" -- -y diff --git a/uninstall/dev-language.sh b/uninstall/dev-language.sh index 415f610..8568023 100644 --- a/uninstall/dev-language.sh +++ b/uninstall/dev-language.sh @@ -45,7 +45,6 @@ if [[ -n $languages ]]; then Elixir) mise uninstall elixir@latest mise uninstall erlang@latest - disable_lazyvim_extras "lazyvim.plugins.extras.lang.elixir" "lazyvim.plugins.extras.lang.erlang" ;; Rust) rustup self uninstall -y From d3e019693e7be3358b94dbf51d3fece219c38e29 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Tue, 4 Mar 2025 10:29:08 +0100 Subject: [PATCH 30/40] Warn about the potentially long installation time for Obsidian (#303) --- install/desktop/app-obsidian.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/install/desktop/app-obsidian.sh b/install/desktop/app-obsidian.sh index fef1d90..7cf47b7 100644 --- a/install/desktop/app-obsidian.sh +++ b/install/desktop/app-obsidian.sh @@ -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 From 22850f9c53959cd6a31226108eb8b6dc931721ec Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Tue, 4 Mar 2025 10:36:02 +0100 Subject: [PATCH 31/40] Revert "refactor: replace apt-get with just apt" --- boot.sh | 4 ++-- install/terminal/required/app-gum.sh | 2 +- uninstall/app-1password.sh | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/boot.sh b/boot.sh index df02916..b489a85 100755 --- a/boot.sh +++ b/boot.sh @@ -12,8 +12,8 @@ echo -e "$ascii_art" echo "=> Omakub is for fresh Ubuntu 24.04+ installations only!" echo -e "\nBegin installation (or abort with ctrl+c)..." -sudo apt update >/dev/null -sudo apt install -y git >/dev/null +sudo apt-get update >/dev/null +sudo apt-get install -y git >/dev/null echo "Cloning Omakub..." rm -rf ~/.local/share/omakub diff --git a/install/terminal/required/app-gum.sh b/install/terminal/required/app-gum.sh index 54bb726..4fc1e32 100644 --- a/install/terminal/required/app-gum.sh +++ b/install/terminal/required/app-gum.sh @@ -2,6 +2,6 @@ cd /tmp GUM_VERSION="0.14.3" # Use known good version wget -qO gum.deb "https://github.com/charmbracelet/gum/releases/download/v${GUM_VERSION}/gum_${GUM_VERSION}_amd64.deb" -sudo apt install -y ./gum.deb +sudo apt-get install -y ./gum.deb rm gum.deb cd - diff --git a/uninstall/app-1password.sh b/uninstall/app-1password.sh index 173ea84..e815522 100755 --- a/uninstall/app-1password.sh +++ b/uninstall/app-1password.sh @@ -2,4 +2,4 @@ sudo rm /etc/apt/sources.list.d/1password.list sudo rm /usr/share/keyrings/1password-archive-keyring.gpg sudo rm /usr/share/debsig/keyrings/AC2D62742012EA22/debsig.gpg sudo rm -r /etc/debsig/policies/AC2D62742012EA22/ -sudo apt remove --purge -y 1password 1password-cli +sudo apt-get remove --purge -y 1password 1password-cli From 395d107cac68b6bffd9d7d1518ad7dc3f6f4455f Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Tue, 4 Mar 2025 10:32:31 +0100 Subject: [PATCH 32/40] Change brightness controls to require ctrl key Avoids conflicts with nautilus rename for example --- install/desktop/set-gnome-hotkeys.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/install/desktop/set-gnome-hotkeys.sh b/install/desktop/set-gnome-hotkeys.sh index 4ac25bd..50d89c5 100644 --- a/install/desktop/set-gnome-hotkeys.sh +++ b/install/desktop/set-gnome-hotkeys.sh @@ -62,10 +62,10 @@ gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/or # 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 'F1' +gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom4/ binding '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 'F2' +gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom5/ binding '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'" From d254a0f07627439ef587f91dc59b1a50dcba01d8 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Tue, 4 Mar 2025 10:39:53 +0100 Subject: [PATCH 33/40] We are already controlling the sleep settings in the overall installer --- install/desktop.sh | 8 -------- 1 file changed, 8 deletions(-) diff --git a/install/desktop.sh b/install/desktop.sh index 85c2006..a7ed1c4 100644 --- a/install/desktop.sh +++ b/install/desktop.sh @@ -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 From c59d4f6b92dd4f624a4c4232ed3870fca07a5672 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Tue, 4 Mar 2025 10:40:57 +0100 Subject: [PATCH 34/40] Fix indention --- install/check-version.sh | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/install/check-version.sh b/install/check-version.sh index 1784327..304c538 100644 --- a/install/check-version.sh +++ b/install/check-version.sh @@ -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 From f43371f80185e0ffa577aefc61a02cc4e90ef3c6 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Tue, 4 Mar 2025 10:47:25 +0100 Subject: [PATCH 35/40] Simplify the installer (closes #316) Co-author: asmrtfm --- install.sh | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/install.sh b/install.sh index 8a535f4..fed616b 100644 --- a/install.sh +++ b/install.sh @@ -1,13 +1,11 @@ # 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 +# 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 @@ -17,18 +15,17 @@ if $RUNNING_GNOME; then 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 From cea6928943184d463fb4184807ce7a9e6b4c4199 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Tue, 4 Mar 2025 10:54:29 +0100 Subject: [PATCH 36/40] Add Mainline Kernels as optional install This is currently helpful especially for newer AMD CPUs that require 6.13+ for correct scheduling while Ubuntu 24.04 ships with 6.11. --- bin/omakub-sub/install.sh | 41 ++++++++++--------- .../terminal/optional/app-mainline-kernels.sh | 3 ++ uninstall/app-mainline-kernels.sh | 1 + 3 files changed, 25 insertions(+), 20 deletions(-) create mode 100644 install/terminal/optional/app-mainline-kernels.sh create mode 100644 uninstall/app-mainline-kernels.sh diff --git a/bin/omakub-sub/install.sh b/bin/omakub-sub/install.sh index 958196d..3ddc16d 100644 --- a/bin/omakub-sub/install.sh +++ b/bin/omakub-sub/install.sh @@ -1,26 +1,27 @@ 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" - "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" - "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 21 --header "Install application") +CHOICE=$(gum choose "${CHOICES[@]}" --height 22 --header "Install application") if [[ "$CHOICE" == "<< Back"* ]] || [[ -z "$CHOICE" ]]; then # Don't install anything diff --git a/install/terminal/optional/app-mainline-kernels.sh b/install/terminal/optional/app-mainline-kernels.sh new file mode 100644 index 0000000..bb924c9 --- /dev/null +++ b/install/terminal/optional/app-mainline-kernels.sh @@ -0,0 +1,3 @@ +sudo add-apt-repository ppa:cappelikan/ppa +sudo apt update -y +sudo apt install -y mainline diff --git a/uninstall/app-mainline-kernels.sh b/uninstall/app-mainline-kernels.sh new file mode 100644 index 0000000..c76210a --- /dev/null +++ b/uninstall/app-mainline-kernels.sh @@ -0,0 +1 @@ +sudo apt remove -y mainline From d6a9fa786ce9f068715109046e0d40d8966cd1a1 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Tue, 4 Mar 2025 10:56:15 +0100 Subject: [PATCH 37/40] Dont halt the original installer for this question Fine just to do it --- install/terminal/select-dev-language.sh | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/install/terminal/select-dev-language.sh b/install/terminal/select-dev-language.sh index 89a1ffd..7a75acc 100644 --- a/install/terminal/select-dev-language.sh +++ b/install/terminal/select-dev-language.sh @@ -6,8 +6,6 @@ else languages=$(gum choose "${AVAILABLE_LANGUAGES[@]}" --no-limit --height 10 --header "Select programming languages") fi -install_extras=$(gum confirm "Would you like to enable the LazyVIM extras plugins (if available) too?" && echo true || echo false) - enable_lazyvim_extras() { local config_file="$HOME/.config/nvim/lazyvim.json" local extras=("$@") @@ -29,11 +27,11 @@ if [[ -n "$languages" ]]; then ;; Node.js) mise use --global node@lts - $install_extras && enable_lazyvim_extras "lazyvim.plugins.extras.lang.typescript" + enable_lazyvim_extras "lazyvim.plugins.extras.lang.typescript" ;; Go) mise use --global go@latest - $install_extras && enable_lazyvim_extras "lazyvim.plugins.extras.lang.go" + enable_lazyvim_extras "lazyvim.plugins.extras.lang.go" ;; PHP) sudo add-apt-repository -y ppa:ondrej/php @@ -41,7 +39,7 @@ if [[ -n "$languages" ]]; then 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 - $install_extras && enable_lazyvim_extras "lazyvim.plugins.extras.lang.php" + enable_lazyvim_extras "lazyvim.plugins.extras.lang.php" ;; Python) mise use --global python@latest @@ -53,7 +51,7 @@ if [[ -n "$languages" ]]; then ;; Rust) bash -c "$(curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs)" -- -y - $install_extras && enable_lazyvim_extras "lazyvim.plugins.extras.lang.rust" + enable_lazyvim_extras "lazyvim.plugins.extras.lang.rust" ;; Java) mise use --global java@latest From 25cc43a6661bdf6c4ae2254763a1b4854fa2cef7 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Tue, 4 Mar 2025 11:01:20 +0100 Subject: [PATCH 38/40] Ask for default apps on terminal mode too (closes #308) Coauthor: @gtkatakura --- install.sh | 9 +++++---- install/first-run-choices.sh | 9 ++++++--- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/install.sh b/install.sh index fed616b..6d51d7b 100644 --- a/install.sh +++ b/install.sh @@ -4,16 +4,17 @@ set -e # Check the distribution name and version and abort if incompatible source ~/.local/share/omakub/install/check-version.sh +# 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..." # Install terminal tools diff --git a/install/first-run-choices.sh b/install/first-run-choices.sh index dc6964c..b10e0da 100644 --- a/install/first-run-choices.sh +++ b/install/first-run-choices.sh @@ -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" From 8967108a544c5015724be28560daf54dc6217a0d Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Tue, 4 Mar 2025 11:24:38 +0100 Subject: [PATCH 39/40] Remove lang-specific lazyvim extras until we can make it work on first run CC #269 --- install/terminal/select-dev-language.sh | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/install/terminal/select-dev-language.sh b/install/terminal/select-dev-language.sh index 7a75acc..fe84952 100644 --- a/install/terminal/select-dev-language.sh +++ b/install/terminal/select-dev-language.sh @@ -6,18 +6,6 @@ else languages=$(gum choose "${AVAILABLE_LANGUAGES[@]}" --no-limit --height 10 --header "Select programming languages") fi -enable_lazyvim_extras() { - local config_file="$HOME/.config/nvim/lazyvim.json" - local extras=("$@") - - local extras_json - extras_json=$(printf '"%s",' "${extras[@]}") - extras_json="[${extras_json%,}]" - - # This is cheating to mimic an in-place editing of files (without a tmp file)... - { rm "$config_file" && jq --argjson extras "$extras_json" '.extras |= (. + $extras | unique)' >"$config_file"; } <"$config_file" -} - if [[ -n "$languages" ]]; then for language in $languages; do case $language in @@ -27,11 +15,9 @@ if [[ -n "$languages" ]]; then ;; Node.js) mise use --global node@lts - enable_lazyvim_extras "lazyvim.plugins.extras.lang.typescript" ;; Go) mise use --global go@latest - enable_lazyvim_extras "lazyvim.plugins.extras.lang.go" ;; PHP) sudo add-apt-repository -y ppa:ondrej/php @@ -39,7 +25,6 @@ if [[ -n "$languages" ]]; then 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 - enable_lazyvim_extras "lazyvim.plugins.extras.lang.php" ;; Python) mise use --global python@latest @@ -51,7 +36,6 @@ if [[ -n "$languages" ]]; then ;; Rust) bash -c "$(curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs)" -- -y - enable_lazyvim_extras "lazyvim.plugins.extras.lang.rust" ;; Java) mise use --global java@latest From 6f9f988d8cc8c8f58076cb0b10b959b6231cab4b Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Tue, 4 Mar 2025 14:52:03 +0100 Subject: [PATCH 40/40] Remove lazyvim extra configuration too Until we can restore them on install --- uninstall/dev-language.sh | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/uninstall/dev-language.sh b/uninstall/dev-language.sh index 8568023..0ce299d 100644 --- a/uninstall/dev-language.sh +++ b/uninstall/dev-language.sh @@ -6,18 +6,6 @@ else languages=$(gum choose "${AVAILABLE_LANGUAGES[@]}" --no-limit --height 10 --header "Select programming languages to uninstall") fi -disable_lazyvim_extras() { - local config_file="$HOME/.config/nvim/lazyvim.json" - local extras=("$@") - - local extras_json - extras_json=$(printf '"%s",' "${extras[@]}") - extras_json="[${extras_json%,}]" - - # This is cheating to mimic an in-place editing of files (without a tmp file)... - { rm "$config_file" && jq --argjson extras "$extras_json" '.extras |= (. - $extras)' >"$config_file"; } <"$config_file" -} - if [[ -n $languages ]]; then for language in $languages; do case $language in @@ -27,17 +15,14 @@ if [[ -n $languages ]]; then ;; Node.js) mise uninstall node@lts - disable_lazyvim_extras "lazyvim.plugins.extras.lang.typescript" ;; Go) mise uninstall go@latest - disable_lazyvim_extras "lazyvim.plugins.extras.lang.go" ;; 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 - disable_lazyvim_extras "lazyvim.plugins.extras.lang.php" ;; Python) mise uninstall python@latest @@ -48,7 +33,6 @@ if [[ -n $languages ]]; then ;; Rust) rustup self uninstall -y - disable_lazyvim_extras "lazyvim.plugins.extras.lang.rust" ;; Java) mise uninnstall java@latest