From c02da0b9ed53eb1755b8f716267df5fd0ae737bc Mon Sep 17 00:00:00 2001 From: Mylloon Date: Sat, 30 Mar 2024 17:27:51 +0100 Subject: [PATCH] meta script for less code repetition (#21) --- arch.sh | 164 +++++++++------------------------------------- arch_wsl.sh | 148 ++++-------------------------------------- meta.sh | 182 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 226 insertions(+), 268 deletions(-) create mode 100755 meta.sh diff --git a/arch.sh b/arch.sh index 147d4f4..4ea649e 100644 --- a/arch.sh +++ b/arch.sh @@ -12,89 +12,57 @@ fi cd "$(dirname "$0")" # change script directory main() { - # Variables + # === Variables == local repo repo=https://git.mylloon.fr/Anri/confOS/raw/branch/main - # === Pacman configuration == - pacman -D --asexplicit archlinux-keyring # keep this package - sudo sed -i "s/#Color/Color/g" /etc/pacman.conf - sudo sed -i "s/#ParallelDownloads = 5/ParallelDownloads = 3/g" /etc/pacman.conf - # === Remove extra packages == + # === Assure that keyring is installed == + pacman -D --asexplicit archlinux-keyring # keep this package + + + # === Remove extra packages from Gnome default + useless dependencies == sudo pacman -Rsn --noconfirm \ epiphany gnome-maps cheese gnome-weather gnome-music gnome-books vim \ - # gnome-firefox, maps, caméra, météo, musique, liseuse, vim gnome-boxes gnome-photos malcontent gnome-contacts totem gedit - # machines, photos, parental control, contacts, vidéos, gedit "$(pacman -Qqtd)" - # dependencies - # === Rustup == - # Init rustup - rustup default stable - # Dev tools - rustup component add rust-analysis rls - # === Paru == - git clone https://aur.archlinux.org/paru.git - cd paru || exit - makepkg -si --noconfirm - # Remove folder - cd .. - rm -rf paru ||: - paru --gendb - # Clean files used for compilation - sudo sed -i "s/#CleanAfter/CleanAfter/g" /etc/paru.conf + # === Global OS configuration set-up == + # shellcheck disable=SC1091 + source meta.sh + # === AUR packages == paru -S --noconfirm \ - obsidian parsec-bin evolution-etesync-git x11-emoji-picker cram \ + obsidian parsec-bin evolution-etesync-git x11-emoji-picker \ gnome-shell-extension-dash-to-dock gnome-shell-extension-desktop-icons-ng \ dracula-gtk-theme dracula-icons-git vscodium-bin otf-symbola touchegg \ gnome-shell-extension-nightthemeswitcher nerd-fonts-meslo \ gnome-shell-extension-x11gestures gnome-shell-extension-no-overview \ gnome-shell-extension-gsconnect gnome-shell-extension-tiling-assistant \ - gnome-shell-extension-rounded-window-corners topgrade-bin ufw-docker \ + gnome-shell-extension-rounded-window-corners ufw-docker blackbox-terminal \ gnome-shell-extension-alphabetical-grid-extension texlive-latexindent-meta \ gnome-shell-extension-quick-settings-tweaks-git gpu-screen-recorder-git \ epson-inkjet-printer-stylus-photo-px810fw-series heroic-games-launcher-bin \ gnome-shell-extension-blur-my-shell clamav-unofficial-sigs vesktop-bin \ - blackbox-terminal nautilus-open-any-terminal + nautilus-open-any-terminal # === Disable wayland == sed -i "s/#Wayland/Wayland/g" /etc/gdm/custom.conf + # === Locales == sudo sed -i "s/fr_FR.UTF-8.UTF-8 UTF-8/fr_FR.UTF8 UTF-8/g" /etc/locale.gen sudo locale-gen localectl set-locale fr_FR.UTF-8 + # === Fish == - # Remove motd - fish -c "set -U fish_greeting" - # Reversed search - curl -sL https://git.io/fisher | fish -c "source && fisher install jorgebucaran/fisher" - fish -c "fisher install jethrokuan/fzf" - fish -c "fisher install jorgebucaran/autopair.fish" - # SSH - wget -q https://gitlab.com/kyb/fish_ssh_agent/raw/master/functions/fish_ssh_agent.fish -P "$HOME"/.config/fish/functions/ - mkdir -p "$HOME"/.ssh - # Custom config.fish + # Custom Arch configuration wget -q ${repo}/.config/fish/config_arch.fish -O "$HOME"/.config/fish/config.fish - # Fish theme - fish -c "fish_config theme choose 'Base16 Eighties' && yes | fish_config theme save" - # Fish prompt - rm "$HOME"/.config/fish/functions/fish_prompt.fish 2> /dev/null ||: - wget -q ${repo}/.config/fish/functions/fish_prompt.fish -P "$HOME"/.config/fish/functions/ - # EZA colors - fish -c "set -Ux EXA_COLORS 'di=1;36:da=35'" - # Add abbreviations - wget -q ${repo}/.config/fish/conf.d/abbr.fish -O "$HOME"/.config/fish/conf.d/abbr.fish curl -s ${repo}/.config/fish/conf.d/abbr_arch.fish >> "$HOME"/.config/fish/conf.d/abbr.fish - # Add aliases - wget -q ${repo}/.config/fish/conf.d/alias.fish -O "$HOME"/.config/fish/conf.d/alias.fish curl -s ${repo}/.config/fish/conf.d/alias_arch.fish >> "$HOME"/.config/fish/conf.d/alias.fish # Themes in Gnome Terminal, the default one will be the dark one @@ -121,55 +89,17 @@ main() { gsettings set org.gnome.Terminal.Legacy.Keybindings:/org/gnome/terminal/legacy/keybindings/ zoom-normal "agrave" # ctrl+0 gsettings set org.gnome.Terminal.Legacy.Keybindings:/org/gnome/terminal/legacy/keybindings/ next-tab "tab" # ctrl+tab - # === Default editor == - fish -c "set -Ux EDITOR nano" - - # === Micro configuration == - mkdir -p "$HOME"/.config/micro - wget -q --show-progress ${repo}/.config/micro/settings.json -O "$HOME"/.config/micro/settings.json - micro -plugin install detectindent - - # # === GL4D == - # # Download, build and installation - # git clone https://github.com/noalien/GL4Dummies.git - # cd GL4Dummies || exit - # make -f Makefile.autotools - # ./configure - # make - # sudo make install - # cd .. - # rm -rf GL4Dummies ||: - # # Fix for shared libraries (https://stackoverflow.com/a/9395355) - # sudo ldconfig - # # Add to path - # fish -c "set -Ua LD_LIBRARY_PATH /usr/local/lib" - - # === Rust == - # Add Cargo packages from Rust - mkdir -p "$HOME"/.cargo/bin - fish -c "fish_add_path $HOME/.cargo/bin ||:" - # Install cargo packages - cargo install cargo-update cargo-cache tealdeer - - # === tldr == - fish -c "tldr --update" - # Fish completion - local url_tldr - url_tldr=$(curl -s https://api.github.com/repos/dbrgn/tealdeer/releases/latest \ - | grep 'browser_download_url": ".*/completions_fish"' \ - | cut --delimiter=":" --field=2,3 \ - | tr -d \" ) - wget -q --show-progress "${url_tldr:1}" -O completions_fish - mv completions_fish ~/.config/fish/completions/tldr.fish # === Spotify == # is `spotify-launcher --force-update` needed before patching? bash <(curl -sSL https://spotx-official.github.io/run.sh) -ce + # === Syncthing == systemctl enable syncthing@"$USER".service systemctl start syncthing@"$USER".service + # === Flameshot == # Custom configuration rm "$HOME"/.config/flameshot/flameshot.ini 2> /dev/null ||: @@ -189,6 +119,7 @@ main() { gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/flameshot-shortcut/ command "flameshot gui" # set command gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/flameshot-shortcut/ binding "Print" # set key + # === Emoji picker == # Custom configuration rm "$HOME"/.config/gazatu.xyz/emoji-picker.ini 2>/dev/null ||: @@ -210,6 +141,7 @@ main() { gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/x11-emoji-picker/ binding "period" # set shortcut fi + # === Gnome configuration == # Enable location gsettings set org.gnome.system.location enabled true @@ -309,6 +241,7 @@ main() { systemctl enable touchegg.service systemctl start touchegg + # === Clipboard manager == gsettings set org.gnome.shell.keybindings toggle-message-tray "[]" custom_keybindings_list=$(gsettings get org.gnome.settings-daemon.plugins.media-keys custom-keybindings) @@ -327,9 +260,11 @@ main() { echo "style_main_window=true" >> /usr/share/copyq/themes/dark.ini copyq loadTheme /usr/share/copyq/themes/dark.ini + # === UBW (pare-feu) == ufw enable + # === Firefox == firefox & sleep 2 @@ -345,19 +280,13 @@ main() { #wget -q --show-progress ${repo}/.mozilla/firefox/extensions/SponsorBlockConfig.json -P "$HOME"/Téléchargements #wget -q --show-progress ${repo}/.mozilla/firefox/extensions/auto-tab-discard-preferences.json -P "$HOME"/Téléchargements - # === Manual color == - fish -c "set -Ux MANPAGER \"sh -c 'col -bx | bat -l man -p'\"" - fish -c "set -Ux MANROFFOPT \"-c\"" - - # === Bat config == - mkdir -p "$HOME"/.config/bat - wget -q --show-progress ${repo}/.config/bat/config -O "$HOME"/.config/bat/config # === Docker == systemctl enable docker.service systemctl start docker.service usermod -aG docker "$USER" + # === Unused icons == apps=("fish" "cmake-gui" "com.github.hluk.copyq" "electron17" "htop" "yelp" "avahi-discover" "bssh" "bvnc" "org.flameshot.Flameshot" "lstopo" @@ -371,40 +300,16 @@ main() { fi done + # === Enable Bluetooth == systemctl enable bluetooth.service systemctl start bluetooth.service sed -i "s/#AutoEnable=true/AutoEnable=false/g" /etc/bluetooth/main.conf + # === VSCodium == wget -q ${repo}/.config/VSCodium/product.json -P "$HOME"/.config/VSCodium/ - # === Git == - wget -q ${repo}/dotfiles/.gitconfig -O "$HOME"/.gitconfig - - # === Python == - # Add PIP packages from Python to the path - mkdir -p "$HOME"/.local/bin - fish -c "fish_add_path $HOME/.local/bin ||:" - - # === OCaml == - # Init Opam and install stuff - echo | opam init - fish -c "yes | opam init" - opam install -y \ - utop ocaml-lsp-server ocamlformat core menhir pprint sexplib \ - ppx_sexp_conv cohttp-lwt-unix dotenv twostep lwt_ssl alcotest ppx_deriving - wget -q ${repo}/dotfiles/.ocamlformat -O "$HOME"/.ocamlformat - # Add Opam packages from OCaml - mkdir -p "$HOME"/.opam/default/bin - fish -c "fish_add_path $HOME/.opam/default/bin ||:" - - # === Clang == - wget -q ${repo}/dotfiles/.clang-format -O "$HOME"/.clang-format - - # === Perl == - # Add perl packages to path - fish -c "fish_add_path /usr/bin/vendor_perl ||:" # === Discord == # Skip update @@ -412,17 +317,6 @@ main() { updated_config_discord="$(< "$path_config_discord" jq '. + { "SKIP_HOST_UPDATE": true }')" echo "$updated_config_discord" > "$path_config_discord" - # === Emacs == - # mkdir -p "$HOME"/.emacs.d - # wget -q ${repo}/.emacs.d/init.el -O "$HOME"/.emacs.d/init.el - - # === MIDI files == - { - echo "soundfont /usr/share/soundfonts/FluidR3_GS.sf2" - echo "soundfont /usr/share/soundfonts/FluidR3_GM.sf2" - } | sudo tee -a /etc/timidity/timidity.cfg > /dev/null - sudo mkdir -p /usr/share/sounds/sf2 - sudo ln -s /usr/share/soundfonts/*.sf2 /usr/share/sounds/sf2/ # === Printers == sudo systemctl enable cups.socket @@ -430,6 +324,7 @@ main() { sudo systemctl enable avahi-daemon.service sudo systemctl start avahi-daemon.service + # === UFW == sudo systemctl enable ufw.service sudo systemctl start ufw.service @@ -440,17 +335,17 @@ main() { sudo ufw-docker install sudo systemctl restart ufw + # === Optimizations == # Disable NetworkManager-wait-online.service because it add 8s at boot sudo systemctl disable NetworkManager-wait-online.service - # === Update NPM == - sudo npm i -g npm@latest # === s-tui == # Configuration wget -q --show-progress ${repo}/.config/s-tui/s-tui.conf -P "$HOME"/.config/s-tui/ + # === ClamAV == # Virus definitions sudo systemctl enable clamav-freshclam.service @@ -459,6 +354,7 @@ main() { sudo systemctl enable clamav-daemon.service sudo systemctl start clamav-daemon.service + # === GPU Screen recorder == # Configuration wget -q --show-progress ${repo}/.config/gpu-screen-recorder.env -P "$HOME"/.config/ diff --git a/arch_wsl.sh b/arch_wsl.sh index 9c713ab..730f86a 100644 --- a/arch_wsl.sh +++ b/arch_wsl.sh @@ -12,23 +12,21 @@ fi cd "$(dirname "$0")" # change script directory main() { - # Variables + # === Variables == local repo repo=https://git.mylloon.fr/Anri/confOS/raw/branch/main + # === Init pacman == sudo pacman-key --init sudo pacman-key --populate sudo pacman -Sy --noconfirm archlinux-keyring - # === Update Arch mirrors == - sudo pacman -S --noconfirm pacman-contrib - curl -s "https://archlinux.org/mirrorlist/?country=FR&country=GB&protocol=https&use_mirror_status=on" | \ - sed -e "s/^#Server/Server/" -e "/^#/d" | sudo bash -c "rankmirrors -n 7 - > /etc/pacman.d/mirrorlist" # === Update Arch == sudo pacman -Syyuu --noconfirm + # === Install packages == sudo pacman -S --noconfirm \ git wget zip openssh bat base-devel make python-pygments micro git-lfs npm \ @@ -43,43 +41,21 @@ main() { man-pages bottom - # === Rustup == - # Init rustup - rustup default stable - # fish_add_path "$HOME/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/bin" - # Dev tools - rustup component add rust-analysis rls + # === Global OS configuration set-up == + # shellcheck disable=SC1091 + source meta.sh - # === Colors package manager == - sudo sed -i "s/#Color/Color/g" /etc/pacman.conf - sudo sed -i "s/#ParallelDownloads = 5/ParallelDownloads = 3/g" /etc/pacman.conf # === Remove SU password == echo -e "\n# Disable password for specific user\n$USER ALL=(ALL) NOPASSWD:ALL" | sudo tee -a /etc/sudoers > /dev/null - # === Paru == - git clone https://aur.archlinux.org/paru.git - cd paru || exit - makepkg -si --noconfirm - # Remove folder - cd .. - rm -rf paru ||: - paru --gendb - # Clean files used for compilation - sudo sed -i "s/#CleanAfter/CleanAfter/g" /etc/paru.conf # === AUR packages == paru -S --noconfirm \ - otf-font-awesome topgrade-bin cram + otf-font-awesome - # === Rust == - # Add Cargo packages from Rust - mkdir -p "$HOME"/.cargo/bin - fish -c "fish_add_path $HOME/.cargo/bin ||:" - # Add cargo packages - cargo install cargo-update cargo-cache - # === Set-up systemd + # === Set-up systemd == mkdir -p subsystemctl cd subsystemctl || exit curl -so PKGBUILD https://raw.githubusercontent.com/sorah/arch.sorah.jp/master/aur-sorah/PKGBUILDs/subsystemctl/PKGBUILD @@ -88,139 +64,43 @@ main() { rm -rf subsystemctl ||: sudo subsystemctl start + # === Locales == sudo sed -i "s/#fr_FR.UTF-8 UTF-8/fr_FR.UTF8 UTF-8/g" /etc/locale.gen sudo locale-gen subsystemctl exec sudo localectl set-locale fr_FR.UTF-8 + # === Shared folders == sudo mkdir -p /mnt/y + # === Fish == - # Remove motd - fish -c "set -U fish_greeting" - # Reversed search - curl -sL https://git.io/fisher | fish -c "source && fisher install jorgebucaran/fisher" - fish -c "fisher install jethrokuan/fzf" - fish -c "fisher install jorgebucaran/autopair.fish" - # SSH - wget -q https://gitlab.com/kyb/fish_ssh_agent/raw/master/functions/fish_ssh_agent.fish -P "$HOME"/.config/fish/functions/ - mkdir -p "$HOME"/.ssh - # Custom config.fish + # Custom WSL configuration wget -q ${repo}/.config/fish/config_wsl.fish -O "$HOME"/.config/fish/config.fish - # Fish theme - fish -c "fish_config theme choose 'Base16 Eighties' && yes | fish_config theme save" - fish -c "set fish_color_comment 5c6773" # custom comment color - # Fish prompt - rm "$HOME"/.config/fish/functions/fish_prompt.fish 2> /dev/null ||: - wget -q ${repo}/.config/fish/functions/fish_prompt.fish -P "$HOME"/.config/fish/functions/ - # EZA colors - fish -c "set -Ux EXA_COLORS 'di=1;36:da=35'" - # Add abbreviations - wget -q ${repo}/.config/fish/conf.d/abbr.fish -O "$HOME"/.config/fish/conf.d/abbr.fish curl -s ${repo}/.config/fish/conf.d/abbr_wsl.fish >> "$HOME"/.config/fish/conf.d/abbr.fish - # Add aliases - wget -q ${repo}/.config/fish/conf.d/alias.fish -O "$HOME"/.config/fish/conf.d/alias.fish curl -s ${repo}/.config/fish/conf.d/alias_wsl.fish >> "$HOME"/.config/fish/conf.d/alias.fish - # === Default editor == - fish -c "set -Ux EDITOR nano" - - # === Micro configuration == - mkdir -p "$HOME"/.config/micro - wget -q --show-progress ${repo}/.config/micro/settings.json -O "$HOME"/.config/micro/settings.json - micro -plugin install detectindent - - # # === GL4D == - # # Download, build and installation - # git clone https://github.com/noalien/GL4Dummies.git - # cd GL4Dummies || exit - # make -f Makefile.autotools - # ./configure - # make - # sudo make install - # cd .. - # rm -rf GL4Dummies ||: - # # Fix for shared libraries (https://stackoverflow.com/a/9395355) - # sudo ldconfig - # # Add to path - # fish -c "set -Uax LD_LIBRARY_PATH /usr/local/lib" - - # === tldr == - cargo install tealdeer - fish -c "tldr --update" - # Fish completion - local url_tldr - url_tldr=$(curl -s https://api.github.com/repos/dbrgn/tealdeer/releases/latest \ - | grep 'browser_download_url": ".*/completions_fish"' \ - | cut --delimiter=":" --field=2,3 \ - | tr -d \" ) - wget -q --show-progress "${url_tldr:1}" -O completions_fish - mv completions_fish ~/.config/fish/completions/tldr.fish - - # === Manual color == - fish -c "set -Ux MANPAGER \"sh -c 'col -bx | bat -l man -p'\"" - fish -c "set -Ux MANROFFOPT \"-c\"" - - # === Bat config == - mkdir -p "$HOME"/.config/bat - wget -q --show-progress ${repo}/.config/bat/config -O "$HOME"/.config/bat/config - - # === Git == - wget -q ${repo}/dotfiles/.gitconfig -O "$HOME"/.gitconfig - - # === Python == - # Add PIP packages from Python - mkdir -p "$HOME"/.local/bin - fish -c "fish_add_path $HOME/.local/bin ||:" # === OCaml == - # Init Opam and install stuff - echo | opam init - fish -c "yes | opam init" - opam install -y \ - utop ocaml-lsp-server ocamlformat core menhir pprint sexplib \ - ppx_sexp_conv cohttp-lwt-unix dotenv twostep lwt_ssl alcotest ppx_deriving - wget -q ${repo}/dotfiles/.ocamlformat -O "$HOME"/.ocamlformat - # Add Opam packages from OCaml - mkdir -p "$HOME"/.opam/default/bin - fish -c "fish_add_path $HOME/.opam/default/bin ||:" # Fix dlllwt_unix_stubs.so shared object file fish -c "set -Ux CAML_LD_LIBRARY_PATH $(opam var stublibs)" - # === Clang == - wget -q ${repo}/dotfiles/.clang-format -O "$HOME"/.clang-format # === Valgrind == fish -c "set -Ux DEBUGINFOD_URLS https://debuginfod.archlinux.org" + # === Unison == mkdir -p "$HOME"/.unison wget -q ${repo}/.unison/default.prf -O "$HOME"/.unison/default.prf - # === Perl == - # Add perl packages to path - fish -c "fish_add_path /usr/bin/vendor_perl ||:" - - # === Emacs == - # mkdir -p "$HOME"/.emacs.d - # wget -q ${repo}/.emacs.d/init.el -O "$HOME"/.emacs.d/init.el # === Bash VSCode fix == curl -s ${repo}/dotfiles/.bashrc >> "$HOME"/.bashrc - # === MIDI files == - { - echo "soundfont /usr/share/soundfonts/FluidR3_GS.sf2" - echo "soundfont /usr/share/soundfonts/FluidR3_GM.sf2" - } | sudo tee -a /etc/timidity/timidity.cfg > /dev/null - sudo mkdir -p /usr/share/sounds/sf2 - sudo ln -s /usr/share/soundfonts/*.sf2 /usr/share/sounds/sf2/ - # === Update NPM == - sudo npm i -g npm@latest - - # === Clear useless packages + # === Clear useless packages == pacman -Qqtd | sudo pacman --noconfirm -Rsn subsystemctl - 2> /dev/null ||: echo -e "\nInstallation terminée !\nIl faut redémarrer WSL (dans Powershell = wsl --shutdown)." diff --git a/meta.sh b/meta.sh new file mode 100755 index 0000000..221f133 --- /dev/null +++ b/meta.sh @@ -0,0 +1,182 @@ +#!/usr/bin/env bash + +set -o errexit # crash the script when a command crash +set -o pipefail # same as above for piped command +set -o nounset # crash when a variable doesnt exist + +# TRACE=1 for debug +if [[ "${TRACE-0}" == "1" ]]; then + set -o xtrace +fi + +cd "$(dirname "$0")" # change script directory + +main() { + # === Variables == + local repo + repo=https://git.mylloon.fr/Anri/confOS/raw/branch/main + + + # === Package manager == + sudo sed -i "s/#Color/Color/g" /etc/pacman.conf + sudo sed -i "s/#ParallelDownloads = 5/ParallelDownloads = 3/g" /etc/pacman.conf + + + # === Update Arch mirrors == + sudo pacman -S --noconfirm pacman-contrib + curl -s "https://archlinux.org/mirrorlist/?country=FR&country=DE&protocol=https&use_mirror_status=on" | \ + sed -e "s/^#Server/Server/" -e "/^#/d" | sudo bash -c "rankmirrors -n 7 - > /etc/pacman.d/mirrorlist" + + + # === Rustup == + # Init rustup + rustup default stable + # Dev tools + rustup component add rust-analysis rls + + # === Rust == + # Add Cargo packages from Rust + mkdir -p "$HOME"/.cargo/bin + fish -c "fish_add_path $HOME/.cargo/bin ||:" + # Install cargo packages + cargo install cargo-update cargo-cache tealdeer + + + # === Paru == + git clone https://aur.archlinux.org/paru.git + cd paru || exit + makepkg -si --noconfirm + # Remove folder + cd .. + rm -rf paru ||: + paru --gendb + # Clean files used for compilation + sudo sed -i "s/#CleanAfter/CleanAfter/g" /etc/paru.conf + + + # === AUR packages == + paru -S --noconfirm \ + topgrade-bin cram + + + # === Fish == + # Remove motd + fish -c "set -U fish_greeting" + # Reversed search + curl -sL https://git.io/fisher | fish -c "source && fisher install jorgebucaran/fisher" + fish -c "fisher install jethrokuan/fzf" + fish -c "fisher install jorgebucaran/autopair.fish" + # SSH + wget -q https://gitlab.com/kyb/fish_ssh_agent/raw/master/functions/fish_ssh_agent.fish -P "$HOME"/.config/fish/functions/ + mkdir -p "$HOME"/.ssh + # Fish theme + fish -c "fish_config theme choose 'Base16 Eighties' && yes | fish_config theme save" + fish -c "set fish_color_comment 5c6773" # custom comment color + # Fish prompt + rm "$HOME"/.config/fish/functions/fish_prompt.fish 2> /dev/null ||: + wget -q ${repo}/.config/fish/functions/fish_prompt.fish -P "$HOME"/.config/fish/functions/ + # EZA colors + fish -c "set -Ux EXA_COLORS 'di=1;36:da=35'" + # Add abbreviations + wget -q ${repo}/.config/fish/conf.d/abbr.fish -O "$HOME"/.config/fish/conf.d/abbr.fish + # Add aliases + wget -q ${repo}/.config/fish/conf.d/alias.fish -O "$HOME"/.config/fish/conf.d/alias.fish + + + # === Default editor == + fish -c "set -Ux EDITOR nano" + + + # === Micro configuration == + mkdir -p "$HOME"/.config/micro + wget -q --show-progress ${repo}/.config/micro/settings.json -O "$HOME"/.config/micro/settings.json + micro -plugin install detectindent + + + # # === GL4D == + # # Download, build and installation + # git clone https://github.com/noalien/GL4Dummies.git + # cd GL4Dummies || exit + # make -f Makefile.autotools + # ./configure + # make + # sudo make install + # cd .. + # rm -rf GL4Dummies ||: + # # Fix for shared libraries (https://stackoverflow.com/a/9395355) + # sudo ldconfig + # # Add to path + # fish -c "set -Uax LD_LIBRARY_PATH /usr/local/lib" + + # === tldr == + fish -c "tldr --update" + # Fish completion + local url_tldr + url_tldr=$(curl -s https://api.github.com/repos/dbrgn/tealdeer/releases/latest \ + | grep 'browser_download_url": ".*/completions_fish"' \ + | cut --delimiter=":" --field=2,3 \ + | tr -d \" ) + wget -q --show-progress "${url_tldr:1}" -O completions_fish + mv completions_fish ~/.config/fish/completions/tldr.fish + + + # === Manual color == + fish -c "set -Ux MANPAGER \"sh -c 'col -bx | bat -l man -p'\"" + fish -c "set -Ux MANROFFOPT \"-c\"" + + + # === Bat config == + mkdir -p "$HOME"/.config/bat + wget -q --show-progress ${repo}/.config/bat/config -O "$HOME"/.config/bat/config + + + # === Git == + wget -q ${repo}/dotfiles/.gitconfig -O "$HOME"/.gitconfig + + + # === Python == + # Add PIP packages from Python to the path + mkdir -p "$HOME"/.local/bin + fish -c "fish_add_path $HOME/.local/bin ||:" + + + # === OCaml == + # Init Opam and install stuff + echo | opam init + fish -c "yes | opam init" + opam install -y \ + utop ocaml-lsp-server ocamlformat core menhir pprint sexplib \ + ppx_sexp_conv cohttp-lwt-unix dotenv twostep lwt_ssl alcotest ppx_deriving + wget -q ${repo}/dotfiles/.ocamlformat -O "$HOME"/.ocamlformat + # Add Opam packages from OCaml + mkdir -p "$HOME"/.opam/default/bin + fish -c "fish_add_path $HOME/.opam/default/bin ||:" + + + # === Clangd == + wget -q ${repo}/dotfiles/.clang-format -O "$HOME"/.clang-format + + # === Perl == + # Add perl packages to path + fish -c "fish_add_path /usr/bin/vendor_perl ||:" + + + # === Emacs == + # mkdir -p "$HOME"/.emacs.d + # wget -q ${repo}/.emacs.d/init.el -O "$HOME"/.emacs.d/init.el + + + # === MIDI files == + { + echo "soundfont /usr/share/soundfonts/FluidR3_GS.sf2" + echo "soundfont /usr/share/soundfonts/FluidR3_GM.sf2" + } | sudo tee -a /etc/timidity/timidity.cfg > /dev/null + sudo mkdir -p /usr/share/sounds/sf2 + sudo ln -s /usr/share/soundfonts/*.sf2 /usr/share/sounds/sf2/ + + + # === Update NPM == + sudo npm i -g npm@latest +} + +main "$@"