-
-
Notifications
You must be signed in to change notification settings - Fork 6
/
install
executable file
·178 lines (152 loc) · 6.14 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
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
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
#!/usr/bin/env bash
# Do not use this script unless you know what you are doing! Even then this
# script isn't that much above `curl | bash`ing
set -x
# Workaround Chromium selectively understanding --disk-cache-dir=nul
ln -nsfv /dev/null $HOME/nul
ln -nsfv /dev/null $HOME/null
# If my allowed_signers are present, use them, if not, clone them, and try
# again. The gitconfig expects them here.
if [ -d $HOME/src/codeberg.org/Aminda/ssh-allowed_signers ]; then
echo "git config --global gpg.ssh.allowedSignersFile $HOME/src/codeberg.org/Aminda/ssh-allowed_signers/allowed_signers"
git verify-commit HEAD || exit 1
sleep 3
else
echo "Keys not found, cloning..."
# -vp - verbose, parent. This comment won't be repeated.
mkdir -vp $HOME/src/codeberg.org/Aminda/
git clone https://codeberg.org/Aminda/ssh-allowed_signers.git $HOME/src/codeberg.org/Aminda/ssh-allowed_signers
echo "git config --global gpg.ssh.allowedSignersFile $HOME/src/codeberg.org/Aminda/ssh-allowed_signers/allowed_signers"
git verify-commit HEAD || exit 1
sleep 3
fi
# marker that I have ran the other script that runs things like installing
# my public keys as authorized. See bottom of this script.
export MIKAELA_GREP=$HOME/.MIKAELA_GREP
# Copying files in places
cp -v rc/bashrc $HOME/.bashrc
cp -v conf/tmux.conf $HOME/.tmux.conf
cp -v rc/zshrc $HOME/.zshrc
cp -v rc/profile $HOME/.profile
# Git config, legacy support for old location as well.
# The other script appends sourced file, so if thou aren't I, thou should
# consider it as well; `git config --global --add include.path '$HOME/yourgitconfig'`
mkdir -vp $HOME/.config/git
cp -v conf/gitconfig $HOME/.config/git/config
touch $HOME/.gitconfig
rm $HOME/.gitconfig
ln -nsfv $HOME/.config/git/config $HOME/.gitconfig
# Used for `git init` and `git clone`, will contain pre-commit hooks
mkdir -vp $HOME/.git-template
# {n,neo}vim
cp -v rc/vimrc $HOME/.vimrc
mkdir -vp $HOME/.config/nvim/
cp -v conf/init.vim $HOME/.config/nvim/init.vim
cp -v conf/makepkg.conf $HOME/.makepkg.conf
# the media player
mkdir -vp $HOME/.config/mpv/
cp -v conf/mpv.conf $HOME/.config/mpv/mpv.conf
mkdir -vp $HOME/.var/app/io.mpv.Mpv/config/mpv
cp -v conf/mpv.conf $HOME/.var/app/io.mpv.Mpv/config/mpv/mpv.conf
# if I am performing ident spoofing already, I don't want to touch it
if [ ! -f $HOME/.oidentd.conf ]; then
cp -v conf/oidentd.conf $HOME/.oidentd.conf
fi
# In addition to git, my gnupg configuration should be questioned
mkdir -vp $HOME/.gnupg
cp -v gpg/gpg.conf $HOME/.gnupg/gpg.conf
cp -v gpg/gpg-agent.conf $HOME/.gnupg/gpg-agent.conf
cp -v gpg/dirmngr.conf $HOME/.gnupg/dirmngr.conf
# Issues with GPG? SIGHUP dirmngr
killall -HUP dirmngr
# I don't remember using these in ages and I don't think they apply to
# wayland
#cp -v rc/xinitrc $HOME/.xinitrc
cp -v conf/pastebinit.xml $HOME/.pastebinit.xml
cp -v conf/Xresources $HOME/.Xresources
# Nice sysinfo script
mkdir -vp $HOME/.inxi
cp -v conf/inxi.conf $HOME/.inxi/inxi.conf
# laziness
gpg --quiet --import .mikaela/keys/*.asc &
# Utilized by my ssh_config (not to be confused with sshd_config)
mkdir -vp $HOME/.ssh/sockets/
# It will get used later
mkdir -vp $HOME/.local/bin/
# Setting permissions
chmod a+xr chmod
bash -x ./chmod &
# The submodules contain nice things such as fonts
git submodule update --init &
# Aforementioned git template directory and pre-commit
if hash pre-commit 2> /dev/null; then
pre-commit init-templatedir $HOME/.git-template
pre-commit gc
fi
# If symlinks are installed, remove dead/dangling ones from $HOME/.local/bin
# so corepack won't get confused if those are present
if hash symlinks 2> /dev/null; then
symlinks -d $HOME/.local/bin/
else
echo "WARNING! Executable named symlinks not found in PATH."
sleep 3
fi
# node package manager manager
if hash corepack 2> /dev/null; then
# Will install symlinks for pnpm, yarn, etc., but not npm unless
# explicitly requested as below
corepack enable --install-directory $HOME/.local/bin/
corepack enable npm --install-directory $HOME/.local/bin/
# pnpm can utilize the same packagemanager field as corepack, even when
# used alone
corepack pnpm config set manage-package-manager-versions=true
elif hash pnpm 2> /dev/null; then
# see above which is more relevant in this case
pnpm config set manage-package-manager-versions=true
else
echo "WARNING! corepack is not installed."
sleep 3
fi
# If running as root, which I am doing regardless of not being supposed to,
if [ "$(id -u)" == "0" ]; then
# Enables laziness on checking whether or not apt is installed
mkdir -vp /etc/apt/apt.conf.d/
# Enables progress bar and colours for apt/dpkg, which are helpful at
# times when guesstimating when will things happen
echo 'Dpkg::Progress-Fancy "1";' > /etc/apt/apt.conf.d/99progressbar
echo 'APT::Color "1";' > /etc/apt/apt.conf.d/99color
# If some locate variant is installed, now is a great time to ensure its
# database is up-to-date. This may also enable automated database
# updates.
if hash updatedb 2> /dev/null; then
(updatedb &)
fi
# If LaTeX fonts are available, make them available for the rest of the
# system too.
if [ -d "/usr/share/texlive/texmf-dist/fonts/" ]; then
mkdir -p /usr/local/share/fonts
ln -nsfv /usr/share/texlive/texmf-dist/fonts /usr/local/share/fonts/texlive
fi
fi
# Make the submoduled fonts available to the system
if [ -d "$HOME/.shell-things" ]; then
mkdir -p $HOME/.local/share/fonts
ln -nsfv $HOME/.shell-things/submodules/comicneue/Fonts $HOME/.local/share/fonts/comicneue
ln -nsfv $HOME/.shell-things/submodules/comic-shanns-mono/fonts $HOME/.local/share/fonts/comic-shanns-mono
ln -nsfv $HOME/.shell-things/submodules/opendyslexic/compiled $HOME/.local/share/fonts/opendyslexic
ln -nsfv $HOME/.shell-things/submodules/serious-sans/SeriousShanns $HOME/.local/share/fonts/
fi
if hash fc-cache 2> /dev/null; then
(fc-cache &)
fi
# If the previously mentioned marker is present, include the even more
# questionable script (yay!) into our current execution
if [ -f "$MIKAELA_GREP" ]; then
. .mikaela_install
fi
# If git-lfs is installed, configure git with it, otherwise this will just
# error in forked background process which will no longer hurt the current
# execution.
(git lfs install | true &)
set +x
# vim : set ft=bash :