Add setup script
This commit is contained in:
1
.bashrc
1
.bashrc
@@ -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
|
||||
|
||||
112
.vimrc
112
.vimrc
@@ -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)
|
||||
endif
|
||||
" ----------------------------
|
||||
" 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.
|
||||
set hlsearch
|
||||
endif
|
||||
" Enable swap, backup, and persistent undo
|
||||
set swapfile
|
||||
set backup
|
||||
set undofile
|
||||
|
||||
" Put these in an autocmd group, so that we can delete them easily.
|
||||
" ----------------------------
|
||||
" Visual & editing enhancements
|
||||
" ----------------------------
|
||||
" Line numbers and cursor line
|
||||
set number
|
||||
set cursorline
|
||||
|
||||
" Highlight search matches
|
||||
set hlsearch
|
||||
set incsearch
|
||||
|
||||
" 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
45
setup.sh
Normal 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."
|
||||
|
||||
Reference in New Issue
Block a user