#+TITLE: Phundrak’s dotfiles #+AUTHOR: Lucien "Phundrak” Cartier-Tilet #+EMAIL: phundrak@phundrak.fr [[http://spacemacs.org][file:https://cdn.rawgit.com/syl20bnr/spacemacs/442d025779da2f62fc86c2082703697714db6514/assets/spacemacs-badge.svg]] * Presentation This is my collection of dotfiles for my daily GNU/Linux environment, tweaked to my liking. If you wish to get the same setup as mine, follow the instructions below. As you can see, I personally use [[https://fishshell.com/][fish]] as my shell of choice, and [[https://www.gnu.org/software/emacs/][Emacs]] using [[http://spacemacs.org][Spacemacs]] (still with Emacs keybinding) as my main text editor. I also use [[https://github.com/resloved/i3][Resloved]]’s [[https://github.com/resloved/i3][fork]] of [[https://github.com/Airblader/i3][i3-gaps]] with two [[https://github.com/jaagr/polybar][polybar]] bars and [[https://github.com/tryone144][Tryone144]]’s [[https://github.com/tryone144/compton][fork]] of [[https://github.com/chjj/compton][Compton]]. The colors scheme for [[https://github.com/davatorium/rofi][rofi]], Emacs and polybar are chosen from the wallpapers using [[https://github.com/dylanaraps/pywal][pywal]]. * Features - Emacs configuration perfectly tailored for my own use - Beautiful and comfy i3 and polybar configuration - And enough information below to get basically the same distro install as I have on my main computer and my travel laptop. * Screenshots [[./img/neofetch.png]] [[./img/emacs.png]] [[./img/rofi.png]] * Dependencies Of course, some dependencies are needed for my dotfiles to work well. Here is a non-exhaustive list of software needed by these configuration files: - [[https://www.gnu.org/software/emacs/][GNU/Emacs]] >= 26.2 - [[http://spacemacs.org][Spacemacs]] (develop branch) - My [[https://labs.phundrak.fr/phundrak/conlang-layer][conlanging layer]] - [[https://github.com/venmos/w3m-layer][Venmos]]’ [[https://github.com/venmos/w3m-layer][w3m layer]] - The [[https://fishshell.com/][Fish shell]], using [[https://github.com/jorgebucaran/fisher][fisher]] - [[https://lukesmith.xyz/][Luke Smith]]’s [[https://github.com/LukeSmithxyz/st][fork]] of [[https://st.suckless.org/][st]] - [[https://resloved.info/][Resloved]]’s [[https://github.com/resloved/i3][i3-gaps-rounded]] fork of [[https://github.com/Airblader/i3][Airblader]]’s [[https://github.com/Airblader/i3][i3-gaps]], itself a fork of [[https://i3wm.org/][i3]] - [[https://github.com/yshui/compton][Compton]], more specificaly [[https://github.com/tryone144/compton][Tryone]]’s [[https://github.com/tryone144/compton][fork]] - [[https://github.com/dylanaraps/pywal/][pywal]] - [[https://tools.suckless.org/dmenu/][dmenu]] - [[https://github.com/enkore/j4-dmenu-desktop][j4-dmenu-desktop]] - [[https://github.com/davatorium/rofi][Rofi]] - [[https://github.com/gpoore/minted][minted]] - [[https://www.rust-lang.org/][Rust]] (stable and nightly) - [[https://www.latex-project.org/][LaTeX]] and [[http://xetex.sourceforge.net/][XeTeX]] (=texlive= packages on Arch Linux) - [[https://github.com/tmux/tmux][tmux]], based on [[https://github.com/gpakosz/.tmux][this repo]]’s configuration by [[https://pempek.net/][Grégory Pakosz]]. - And a bunch of other stuff, see below And some other stuff scattered around in my dotfiles. BTW, I use Arch. * Installation Here will be presented what I do to get my system up and running on a fresh Arch Linux install. These installation instructions were written in order to get an Arch Linux distribution up and running with the same configuration as my main computer’s and my travelling laptop’s configuration. ** Update the system First of all, let’s update the system in order to be sure to have the latest version. #+BEGIN_SRC fish /sudo:localhost:~ :exports code sudo pacman -Syu sudo pacman -S git emacs --needed #+END_SRC ** Install =yay= Next step is to install the AUR helper =yay= (DO NOT use =yaourt=, it is discontinued, seriously updated and represents a serious security flaw). Let’s clone it in a folder =fromGIT= that will be in our home folder. This is also where we’ll download every other packages we’ll install from git. #+BEGIN_SRC fish :dir ~ :exports code mkdir -p fromGIT cd fromGIT git clone https://aur.archlinux.org/yay.git cd yay makepkg -si --noconfirm #+END_SRC Now, we can install all the packages I usually have installed on my computer. #+BEGIN_SRC fish /sudo:localhost:~ :exports code yay -S --needed --noconfirm asar ascii aspell-en aspell-fr assimp \ autoconf automake awesome-terminal-fonts bash bat biber binutils bison \ bleachbit bluez-firmware bluez-utils bookworm boost bzip2 chromium clisp \ compton-tryone-git coreutils cppcheck cppreference cppreference-devhelp \ cpupower cronie cryptsetup cups device-mapper dhcpcd diffutils\ discord-canary discount ditaa dmenu dmenu-lpass docker docker-compose \ doxygen dwarffortress e2fsprogs emacs exfat-utils fakeroot feh \ ffmpegthumbnailer file filesystem findutils fingerprint-gui firefox fish \ flake8 flex font-mathematica fontforge freeglut fzf gawk gcc gcc-libs gdb \ gettext gimp git glibc gnome-disk-utility gnome-epub-thumbnailer \ gnu-free-fonts gnuplot go-tools grep gzip htop i3-gaps i3lock-blur \ i3status icecat-bin igdm-bin inetutils intel-ucode iproute2 iputils \ j4-dmenu-desktop jfsutils lastpass-cli less libnewt libtool licenses \ light linux linux-firmware linux-headers lldb logrotate lsof lvm2 m4 make \ man-db man-pages mate-polkit mdadm meson minted mpc mpd \ mpd-rich-presence-discord-git mpv mupdf-tools nano nasm ncdu ncmpcpp \ nemo-fileroller nemo-preview neofetch netctl networkmanager \ networkmanager-openvpn nm-connection-editor nnn nomacs noto-fonts-emoji \ npm ntfs-3g openmp openssh p7zip pacman pacman-contrib pandoc-bin patch \ pavucontrol pciutils pcurses pdfpc perl pkgconf polybar procps-ng psmisc \ pulseaudio-bluetooth python-envtpl-git python-pip python-pywal qemu r \ raw-thumbnailer redshift refind-efi reflector reiserfsprogs rofi \ rofi-wifi-menu-git rsync rtv rustup s-nail samba scrot sdl2_gfx \ sdl2_image sdl2_mixer sdl2_ttf sed sent shadow siji-git \ simplescreenrecorder speedcrunch sshfs st-luke-git sudo sysfsutils \ systemd-sysvcompat tar texinfo texlive-bibtexextra texlive-bin \ texlive-core texlive-fontsextra texlive-formatsextra texlive-games \ texlive-humanities texlive-langchinese texlive-langcyrillic \ texlive-langextra texlive-langgreek texlive-langjapanese \ texlive-langkorean texlive-latexextra texlive-music texlive-pictures \ texlive-pstricks texlive-publishers texlive-science tmux tree \ ttf-arphic-uming ttf-baekmuk ttf-bitstream-vera ttf-dejavu \ ttf-google-fonts-opinionated-git ttf-joypixels ttf-liberation ttf-material-design-icons-git ttf-ms-fonts ttf-symbola \ ttf-tibetan-machine ttf-twemoji-color ttf-unifont unicode unicode-emoji \ unrar usbutils util-linux valgrind vi vim vulkan-headers w3m wget which \ whois x11-ssh-askpass xclip xdg-user-dirs-gtk xf86-input-wacom \ xf86-video-intel xfce4-power-manager xfsprogs xorg-server xorg-xinit xss-lock #+END_SRC Given how many packages will be install from the AUR, I’ll probably have to type my password a few times. ** Set up Emacs The first thing to do after setting up our system is setting up Emacs. *** Download Spacemacs First, let’s download Spacemacs. #+BEGIN_SRC fish :dir ~ :exports code git clone https://github.com/syl20bnr/spacemacs ~/.emacs.d #+END_SRC Let’s switch Spacemacs’ branch to =develop=. #+BEGIN_SRC fish :dir ~/.emacs.d :exports code git checkout develop #+END_SRC *** Set the custom layers As mentionned above, I use some custom layers. Let’s symlink these to the private folder of our =.emacs.d/= folder. #+BEGIN_SRC fish :dir ~/.emacs.d/private :exports code for d in ~/dotfiles/spacemacs-layers/* ln -s $d end #+END_SRC *** Symlink the Emacs config Let’s not forget our Spacemacs/Emacs config, we’ll symlink it to our home directory. #+BEGIN_SRC fish :dir ~ :exports code ln -s ~/dotfiles/.spacemacs #+END_SRC ** Install the Fish shell As mentionned above, I use the fish shell as my main shell. And I use some extensions too that I installed from fisher, and custom functions. *** Install fisher Let’s install fisher: #+BEGIN_SRC fish :exports code curl https://git.io/fisher --create-dirs -sLo \ ~/.config/fish/functions/fisher.fish #+END_SRC Awesome! Now, onto the fisher packages: #+BEGIN_SRC fish :exports code fisher add edc/bass franciscolourenco/done jethrokuan/fzf jethrokuan/z \ jorgebucaran/fish-getopts laughedelic/pisces \ matchai/spacefish tuvistavie/fish-ssh-agent #+END_SRC *** Install the fish config and custom functions I will be symlinking my fishfile to its location =~/.config=. #+BEGIN_SRC fish :dir ~/.config/ :exports code ln -s ~/dotfiles/config.fish #+END_SRC Now, in the =functions= subdirectory, let’s symlink all of my custom functions. #+BEGIN_SRC fish :dir ~/.config/fish/functions :exports code for f in ~/dotfiles/fishfunctions/*.fish ln -s $f end #+END_SRC ** Install the dotfiles *** Update the submodules Alright, let’s do something about all these dotfiles laying around. First, let’s symlink those that are in our home directory. #+BEGIN_SRC fish :exports code yadm submodule update #+END_SRC *** Update the remotes Now, let’s make sure we have the correct remotes set up for the dotfiles. #+BEGIN_SRC fish :exports code :dir ~/dotfiles yadm remote set-url origin "git@labs.phundrak.fr:phundrak/dotfiles.git" yadm remote set-url github "git@github.com:phundrak/dotfiles.git" #+END_SRC *** Symlink the dotfiles Let’s now symlink our dotfiles. First, we’ll take care of those that should be symlinked to our home directory. #+BEGIN_SRC fish :dir ~ :exports code ln -s ~/dotfiles/.Xresources ln -s ~/dotfiles/.gitignore_global ln -s ~/dotfiles/.nanorc ln -s ~/dotfiles/rustfmt.toml ln -s ~/dotfiles/.signature ln -s ~/dotfiles/.tmux.conf.local ln -s ~/dotfiles/tmux/.tmux.conf ln -s ~/dotfiles/.config/i3 .i3 #+END_SRC Finally, let’s symlink everything that belongs to the =~/.config= folder. #+BEGIN_SRC fish :dir ~/.config :exports code for elem in ~/dotfiles/.config/* ln -s $elem end #+END_SRC ** Install packages from git Now, we move on to the installation of git-based packages. *** Install =i3-gaps-rounded= I know we already installed =i3-gaps= from the AUR, why reinstall it? Well, that is certainly bad practices, but this allowed me to already have the needed dependencies for building =i3= installed. Now, let’s clone it, build it, and install it. It will required the password during the actual installation. #+BEGIN_SRC fish :dir ~/fromGIT :exports code git clone https://github.com/resloved/i3.git i3-gaps-rounded cd i3-gaps-rounded rm -rf build autoreconf --force --install mkdir build && cd build ../configure --prefix=/usr --sysconfdir=/etc --disable-sanitizers make sudo make install #+END_SRC *** Install Polybar Battery I use a custom tool for my battery indicator which also launches a warning when the battery is low. However, I need to build it, since it is not available in the repos nor the AUR. #+BEGIN_SRC fish :dir ~/fromGIT :exports code 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 #+END_SRC Let’s also create the =~/.local/bin/= directory in which I will put some custom executables, including the executable we just built. *** Download Reveal.JS Now, let’s download [[https://revealjs.com/#/][Reveal.JS]]. I use it for some of my Org presentations, and I set it so it is found in =~/fromGIT=. #+BEGIN_SRC fish :dir ~/fromGIT :exports code git clone https://github.com/hakimel/reveal.js.git #+END_SRC ** Clean the =pacman= and =yay= cache Finally, we are almost done! Let’s clean the cache of =pacman= and =yay= #+BEGIN_SRC fish :dir /sudo:localhost:~ :exports code yay -Sc --noconfirm #+END_SRC * Licence All of my dotfiles (and my dotfiles only) are available under the GNU GPLv3 Licence. Please consult [[file:LICENCE.md]] for more information. In short: you are free to access, edit and redistribute all of my dotfiles under the same licence and as allowed by the licence, and if you fuck up something, it’s your own responsibility.