-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathinstall
executable file
·111 lines (100 loc) · 5.09 KB
/
install
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
#!/usr/bin/env bash
###############################################################################
# functions #
###############################################################################
# Symlink recursively a directory to another location
# $1 - dotfile directory source
# $2 - dotfile directory destination
function sym_conf() {
local src_dir="$1"
shift
local tar_dir="$1"
shift
local tmp_var
# Don't scan for broken symlink in my home directory
if [ "$tar_dir" != "$HOME" ]; then
mkdir -p "$tar_dir"
find "$tar_dir" -xtype l -exec rm -v {} \;
fi
while IFS='' read -r -d '' filename; do
tmp_var="$tar_dir${filename##$src_dir}"
mkdir -p "${tmp_var%/*}" && cp -sfv "$filename" "$tmp_var"
done < <(find "$src_dir" -mindepth 1 -type f ! -name "README.md" -print0)
}
###############################################################################
# main function #
###############################################################################
function main() {
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
local conf_dir=${XDG_CONFIG_HOME:-$HOME/.config}
local data_dir=${XDG_DATA_HOME:-$HOME/.local/share}
local pacman_hook_dir="/etc/pacman.d/hooks/"
local modules_dir="/etc/modules-load.d/"
local udev_rule_dir="/etc/udev/rules.d/"
sym_conf "${SCRIPT_DIR}/abcde" "${conf_dir}/abcde"
sym_conf "${SCRIPT_DIR}/awesomewm" "${conf_dir}/awesome"
sym_conf "${SCRIPT_DIR}/bin" "${HOME}/bin"
sym_conf "${SCRIPT_DIR}/clerk" "${conf_dir}/clerk"
sym_conf "${SCRIPT_DIR}/cookiecutter" "${conf_dir}/cookiecutter"
sym_conf "${SCRIPT_DIR}/conky" "${conf_dir}/conky"
sym_conf "${SCRIPT_DIR}/ctags" "${HOME}"
sym_conf "${SCRIPT_DIR}/dreamnote" "${conf_dir}/dreamnote"
sym_conf "${SCRIPT_DIR}/feh" "${conf_dir}/feh"
sym_conf "${SCRIPT_DIR}/gtk-3.0" "${conf_dir}/gtk-3.0"
sym_conf "${SCRIPT_DIR}/git" "${conf_dir}/git"
sym_conf "${SCRIPT_DIR}/gpg" "${HOME}/.gnupg"
sym_conf "${SCRIPT_DIR}/imapfilter" "${conf_dir}/imapfilter"
sym_conf "${SCRIPT_DIR}/mpd" "${conf_dir}/mpd"
sym_conf "${SCRIPT_DIR}/mpv" "${conf_dir}/mpv"
sym_conf "${SCRIPT_DIR}/npm" "${conf_dir}/npm"
sym_conf "${SCRIPT_DIR}/msmtp" "${conf_dir}/msmtp"
sym_conf "${SCRIPT_DIR}/neomutt" "${conf_dir}/neomutt"
sym_conf "${SCRIPT_DIR}/newsboat" "${conf_dir}/newsboat"
sym_conf "${SCRIPT_DIR}/notmuch" "${conf_dir}/notmuch"
sym_conf "${SCRIPT_DIR}/nvim" "${conf_dir}/nvim"
sym_conf "${SCRIPT_DIR}/offlineimap" "${conf_dir}/offlineimap"
sym_conf "${SCRIPT_DIR}/pam" "${HOME}"
sym_conf "${SCRIPT_DIR}/plowshare" "${conf_dir}/plowshare"
sym_conf "${SCRIPT_DIR}/pypi" "${HOME}"
sym_conf "${SCRIPT_DIR}/qutebrowser" "${conf_dir}/qutebrowser"
sym_conf "${SCRIPT_DIR}/rofi" "${conf_dir}/rofi"
sym_conf "${SCRIPT_DIR}/remind" "${conf_dir}/remind"
sym_conf "${SCRIPT_DIR}/sqlite" "${HOME}"
sym_conf "${SCRIPT_DIR}/ssh" "${HOME}/.ssh"
sym_conf "${SCRIPT_DIR}/systemd" "${conf_dir}/systemd"
sym_conf "${SCRIPT_DIR}/termite" "${conf_dir}/termite"
sym_conf "${SCRIPT_DIR}/tmux" "${conf_dir}/tmux"
sym_conf "${SCRIPT_DIR}/taskwarrior" "${conf_dir}/task"
sym_conf "${SCRIPT_DIR}/tmuxinator" "${conf_dir}/tmuxinator"
sym_conf "${SCRIPT_DIR}/vim" "${conf_dir}/vim"
sym_conf "${SCRIPT_DIR}/vimpck" "${conf_dir}/vimpck"
sym_conf "${SCRIPT_DIR}/X11" "${conf_dir}/X11"
sym_conf "${SCRIPT_DIR}/xbindkeys" "${conf_dir}/xbindkeys"
sym_conf "${SCRIPT_DIR}/zathura" "${conf_dir}/zathura"
sym_conf "${SCRIPT_DIR}/zsh" "${conf_dir}/zsh"
mkdir -p $(dirname "$LESSKEY")
lesskey "${SCRIPT_DIR}/less/lesskey"
#chmod 755 "${HOME}/.offlineimaprc"
# make systemd aware of the new user units
# systemctl --user daemon-reload
# system-dotfiles (dotfiles that requires sudo power)
## systemd
sudo ln -sf "${SCRIPT_DIR}/system-dotfiles/systemd/reflector.service" /etc/systemd/system/reflector.service
sudo ln -sf "${SCRIPT_DIR}/system-dotfiles/systemd/reflector.timer" /etc/systemd/system/reflector.timer
## pacman hooks
sudo mkdir -p "$pacman_hook_dir"
sudo ln -sf "${SCRIPT_DIR}/system-dotfiles/pacman-hooks/nvim_install_upgrade.hook" "$pacman_hook_dir"
sudo ln -sf "${SCRIPT_DIR}/system-dotfiles/pacman-hooks/clear_pacman_cache.hook" "$pacman_hook_dir"
sudo ln -sf "${SCRIPT_DIR}/system-dotfiles/pacman-hooks/clear_pacaur_cache.hook" "$pacman_hook_dir"
## enable module at boot
sudo ln -sf "${SCRIPT_DIR}/system-dotfiles/kernel-modules/i2c-dev.conf" "$modules_dir"
## rule for controling i2c bus as $USER
sudo ln -sf "${SCRIPT_DIR}/system-dotfiles/udev-rules/45-ddcutil-i2c.rules" "$udev_rule_dir"
}
###############################################################################
# execute main #
###############################################################################
main
#TODO: mkdir ~/.local/share/newsbeuter/ <-- this xdg directory must exist if
# the configuration files are placed in ~/.config/newsbeuter/
# Ref: http://stackoverflow.com/questions/7470165/how-to-go-to-each-directory-and-execute-a-command