From 5a10ec49a80dd0fe9ed20b7b49881c363339b4b1 Mon Sep 17 00:00:00 2001 From: Tine Jozelj Date: Sun, 21 Apr 2024 19:55:27 +0200 Subject: [PATCH] feat: macos support --- common.sh | 6 +-- install-linux.sh | 90 +++++++++++++++++++++++++++++++++++++++ install-macos.sh | 21 +++++++++ install.sh | 108 ++++++++--------------------------------------- switch.sh | 1 + 5 files changed, 132 insertions(+), 94 deletions(-) create mode 100755 install-linux.sh create mode 100755 install-macos.sh diff --git a/common.sh b/common.sh index bcef245..b31db98 100644 --- a/common.sh +++ b/common.sh @@ -1,8 +1,7 @@ -#!/bin/bash +#!/usr/bin/env bash REPO_DIR=$(dirname $(readlink -f $0)) HOME_DIR=${HOME} -OS_RELEASE=$(cat /etc/os-release | grep -E "^ID=" | cut -d= -f2) echo_header() { bold=$(tput bold) @@ -43,5 +42,4 @@ while [[ $# -gt 0 ]]; do exit 1 ;; esac -done -echo_header "== DotFiles with GUI: $GUI and ENV: $ENVIRONMENT" +done \ No newline at end of file diff --git a/install-linux.sh b/install-linux.sh new file mode 100755 index 0000000..1aabc50 --- /dev/null +++ b/install-linux.sh @@ -0,0 +1,90 @@ +#!/usr/bin/env bash +set -euo pipefail + +source common.sh +OS_RELEASE=$(cat /etc/os-release | grep -E "^ID=" | cut -d= -f2) + +# Install basic packages. +# Most other packages are installed via Home Manager. +# Or for GUI applications, they are installed via flatpak. +if [ "$OS_RELEASE" = "fedora" ]; then + echo_header "== Detected Fedora" + rpm-ostree install --idempotent --apply-live --allow-inactive -y \ + git git-lfs zsh curl htop wget +elif [ "$OS_RELEASE" = "ubuntu" ]; then + echo_header "== Detected Ubuntu" + sudo apt-get update + sudo apt-get install -y \ + git git-lfs zsh curl htop wget +fi + +if [ "$GUI" = "YES" ]; then + if [ "$OS_RELEASE" = "fedora" ]; then + echo_header "==[fedora] Installing GUI applications" + rpm-ostree install --idempotent --apply-live --allow-inactive -y \ + kitty \ + gphoto2 v4l2loopback ffmpeg \ + ddcutil + + echo_header "==[fedora] Installing docker" + cat </dev/null +[docker-ce-stable] +name=Docker CE Stable - \$basearch +baseurl=https://download.docker.com/linux/fedora/\$releasever/\$basearch/stable +enabled=1 +gpgcheck=1 +gpgkey=https://download.docker.com/linux/fedora/gpg +EOF + rpm-ostree install --idempotent --apply-live --allow-inactive -y \ + docker-ce docker-ce-cli \ + containerd.io \ + docker-buildx-plugin \ + docker-compose-plugin + sudo usermod -aG docker $USER + echo "== Docker installed, restart will be needed to take effect." + elif [ "$OS_RELEASE" = "ubuntu" ]; then + echo_header "==[ubuntu] Installing GUI applications" + sudo apt-get update + sudo apt-get install -y \ + kitty \ + gphoto2 ffmpeg \ + ddcutil + + echo_header "==[ubuntu] Installing flatpak" + sudo apt-get install -y \ + flatpak gnome-software-plugin-flatpak + + echo_header "==[ubuntu] Installing docker" + sudo apt-get update + sudo apt-get install ca-certificates + sudo install -m 0755 -d /etc/apt/keyrings + sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc + 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-get update + sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin + sudo usermod -aG docker $USER + echo "== Docker installed, restart will be needed to take effect." + fi + + echo_header "== Installing flatpaks" + flatpak remote-add --user --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo + flatpak install -y --user \ + com.bitwarden.desktop \ + md.obsidian.Obsidian \ + org.mozilla.firefox \ + org.mozilla.Thunderbird \ + org.gnome.Builder \ + com.vscodium.codium + + echo_header "== Installing fonts" + HOME_FONTS_DIR="${HOME_DIR}/.local/share/fonts" + mkdir -p ${HOME_FONTS_DIR} + rm -rf ${HOME_FONTS_DIR}/dotfiles-fonts + git clone --depth 1 git@github.com:mentos1386/dotfiles-fonts.git ${HOME_FONTS_DIR}/dotfiles-fonts + fc-cache +fi + diff --git a/install-macos.sh b/install-macos.sh new file mode 100755 index 0000000..96ba57f --- /dev/null +++ b/install-macos.sh @@ -0,0 +1,21 @@ +#!/usr/bin/env bash +set -euo pipefail + +source common.sh + +echo_header "== Installing homebrew" +/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" +export PATH="/opt/homebrew/bin:$PATH" + +echo_header "== Installing CLI tools" +brew install git git-lfs zsh curl htop wget + +echo_header "== Installing GUI tools" +brew install --cask --adopt \ + kitty \ + orbstack \ + firefox \ + bitwarden \ + obsidian \ + thunderbird \ + visual-studio-code \ No newline at end of file diff --git a/install.sh b/install.sh index 6fbcf7f..9ca7420 100755 --- a/install.sh +++ b/install.sh @@ -1,94 +1,22 @@ -#!/bin/env bash +#!/usr/bin/env bash set -euo pipefail source common.sh +echo_header "== DotFiles with GUI: $GUI and ENV: $ENVIRONMENT" -# Install basic packages. -# Most other packages are installed via Home Manager. -# Or for GUI applications, they are installed via flatpak. -if [ "$OS_RELEASE" = "fedora" ]; then - echo_header "==[host] Detected Fedora" - rpm-ostree install --idempotent --apply-live --allow-inactive -y \ - git git-lfs zsh curl htop wget -elif [ "$OS_RELEASE" = "ubuntu" ]; then - echo_header "==[host] Detected Ubuntu" - sudo apt-get update - sudo apt-get install -y \ - git git-lfs zsh curl htop wget +if [[ "$OSTYPE" == "linux-gnu"* ]]; then + echo_header "== Detected linux" + ./install-linux.sh +elif [[ "$OSTYPE" == "darwin"* ]]; then + echo_header "== Detected macos" + ./install-macos.sh +else + echo "Error: ${OSTYPE} is not supported!" + exit 1 fi -if [ "$GUI" = "YES" ]; then - if [ "$OS_RELEASE" = "fedora" ]; then - echo_header "==[host:fedora] Installing GUI applications" - rpm-ostree install --idempotent --apply-live --allow-inactive -y \ - kitty \ - gphoto2 v4l2loopback ffmpeg \ - ddcutil - - echo_header "==[host:fedora] Installing docker" - cat </dev/null -[docker-ce-stable] -name=Docker CE Stable - \$basearch -baseurl=https://download.docker.com/linux/fedora/\$releasever/\$basearch/stable -enabled=1 -gpgcheck=1 -gpgkey=https://download.docker.com/linux/fedora/gpg -EOF - rpm-ostree install --idempotent --apply-live --allow-inactive -y \ - docker-ce docker-ce-cli \ - containerd.io \ - docker-buildx-plugin \ - docker-compose-plugin - sudo usermod -aG docker $USER - echo "== Docker installed, restart will be needed to take effect." - elif [ "$OS_RELEASE" = "ubuntu" ]; then - echo_header "==[host:ubuntu] Installing GUI applications" - sudo apt-get update - sudo apt-get install -y \ - kitty \ - gphoto2 ffmpeg \ - ddcutil - - echo_header "==[host:ubuntu] Installing flatpak" - sudo apt-get install -y \ - flatpak gnome-software-plugin-flatpak - - echo_header "==[host:ubuntu] Installing docker" - sudo apt-get update - sudo apt-get install ca-certificates - sudo install -m 0755 -d /etc/apt/keyrings - sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc - 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-get update - sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin - sudo usermod -aG docker $USER - echo "== Docker installed, restart will be needed to take effect." - fi - - echo_header "==[host] Installing flatpaks" - flatpak remote-add --user --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo - flatpak install -y --user \ - com.bitwarden.desktop \ - md.obsidian.Obsidian \ - org.mozilla.firefox \ - org.mozilla.Thunderbird \ - org.gnome.Builder \ - com.vscodium.codium - - echo_header "==[host] Installing fonts" - HOME_FONTS_DIR="${HOME_DIR}/.local/share/fonts" - mkdir -p ${HOME_FONTS_DIR} - rm -rf ${HOME_FONTS_DIR}/dotfiles-fonts - git clone --depth 1 git@github.com:mentos1386/dotfiles-fonts.git ${HOME_FONTS_DIR}/dotfiles-fonts - fc-cache -fi - -echo_header "==[host] Installing Nix" -if ! nix --version; then +echo_header "== Installing Nix" +if ! command -v nix; then curl --proto '=https' --tlsv1.2 -sSf -L https://install.determinate.systems/nix | sh -s -- install . /nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh nix-channel --add https://nixos.org/channels/nixpkgs-unstable @@ -97,22 +25,22 @@ else echo "Already installed, skipping" fi -echo_header "==[host] Installing Home Manager" +echo_header "== Installing Home Manager" nix-channel --add https://github.com/nix-community/home-manager/archive/master.tar.gz home-manager nix-channel --update NIXPKGS_ALLOW_UNFREE=1 ENVIRONMENT=$ENVIRONMENT nix-shell '' -A install -echo_header "==[host] Installing Home Manager packages" +echo_header "== Installing Home Manager packages" workspace_link nix/home.nix .config/home-manager/home.nix workspace_link nix/core.nix .config/home-manager/core.nix workspace_link nix/personal.nix .config/home-manager/personal.nix workspace_link nix/work.nix .config/home-manager/work.nix NIXPKGS_ALLOW_UNFREE=1 ENVIRONMENT=$ENVIRONMENT home-manager switch -echo_header "==[host] Use zsh as default shell" +echo_header "== Use zsh as default shell" sudo chsh $USER --shell=/bin/zsh -echo_header "==[host] Plug for neovim" +echo_header "== Plug for neovim" sh -c 'curl -fLo "${XDG_DATA_HOME:-$HOME/.local/share}"/nvim/site/autoload/plug.vim --create-dirs \ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim' nvim --headless +PlugInstall +qa || true @@ -120,6 +48,6 @@ nvim --headless +PlugUpdate +qa || true nvim --headless +PlugUpgrade +qa || true if command -v code; then - echo_header "==[host] Installing vscode extensions" + echo_header "== Installing vscode extensions" ./vscode.sh --install fi diff --git a/switch.sh b/switch.sh index d3aac64..65ed2f0 100755 --- a/switch.sh +++ b/switch.sh @@ -1,6 +1,7 @@ #!/bin/env bash source common.sh +echo_header "== DotFiles with GUI: $GUI and ENV: $ENVIRONMENT" echo_header "==[host] Installing Home Manager packages" workspace_link nix/home.nix .config/home-manager/home.nix