dotfiles/.config/yadm/bootstrap

337 lines
14 KiB
Fish
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/fish
# -*- mode: fish -*-
yadm decrypt
set keyboardconf \
'Section "InputClass"
Identifier "system-keyboard"
MatchIsKeyboard "on"
Option "XkbLayout" "fr"
Option "XkbModel" "pc104"
Option "XkbVariant" "bepo_afnor"
Option "XkbOptions" "caps:ctrl_modifier"
EndSection'
printf "\n# Set keyboard layout #########################################################\n\n"
echo $keyboardconf | sudo tee /etc/X11/xorg.conf.d/00-keyboard.conf
set mylocales "en_US.UTF-8 UTF-8" "fr_FR.UTF-8 UTF-8" "ja_JP.UTF-8 UTF-8"
printf "\n# Set locale ##################################################################\n\n"
for item in $mylocales
if test (grep -e "#$item" /etc/locale.gen)
sudo sed -i "/$item/s/^#//g" /etc/locale.gen
end
end
set localeconf "LANG=en_US.UTF-8
LC_COLLATE=C
LC_NAME=fr_FR.UTF-8
LC_NUMERIC=fr_FR.UTF-8
LC_IDENTIFICATION=fr_FR.UTF-8
LC_TELEPHONE=fr_FR.UTF-8
LC_MONETARY=fr_FR.UTF-8
LC_PAPER=fr_FR.UTF-8
LC_ADDRESS=fr_FR.UTF-8
LC_TIME=fr_FR.UTF-8
LC_MEASUREMENT=fr_FR.UTF-8"
echo $localeconf | sudo tee /etc/locale.conf
printf "\n# Generate locale #############################################################\n\n"
sudo locale-gen
printf "\n# Create directories for mounting #############################################\n\n"
sudo mkdir -p /mnt/{USB,CD,Android}
sudo chown $USER:(id -g $USER) /mnt/{USB,CD,Android}
mkdir -p $HOME/.cache/nano/backups
printf "\n# Set fish as the default shell ###############################################\n\n"
if not test "$SHELL" = "/usr/bin/fish"
chsh -s /usr/bin/fish
end
if ! test (which yay)
printf "\n# Installing yay ##############################################################\n\n"
cd
mkdir -p ~/fromGIT
cd ~/fromGIT
git clone https://aur.archlinux.org/yay.git
cd yay
makepkg -si --noconfirm
else
printf "\n# yay already installed #######################################################\n\n"
end
set PACKAGES \
acpilight adobe-source-han-sans-jp-fonts arc-gtk-theme asar ascii aspell-en \
aspell-fr awesome awesome-terminal-fonts awesome-freedesktop-git base-devel \
bashtop bat biber bitwarden-bin bluez-firmware bluez-utils bookworm bzip2 \
chicken chromium clisp corrupter-git cppcheck cppreference \
cppreference-devhelp cpupower discord-canary discount dmenu-lpass docker \
docker-compose dockerfile-language-server-bin doxygen dunst emacs \
emacs-org-mode exa exfat-utils farbfeld fd ffmpegthumbnailer findutils firefox \
flake8 flat-remix-gtk freeglut fzf gcc-libs gdb gimp gnome-disk-utility \
gnome-epub-thumbnailer gnu-free-fonts gnuplot go go-tools golangci-lint-bin \
graphviz htop i3-gaps-rounded-git i3lock-color inetutils isync \
j4-dmenu-desktop javascript-typescript-langserver js-beautify jfsutils jmtpfs \
lain-git less libxft-bgra linux-headers lldb logrotate ly meson minted man-db \
man-pages mpc mpd mpd-rich-presence-discord-git mpv mupdf-tools nano ncdu \
ncmpcpp nemo-fileroller nemo-preview neofetch netctl networkmanager \
networkmanager-openvpn nitrogen nm-connection-editor nodejs-vmd nomacs \
nordvpn-bin noto-fonts-emoji npm ntfs-3g numlockx obs-studio openssh \
otf-fandol otf-ipafont p7zip pacman-contrib pandoc-bin pass pavucontrol pdfpc \
picom-ibhagwan-git polybar powerline-fonts prettier pulseaudio-bluetooth \
python-autoflake python-envtpl-git python-epc python-importmagic \
python-language-server python-nose python-pip python-ptvsd python-pytest \
python-pywal qt5-imageformats qemu r raw-thumbnailer reflector ripgrep rofi \
rsync rtv ruby-rb-fsevent ruby-sass rustup samba scrot sent shadow siji-git \
simplescreenrecorder sshfs st-luke-git sxiv texlive-bin texlive-langchinese \
texlive-langcyrillic texlive-langgreek texlive-langjapanese texlive-langkorean \
texlive-latexextra texlive-localmanager-git texlive-most tmux tree \
ttf-arphic-uming ttf-baekmuk ttf-charis-sil ttf-dejavu \
ttf-google-fonts-opinionated-git ttf-hanazono ttf-joypixels ttf-koruri \
ttf-liberation ttf-monapo ttf-sazanami ttf-tibetan-machine typescript \
typescript-language-server-bin unicode-emoji unrar usbutils valgrind \
vscode-css-languageserver-bin vscode-html-languageserver-bin w3m wget \
x11-ssh-askpass xclip xdg-user-dirs-gtk xfsprogs xorg-drivers xorg-server \
xorg-xinit xss-lock xvkbd yaml-language-server-bin yapf zeal
printf "\n# Installing needed packages ##################################################\n\n"
sudo pacman -Syu
for pkg in $PACKAGES
yay -S --needed $pkg
end
mkdir -p $HOME/.config/awesome
mkdir -p $HOME/.config/awesome/theme
mkdir -p $HOME/.config/emacs/private
mkdir -p $HOME/.config/fish
mkdir -p $HOME/.config/gtk-2.0
mkdir -p $HOME/.config/gtk-3.0
mkdir -p $HOME/.config/i3
mkdir -p $HOME/.config/nano
mkdir -p $HOME/.config/ncmpcpp
mkdir -p $HOME/.config/neofetch
mkdir -p $HOME/.config/picom
mkdir -p $HOME/.config/polybar
mkdir -p $HOME/.config/yadm
mkdir -p $HOME/.local/bin
mkdir -p $HOME/org/capture
printf "\n# Tangling org files ##########################################################\n\n"
printf '\n\n==== Tangling awesome.org\n\n' && \
emacs -q --batch --eval '(require \'ob-tangle)' \
--eval '(setq org-confirm-babel-evaluate nil)' \
--eval '(org-babel-do-load-languages \'org-babel-load-languages \'((python . t)))' \
--eval '(org-babel-tangle-file "~/org/config/awesome.org")'
printf '\n\n==== Tangling bin.org\n\n' && \
emacs -q --batch --eval '(require \'ob-tangle)' \
--eval '(setq org-confirm-babel-evaluate nil)' \
--eval '(org-babel-do-load-languages \'org-babel-load-languages \'((python . t)))' \
--eval '(org-babel-tangle-file "~/org/config/bin.org")'
printf '\n\n==== Tangling fish.org\n\n' && \
emacs -q --batch --eval '(require \'ob-tangle)' \
--eval '(setq org-confirm-babel-evaluate nil)' \
--eval '(org-babel-do-load-languages \'org-babel-load-languages \'((python . t)))' \
--eval '(org-babel-tangle-file "~/org/config/fish.org")'
printf '\n\n==== Tangling i3.org\n\n' && \
emacs -q --batch --eval '(require \'ob-tangle)' \
--eval '(setq org-confirm-babel-evaluate nil)' \
--eval '(org-babel-do-load-languages \'org-babel-load-languages \'((python . t)))' \
--eval '(org-babel-tangle-file "~/org/config/i3.org")'
printf '\n\n==== Tangling index.org\n\n' && \
emacs -q --batch --eval '(require \'ob-tangle)' \
--eval '(setq org-confirm-babel-evaluate nil)' \
--eval '(org-babel-do-load-languages \'org-babel-load-languages \'((python . t)))' \
--eval '(org-babel-tangle-file "~/org/config/index.org")'
printf '\n\n==== Tangling nano.org\n\n' && \
emacs -q --batch --eval '(require \'ob-tangle)' \
--eval '(setq org-confirm-babel-evaluate nil)' \
--eval '(org-babel-do-load-languages \'org-babel-load-languages \'((python . t)))' \
--eval '(org-babel-tangle-file "~/org/config/nano.org")'
printf '\n\n==== Tangling picom.org\n\n' && \
emacs -q --batch --eval '(require \'ob-tangle)' \
--eval '(setq org-confirm-babel-evaluate nil)' \
--eval '(org-babel-do-load-languages \'org-babel-load-languages \'((python . t)))' \
--eval '(org-babel-tangle-file "~/org/config/picom.org")'
printf '\n\n==== Tangling polybar.org\n\n' && \
emacs -q --batch --eval '(require \'ob-tangle)' \
--eval '(setq org-confirm-babel-evaluate nil)' \
--eval '(org-babel-do-load-languages \'org-babel-load-languages \'((python . t)))' \
--eval '(org-babel-tangle-file "~/org/config/polybar.org")'
printf '\n\n==== Tangling rustfmt.org\n\n' && \
emacs -q --batch --eval '(require \'ob-tangle)' \
--eval '(setq org-confirm-babel-evaluate nil)' \
--eval '(org-babel-do-load-languages \'org-babel-load-languages \'((python . t)))' \
--eval '(org-babel-tangle-file "~/org/config/rustfmt.org")'
printf '\n\n==== Tangling spacemacs.org\n\n' && \
emacs -q --batch --eval '(require \'ob-tangle)' \
--eval '(setq org-confirm-babel-evaluate nil)' \
--eval '(org-babel-do-load-languages \'org-babel-load-languages \'((python . t)))' \
--eval '(org-babel-tangle-file "~/org/config/spacemacs.org")'
printf '\n\n==== Tangling tmux.org\n\n' && \
emacs -q --batch --eval '(require \'ob-tangle)' \
--eval '(setq org-confirm-babel-evaluate nil)' \
--eval '(org-babel-do-load-languages \'org-babel-load-languages \'((python . t)))' \
--eval '(org-babel-tangle-file "~/org/config/tmux.org")'
find ~/.local/bin -type f -exec chmod +x {} +
printf "\n# Installing Spacemacs ########################################################\n\n"
rm -rf ~/.config/emacs
git clone --single-branch --branch develop https://github.com/syl20bnr/spacemacs ~/.config/emacs
yadm checkout -- ~/.config/emacs/private/
if ! test (echo "phundrak" | sed -e "s/^.*$USER//I")
printf "\n# Update yadms remotes #######################################################\n\n"
yadm remote set-url origin git@labs.phundrak.com:phundrak/dotfiles.git
yadm remote add github git@github.com:phundrak/dotfiles.git
printf "\n# Decrypt encrypted dotfiles ##################################################\n\n"
yadm decrypt
end
printf '\n# Install envtpl ##############################################################\n\n'
yay -Syu --needed python-envtpl-git
printf "\n# Getting yadm susbmodules ####################################################\n\n"
yadm submodule update --init --recursive
printf "\n# Enabling timesync ###########################################################\n\n"
sudo systemctl enable --now systemd-timesyncd
sudo timedatectl set-ntp true
printf "\n# Enabling and starting Docker ################################################\n\n"
sudo systemctl enable --now docker
read --prompt "echo 'Do you wish to be added to the `docker` group? (Y/n): ' " -l adddockergroup
if test $adddockergroup = 'y' || test $adddockergroup = "Y" || test $adddockergroup = ''
sudo usermod -aG docker $USER
end
printf "\n# Enabling Emacs as user service ##############################################\n\n"
systemctl --user enable --now emacs
printf "\n# Enabling Mpd as a user service ##############################################\n\n"
mkdir -p ~/.config/mpd/playlists
systemctl --user enable --now mpd
read --prompt "echo 'Do you want to activate the ssh server? (Y/n): ' " -l sshdserver
if test $sshdserver = 'y' || test $sshdserver = "Y" || test $sshdserver = ''
printf "\n# Enabling ssh server #########################################################\n\n"
sudo systemctl enable --now sshd
end
sudo systemctl enable --now ly
sudo systemctl disable getty@tty2
sudo usermod -aG video $USER
sudo systemctl enable --now nordvpnd
for f in (find ~/.etc -type f)
set dest (echo $f | sed -n 's/^.*etc\(.*\)$/\/etc\1/p')
sudo ln -s $f $dest
end
read --prompt "echo 'Symlink .nanorc to roots .nanorc? (Y/n): ' " -l nanoroot
if test $nanoroot = 'y' || test $nanoroot = "Y" || test $nanoroot = ''
printf "\n# Symlinking .nanorc to roots .nanorc ########################################\n\n"
sudo ln -s $HOME/.nanorc /root/.nanorc
end
mkdir -p ~/fromGIT
printf "\n# Install polybar-battery #####################################################\n\n"
cd ~/fromGIT
git clone https://github.com/drdeimos/polybar_another_battery.git
cd polybar_another_battery
go get -u github.com/distatus/battery/cmd/battery
make build
cd ~/.local/bin
ln -s ~/fromGIT/polybar_another_battery/polybar-ab polybar-ab
printf "\n# Install Reveal.JS ###########################################################\n\n"
cd ~/fromGIT
git clone https://github.com/hakimel/reveal.js.git
printf "\n# Install powerline fonts #####################################################\n\n"
cd ~/fromGIT
git clone https://github.com/powerline/fonts.git --depth=1
cd fonts
./install.sh
fc-cache -vf
printf "\n# Install the rust toolchains, nightly is the default one #####################\n\n"
rustup default nightly
rustup toolchain install stable
printf "\n# Add rust utilities ##########################################################\n\n"
cargo install rustfmt racer
rustup component add rust-src
rustup component add rls
printf "\n# Installing Python packages ##################################################\n\n"
pip install --user pyls-isort pyls-mypy
printf "\n# Installing Go packages ######################################################\n\n"
go get -v golang.org/x/tools/gopls@latest
go get -u -v golang.org/x/tools/cmd/godoc
go get -u -v golang.org/x/tools/cmd/goimports
go get -u -v golang.org/x/tools/cmd/gorename
go get -u -v golang.org/x/tools/cmd/guru
go get -u -v github.com/cweill/gotests/...
go get -u -v github.com/davidrjenni/reftools/cmd/fillstruct
go get -u -v github.com/fatih/gomodifytags
go get -u -v github.com/godoctor/godoctor
go get -u -v github.com/golangci/golangci-lint/cmd/golangci-lint
go get -u -v github.com/haya14busa/gopkgs/cmd/gopkgs
go get -u -v github.com/josharian/impl
go get -u -v github.com/mdempsky/gocode
go get -u -v github.com/rogpeppe/godef
go get -u -v github.com/zmb3/gogetdoc
go get -u -v golang.org/x/tools/gopls
printf "\n# Setting up Chicken ##########################################################\n\n"
chicken-install -s apropos chicken-doc
cd (chicken-csi -b -e "(import (chicken platform))" -p "(chicken-home)")
curl https://3e8.org/pub/chicken-doc/chicken-doc-repo.tgz | sudo tar zx
printf "\n# Clean the pacman and yay cache ##############################################\n\n"
yay -Sc --noconfirm
printf "\n# Installing fisher ###########################################################\n\n"
curl https://git.io/fisher --create-dirs -sLo ~/.config/fish/functions/fisher.fish
printf "\n# Installing Fisher Extensions ################################################\n\n"
fisher add fishpkg/fish-prompt-metro
fisher add jorgebucaran/fish-bax
fisher add franciscolourenco/done
fisher add jethrokuan/fzf
fisher add jethrokuan/z
fisher add jorgebucaran/fish-getopts
fisher add laughedelic/pisces
fisher add acomagu/fish-async-prompt