Add setup script

This commit is contained in:
1jamesthompson1
2025-09-24 20:07:54 +12:00
parent f3abc8e78b
commit 7cd1ffbad5
3 changed files with 122 additions and 36 deletions

View File

@@ -79,6 +79,7 @@ fi
if [ -f ~/.bash_aliases ]; then
. ~/.bash_aliases
fi
alias dotfiles='/usr/bin/git --git-dir=$HOME/.dotfiles/ --work-tree=$HOME'
# enable programmable completion features (you don't need to enable

108
.vimrc
View File

@@ -1,53 +1,93 @@
" ========================================
" Basic Vim configuration for Debian/Ubuntu
" Maintainer: Your Name
" Date: 2025-09-23
" ========================================
" An example for a vimrc file.
"
" Maintainer: Bram Moolenaar <Bram@vim.org>
" Last change: 2019 Dec 17
"
" To use it, copy it to
" for Unix: ~/.vimrc
" for Amiga: s:.vimrc
" for MS-Windows: $VIM\_vimrc
" for Haiku: ~/config/settings/vim/vimrc
" for OpenVMS: sys$login:.vimrc
" When started as "evim", evim.vim will already have done these settings, bail
" out.
" Bail out if running as evim
if v:progname =~? "evim"
finish
endif
" Get the defaults that most users want.
" Load Vim defaults
source $VIMRUNTIME/defaults.vim
if has("vms")
set nobackup " do not keep a backup file, use versions instead
else
set backup " keep a backup file (restore to previous version)
if has('persistent_undo')
set undofile " keep an undo file (undo changes after closing)
" ----------------------------
" Swap, backup, and undo setup
" ----------------------------
" Directories for swap, backup, and undo files
let s:vim_dir = $HOME . '/.vim'
let &directory = s:vim_dir . '/swap//'
let &backupdir = s:vim_dir . '/backup//'
let &undodir = s:vim_dir . '/undo//'
" Create directories if they don't exist
if !isdirectory(s:vim_dir . '/swap')
call mkdir(s:vim_dir . '/swap', 'p')
endif
if !isdirectory(s:vim_dir . '/backup')
call mkdir(s:vim_dir . '/backup', 'p')
endif
if !isdirectory(s:vim_dir . '/undo')
call mkdir(s:vim_dir . '/undo', 'p')
endif
if &t_Co > 2 || has("gui_running")
" Switch on highlighting the last used search pattern.
" Enable swap, backup, and persistent undo
set swapfile
set backup
set undofile
" ----------------------------
" Visual & editing enhancements
" ----------------------------
" Line numbers and cursor line
set number
set cursorline
" Highlight search matches
set hlsearch
endif
set incsearch
" Put these in an autocmd group, so that we can delete them easily.
" Matching brackets/parentheses
set showmatch
" Tabs and indentation
set tabstop=4
set shiftwidth=4
set expandtab
" Syntax highlighting and colors
syntax on
set termguicolors
set background=dark
" Command history
set history=1000
set viminfo='1000,<1000,s100
" Search case handling
set ignorecase
set smartcase
" Enable mouse support
set mouse=a
" ----------------------------
" Filetype-specific settings
" ----------------------------
augroup vimrcEx
au!
" For all text files set 'textwidth' to 78 characters.
autocmd!
" Text files: wrap at 78 characters
autocmd FileType text setlocal textwidth=78
augroup END
" Add optional packages.
"
" The matchit plugin makes the % command work better, but it is not backwards
" compatible.
" The ! means the package won't be loaded right away but when plugins are
" loaded during initialization.
" ----------------------------
" Optional plugins
" ----------------------------
" matchit: improves % for matching tags/brackets
if has('syntax') && has('eval')
packadd! matchit
endif
" Done

45
setup.sh Normal file
View File

@@ -0,0 +1,45 @@
#!/usr/bin/env bash
set -euo pipefail
echo ">>> Bootstrapping new Debian-like machine..."
# 1. Update package list and install essentials
echo ">>> Installing bash, tmux, and vim..."
sudo apt update
sudo apt install -y bash tmux vim git curl
# 2. Clone your dotfiles (bare repo style)
if [ ! -d "$HOME/.dotfiles" ]; then
echo ">>> Cloning dotfiles repo..."
git clone --bare https://gitea.james-server.duckdns.org/james/dotfiles $HOME/.dotfiles
else
echo ">>> Dotfiles repo already exists."
fi
# 3. Checkout dotfiles
dotfiles() {
/usr/bin/git --git-dir="$HOME/.dotfiles/" --work-tree="$HOME" "$@"
}
echo ">>> Checking out dotfiles..."
if ! dotfiles checkout; then
echo ">>> Conflicts detected! Backing up existing dotfiles..."
mkdir -p $HOME/.dotfiles-backup
dotfiles checkout 2>&1 | grep -E "\s+\." | awk '{print $1}' | \
xargs -I{} mv {} $HOME/.dotfiles-backup/{}
dotfiles checkout
fi
dotfiles config --local status.showUntrackedFiles no
# 4. setup tmux
mkdir -p ~/.tmux/plugins
if [ ! -d ~/.tmux/plugins/tpm ]; then
echo ">>> Installing Tmux Plugin Manager..."
git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm
fi
echo ">>> Done! Bash, tmux, vim, and dotfiles are ready."