dotfiles/.config/yadm/bootstrap

262 lines
10 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
if test "$USER" = 'phundrak'
yadm decrypt
else
whiptail --yesno "Decrypt private files?" 8 40 && yadm decrypt
end
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"
whiptail --yesno "Would you like to set your keyboard layout to the bépo layout?" 8 55
if test $status -eq 0
echo $keyboardconf | sudo tee /etc/X11/xorg.conf.d/00-keyboard.conf
end
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
whiptail --yesno "Set the \"$item\" locale?" 8 40
if test $status -eq 0 -a (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"
whiptail --yesno "Do you agree to have the following locale set?\n\n $localeconf" 20 43
if test $status -eq 0
echo $localeconf | sudo tee /etc/locale.conf
end
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}
printf "\n# Set fish as the default shell ###############################################\n\n"
whiptail --yesno "Set the current users default shell to fish?" 8 50
if test $status -eq 0 -a ! "$SHELL" = '/usr/bin/fish'
chsh -s /usr/bin/fish
end
set PACKAGES \
acpi 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 bzip2 \
chicken chromium clisp corrupter-git cppcheck cppreference \
cppreference-devhelp cpupower discord-canary discount docker docker-compose \
dockerfile-language-server-bin doxygen 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 hugo i3lock-color \
inetutils isync inter-font javascript-typescript-langserver js-beautify \
jfsutils jmtpfs lain-git 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 \
network-manager-applet networkmanager networkmanager-openvpn \
nm-connection-editor nodejs-vmd nomacs nordic-theme-git 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 powerline-fonts prettier pulseaudio-bluetooth \
python-autoflake python-epc python-importmagic python-language-server \
python-nose python-pip python-poetry python-ptvsd python-pytest \
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 xfce-polkit xidlehook xfsprogs \
xorg-drivers xorg-server xorg-xinit xss-lock xvkbd xwallpaper \
yaml-language-server-bin 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/ncmpcpp
mkdir -p $HOME/.config/neofetch
mkdir -p $HOME/.config/picom
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-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-tangle-file "~/org/config/bin.org")'
printf '\n\n==== Tangling emacs.org\n\n' && \
emacs -q --batch --eval '(require \'ob-tangle)' \
--eval '(setq org-confirm-babel-evaluate nil)' \
--eval '(org-babel-tangle-file "~/org/config/emacs.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-tangle-file "~/org/config/fish.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-tangle-file "~/org/config/index.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-tangle-file "~/org/config/picom.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-tangle-file "~/org/config/rustfmt.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-tangle-file "~/org/config/tmux.org")'
printf "\n# Installing Spacemacs ########################################################\n\n"
rm -rf $HOME/.config/emacs $HOME/.emacs* .spacemacs
git clone --branch develop https://github.com/syl20bnr/spacemacs ~/.config/emacs
yadm checkout -- ~/.config/emacs/private/
if test "$USER" = 'phundrak'
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# 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 emacs
printf "\n# Enabling Mpd as a user service ##############################################\n\n"
mkdir -p ~/.config/mpd/playlists
systemctl --user enable --now mpd
whiptail --yesno 'Do you want to activate the ssh server?' 8 50
if test $status -eq 0
printf "\n# Enabling ssh server #########################################################\n\n"
sudo systemctl enable --now sshd
end
sudo systemctl disable getty@tty2
sudo systemctl enable --now ly
sudo usermod -aG video $USER
sudo systemctl enable --now nordvpnd
nordvpn s protocol tcp
for f in (find ~/.etc -type f)
set dest (echo $f | sed -n 's|^.*etc\(.*\)$|/etc\1|p')
sudo ln -s $f $dest
end
sudo ln -s (which plock) /usr/bin/plock
mkdir -p ~/fromGIT
printf "\n# Install Reveal.JS ###########################################################\n\n"
cd ~/fromGIT
git clone https://github.com/hakimel/reveal.js.git
printf "\n# Install the rust toolchains, nightly is the default one #####################\n\n"
rustup default stable
rustup toolchain install nightly
printf "\n# Add rust utilities ##########################################################\n\n"
cargo install rustfmt racer
rustup component add rust-src
rustup component add rls
rustup component add clippy
printf "\n# Installing Python packages ##################################################\n\n"
pip install --user python-language-server[all] pyls-isort pyls-mypy pyls-black
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# 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 decors/fish-colored-man
fisher add franciscolourenco/done
fisher add jethrokuan/fzf
fisher add jethrokuan/z
fisher add jorgebucaran/fish-bax
fisher add jorgebucaran/fish-getopts
fisher add laughedelic/pisces
fisher add oh-my-fish/theme-bobthefish