From a820d2449ec39b5d4701b695ae9415f7880382e5 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Tue, 11 Jun 2024 18:17:56 +0200 Subject: [PATCH 01/12] Add undecorate option to windows For that perfect setup look --- install/set-gnome-extensions.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/install/set-gnome-extensions.sh b/install/set-gnome-extensions.sh index fc3acc6..4e4e368 100644 --- a/install/set-gnome-extensions.sh +++ b/install/set-gnome-extensions.sh @@ -15,6 +15,7 @@ gext install tactile@lundal.io gext install just-perfection-desktop@just-perfection gext install blur-my-shell@aunetx gext install space-bar@luchrioh +gext install undecorate@sun.wxg@gmail.com # Compile gsettings schemas in order to be able to set them sudo cp ~/.local/share/gnome-shell/extensions/tactile@lundal.io/schemas/org.gnome.shell.extensions.tactile.gschema.xml /usr/share/glib-2.0/schemas/ From 11167eb38be771d3a079f38a96a6bdf93bc76488 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Tue, 11 Jun 2024 18:49:27 +0200 Subject: [PATCH 02/12] Add fastfetch System info at a glance --- install/app-fastfetch.sh | 3 +++ uninstall/app-fastfetch.sh | 1 + 2 files changed, 4 insertions(+) create mode 100644 install/app-fastfetch.sh create mode 100644 uninstall/app-fastfetch.sh diff --git a/install/app-fastfetch.sh b/install/app-fastfetch.sh new file mode 100644 index 0000000..2bf9d6a --- /dev/null +++ b/install/app-fastfetch.sh @@ -0,0 +1,3 @@ +sudo add-apt-repository ppa:zhangsongcui3371/fastfetch +sudo apt update +sudo apt install -y fastfetch diff --git a/uninstall/app-fastfetch.sh b/uninstall/app-fastfetch.sh new file mode 100644 index 0000000..c162351 --- /dev/null +++ b/uninstall/app-fastfetch.sh @@ -0,0 +1 @@ +sudo apt remove -y fastfetch From 4d977478265fa62a1911039c3acae1111cdb5ca9 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Tue, 11 Jun 2024 19:00:54 +0200 Subject: [PATCH 03/12] Default to not saving session So we keep the session archive free of trash --- configs/zellij.kdl | 1 + 1 file changed, 1 insertion(+) diff --git a/configs/zellij.kdl b/configs/zellij.kdl index 5554b70..8c761c0 100644 --- a/configs/zellij.kdl +++ b/configs/zellij.kdl @@ -1,2 +1,3 @@ theme "tokyo-night" default_layout "compact" +on_force_close "quit" From 2dbeec36df89945ca38b20b9978ed3403b2f6bdb Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Tue, 11 Jun 2024 19:27:32 +0200 Subject: [PATCH 04/12] Show ascii for install earlier --- install.sh | 3 --- 1 file changed, 3 deletions(-) diff --git a/install.sh b/install.sh index 0a712ed..8ef492f 100644 --- a/install.sh +++ b/install.sh @@ -1,6 +1,3 @@ -# Be fancy -source ~/.local/share/omakub/ascii.sh - # Exit immediately if a command exits with a non-zero status set -e From 52f48cf2e462d5a6a07c995246727ed837776879 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Tue, 11 Jun 2024 19:49:06 +0200 Subject: [PATCH 05/12] We already have the right version in Ubuntu 24.04 Closes #86 --- install/app-neovim.sh | 2 -- 1 file changed, 2 deletions(-) diff --git a/install/app-neovim.sh b/install/app-neovim.sh index d209dda..1548e63 100644 --- a/install/app-neovim.sh +++ b/install/app-neovim.sh @@ -1,5 +1,3 @@ -sudo add-apt-repository -y ppa:neovim-ppa/stable -sudo apt update sudo apt install -y neovim if [ ! -d "$HOME/.config/nvim" ]; then From ec7655e75e6a8806c49b16c624c56ea75ff1eb51 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Tue, 11 Jun 2024 20:37:41 +0200 Subject: [PATCH 06/12] Use /tmp instead of ~/Downloads for language compatibility Ubuntu uses local language names for standard folders in ~/ --- install/app-1password.sh | 2 +- install/app-chrome.sh | 2 +- install/app-gum.sh | 2 +- install/app-lazydocker.sh | 2 +- install/app-lazygit.sh | 2 +- install/app-localsend.sh | 2 +- install/app-vscode.sh | 2 +- install/app-zellij.sh | 2 +- install/app-zoom.sh | 2 +- install/fonts.sh | 2 +- 10 files changed, 10 insertions(+), 10 deletions(-) diff --git a/install/app-1password.sh b/install/app-1password.sh index 3e02ff3..2a8fbf3 100644 --- a/install/app-1password.sh +++ b/install/app-1password.sh @@ -1,4 +1,4 @@ -cd ~/Downloads +cd /tmp wget https://downloads.1password.com/linux/debian/amd64/stable/1password-latest.deb sudo apt install -y ./1password-latest.deb rm 1password-latest.deb diff --git a/install/app-chrome.sh b/install/app-chrome.sh index d2ef64e..8775da9 100644 --- a/install/app-chrome.sh +++ b/install/app-chrome.sh @@ -1,4 +1,4 @@ -cd ~/Downloads +cd /tmp wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb sudo apt install -y ./google-chrome-stable_current_amd64.deb rm google-chrome-stable_current_amd64.deb diff --git a/install/app-gum.sh b/install/app-gum.sh index 589f11b..7163259 100644 --- a/install/app-gum.sh +++ b/install/app-gum.sh @@ -1,5 +1,5 @@ # Gum is used for the Omakub commands for tailoring Omakub after the initial install -cd ~/Downloads +cd /tmp GUM_VERSION="0.14.1" # Use known good version wget -O gum.deb "https://github.com/charmbracelet/gum/releases/latest/download/gum_${GUM_VERSION}_amd64.deb" sudo apt install -y ./gum.deb diff --git a/install/app-lazydocker.sh b/install/app-lazydocker.sh index afe2191..6f62afb 100644 --- a/install/app-lazydocker.sh +++ b/install/app-lazydocker.sh @@ -1,4 +1,4 @@ -cd ~/Downloads +cd /tmp LAZYDOCKER_VERSION=$(curl -s "https://api.github.com/repos/jesseduffield/lazydocker/releases/latest" | grep -Po '"tag_name": "v\K[^"]*') curl -sLo lazydocker.tar.gz "https://github.com/jesseduffield/lazydocker/releases/latest/download/lazydocker_${LAZYDOCKER_VERSION}_Linux_x86_64.tar.gz" tar -xf lazydocker.tar.gz lazydocker diff --git a/install/app-lazygit.sh b/install/app-lazygit.sh index b038cc2..70f90fe 100644 --- a/install/app-lazygit.sh +++ b/install/app-lazygit.sh @@ -1,4 +1,4 @@ -cd ~/Downloads +cd /tmp LAZYGIT_VERSION=$(curl -s "https://api.github.com/repos/jesseduffield/lazygit/releases/latest" | grep -Po '"tag_name": "v\K[^"]*') curl -sLo lazygit.tar.gz "https://github.com/jesseduffield/lazygit/releases/latest/download/lazygit_${LAZYGIT_VERSION}_Linux_x86_64.tar.gz" tar -xf lazygit.tar.gz lazygit diff --git a/install/app-localsend.sh b/install/app-localsend.sh index 14cdefa..56b571e 100644 --- a/install/app-localsend.sh +++ b/install/app-localsend.sh @@ -1,4 +1,4 @@ -cd ~/Downloads +cd /tmp LOCALSEND_VERSION=$(curl -s "https://api.github.com/repos/localsend/localsend/releases/latest" | grep -Po '"tag_name": "v\K[^"]*') wget -O localsend.deb "https://github.com/localsend/localsend/releases/latest/download/LocalSend-${LOCALSEND_VERSION}-linux-x86-64.deb" sudo apt install -y ./localsend.deb diff --git a/install/app-vscode.sh b/install/app-vscode.sh index 531d437..b1a39d7 100644 --- a/install/app-vscode.sh +++ b/install/app-vscode.sh @@ -1,4 +1,4 @@ -cd ~/Downloads +cd /tmp wget -O code.deb 'https://code.visualstudio.com/sha/download?build=stable&os=linux-deb-x64' sudo apt install -y ./code.deb rm code.deb diff --git a/install/app-zellij.sh b/install/app-zellij.sh index 50585af..fbae982 100644 --- a/install/app-zellij.sh +++ b/install/app-zellij.sh @@ -1,4 +1,4 @@ -cd ~/Downloads +cd /tmp wget -O zellij.tar.gz "https://github.com/zellij-org/zellij/releases/latest/download/zellij-x86_64-unknown-linux-musl.tar.gz" tar -xf zellij.tar.gz zellij sudo install zellij /usr/local/bin diff --git a/install/app-zoom.sh b/install/app-zoom.sh index 57eec37..73bbe2a 100644 --- a/install/app-zoom.sh +++ b/install/app-zoom.sh @@ -1,4 +1,4 @@ -cd ~/Downloads +cd /tmp wget https://zoom.us/client/latest/zoom_amd64.deb sudo apt install -y ./zoom_amd64.deb rm zoom_amd64.deb diff --git a/install/fonts.sh b/install/fonts.sh index d536bf5..5e62eef 100644 --- a/install/fonts.sh +++ b/install/fonts.sh @@ -1,6 +1,6 @@ mkdir -p ~/.local/share/fonts -cd ~/Downloads +cd /tmp wget https://github.com/ryanoasis/nerd-fonts/releases/latest/download/CascadiaMono.zip unzip CascadiaMono.zip -d CascadiaFont cp CascadiaFont/*.ttf ~/.local/share/fonts From 9ff62a151e526e13fee681e4d256a8b987e638f7 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Tue, 11 Jun 2024 22:24:38 +0200 Subject: [PATCH 07/12] Download additional fonts on demand instead of upfront Co-authored-by: @iljo-dp --- bin/omakub-font | 54 ++++++++++++++----- ...{cascadia-mono.toml => CaskaydiaMono.toml} | 0 .../{fira-mono.toml => FiraMono.toml} | 0 ...jetbrains-mono.toml => JetBrainsMono.toml} | 0 fonts/alacritty/{meslo.toml => MesloLGS.toml} | 0 install/fonts.sh | 21 ++------ 6 files changed, 43 insertions(+), 32 deletions(-) rename fonts/alacritty/{cascadia-mono.toml => CaskaydiaMono.toml} (100%) rename fonts/alacritty/{fira-mono.toml => FiraMono.toml} (100%) rename fonts/alacritty/{jetbrains-mono.toml => JetBrainsMono.toml} (100%) rename fonts/alacritty/{meslo.toml => MesloLGS.toml} (100%) diff --git a/bin/omakub-font b/bin/omakub-font index 9174ddb..2b2a9d6 100644 --- a/bin/omakub-font +++ b/bin/omakub-font @@ -1,18 +1,44 @@ -# Pick a preconfigured theme -FONT=$(gum choose "Cascadia Mono" "Fira Mono" "JetBrains Mono" "Meslo" --header "Choose your programming font:" --height 6 | tr '[:upper:]' '[:lower:]' | sed 's/ /-/g') +set_font() { + local font_name=$1 + local url=$2 + local file_type=$3 + local file_name="${font_name/ Nerd Font/}" -[ ! -n "$FONT" ] && exit 0 + if ! $(fc-list | grep -i "$font_name" > /dev/null); then + cd /tmp + wget -O "$file_name.zip" "$url" + unzip "$file_name.zip" -d "$file_name" + cp "$file_name"/*."$file_type" ~/.local/share/fonts + rm -rf "$file_name.zip" "$file_name" + fc-cache + cd - + fi -if [ "$FONT" == "cascadia-mono" ]; then - NERD_FONT="CaskaydiaMono Nerd Font" -elif [ "$FONT" == "fira-mono" ]; then - NERD_FONT="FiraMono Nerd Font" -elif [ "$FONT" == "jetbrains-mono" ]; then - NERD_FONT="JetBrainsMono NFM" -elif [ "$FONT" == "meslo" ]; then - NERD_FONT="MesloLGLDZ Nerd Font" + gsettings set org.gnome.desktop.interface monospace-font-name "$font_name 10" + cp "$OMAKUB_PATH/fonts/alacritty/$file_name.toml" ~/.config/alacritty/font.toml + sed -i "s/\"editor.fontFamily\": \".*\"/\"editor.fontFamily\": \"$font_name\"/g" ~/.config/Code/User/settings.json +} + +if [ "$#" -gt 0 ]; then + choice=${!#} +else + choice=$(gum choose "Cascadia Mono" "Fira Mono" "JetBrains Mono" "Meslo" --height 6) fi -gsettings set org.gnome.desktop.interface monospace-font-name "$NERD_FONT 10" -cp $OMAKUB_PATH/fonts/alacritty/$FONT.toml ~/.config/alacritty/font.toml -sed -i "s/\"editor.fontFamily\": \".*\"/\"editor.fontFamily\": \"$NERD_FONT\"/g" ~/.config/Code/User/settings.json +case $choice in + "Cascadia Mono") + set_font "CaskaydiaMono Nerd Font" "https://github.com/ryanoasis/nerd-fonts/releases/latest/download/CascadiaMono.zip" "ttf" + ;; + "Fira Mono") + set_font "FiraMono Nerd Font" "https://github.com/ryanoasis/nerd-fonts/releases/latest/download/FiraMono.zip" "otf" + ;; + "JetBrains Mono") + set_font "JetBrainsMono Nerd Font" "https://github.com/ryanoasis/nerd-fonts/releases/latest/download/JetBrainsMono.zip" "ttf" + ;; + "Meslo") + set_font "MesloLGS Nerd Font" "https://github.com/ryanoasis/nerd-fonts/releases/latest/download/Meslo.zip" "Meslo" "ttf" + ;; + * ) + exit 0 + ;; +esac diff --git a/fonts/alacritty/cascadia-mono.toml b/fonts/alacritty/CaskaydiaMono.toml similarity index 100% rename from fonts/alacritty/cascadia-mono.toml rename to fonts/alacritty/CaskaydiaMono.toml diff --git a/fonts/alacritty/fira-mono.toml b/fonts/alacritty/FiraMono.toml similarity index 100% rename from fonts/alacritty/fira-mono.toml rename to fonts/alacritty/FiraMono.toml diff --git a/fonts/alacritty/jetbrains-mono.toml b/fonts/alacritty/JetBrainsMono.toml similarity index 100% rename from fonts/alacritty/jetbrains-mono.toml rename to fonts/alacritty/JetBrainsMono.toml diff --git a/fonts/alacritty/meslo.toml b/fonts/alacritty/MesloLGS.toml similarity index 100% rename from fonts/alacritty/meslo.toml rename to fonts/alacritty/MesloLGS.toml diff --git a/install/fonts.sh b/install/fonts.sh index 5e62eef..213e5a6 100644 --- a/install/fonts.sh +++ b/install/fonts.sh @@ -6,25 +6,10 @@ unzip CascadiaMono.zip -d CascadiaFont cp CascadiaFont/*.ttf ~/.local/share/fonts rm -rf CascadiaMono.zip CascadiaFont -wget https://github.com/ryanoasis/nerd-fonts/releases/latest/download/FiraMono.zip -unzip FiraMono.zip -d FiraMono -cp FiraMono/*.otf ~/.local/share/fonts -rm -rf FiraMono.zip FiraMono - -wget https://github.com/ryanoasis/nerd-fonts/releases/latest/download/JetBrainsMono.zip -unzip JetBrainsMono.zip -d JetBrainsMono -cp JetBrainsMono/*.ttf ~/.local/share/fonts -rm -rf JetBrainsMono.zip JetBrainsMono - -wget https://github.com/ryanoasis/nerd-fonts/releases/latest/download/Meslo.zip -unzip Meslo.zip -d Meslo -cp Meslo/*.ttf ~/.local/share/fonts -rm -rf Meslo.zip Meslo - -wget https://github.com/iaolo/iA-Fonts/archive/refs/heads/master.zip -unzip master.zip -d iaFonts +wget -O iafonts.zip https://github.com/iaolo/iA-Fonts/archive/refs/heads/master.zip +unzip iafonts.zip -d iaFonts cp iaFonts/iA-Fonts-master/iA\ Writer\ Mono/Static/iAWriterMonoS-*.ttf ~/.local/share/fonts -rm -rf master.zip iaFonts +rm -rf iafonts.zip iaFonts fc-cache cd - From 8eb712edc27d70ce15ba889f03cb846b21911137 Mon Sep 17 00:00:00 2001 From: Jeremy Daer Date: Mon, 10 Jun 2024 21:09:01 -0700 Subject: [PATCH 08/12] Switch to Docker's apt repo for fresher releases --- install/docker.sh | 20 +++++++++++++------- uninstall/docker.sh | 2 +- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/install/docker.sh b/install/docker.sh index 205e7c9..cb07132 100644 --- a/install/docker.sh +++ b/install/docker.sh @@ -1,15 +1,21 @@ -sudo apt install -y docker.io docker-buildx +# Add the official Docker repo +sudo install -m 0755 -d /etc/apt/keyrings +sudo wget -qO /etc/apt/keyrings/docker.asc https://download.docker.com/linux/ubuntu/gpg +sudo chmod a+r /etc/apt/keyrings/docker.asc +echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null +sudo apt update + +# Install Docker engine and standard plugins +sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras + +# Give this user privileged Docker access sudo usermod -aG docker ${USER} # Limit log size to avoid running out of disk -echo '{"log-driver":"json-file","log-opts":{"max-size":"10m","max-file":"5"}}' | sudo tee /etc/docker/daemon.json +echo '{"log-driver":"json-file","log-opts":{"max-size":"10m","max-file":"5"}}' | sudo tee /etc/docker/daemon.json > /dev/null -DOCKER_COMPOSE_VERSION="2.27.0" -DOCKER_CONFIG=${DOCKER_CONFIG:-$HOME/.docker} -mkdir -p $DOCKER_CONFIG/cli-plugins -curl -sSL https://github.com/docker/compose/releases/download/v$DOCKER_COMPOSE_VERSION/docker-compose-linux-x86_64 -o $DOCKER_CONFIG/cli-plugins/docker-compose -chmod +x $DOCKER_CONFIG/cli-plugins/docker-compose +# Default containers sudo docker create --restart unless-stopped -p "127.0.0.1:3306:3306" --name=mysql8 -e MYSQL_ROOT_PASSWORD= -e MYSQL_ALLOW_EMPTY_PASSWORD=true mysql:8.4 sudo docker create --restart unless-stopped -p "127.0.0.1:6379:6379" --name=redis redis:7 sudo docker create --restart unless-stopped -p "127.0.0.1:5432:5432" --name=postgres16 -e POSTGRES_HOST_AUTH_METHOD=trust postgres:16 diff --git a/uninstall/docker.sh b/uninstall/docker.sh index 0ac4a52..f021887 100644 --- a/uninstall/docker.sh +++ b/uninstall/docker.sh @@ -1,2 +1,2 @@ -sudo apt remove -y docker.io docker-buildx +sudo apt purge --auto-remove docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras sudo groupdel docker From 1e36b3baf42e76ef5dfa96a3a0ffc5eb09d11723 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Tue, 11 Jun 2024 22:56:40 +0200 Subject: [PATCH 09/12] Select dev env Here we do differ on what's needed/shared --- install/docker.sh | 4 ---- install/mise.sh | 5 ----- install/select-dev-env.sh | 39 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 39 insertions(+), 9 deletions(-) create mode 100644 install/select-dev-env.sh diff --git a/install/docker.sh b/install/docker.sh index 205e7c9..c683c8f 100644 --- a/install/docker.sh +++ b/install/docker.sh @@ -9,7 +9,3 @@ DOCKER_CONFIG=${DOCKER_CONFIG:-$HOME/.docker} mkdir -p $DOCKER_CONFIG/cli-plugins curl -sSL https://github.com/docker/compose/releases/download/v$DOCKER_COMPOSE_VERSION/docker-compose-linux-x86_64 -o $DOCKER_CONFIG/cli-plugins/docker-compose chmod +x $DOCKER_CONFIG/cli-plugins/docker-compose - -sudo docker create --restart unless-stopped -p "127.0.0.1:3306:3306" --name=mysql8 -e MYSQL_ROOT_PASSWORD= -e MYSQL_ALLOW_EMPTY_PASSWORD=true mysql:8.4 -sudo docker create --restart unless-stopped -p "127.0.0.1:6379:6379" --name=redis redis:7 -sudo docker create --restart unless-stopped -p "127.0.0.1:5432:5432" --name=postgres16 -e POSTGRES_HOST_AUTH_METHOD=trust postgres:16 diff --git a/install/mise.sh b/install/mise.sh index 18fb822..9a7e3eb 100644 --- a/install/mise.sh +++ b/install/mise.sh @@ -5,8 +5,3 @@ wget -qO - https://mise.jdx.dev/gpg-key.pub | gpg --dearmor | sudo tee /etc/apt/ echo "deb [signed-by=/etc/apt/keyrings/mise-archive-keyring.gpg arch=amd64] https://mise.jdx.dev/deb stable main" | sudo tee /etc/apt/sources.list.d/mise.list sudo apt update sudo apt install -y mise - -# Install default languages -mise use --global ruby@3.3 -mise use --global node@lts -mise use --global go@latest diff --git a/install/select-dev-env.sh b/install/select-dev-env.sh new file mode 100644 index 0000000..fcacb84 --- /dev/null +++ b/install/select-dev-env.sh @@ -0,0 +1,39 @@ +# Install default programming languages +languages=$(gum choose "Ruby" "Node.js" "Go" "Python" "Java" --no-limit --selected "Ruby","Node.js" --height 7 --header "Select programming languages") + +for language in $languages; do + case $language in + Ruby) + mise use --global ruby@3.3 + ;; + Node.js) + mise use --global node@lts + ;; + Go) + mise use --global go@latest + ;; + Java) + mise use --global java@latest + ;; + Python) + mise use --global python@latest + ;; + esac +done + +# Install default databases +dbs=$(gum choose "MySQL" "PostgreSQL" "Redis" --no-limit --selected "MySQL","Redis" --height 5 --header "Select databases (runs in Docker)") + +for db in $dbs; do + case $db in + MySQL) + sudo docker run -d --restart unless-stopped -p "127.0.0.1:3306:3306" --name=mysql8 -e MYSQL_ROOT_PASSWORD= -e MYSQL_ALLOW_EMPTY_PASSWORD=true mysql:8.4 + ;; + PostgreSQL) + sudo docker run -d --restart unless-stopped -p "127.0.0.1:5432:5432" --name=postgres16 -e POSTGRES_HOST_AUTH_METHOD=trust postgres:16 + ;; + Redis) + sudo docker run -d --restart unless-stopped -p "127.0.0.1:6379:6379" --name=redis redis:7 + ;; + esac +done From 78944be0d9da444836b1529c880c1a6540c3f353 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Tue, 11 Jun 2024 23:03:06 +0200 Subject: [PATCH 10/12] Order defaults first --- install/select-dev-env.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/install/select-dev-env.sh b/install/select-dev-env.sh index fcacb84..1049e77 100644 --- a/install/select-dev-env.sh +++ b/install/select-dev-env.sh @@ -22,18 +22,18 @@ for language in $languages; do done # Install default databases -dbs=$(gum choose "MySQL" "PostgreSQL" "Redis" --no-limit --selected "MySQL","Redis" --height 5 --header "Select databases (runs in Docker)") +dbs=$(gum choose "MySQL" "Redis" "PostgreSQL" --no-limit --selected "MySQL","Redis" --height 5 --header "Select databases (runs in Docker)") for db in $dbs; do case $db in MySQL) sudo docker run -d --restart unless-stopped -p "127.0.0.1:3306:3306" --name=mysql8 -e MYSQL_ROOT_PASSWORD= -e MYSQL_ALLOW_EMPTY_PASSWORD=true mysql:8.4 ;; - PostgreSQL) - sudo docker run -d --restart unless-stopped -p "127.0.0.1:5432:5432" --name=postgres16 -e POSTGRES_HOST_AUTH_METHOD=trust postgres:16 - ;; Redis) sudo docker run -d --restart unless-stopped -p "127.0.0.1:6379:6379" --name=redis redis:7 ;; + PostgreSQL) + sudo docker run -d --restart unless-stopped -p "127.0.0.1:5432:5432" --name=postgres16 -e POSTGRES_HOST_AUTH_METHOD=trust postgres:16 + ;; esac done From 1f478d26b8df0f592c859cc9eebfededc748272e Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Tue, 11 Jun 2024 23:14:52 +0200 Subject: [PATCH 11/12] Make commercial apps optional --- install/{ => optional}/app-1password.sh | 0 install/{ => optional}/app-spotify.sh | 0 install/{ => optional}/app-zoom.sh | 0 install/select-optional-apps.sh | 6 ++++++ 4 files changed, 6 insertions(+) rename install/{ => optional}/app-1password.sh (100%) rename install/{ => optional}/app-spotify.sh (100%) rename install/{ => optional}/app-zoom.sh (100%) create mode 100644 install/select-optional-apps.sh diff --git a/install/app-1password.sh b/install/optional/app-1password.sh similarity index 100% rename from install/app-1password.sh rename to install/optional/app-1password.sh diff --git a/install/app-spotify.sh b/install/optional/app-spotify.sh similarity index 100% rename from install/app-spotify.sh rename to install/optional/app-spotify.sh diff --git a/install/app-zoom.sh b/install/optional/app-zoom.sh similarity index 100% rename from install/app-zoom.sh rename to install/optional/app-zoom.sh diff --git a/install/select-optional-apps.sh b/install/select-optional-apps.sh new file mode 100644 index 0000000..27ed4f9 --- /dev/null +++ b/install/select-optional-apps.sh @@ -0,0 +1,6 @@ +# Install optional apps +apps=$(gum choose "1password" "Spotify" "Zoom" "Dropbox" "VirtualBox" --no-limit --selected "1password","Spotify","Zoom" --height 7 --header "Select commercial apps") + +for app in $apps; do + source "$OMAKUB_PATH/install/optional/app-$app.sh" +done From 3787890f1e09505a9182d601c124837234216695 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Tue, 11 Jun 2024 23:20:02 +0200 Subject: [PATCH 12/12] Since some optional apps may not be installed, only include in dock what is --- install/set-dock.sh | 45 +++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 43 insertions(+), 2 deletions(-) diff --git a/install/set-dock.sh b/install/set-dock.sh index cb40545..ed5b1cc 100644 --- a/install/set-dock.sh +++ b/install/set-dock.sh @@ -1,2 +1,43 @@ -# Set default pinned applications (funny installer name to ensure it runs after all app installations!) -gsettings set org.gnome.shell favorite-apps "['google-chrome.desktop', 'Alacritty.desktop', 'code.desktop', 'WhatsApp.desktop', 'signal-desktop.desktop', 'spotify.desktop', 'typora.desktop', 'Zoom.desktop', 'pinta_pinta.desktop', 'com.github.xournalpp.xournalpp.desktop', '1password.desktop', 'org.gnome.Settings.desktop', 'org.gnome.Nautilus.desktop']" +# Favorite apps for dock +apps=( + "google-chrome.desktop" + "Alacritty.desktop" + "code.desktop" + "WhatsApp.desktop" + "signal-desktop.desktop" + "spotify.desktop" + "typora.desktop" + "Zoom.desktop" + "pinta_pinta.desktop" + "com.github.xournalpp.xournalpp.desktop" + "1password.desktop" + "org.gnome.Settings.desktop" + "org.gnome.Nautilus.desktop" +) + +# Array to hold installed favorite apps +installed_apps=() + +# Directory where .desktop files are typically stored +desktop_dirs=( + "/usr/share/applications" + "/usr/local/share/applications" + "$HOME/.local/share/applications" +) + +# Check if a .desktop file exists for each app +for app in "${apps[@]}"; do + for dir in "${desktop_dirs[@]}"; do + if [ -f "$dir/$app" ]; then + installed_apps+=("$app") + break + fi + done +done + +# Convert the array to a format suitable for gsettings +favorites_list=$(printf "'%s'," "${installed_apps[@]}") +favorites_list="[${favorites_list%,}]" + +# Set the favorite apps +gsettings set org.gnome.shell favorite-apps "$favorites_list"