From e3abbb56072bda3ed5f792d287fa9e287b1e67c7 Mon Sep 17 00:00:00 2001 From: Ivan Bushchik Date: Tue, 3 Jan 2023 19:05:51 +0300 Subject: [PATCH] Add quick environment generator --- env/.zshrc | 32 ++++++++++++++++++++ env/nvim/init.vim | 17 +++++++++++ tools/env.sh | 76 +++++++++++++++++++++++++++++++++++++++++++++++ tools/link_env.sh | 11 +++++++ 4 files changed, 136 insertions(+) create mode 100644 env/.zshrc create mode 100644 env/nvim/init.vim create mode 100755 tools/env.sh create mode 100644 tools/link_env.sh diff --git a/env/.zshrc b/env/.zshrc new file mode 100644 index 0000000..68b148e --- /dev/null +++ b/env/.zshrc @@ -0,0 +1,32 @@ + +export ZSH="$HOME/.env/oh-my-zsh" + +ZSH_THEME="ivabus" +ENABLE_CORRECTION="true" +plugins=(git zsh-syntax-highlighting) + +# Function to quickly show stats on systemload, usage of filesystems, usage of ram/swap and uptime +stats () { + AVLD=$(cut -d " " -f1-3 /proc/loadavg) + USEDMEM=$(free -h | grep Mem | awk '{print $3 " / " $2}') + USEDSWAP=$(free -h | grep Swap | awk '{ print $3 " / " $2}') + USEDSTRG=$(df / -h | tail -n 1 | awk '{print $3}') + USEDSTRGPERC=$(df / -h | tail -n 1 | awk '{print $5}') + STRG=$(df / -h | tail -n 1 | awk '{print $2}') + USEDSTRGHOME=$(df /home -h | tail -n 1 | awk '{print $3}') + USEDSTRGPERCHOME=$(df /home -h | tail -n 1 | awk '{print $5}') + STRGHOME=$(df /home -h | tail -n 1 | awk '{print $2}') + UPTIME=$(uptime -p) + printf "\e[0;34msystem load:\e[m\t${AVLD}\n" + printf "\e[0;34musage of /:\e[m\t${USEDSTRGPERC}% (${USEDSTRG}/${STRG})\n" + printf "\e[0;34musage of /home:\e[m\t${USEDSTRGPERCHOME}% (${USEDSTRGHOME}/${STRGHOME})\n" + printf "\e[0;34mmemory usage:\e[m\t${USEDMEM}\n" + printf "\e[0;34mswap usage:\e[m\t${USEDSWAP}\n" + printf "\e[0;34muptime:\e[m\t\t${UPTIME}\n" +} + +source $ZSH/oh-my-zsh.sh +export REPORTTIME=10 +alias vi="nvim" +alias vim="nvim" +alias timestamp='date -u +%FT%TZ' diff --git a/env/nvim/init.vim b/env/nvim/init.vim new file mode 100644 index 0000000..3762d50 --- /dev/null +++ b/env/nvim/init.vim @@ -0,0 +1,17 @@ +filetype plugin indent on +set showmatch +set hlsearch +set incsearch +set autoindent +set expandtab +set tabstop=4 +set shiftwidth=4 +set number +set wildmode=longest, list +set cc=80 +syntax on +set noswapfile +set backupdir=~/.cache/vim +set completeopt=noinsert,menuone,noselect +set cursorline +set relativenumber diff --git a/tools/env.sh b/tools/env.sh new file mode 100755 index 0000000..a18c11d --- /dev/null +++ b/tools/env.sh @@ -0,0 +1,76 @@ +#!/bin/sh + +install_compilers() { + echo "=> Installing rust" + $TEA +rust-lang.org zsh -c "exit" + echo "=> Installing llvm" + $TEA +llvm.org zsh -c "exit" + echo "=> Installing python" + $TEA +python.org zsh -c "exit" +} + +install_tools() { + echo "=> Installing git" + $TEA +git-scm.org zsh -c "exit" + echo "=> Installing GitHub CLI" + $TEA +cli.github.com zsh -c "exit" + echo "=> Installing make & automake & cmake & meson & ninja" + $TEA +gnu.org/make zsh -c "exit" + $TEA +gnu.org/automake zsh -c "exit" + $TEA +cmake.org zsh -c "exit" + $TEA +mesonbuild.com zsh -c "exit" + $TEA +ninja-build.org zsh -c "exit" +} + +echo "=> This script will create small environment" +echo " with dotfiles from ivabus/ivabus-dotfiles" +echo ":: Press enter for continue" +read + +echo "=> Installing env to ~/.env" +mkdir -p ~/.env/bin > /dev/null 2>&1 + +TEA_PREFIX=~/.env/tea +TEA=~/.env/tea/tea.xyz/v0/bin/tea +PATH=$PATH + +echo "=> Installing static zsh" +sh -c "$(curl -fsSL https://raw.githubusercontent.com/romkatv/zsh-bin/master/install)" -q -d ~/.env -e no +PATH="$HOME/.env/bin:$PATH" + +echo "=> Installing tea" +sh <(curl https://tea.xyz) -s +echo "=> Installing neovim" +$TEA +neovim.io zsh -c "exit" +echo "=> Installing htop" +$TEA +htop.dev zsh -c "exit" + + +echo -n ":: Would you like to install compilers/interpretators (LLVM, Rust, Python)? (Y/n): " +read $INSTALL_COMPILERS +if [ "${INSTALL_COMPILERS^^}" = "Y" ]; then + install_compilers +fi + +echo -n ":: Would you like to install development tools (git, github cli, make/cmake/meson/ninja)? (Y/n): " +read $INSTALL_TOOLS +if [ "${INSTALL_TOOLS^^}" = "Y" ]; then + install_tools +fi + +echo "=> Configuring \$PATH" +for i in "tea" "nvim" "clang" "clang++" "lldb" "rustc" "cargo" "htop" "make" "cmake" "automake" "meson" "ninja" "git" "gh" +do + ln -s $TEA ~/.env/bin/$i +done + +echo "=> Installing dotfiles" +git clone https://github.com/ivabus/ivabus-dotfiles ~/.env/dotfiles +sh ~/.env/dotfiles/tools/link_env.sh +ZSH="$HOME/.env/oh-my-zsh" sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" "" --unattended > /dev/null 2>&1 +curl -fsSL https://raw.githubusercontent.com/ivabus/ivabus-zsh-theme/master/ivabus.zsh-theme -o $HOME/.env/oh-my-zsh/custom/themes/ivabus.zsh-theme > /dev/null 2>&1 +git clone https://github.com/zsh-users/zsh-syntax-highlighting.git $HOME/.env/oh-my-zsh/custom/plugins/zsh-syntax-highlighting > /dev/null 2>&1 + +echo "=> Environment installed to ~/.env" +echo " To start environment just type:" +echo " PATH=\"\$HOME/.env/bin:\$PATH\" zsh" diff --git a/tools/link_env.sh b/tools/link_env.sh new file mode 100644 index 0000000..5d18bf8 --- /dev/null +++ b/tools/link_env.sh @@ -0,0 +1,11 @@ +#!/bin/sh + +echo "=> Linking zshrc" +if [ -f ~/.zshrc ]; then + echo "=> Moving old zshrc to ~/.zshrc.old" + mv ~/.zshrc ~/.zshrc.old +fi +ln -s ~/.env/dotfiles/.zshrc ~/.zshrc +echo "=> Linking neovim files" +rm -rf ${XDG_CONFIG_HOME:-$HOME/.config}/nvim +ln -s ~/.env/dotfiles/nvim ${XDG_CONFIG_HOME:-$HOME/.config}/nvim