-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsetup.sh
executable file
·140 lines (117 loc) · 3.43 KB
/
setup.sh
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
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
#!/bin/sh
set_cmd_for_sudo () {
if [ $(whoami) = 'root' ]; then
apt_get_cmd='apt-get'
pip_cmd='pip'
sed_cmd='sed'
sensors_detect_cmd='sensors-detect'
service_cmd='service'
tee_cmd='tee'
touch_cmd='touch'
else
apt_get_cmd='sudo apt-get'
pip_cmd='sudo -H pip'
sed_cmd='sudo sed'
sensors_detect_cmd='sudo sensors-detect'
service_cmd='sudo service'
tee_cmd='sudo tee'
touch_cmd='sudo touch'
fi
}
apt_get_install () {
local repo_path=$(echo $(cd $(dirname $0) && pwd))
$apt_get_cmd update
$apt_get_cmd install \
$(grep -vE "^\s*#" ${repo_path}/apt_requirements.txt | \
tr "\n" " ")
}
pip_install () {
local repo_path=$(echo $(cd $(dirname $0) && pwd))
$pip_cmd install "pip==9.0.3"
$pip_cmd install -r ${repo_path}/pip_requirements.txt
}
copy_dotfiles () {
local repo_path=$(echo $(cd $(dirname $0) && pwd))
if [ -f ${HOME}/.bashrc -a ! -f ${HOME}/.bashrc.orig ]; then
mv $HOME/.bashrc $HOME/.bashrc.orig
fi
cp -r \
${repo_path}/.Xmodmap \
${repo_path}/.aspell.conf \
${repo_path}/.bash_aliases \
${repo_path}/.bashrc \
${repo_path}/.cron_functions.sh \
${repo_path}/.crontab \
${repo_path}/.emacs.d \
${repo_path}/.gitconfig \
${repo_path}/.gitignore_global \
${repo_path}/.local \
${repo_path}/.rviz \
${repo_path}/.tmux.conf \
$HOME
}
home_dir_name_ja2en () {
LANG=C
xdg-user-dirs-gtk-update
}
setup_keybind () {
local func_file=/usr/share/X11/xkb/symbols/underscore
$touch_cmd $func_file
grep nobackslash $func_file > /dev/null
local exit_status=$?
if [ $exit_status -eq 1 ]; then
echo 'partial modifier_keys' | $tee_cmd $func_file
echo 'xkb_symbols "nobackslash" {' | $tee_cmd -a $func_file
echo ' replace key <AB11> { [ underscore, underscore ] };' | \
$tee_cmd -a $func_file
echo '};' | $tee_cmd -a $func_file
fi
local rules_file=/usr/share/X11/xkb/rules/evdev
grep nobackslash $rules_file > /dev/null
local exit_status=$?
if [ $exit_status -eq 1 ]; then
echo '! option = symbols' | $tee_cmd -a $rules_file
echo ' underscore:nobackslash = +underscore(nobackslash)' | \
$tee_cmd -a $rules_file
fi
dconf write /org/gnome/desktop/input-sources/xkb-options \
"['ctrl:nocaps', 'underscore:nobackslash']"
}
setup_ssh_daemon () {
local config_file=/etc/ssh/sshd_config
$sed_cmd \
-i \
-e "s/$(cat $config_file | \
grep -E ^#\?PermitRootLogin)/PermitRootLogin no/" \
$config_file
$sed_cmd \
-i \
-e "s/$(cat $config_file | \
grep -E ^#\?PasswordAuthentication)/PasswordAuthentication no/" \
$config_file
$service_cmd ssh restart
}
setup_ntp_daemon () {
ntpdc -nc monlist localhost 2>&1 | \
grep "***Server reports data not found" > /dev/null
exit_status=$?
if [ $exit_status -eq 1 ]; then
echo "disable monitor" | $tee_cmd -a /etc/ntp.conf
$service_cmd ntp restart
fi
}
setup_lm_sensors () {
yes yes | $sensors_detect_cmd
$service_cmd kmod start
}
set -x
set_cmd_for_sudo
apt_get_install
pip_install
copy_dotfiles
home_dir_name_ja2en
setup_keybind
setup_ssh_daemon
setup_ntp_daemon
setup_lm_sensors
set +x