From d0f1a08429857765813c4f55b198e9f0ccd120ed Mon Sep 17 00:00:00 2001 From: Alexander Hosking Date: Mon, 27 Feb 2017 01:49:09 -0500 Subject: [PATCH] Base installation and configs --- .vimrc | 27 +++ git/.gitconfig | 9 + install.sh | 19 ++ run/.bash_profile | 53 +++++- system/.alias | 12 ++ system/.dir_colors | 425 +++++++++++++++++++++++++++++++++++++++++++++ system/.env | 23 +++ system/.function | 4 + system/.prompt | 0 system/.vimrc | 27 +++ 10 files changed, 596 insertions(+), 3 deletions(-) create mode 100644 .vimrc create mode 100644 git/.gitconfig create mode 100644 install.sh create mode 100644 system/.alias create mode 100644 system/.dir_colors create mode 100644 system/.env create mode 100644 system/.function create mode 100644 system/.prompt create mode 100644 system/.vimrc diff --git a/.vimrc b/.vimrc new file mode 100644 index 0000000..12a7194 --- /dev/null +++ b/.vimrc @@ -0,0 +1,27 @@ +set nocompatible " get rid of Vi compatibility mode. SET FIRST! +execute pathogen#infect('bundle/{}') +filetype plugin indent on " filetype detection[ON] plugin[ON] indent[ON] +set t_Co=256 " enable 256-color mode. +syntax enable " enable syntax highlighting (previously syntax on). +colorscheme desert " set colorscheme +set number " show line numbers +set laststatus=2 " last window always has a statusline +filetype indent on " activates indenting for files +set nohlsearch " Don't continue to highlight searched phrases. +set incsearch " But do highlight as you type your search. +set ignorecase " Make searches case-insensitive. +set ruler " Always show info along bottom. +set autoindent " auto-indent +set tabstop=4 " tab spacing +set softtabstop=4 " unify +set shiftwidth=4 " indent/outdent by 4 columns +set shiftround " always indent/outdent to the nearest tabstop +set expandtab " use spaces instead of tabs +set smarttab " use tabs at the start of a line, spaces elsewhere +set nowrap " don't wrap text + +" swap, backup and undo directories +" make with: mkdir -p ~/.vim/{backup_files,swap_files,undo_files} +set backupdir=~/.vim/backup_files// +set directory=~/.vim/swap_files// +set undodir=~/.vim/undo_files// diff --git a/git/.gitconfig b/git/.gitconfig new file mode 100644 index 0000000..996fbfb --- /dev/null +++ b/git/.gitconfig @@ -0,0 +1,9 @@ +[user] + name = Alexander Hosking + email = alexander@ahosking.com +[push] + default = simple +[rebase] + autostash = true +[core] + editor = vim diff --git a/install.sh b/install.sh new file mode 100644 index 0000000..308e51b --- /dev/null +++ b/install.sh @@ -0,0 +1,19 @@ +#!/bin/bash + +export DOTFILES_DIR EXTRA_DIR +DOTFILES_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +EXTRA_DIR="$HOME/.extra" + +# Update dotfiles itself first + +[ -d "$DOTFILES_DIR/.git" ] && git --work-tree="$DOTFILES_DIR" --git-dir="$DOTFILES_DIR/.git" pull origin master + +#vim backup folders +mkdir -p ~/.vim/{backup_files,swap_files,undo_files} + +# Bunch of symlinks +ln -sfv "$DOTFILES_DIR/run/.bash_profile" ~ +ln -sfv "$DOTFILES_DIR/run/.bash_profile" ~/.bashrc +ln -sfv "$DOTFILES_DIR/git/.gitconfig" ~ +ln -sfv "$DOTFILES_DIR/system/.vimrc" ~ + diff --git a/run/.bash_profile b/run/.bash_profile index 7cf874f..d8076c9 100644 --- a/run/.bash_profile +++ b/run/.bash_profile @@ -1,7 +1,54 @@ # If not running interactively, don't do anything! [[ $- != *i* ]] && return -for DOTFILE in `find /home/ahosking/.dotfiles` -do - [ -f "$DOTFILE" ] && source "$DOTFILE" +# Resolve DOTFILES_DIR (assuming ~/.dotfiles on distros without readlink and/or $BASH_SOURCE/$0) + +READLINK=$(which greadlink || which readlink) +CURRENT_SCRIPT=$BASH_SOURCE + +if [[ -n $CURRENT_SCRIPT && -x "$READLINK" ]]; then + SCRIPT_PATH=$($READLINK -f "$CURRENT_SCRIPT") + DOTFILES_DIR=$(dirname "$(dirname "$SCRIPT_PATH")") +elif [ -d "$HOME/.dotfiles" ]; then + DOTFILES_DIR="$HOME/.dotfiles" +else + echo "Unable to find dotfiles, exiting." + return # `exit 1` would quit the shell itself +fi + +# Finally we can source the dotfiles (order matters) + +for DOTFILE in "$DOTFILES_DIR"/system/.{function,,env,alias,prompt,vimrc}; do + [ -f "$DOTFILE" ] && . "$DOTFILE" done + +# Set LSCOLORS + +eval "$(dircolors "$DOTFILES_DIR"/system/.dir_colors)" + +# Hook for extra/custom stuff + +EXTRA_DIR="$HOME/.extra" + +if [ -d "$EXTRA_DIR" ]; then + for EXTRAFILE in "$EXTRA_DIR"/run/*.sh; do + [ -f "$EXTRAFILE" ] && . "$EXTRAFILE" + done +fi + +# BEGIN ANSIBLE MANAGED BLOCK +if [ -f `which powerline-daemon` ]; then + powerline-daemon -q + POWERLINE_BASH_CONTINUATION=1 + POWERLINE_BASH_SELECT=1 + . /usr/share/powerline/bindings/bash/powerline.sh +fi + + +# Clean up + +unset READLINK CURRENT_SCRIPT SCRIPT_PATH DOTFILE + +# Export + +export OS DOTFILES_DIR EXTRA_DIR diff --git a/system/.alias b/system/.alias new file mode 100644 index 0000000..997b553 --- /dev/null +++ b/system/.alias @@ -0,0 +1,12 @@ +alias ll="ls -la" +alias ld="ls -ld */" + +alias ..="cd .." +alias ...="cd ../.." +alias ....="cd ../../.." + +### Vagrant +alias vp='vagrant provision' +alias vssh='vagrant ssh' +alias vd='vagrant destroy' +alias vc='vagrant destroy && vagrant up --provision' diff --git a/system/.dir_colors b/system/.dir_colors new file mode 100644 index 0000000..377bf23 --- /dev/null +++ b/system/.dir_colors @@ -0,0 +1,425 @@ +# Exact Solarized color theme for the color GNU ls utility. +# Designed for dircolors (GNU coreutils) 5.97 +# +# This simple theme was simultaneously designed for these terminal color schemes: +# - Solarized dark (best) +# - Solarized light (best) +# - default dark +# - default light +# +# How the colors were selected: +# - Terminal emulators often have an option typically enabled by default that makes +# bold a different color. It is important to leave this option enabled so that +# you can access the entire 16-color Solarized palette, and not just 8 colors. +# - We favor universality over a greater number of colors. So we limit the number +# of colors so that this theme will work out of the box in all terminals, +# Solarized or not, dark or light. +# - We choose to have the following category of files: +# NORMAL & FILE, DIR, LINK, EXEC and +# editable text including source, unimportant text, binary docs & multimedia source +# files, viewable multimedia, archived/compressed, and unimportant non-text +# - For uniqueness, we stay away from the Solarized foreground colors are -- either +# base00 (brightyellow) or base0 (brighblue). However, they can be used if +# you know what the bg/fg colors of your terminal are, in order to optimize the display. +# - 3 different options are provided: universal, solarized dark, and solarized light. +# The only difference between the universal scheme and one that's optimized for +# dark/light is the color of "unimportant" files, which should blend more with the +# background +# - We note that blue is the hardest color to see on dark bg and yellow is the hardest +# color to see on light bg (with blue being particularly bad). So we choose yellow +# for multimedia files which are usually accessed in a GUI folder browser anyway. +# And blue is kept for custom use of this scheme's user. +# - See table below to see the assignments. + + +# Insatllation instructions: +# This file goes in the /etc directory, and must be world readable. +# You can copy this file to .dir_colors in your $HOME directory to override +# the system defaults. + +# COLOR needs one of these arguments: 'tty' colorizes output to ttys, but not +# pipes. 'all' adds color characters to all output. 'none' shuts colorization +# off. +COLOR tty + +# Below, there should be one TERM entry for each termtype that is colorizable +TERM ansi +TERM color_xterm +TERM color-xterm +TERM con132x25 +TERM con132x30 +TERM con132x43 +TERM con132x60 +TERM con80x25 +TERM con80x28 +TERM con80x30 +TERM con80x43 +TERM con80x50 +TERM con80x60 +TERM cons25 +TERM console +TERM cygwin +TERM dtterm +TERM Eterm +TERM eterm-color +TERM gnome +TERM gnome-256color +TERM jfbterm +TERM konsole +TERM kterm +TERM linux +TERM linux-c +TERM mach-color +TERM mlterm +TERM nxterm +TERM putty +TERM rxvt +TERM rxvt-256color +TERM rxvt-cygwin +TERM rxvt-cygwin-native +TERM rxvt-unicode +TERM rxvt-unicode256 +TERM rxvt-unicode-256color +TERM screen +TERM screen-256color +TERM screen-256color-bce +TERM screen-bce +TERM screen.linux +TERM screen-w +TERM vt100 +TERM xterm +TERM xterm-16color +TERM xterm-256color +TERM xterm-88color +TERM xterm-color +TERM xterm-debian + +# EIGHTBIT, followed by '1' for on, '0' for off. (8-bit output) +EIGHTBIT 1 + +############################################################################# +# Below are the color init strings for the basic file types. A color init +# string consists of one or more of the following numeric codes: +# +# Attribute codes: +# 00=none 01=bold 04=underscore 05=blink 07=reverse 08=concealed +# Text color codes: +# 30=black 31=red 32=green 33=yellow 34=blue 35=magenta 36=cyan 37=white +# Background color codes: +# 40=black 41=red 42=green 43=yellow 44=blue 45=magenta 46=cyan 47=white +# +# NOTES: +# - See http://www.oreilly.com/catalog/wdnut/excerpt/color_names.html +# - Color combinations +# ANSI Color code Solarized Notes Universal SolDark SolLight +# ~~~~~~~~~~~~~~~ ~~~~~~~~~ ~~~~~ ~~~~~~~~~ ~~~~~~~ ~~~~~~~~ +# 00 none NORMAL, FILE +# 30 black base02 +# 01;30 bright black base03 bg of SolDark +# 31 red red docs & mm src +# 01;31 bright red orange EXEC +# 32 green green editable text +# 01;32 bright green base01 unimportant text +# 33 yellow yellow unclear in light bg multimedia +# 01;33 bright yellow base00 fg of SolLight unimportant non-text +# 34 blue blue unclear in dark bg user customized +# 01;34 bright blue base0 fg in SolDark unimportant text +# 35 magenta magenta LINK +# 01;35 bright magenta violet archive/compressed +# 36 cyan cyan DIR +# 01;36 bright cyan base1 unimportant non-text +# 37 white base2 +# 01;37 bright white base3 bg in SolLight +# 05;37;41 unclear in Putty dark + + +### By file type + +# global default +NORMAL 00 +# normal file +FILE 00 +# directory +DIR 36 +# symbolic link +LINK 35 + +# pipe, socket, block device, character device (blue bg) +FIFO 30;44 +SOCK 35;44 +DOOR 35;44 # Solaris 2.5 and later +BLK 33;44 +CHR 37;44 + + +############################################################################# +### By file attributes + +# Orphaned symlinks (blinking white on red) +# Blink may or may not work (works on iTerm dark or light, and Putty dark) +ORPHAN 05;37;41 +# ... and the files that orphaned symlinks point to (blinking white on red) +MISSING 05;37;41 + +# files with execute permission +EXEC 01;31 # Unix +.cmd 01;31 # Win +.exe 01;31 # Win +.com 01;31 # Win +.bat 01;31 # Win +.reg 01;31 # Win +.app 01;31 # OSX + +############################################################################# +### By extension + +# List any file extensions like '.gz' or '.tar' that you would like ls +# to colorize below. Put the extension, a space, and the color init string. +# (and any comments you want to add after a '#') + +### Text formats + +# Text that we can edit with a regular editor +.txt 32 +.org 32 +.md 32 +.mkd 32 +.pdc 32 + +# Source text +.h 32 +.c 32 +.C 32 +.cc 32 +.cxx 32 +.objc 32 +.sh 32 +.csh 32 +.zsh 32 +.el 32 +.vim 32 +.java 32 +.pl 32 +.pm 32 +.py 32 +.rb 32 +.hs 32 +.php 32 +.htm 32 +.html 32 +.shtml 32 +.xml 32 +.rdf 32 +.css 32 +.js 32 +.man 32 +.0 32 +.1 32 +.2 32 +.3 32 +.4 32 +.5 32 +.6 32 +.7 32 +.8 32 +.9 32 +.l 32 +.n 32 +.p 32 +.pod 32 +.tex 32 + +### Multimedia formats + +# Image +.bmp 33 +.cgm 33 +.dl 33 +.dvi 33 +.emf 33 +.eps 33 +.gif 33 +.jpeg 33 +.jpg 33 +.JPG 33 +.mng 33 +.pbm 33 +.pcx 33 +.pdf 33 +.pgm 33 +.png 33 +.ppm 33 +.pps 33 +.ppsx 33 +.ps 33 +.svg 33 +.svgz 33 +.tga 33 +.tif 33 +.tiff 33 +.xbm 33 +.xcf 33 +.xpm 33 +.xwd 33 +.xwd 33 +.yuv 33 + +# Audio +.aac 33 +.au 33 +.flac 33 +.mid 33 +.midi 33 +.mka 33 +.mp3 33 +.mpa 33 +.mpeg 33 +.mpg 33 +.ogg 33 +.ra 33 +.wav 33 + +# Video +.anx 33 +.asf 33 +.avi 33 +.axv 33 +.flc 33 +.fli 33 +.flv 33 +.gl 33 +.m2v 33 +.m4v 33 +.mkv 33 +.mov 33 +.mp4 33 +.mp4v 33 +.mpeg 33 +.mpg 33 +.nuv 33 +.ogm 33 +.ogv 33 +.ogx 33 +.qt 33 +.rm 33 +.rmvb 33 +.swf 33 +.vob 33 +.wmv 33 + +### Misc + +# Binary document formats and multimedia source +.doc 31 +.docx 31 +.rtf 31 +.dot 31 +.dotx 31 +.xls 31 +.xlsx 31 +.ppt 31 +.pptx 31 +.fla 31 +.psd 31 + +# Archives, compressed +.7z 1;35 +.apk 1;35 +.arj 1;35 +.bin 1;35 +.bz 1;35 +.bz2 1;35 +.cab 1;35 # Win +.deb 1;35 +.dmg 1;35 # OSX +.gem 1;35 +.gz 1;35 +.iso 1;35 +.jar 1;35 +.msi 1;35 # Win +.rar 1;35 +.rpm 1;35 +.tar 1;35 +.tbz 1;35 +.tbz2 1;35 +.tgz 1;35 +.tx 1;35 +.war 1;35 +.xpi 1;35 +.xz 1;35 +.z 1;35 +.Z 1;35 +.zip 1;35 + +# For testing +.ANSI-30-black 30 +.ANSI-01;30-brblack 01;30 +.ANSI-31-red 31 +.ANSI-01;31-brred 01;31 +.ANSI-32-green 32 +.ANSI-01;32-brgreen 01;32 +.ANSI-33-yellow 33 +.ANSI-01;33-bryellow 01;33 +.ANSI-34-blue 34 +.ANSI-01;34-brblue 01;34 +.ANSI-35-magenta 35 +.ANSI-01;35-brmagenta 01;35 +.ANSI-36-cyan 36 +.ANSI-01;36-brcyan 01;36 +.ANSI-37-white 37 +.ANSI-01;37-brwhite 01;37 + +############################################################################# +# Your customizations + +# Unimportant text files +# For universal scheme, use brightgreen 01;32 +# For optimal on light bg (but too prominent on dark bg), use white 01;34 +.log 01;32 +*~ 01;32 +*# 01;32 +#.log 01;34 +#*~ 01;34 +#*# 01;34 + +# Unimportant non-text files +# For universal scheme, use brightcyan 01;36 +# For optimal on dark bg (but too prominent on light bg), change to 01;33 +.bak 01;36 +.BAK 01;36 +.old 01;36 +.OLD 01;36 +.org_archive 01;36 +.off 01;36 +.OFF 01;36 +.dist 01;36 +.DIST 01;36 +.orig 01;36 +.ORIG 01;36 +.swp 01;36 +.swo 01;36 +*,v 01;36 +#.bak 01;33 +#.BAK 01;33 +#.old 01;33 +#.OLD 01;33 +#.org_archive 01;33 +#.off 01;33 +#.OFF 01;33 +#.dist 01;33 +#.DIST 01;33 +#.orig 01;33 +#.ORIG 01;33 +#.swp 01;33 +#.swo 01;33 +#*,v 01;33 + +# The brightmagenta (Solarized: purple) color is free for you to use for your +# custom file type +.gpg 34 +.gpg 34 +.pgp 34 +.asc 34 +.3des 34 +.aes 34 +.enc 34 diff --git a/system/.env b/system/.env new file mode 100644 index 0000000..6eb2bfe --- /dev/null +++ b/system/.env @@ -0,0 +1,23 @@ +#!/usr/bin/env bash + +export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:$DOTFILES_DIR/bin:$HOME/apps" + +# Make vim the default editor. +export EDITOR='vim'; + +# Enable persistent REPL history for `node`. +export NODE_REPL_HISTORY=~/.node_history; +# Allow 32³ entries; the default is 1000. +export NODE_REPL_HISTORY_SIZE='32768'; +# Use sloppy mode by default, matching web browsers. +export NODE_REPL_MODE='sloppy'; + +# Make Python use UTF-8 encoding for output to stdin, stdout, and stderr. +export PYTHONIOENCODING='UTF-8'; + +# Increase Bash history size. Allow 32³ entries; the default is 500. +export HISTSIZE='32768'; +export HISTFILESIZE="${HISTSIZE}"; +# Omit duplicates and commands that begin with a space from history. +export HISTCONTROL='ignoreboth'; + diff --git a/system/.function b/system/.function new file mode 100644 index 0000000..a288e8a --- /dev/null +++ b/system/.function @@ -0,0 +1,4 @@ +# Create a new directory and enter it +function mk() { + mkdir -p "$@" && cd "$@" +} diff --git a/system/.prompt b/system/.prompt new file mode 100644 index 0000000..e69de29 diff --git a/system/.vimrc b/system/.vimrc new file mode 100644 index 0000000..29ee774 --- /dev/null +++ b/system/.vimrc @@ -0,0 +1,27 @@ +execute pathogen#infect('bundle/{}') +filetype plugin indent on " filetype detection[ON] plugin[ON] indent[ON] +set nocompatible " get rid of Vi compatibility mode. SET FIRST! +set t_Co=256 " enable 256-color mode. +colorscheme desert " set colorscheme +set number " show line numbers +set laststatus=2 " last window always has a statusline +filetype indent on " activates indenting for files +set nohlsearch " Don't continue to highlight searched phrases. +set incsearch " But do highlight as you type your search. +set ignorecase " Make searches case-insensitive. +set ruler " Always show info along bottom. +set autoindent " auto-indent +set tabstop=4 " tab spacing +set softtabstop=4 " unify +set shiftwidth=4 " indent/outdent by 4 columns +set shiftround " always indent/outdent to the nearest tabstop +set expandtab " use spaces instead of tabs +set smarttab " use tabs at the start of a line, spaces elsewhere +set nowrap " don't wrap text +set autoread "Reload files changed outside vim +syntax on + +" swap, backup and undo directories +set backupdir=~/.vim/backup_files// +set directory=~/.vim/swap_files// +set undodir=~/.vim/undo_files//