ssh_loc := "/home/$USER/.ssh/id_rsa"
n_cpu   := "$(($(grep -c ^processor /proc/cpuinfo)-2))"

# ------------------- Package Installers ------------------- #

# Install a package using apt
apt +package:
    #!/usr/bin/bash
    for p in {{package}}; do
        PKG_OK=$(dpkg-query -W --showformat='${Status}\n' $p |grep "install ok installed")
        if [ "" = "$PKG_OK" ]; then
            echo "No $p . Setting up $p ."
            sudo apt-get -qy install $p 
        fi
    done

cargo_update: (rust) (cargo "cargo-update")
    cargo install-update -a

# Install a package using cargo
cargo +package: (rust)
    #!/usr/bin/bash
    for p in {{package}}; do
        RESULT=$(command -v $p)
        if [ "" = "$RESULT" ]; then
            cargo binstall $p -y
        fi
    done

rust:
    #!/usr/bin/env bash
    PKG=$(which rustup)
    if [ "" = "$PKG" ]; then
        # rustup / cargo
        curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
        # cargo-binstall
        curl -L --proto '=https' --tlsv1.2 -sSf https://raw.githubusercontent.com/cargo-bins/cargo-binstall/main/install-from-binstall-release.sh | bash
    fi

zsh: (apt "zsh fzf build-essential") (duf) (lazygit) (cargo "eza zoxide bat fd-find yazi-fm yazi-cli tealdeer ripgrep") (node)
    tldr --update
    exec zsh
    chsh -s $(which zsh)
    antidote load

zsh_local:
    sh -c "$(curl -fsSL https://raw.githubusercontent.com/romkatv/zsh-bin/master/install)"


cloudflared: (apt "gdebi")
    wget https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb
    sudo gdebi -n cloudflared-linux-amd64.deb
    rm cloudflared-linux-amd64.deb

nvim: (cargo "bob-nvim ripgrep tree-sitter-cli")
    bob use stable

node: (cargo "fnm")
    fnm install --lts

nix:
    sh <(curl -L https://nixos.org/nix/install) --daemon

font myfont="Meslo":
    #!/usr/bin/env bash
    wget https://github.com/ryanoasis/nerd-fonts/releases/download/v2.1.0/{{myfont}}.zip
    unzip {{myfont}}.zip -d ~/.fonts
    fc-cache -fv
    rm {{myfont}}.zip

tmux: (apt "tmux")
    git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm

nord: (apt "dconf-cli") (apt "uuid-runtime") (apt "gnome-tweaks")
    #!/usr/bin/env bash
    # install terminal theme
    export TERMINAL=gnome-terminal
    bash -c "$(wget -qO- https://raw.githubusercontent.com/Mayccoll/Gogh/master/themes/nord.sh)"
    # install ubuntu theme
    git clone https://github.com/EliverLara/Nordic.git ~/.themes/nordic

obsidian: launcher 
    curl -fLO https://glare.now.sh/obsidianmd/obsidian-releases/.AppImage
    mv .AppImage ~/Applications/Obsidian.AppImage

lazygit: 
  #!/bin/env bash 
  LAZYGIT_VERSION=$(curl -s "https://api.github.com/repos/jesseduffield/lazygit/releases/latest" | grep -Po '"tag_name": "v\K[^"]*')
  curl -Lo 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
  cp lazygit $HOME/.local/bin
  rm lazygit*

direnv:
  curl -sfL https://direnv.net/install.sh | bash

duf: (apt "gdebi")
  #!/bin/env bash 
  DUF_VERSION=$(curl -s "https://api.github.com/repos/muesli/duf/releases/latest" | grep -Po '"tag_name": "v\K[^"]*')
  echo $DUF_VERSION
  curl -Lo duf.deb "https://github.com/muesli/duf/releases/latest/download/duf_${DUF_VERSION}_linux_amd64.deb"
  sudo gdebi -n duf.deb
  rm duf.deb

slack: (apt "gdebi") 
    wget https://downloads.slack-edge.com/linux_releases/slack-desktop-4.17.0-amd64.deb
    sudo gdebi -n slack*.deb
    rm slack*.deb

zoom: (apt "gdebi") 
    wget https://zoom.us/client/latest/zoom_amd64.deb
    sudo gdebi -n zoom*.deb
    rm zoom*.deb

zotero:
    curl -sL https://raw.githubusercontent.com/retorquere/zotero-deb/master/install.sh | sudo bash  
    sudo apt update
    sudo apt install -qy zotero

chrome: (apt "gdebi") 
    wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
    sudo gdebi -n google-chrome*.deb
    rm google-chrome*.deb

# From here: https://code.visualstudio.com/docs/setup/linux
vscode: 
    wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > packages.microsoft.gpg
    sudo install -o root -g root -m 644 packages.microsoft.gpg /etc/apt/trusted.gpg.d/
    sudo sh -c 'echo "deb [arch=amd64,arm64,armhf signed-by=/etc/apt/trusted.gpg.d/packages.microsoft.gpg] https://packages.microsoft.com/repos/code stable main" > /etc/apt/sources.list.d/vscode.list'
    rm -f packages.microsoft.gpg
    sudo apt update
    sudo apt install -qy code

syncthing: 
    curl -s https://syncthing.net/release-key.txt | sudo apt-key add -
    echo "deb https://apt.syncthing.net/ syncthing stable" | sudo tee /etc/apt/sources.list.d/syncthing.list
    sudo apt-get update
    sudo apt-get install syncthing
    sudo systemctl enable syncthing@$(whoami).service
    sudo systemctl start syncthing@$(whoami).service

docker: 
    sudo apt-get install ca-certificates gnupg lsb-release
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
    echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
    sudo apt-get update
    sudo apt-get install -qy docker-ce docker-ce-cli containerd.io
    sudo usermod -aG docker $USER

ssh:
    #!/usr/bin/env bash
    ssh-keygen -t rsa -N "" -f {{ssh_loc}}
    eval `ssh-agent`
    ssh-add {{ssh_loc}}
    cat {{ssh_loc}}.pub

### Optional ones that aren't ran by default
launcher: (apt "gdebi") 
    curl -fLO https://glare.now.sh/TheAssassin/AppImageLauncher/amd64.deb
    sudo gdebi -n amd64.deb
    rm amd64.deb    
    mkdir -p ~/Applications
