diff options
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | Common/bashrc | 1 | ||||
-rw-r--r-- | Common/bashrc.m4 | 153 | ||||
-rw-r--r-- | Common/zshrc.m4 | 12 | ||||
-rw-r--r-- | Makefile.m4 | 8 | ||||
-rwxr-xr-x | configure | 12 | ||||
-rwxr-xr-x | install.sh | 65 |
7 files changed, 180 insertions, 72 deletions
@@ -78,6 +78,7 @@ system.m4 # Generated Common/zshrc +Common/bashrc linux/tmux.conf linux/qtile/config/config.py linux/sway/config diff --git a/Common/bashrc b/Common/bashrc deleted file mode 100644 index 36357ee..0000000 --- a/Common/bashrc +++ /dev/null @@ -1 +0,0 @@ -alias lamp='curl -i -H Accept: application/json -H Content-Type: application/json -X GET http://192.168.10.191/j?lamp=toggle' diff --git a/Common/bashrc.m4 b/Common/bashrc.m4 new file mode 100644 index 0000000..c1078f2 --- /dev/null +++ b/Common/bashrc.m4 @@ -0,0 +1,153 @@ +m4_include(`system.m4')m4_dnl +# ~/.bashrc: executed by bash(1) for non-login shells. +# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc) +# for examples + +# If not running interactively, don't do anything +case $- in + *i*) ;; + *) return;; +esac + +# Check if env setup file exists +if [ ! -f ~/.dotfiles_env ]; then + echo "export ZSH=$HOME/.oh-my-zsh" > ~/.dotfiles_env + echo "DEFAULT_USER=$USER" >> ~/.zsh_env_setup + echo "export GIT_EDITOR=\"DEFAULT_EDITOR\"" >> ~/.dotfiles_env + echo "export GIT_AUTHOR_NAME=\"GIT_USER\"" >> ~/.dotfiles_env + echo "export GIT_AUTHOR_EMAIL=\"GIT_EMAIL\"" >> ~/.dotfiles_env +fi + +# Add some commons to PATH +export PATH=$HOME/bin:/usr/local/bin:$HOME/.local/bin:$PATH:$HOME/go/bin + +# Modify locale and path +export LC_ALL=en_US.UTF-8 +export LANG=en_US.UTF-8 + +# Set editor +export EDITOR="DEFAULT_EDITOR" + +# don't put duplicate lines or lines starting with space in the history. +# See bash(1) for more options +HISTCONTROL=ignoreboth + +# append to the history file, don't overwrite it +shopt -s histappend + +# for setting history length see HISTSIZE and HISTFILESIZE in bash(1) +HISTSIZE=1000 +HISTFILESIZE=2000 + +# check the window size after each command and, if necessary, +# update the values of LINES and COLUMNS. +shopt -s checkwinsize + +# If set, the pattern "**" used in a pathname expansion context will +# match all files and zero or more directories and subdirectories. +#shopt -s globstar + +# set a fancy prompt (non-color, unless we know we "want" color) +case "$TERM" in + xterm-color|*-256color) color_prompt=yes;; +esac + +if [ "$color_prompt" = yes ]; then + PS1='\[\033[01;34m\]\w\[\033[00m\]\$ ' +else + PS1='\w\$ ' +fi +unset color_prompt + +# enable color support of ls and also add handy aliases +if [ -x /usr/bin/dircolors ]; then + test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)" + alias ls='ls --color=auto' + alias ll='ls -l --color=auto' + alias la='ls -A --color=auto' + + alias grep='grep --color=auto' + alias fgrep='fgrep --color=auto' + alias egrep='egrep --color=auto' +fi + +# man pages in colors +man() { + LESS_TERMCAP_md=$'\e[01;31m' \ + LESS_TERMCAP_me=$'\e[0m' \ + LESS_TERMCAP_se=$'\e[0m' \ + LESS_TERMCAP_so=$'\e[01;44;33m' \ + LESS_TERMCAP_ue=$'\e[0m' \ + LESS_TERMCAP_us=$'\e[01;32m' \ + command man "$@" +} + +# colored GCC warnings and errors +#export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01' + +# Alias definitions. +# You may want to put all your additions into a separate file like +# ~/.bash_aliases, instead of adding them here directly. +# See /usr/share/doc/bash-doc/examples in the bash-doc package. + +if [ -f ~/.bash_aliases ]; then + . ~/.bash_aliases +fi + +# enable programmable completion features (you don't need to enable +# this, if it's already enabled in /etc/bash.bashrc and /etc/profile +# sources /etc/bash.bashrc). +if ! shopt -oq posix; then + if [ -f /usr/share/bash-completion/bash_completion ]; then + . /usr/share/bash-completion/bash_completion + elif [ -f /etc/bash_completion ]; then + . /etc/bash_completion + fi +fi + +# Make tmux window title show the ssh hostname +# Make short hostname only if its not an IP address +__tm_get_hostname(){ + local HOST="$(echo $* | rev | cut -d ' ' -f 1 | rev)" + if echo $HOST | grep -P "^([0-9]+\.){3}[0-9]+" -q; then + echo $HOST + else + echo $HOST| cut -d . -f 1 + fi +} + +__tm_get_current_window(){ + tmux list-windows| awk -F : '/\(active\)$/{print $1}' +} + +# Rename window according to __tm_get_hostname and then restore it after the command +__tm_command() { + if [ "$(ps -p $(ps -p $$ -o ppid=) -o comm=| cut -d : -f 1)" = "tmux" ]; then + __tm_window=$(__tm_get_current_window) + # Use current window to change back the setting. If not it will be applied to the active window + trap "tmux set-window-option -t $__tm_window automatic-rename on 1>/dev/null" EXIT HUP INT QUIT PIPE TERM + tmux rename-window "$(__tm_get_hostname $*)" + command "$@" + tmux set-window-option -t $__tm_window automatic-rename on 1>/dev/null + else + command "$@" + fi +} + +ssh() { + __tm_command ssh "$@" +} + +# start only one ssh-agent and reuse the created one +# this is used for sway, although keys added do not persist on reboot +SSH_DIR="$HOME" +if ! pgrep -u "$USER" ssh-agent > /dev/null; then + ssh-agent > "$SSH_DIR/ssh-agent.env" +fi +source "$SSH_DIR/ssh-agent.env" > /dev/null + +# enable cargo things +. "$HOME/.cargo/env" + +# Enable FZF history +[ -f ~/.fzf.bash ] && source ~/.fzf.bash diff --git a/Common/zshrc.m4 b/Common/zshrc.m4 index c455782..2cafd8e 100644 --- a/Common/zshrc.m4 +++ b/Common/zshrc.m4 @@ -11,12 +11,12 @@ export PATH=$HOME/bin:/usr/local/bin:$HOME/.local/bin:$PATH:$HOME/go/bin export KEYTIMEOUT=1 # Check if env setup file exists -if [ ! -f ~/.zsh_env_setup ]; then - echo "export ZSH=$HOME/.oh-my-zsh" > ~/.zsh_env_setup - echo "DEFAULT_USER=$USER" >> ~/.zsh_env_setup - echo "export GIT_EDITOR=\"DEFAULT_EDITOR\"" >> ~/.zsh_env_setup - echo "export GIT_AUTHOR_NAME=\"GIT_USER\"" >> ~/.zsh_env_setup - echo "export GIT_AUTHOR_EMAIL=\"GIT_EMAIL\"" >> ~/.zsh_env_setup +if [ ! -f ~/.dotfiles_env ]; then + echo "export ZSH=$HOME/.oh-my-zsh" > ~/.dotfiles_env + echo "DEFAULT_USER=$USER" >> ~/.dotfiles_env + echo "export GIT_EDITOR=\"DEFAULT_EDITOR\"" >> ~/.dotfiles_env + echo "export GIT_AUTHOR_NAME=\"GIT_USER\"" >> ~/.dotfiles_env + echo "export GIT_AUTHOR_EMAIL=\"GIT_EMAIL\"" >> ~/.dotfiles_env fi # Source env setup file diff --git a/Makefile.m4 b/Makefile.m4 index 72267d0..08d498f 100644 --- a/Makefile.m4 +++ b/Makefile.m4 @@ -31,6 +31,7 @@ m4_ifdef(`INSTALL_OTHER_SYMLINKS', `$(HOME_DIR)/.zshrc') m4_dnl m4_ifdef(`INSTALL_OTHER_SYMLINKS', `$(HOME_DIR)/bin') m4_dnl m4_ifdef(`INSTALL_OTHER_SYMLINKS', `$(HOME_DIR)/.vimrc') m4_dnl m4_ifdef(`INSTALL_OTHER_SYMLINKS', `$(HOME_DIR)/.vim') m4_dnl +m4_ifdef(`INSTALL_OTHER_SYMLINKS', `$(HOME_DIR)/.bashrc') m4_dnl m4_ifdef(`INSTALL_OTHER_SYMLINKS', `$(HOME_DIR)/.p10k.zsh') m4_dnl m4_ifdef(`INSTALL_OTHER_SYMLINKS', `$(HOME_DIR)/.config/rofi') m4_dnl m4_ifdef(`INSTALL_OTHER_SYMLINKS', `$(HOME_DIR)/.config/deadd') m4_dnl @@ -63,6 +64,13 @@ Common/zshrc: Common/zshrc.m4 \ $(HOME_DIR)/.zshrc: Common/zshrc $(call create_dotfile_symlink,Common/zshrc,.zshrc) +Common/bashrc: Common/bashrc.m4 \ + ${M4_COMMON_DEPS} + $(call M4_EXEC) + +$(HOME_DIR)/.bashrc: Common/bashrc + $(call create_dotfile_symlink,Common/bashrc,.bashrc) + $(HOME_DIR)/bin: bin $(call create_dotfile_symlink,bin,bin) @@ -3,6 +3,18 @@ set -o pipefail M4_DEF_FILE="system.m4" +if [ -f "${M4_DEF_FILE}" ]; then + dialog \ + --backtitle "Dotfile configuration" \ + --title "Overwrite settings?" \ + --defaultno \ + --yesno "A system.m4 file already exists, do you want to make that file over again? If you press No, the Makefile will be processed again based on the current system.m4 file." 0 0 + if [ "$?" -eq 1 ]; then + m4 -P Makefile.m4 > Makefile + exit 0 + fi +fi + HOME_DIRECTORY=$(dialog \ --backtitle "Dotfile configuration" \ --title "Configure" \ diff --git a/install.sh b/install.sh deleted file mode 100755 index 9f27f19..0000000 --- a/install.sh +++ /dev/null @@ -1,65 +0,0 @@ -#!/bin/bash - -M4_DEF_FILE="system.m4" -echo "m4_define(\`DEFAULT_SHELL', \`/usr/bin/zsh')m4_dnl" > ${M4_DEF_FILE} -read -p "Enter dotfiles type: " dotfiles_type -echo "m4_define(\`DOTFILES_TYPE', \`${dotfiles_type}')m4_dnl" >> ${M4_DEF_FILE} -read -p "Enter git user: " git_user -echo "m4_define(\`GIT_USER', \`${git_user}')m4_dnl" >> ${M4_DEF_FILE} -read -p "Enter git email: " git_email -echo "m4_define(\`GIT_EMAIL', \`${git_email}')m4_dnl" >> ${M4_DEF_FILE} -read -p "Enter default editor: " default_editor -echo "m4_define(\`DEFAULT_EDITOR', \`${default_editor}')m4_dnl" >> ${M4_DEF_FILE} -read -p "Enter sysid: " sysid -echo "m4_define(\`SYSID', \`${sysid}')m4_dnl" >> ${M4_DEF_FILE} - -if [ "$EUID" -eq 0 ]; then - echo "Please don't run this as root, let sudo handle privilege escalation" - exit 1 -fi -if ! command -v sudo &> /dev/null; then - echo "Could not find sudo, please make sure it is installed and set up correctly." - exit -fi - -case "$OSTYPE" in - darwin*) - echo "m4_define(\`OS_TYPE', \`macos')m4_dnl" >> ${M4_DEF_FILE} - export INSTALLER_PM="brew" - echo "Detected your OS as \"mac\"." - ./install/install_mac.sh - ;; - linux*) - echo "m4_define(\`OS_TYPE', \`linux')m4_dnl" >> ${M4_DEF_FILE} - echo "I detected that you are running linux, please enter your distro." - tput setaf 4 - echo "Please enter: \"arch\", \"fedora\" or \"debian\"" - tput setaf 3 - printf "> " - read distro - printf "\n" - tput sgr0 - - if [ $distro == "arch" ]; then - export INST_PM="sudo packman -S" - elif [ $distro == "debian" ]; then - export INST_PM="sudo apt-get -y install" - elif [ $distro == "fedora" ]; then - export INST_PM="sudo dnf -qy install" - else - echo "Unknown distro." - echo "If you know what os you have, you can run the install script manually." - echo "first run `export INST_PM=\"<sudo package-manager>\"` to indicate the package manager to the install script." - exit 1 - fi - - ./install/install_linux.sh - ;; - *) - echo "Unkown OS..." - echo "If you know what os you have, you can run the install script manually." - echo "first run `export INST_PM=\"<sudo package-manager>\"` to indicate the package manager to the install script." - ;; -esac - -make |