updated README, better installation instructions

This commit is contained in:
Phuntsok Drak-pa 2019-09-27 16:28:13 +02:00
parent b18cf69d12
commit b18096bacb

View File

@ -1,10 +1,9 @@
#+TITLE: Phundraks dotfiles #+TITLE: Phundraks dotfiles
#+AUTHOR: Lucien "Phundrak” Cartier-Tilet #+AUTHOR: Lucien "Phundrak” Cartier-Tilet
#+EMAIL: phundrak@phundrak.fr #+EMAIL: phundrak@phundrak.fr
#+HTML_HEAD: <meta name="description" content="Phundrak's dotfiles" />
#+HTML_HEAD: <meta property="og:title" content="Phundrak's dotfiles" />
#+HTML_HEAD: <meta property="og:description" content="Installation instructions for Phundrak's dotfiles" />
#+OPTIONS: H:4 broken_links:mark email:t ^:{} auto_id:t #+OPTIONS: H:4 broken_links:mark email:t ^:{} auto_id:t
# ### LaTeX ####################################################################
#+LATEX_CLASS: conlang #+LATEX_CLASS: conlang
#+LaTeX_CLASS_OPTIONS: [a4paper,twoside] #+LaTeX_CLASS_OPTIONS: [a4paper,twoside]
#+LATEX_HEADER_EXTRA: \usepackage{tocloft} \setlength{\cftchapnumwidth}{3em} #+LATEX_HEADER_EXTRA: \usepackage{tocloft} \setlength{\cftchapnumwidth}{3em}
@ -17,7 +16,12 @@
#+LATEX_HEADER_EXTRA: \usepackage{multicol} #+LATEX_HEADER_EXTRA: \usepackage{multicol}
#+LATEX_HEADER_EXTRA: \usepackage{indentfirst} #+LATEX_HEADER_EXTRA: \usepackage{indentfirst}
#+LATEX_HEADER_EXTRA: \sloppy #+LATEX_HEADER_EXTRA: \sloppy
# ### HTML #####################################################################
#+HTML_DOCTYPE: html5 #+HTML_DOCTYPE: html5
#+HTML_HEAD_EXTRA: <meta name="description" content="Phundrak's dotfiles" />
#+HTML_HEAD_EXTRA: <meta property="og:title" content="Phundrak's dotfiles" />
#+HTML_HEAD_EXTRA: <meta property="og:description" content="Installation instructions for Phundrak's dotfiles" />
#+HTML_HEAD_EXTRA: <script src="https://kit.fontawesome.com/4d42d0c8c5.js"></script> #+HTML_HEAD_EXTRA: <script src="https://kit.fontawesome.com/4d42d0c8c5.js"></script>
#+HTML_HEAD_EXTRA: <script src="https://cdn.jsdelivr.net/npm/js-cookie@2/src/js.cookie.min.js"></script> #+HTML_HEAD_EXTRA: <script src="https://cdn.jsdelivr.net/npm/js-cookie@2/src/js.cookie.min.js"></script>
#+HTML_HEAD_EXTRA: <link rel="shortcut icon" href="https://cdn.phundrak.fr/img/mahakala-128x128.png" type="img/png" media="screen" /> #+HTML_HEAD_EXTRA: <link rel="shortcut icon" href="https://cdn.phundrak.fr/img/mahakala-128x128.png" type="img/png" media="screen" />
@ -27,8 +31,7 @@
#+HTML_HEAD_EXTRA: <meta name="twitter:site" content="@phundrak" /> #+HTML_HEAD_EXTRA: <meta name="twitter:site" content="@phundrak" />
#+HTML_HEAD_EXTRA: <meta name="twitter:creator" content="@phundrak" /> #+HTML_HEAD_EXTRA: <meta name="twitter:creator" content="@phundrak" />
#+HTML_HEAD_EXTRA: <style>.org-svg{width:auto}</style> #+HTML_HEAD_EXTRA: <style>.org-svg{width:auto}</style>
#+INFOJS_OPT: view:info toc:1 home:https://langue.phundrak.fr toc:t #+INFOJS_OPT: view:info toc:1 home:https://phundrak.fr/ toc:t
#+HTML_HEAD_EXTRA: <link rel="stylesheet" href="https://langue.phundrak.fr/css/htmlize.min.css"/> #+HTML_HEAD_EXTRA: <link rel="stylesheet" href="https://langue.phundrak.fr/css/htmlize.min.css"/>
#+HTML_HEAD_EXTRA: <link rel="stylesheet" href="https://langue.phundrak.fr/css/main.css"/> #+HTML_HEAD_EXTRA: <link rel="stylesheet" href="https://langue.phundrak.fr/css/main.css"/>
#+HTML_HEAD_EXTRA: <script src="https://langue.phundrak.fr/js/jquery.min.js"></script> #+HTML_HEAD_EXTRA: <script src="https://langue.phundrak.fr/js/jquery.min.js"></script>
@ -41,28 +44,28 @@
- [[#dependencies][Dependencies]] - [[#dependencies][Dependencies]]
- [[#installation][Installation]] - [[#installation][Installation]]
- [[#install-arch-linux][Install Arch Linux]] - [[#install-arch-linux][Install Arch Linux]]
- [[#get-the-latest-live-system-with-fast-mirrors][Get the latest live system with fast mirrors]]
- [[#install-the-system][Install the system]]
- [[#install-yay-if-it-hasnt-been-done-during-the-system-installation][Install =yay= if it hasnt been done during the system installation]]
- [[#update-the-system][Update the system]] - [[#update-the-system][Update the system]]
- [[#install-yay-and-all-the-official-repos-packages][Install =yay= and all the official repos packages]]
- [[#set-up-yadm][Set up =yadm=]] - [[#set-up-yadm][Set up =yadm=]]
- [[#get-the-dotfiles][Get the dotfiles]] - [[#get-the-dotfiles][Get the dotfiles]]
- [[#update-the-remotes][Update the remotes]]
- [[#get-our-git-submodules][Get our git submodules]]
- [[#generate-the-alt-dotfiles][Generate the alt dotfiles]] - [[#generate-the-alt-dotfiles][Generate the alt dotfiles]]
- [[#set-up-emacs][Set up Emacs]] - [[#set-up-emacs][Set up Emacs]]
- [[#download-spacemacs][Download Spacemacs]] - [[#install-our-needed-packages][Install our needed packages]]
- [[#set-the-custom-layers][Set the custom layers]] - [[#enable-and-start-some-services][Enable and start some services]]
- [[#symlink-the-emacs-config][Symlink the Emacs config]] - [[#install-fisher-and-our-fish-shell-extensions][Install Fisher and our fish shell extensions]]
- [[#install-the-fish-shell][Install the Fish shell]]
- [[#install-fisher][Install fisher]]
- [[#install-the-fish-config-and-custom-functions][Install the fish config and custom functions]]
- [[#install-the-dotfiles][Install the dotfiles]]
- [[#update-the-submodules][Update the submodules]]
- [[#update-the-remotes][Update the remotes]]
- [[#symlink-the-dotfiles][Symlink the dotfiles]]
- [[#install-packages-from-git][Install packages from git]] - [[#install-packages-from-git][Install packages from git]]
- [[#install-i3-gaps-rounded][Install =i3-gaps-rounded=]] - [[#install-i3-gaps-rounded][Install =i3-gaps-rounded=]]
- [[#install-polybar-battery][Install Polybar Battery]] - [[#install-polybar-battery][Install Polybar Battery]]
- [[#download-revealjs][Download Reveal.JS]] - [[#download-revealjs][Download Reveal.JS]]
- [[#set-your-locale][Set your locale]]
- [[#launch-x][Launch X]]
- [[#install-rust][Install Rust]] - [[#install-rust][Install Rust]]
- [[#install-the-toolchains][Install the toolchains]] - [[#install-the-toolchains][Install the toolchains]]
- [[#install-some-utilities][Install some utilities]]
- [[#clean-the-pacman-and-yay-cache][Clean the =pacman= and =yay= cache]] - [[#clean-the-pacman-and-yay-cache][Clean the =pacman= and =yay= cache]]
- [[#licence][Licence]] - [[#licence][Licence]]
@ -88,10 +91,16 @@
* Screenshots * Screenshots
#+ATTR_HTML: :width 100%
#+CAPTION: Desktop with Neofetch in the terminal
[[./img/neofetch.png]] [[./img/neofetch.png]]
#+CAPTION: Desktop with Emacs opened
#+ATTR_HTML: :width 100%
[[./img/emacs.png]] [[./img/emacs.png]]
#+CAPTION: Desktop with Rofi
#+ATTR_HTML: :width 100%
[[./img/rofi.png]] [[./img/rofi.png]]
* Dependencies * Dependencies
@ -128,211 +137,236 @@
I usually install Arch from the [[https://www.archlinux.org/download/][vanilla ISO]], however I began using [[https://github.com/MatMoul/archfi][archfi]] to I usually install Arch from the [[https://www.archlinux.org/download/][vanilla ISO]], however I began using [[https://github.com/MatMoul/archfi][archfi]] to
install easily the distro (Ive done it so many times, I know how it works install easily the distro (Ive done it so many times, I know how it works
now). Usually, my distros will be installed on at least two partitions, one now). Usually, my distros will be installed on at least two partitions, one
dedicated to =/home=, the other to the root partition =/=. When you boot into dedicated to =/home=, the other to the root partition =/=.
the live ISO, execute the following command:
#+BEGIN_SRC sh :exports code
wget archfi.sf.net/archfi
# Or from matmoul.github.io/archfi if SourceForge is down
sh archfi
#+END_SRC
Then, follow the instructions and install Arch Linux.
** Update the system If the computer supports EFI bootloaders, the EFI partition will be mounted
First of all, lets make sure we have a sorted mirrorlist for pacman. on =/boot=. I generally use rEFInd as my boot manager, but if you are more
#+BEGIN_SRC fish :exports code :dir /sudo:: comfortable with another one, just install what you want. Be aware that if
pacman -Sy reflector you format your =/boot= partition, you will delete all boot managers that
reflector --country France --country Germany --latest 200 \ already exist; so, if you are dual-booting, *DO NOT FORMAT IT*. Yes, I made
--protocol http --protocol httpqs --sort rate \ the mistake of wiping the Windows boot manager.
--save /etc/pacman.d/mirrorlist
#+END_SRC
Now, lets update the system in order to be sure to have the latest The swap partition is always at least 4GB large, and I should have a total of
version. 12GB of combined RAM and swap. This means on my main computer I have 16GB of
#+BEGIN_SRC fish :dir /sudo:: :exports code RAM and 4GB of swap, but on my thinkpad I have 4GB of RAM and 8GB of swap.
sudo pacman -Syu --noconfirm
sudo pacman -S git emacs --needed --noconfirm
#+END_SRC
** Install =yay= and all the official repos packages
Next step is to install the AUR helper =yay= (DO NOT use =yaourt=, it is *** Get the latest live system with fast mirrors
discontinued, seriously updated and represents a serious security flaw). When you boot into the live ISO, execute the following command:
Lets clone it in a folder =fromGIT= that will be in our home folder. This is #+BEGIN_SRC sh :exports code
also where well download every other packages well install from git. pacman -Syu reflector
#+BEGIN_SRC fish :dir ~ :exports code reflector --country France --country Germany --latest 200 \
--protocol http --protocol https --sort rate \
--save /etc/pacman.d/mirrorlist
#+END_SRC
This will update the packages from your live ISO, and you will get the best
mirrors for your installation. Of course, change the countries accordingly
to your location.
*** Install the system
Then you can use a custom script to ease your installation of Arch if you do
not wish to do it manually. Personally, Ive done it several times already,
I know how the distro works, I just want to be able to install my distro
quickly now.
#+BEGIN_SRC sh :exports code
wget archfi.sf.net/archfi
# Or from matmoul.github.io/archfi if SourceForge is down
sh archfi
#+END_SRC
Then, follow the instructions and install Arch Linux. Take the opportunity
to install as many packages as you need, mainly =yay= which I use as my
package manager (it is just a wrapper for =pacman=) and AUR helper.
Once your system is installed, reboot and remove your installation media
from your computer.
** Install =yay= if it hasnt been done during the system installation
Next step is to install the AUR helper =yay=. *DO NOT* use =yaourt=, it is
discontinued, seriously updated and represents a serious security flaw.
Lets clone =yay= in a folder =fromGIT= that will be in our home folder. This
is also where well download every other packages well install from git.
#+BEGIN_SRC sh :dir ~ :exports code
mkdir -p fromGIT mkdir -p fromGIT
cd fromGIT cd fromGIT
git clone https://aur.archlinux.org/yay.git git clone https://aur.archlinux.org/yay.git
cd yay cd yay
makepkg -si --noconfirm makepkg -si --noconfirm
#+END_SRC #+END_SRC
We now have our AUR helper!
Now, we can install all the packages I usually have installed on my computer. ** Update the system
#+BEGIN_SRC fish :dir /sudo:: :exports code Congrats, Arch is now installed on your system! But we are not done yet.
yay -S --needed --noconfirm asar ascii aspell-en aspell-fr assimp \ Lets update the system, just in case some packages were updated during the
autoconf automake awesome-terminal-fonts bash bat biber binutils bison \ installation. And lets install =yadm= (our dotfiles manager) and =emacs=
bleachbit bluez-firmware bluez-utils bookworm boost bzip2 chromium clisp \ while were at it.
compton-tryone-git coreutils cppcheck cppreference cppreference-devhelp \ #+BEGIN_SRC sh :exports code
cpupower cronie cryptsetup cups device-mapper dhcpcd diffutils\ yay -Syua yadm emacs
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 yadm graphviz
#+END_SRC #+END_SRC
Given how many packages will be install from the AUR, Ill probably have to
type my password a few times.
** Set up =yadm= ** Set up =yadm=
=yadm= is my dotfiles manager. It has some very interesting, including host =yadm= is my dotfiles manager. It has some very interesting, including host
and machine-specific files and file content, as can be seen in and machine-specific files and file content, as can be seen in
=dotfiles/.config/i3/config##yadm.j2=. =.config/i3/config##yadm.j2=. It also manages some files system-wide (well,
actually =home=-wide), so you usually dont have to symlink anything.
For some reason, when Im in i3, polybar crashes when I run any =yadm=
command, so I made the =C-S-p= shortcut to relaunch it at will.
*** Get the dotfiles *** Get the dotfiles
You should clone the dotfiles with the help of =yadm=. For that purpose, you You should clone the dotfiles with the help of =yadm=. For that purpose, you
can execute either of the two following commands. can execute either of the two following commands.
- From [[https://labs.phundrak.fr/phundrak/dotfiles][labs.phundrak.fr]]: - From [[https://labs.phundrak.fr/phundrak/dotfiles][labs.phundrak.fr]]:
#+BEGIN_SRC fish :dir ~ :exports code #+BEGIN_SRC sh :dir ~ :exports code
yadm clone https://labs.phundrak.fr/phundrak/dotfiles.git yadm clone https://labs.phundrak.fr/phundrak/dotfiles.git
#+END_SRC #+END_SRC
- From [[https://github.com/phundrak/dotfiles][Github]]: - From [[https://github.com/phundrak/dotfiles][Github]]:
#+BEGIN_SRC fish :dir ~ :exports code #+BEGIN_SRC sh :dir ~ :exports code
yadm clone https://gitlab.com/phundrak/dotfiles.git yadm clone https://gitlab.com/phundrak/dotfiles.git
#+END_SRC #+END_SRC
*** Generate the alt dotfiles
=yadm= will need to generate the host-specific dotfiles. To do so, you can
run the following command:
#+BEGIN_SRC fish :dir ~ :exports code
yadm alt
#+END_SRC
** Set up Emacs
The first thing to do after setting up our system is setting up Emacs.
*** Download Spacemacs
First, lets download Spacemacs.
#+BEGIN_SRC fish :dir ~ :exports code
git clone https://github.com/syl20bnr/spacemacs ~/.emacs.d
#+END_SRC
Lets 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. Lets 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
Lets not forget our Spacemacs/Emacs config, well 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
Lets 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, lets 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, lets do something about all these dotfiles laying around. First,
lets symlink those that are in our home directory.
#+BEGIN_SRC fish :exports code
yadm submodule update
#+END_SRC
*** Update the remotes *** Update the remotes
Now, lets make sure we have the correct remotes set up for the dotfiles. Now, lets make sure we have the correct remotes set up for the dotfiles.
#+BEGIN_SRC fish :exports code :dir ~/dotfiles #+BEGIN_SRC fish :exports code :dir ~/dotfiles
yadm remote set-url origin "git@labs.phundrak.fr:phundrak/dotfiles.git" yadm remote set-url origin "https://labs.phundrak.fr/phundrak/dotfiles.git"
yadm remote set-url github "git@github.com:phundrak/dotfiles.git" yadm remote add-url github "https://github.com/phundrak/dotfiles.git"
#+END_SRC
You can swap the two links if you feel more comfortable with Github as the
=origin= remote, just rename the =github= remote to something like
=phundraklabs= or something like that.
If you have already generated (or copied, but dont do that) your SSH keys
and uploaded them to Github and/or to Phundrak Labs, you can use the
following urls instead as the remotes urls.
#+BEGIN_SRC text
git@labs.phundrak.fr:phundrak/dotfiles.git
git@github.com:phundrak/dotfiles.git
#+END_SRC #+END_SRC
*** Symlink the dotfiles *** Get our git submodules
Lets now symlink our dotfiles. First, well take care of those that should Our dotfiles rely on a couple of submodules we should get. Lets download
be symlinked to our home directory. them.
#+BEGIN_SRC fish :dir ~ :exports code #+BEGIN_SRC sh :dir ~ :exports code
ln -s ~/dotfiles/.Xresources yadm submodule update --init --recursive
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 #+END_SRC
Finally, lets symlink everything that belongs to the =~/.config= folder. *** Generate the alt dotfiles
#+BEGIN_SRC fish :dir ~/.config :exports code =yadm= will need to generate the host-specific dotfiles. To do so, you can
for elem in ~/dotfiles/.config/* run the following command:
ln -s $elem #+BEGIN_SRC sh :dir ~ :exports code
end yadm alt
#+END_SRC #+END_SRC
And with that, we should have all of our dotfiles placed where they need to
be!
** Set up Emacs
Now that we have our dotfiles installed, lets set up Emacs. First, lets
download Spacemacs.
#+BEGIN_SRC sh :dir ~ :exports code
git clone https://github.com/syl20bnr/spacemacs ~/.emacs.d
#+END_SRC
In our =.emacs.d= directory, lets switch Spacemacs branch to =develop=.
#+BEGIN_SRC sh :dir ~/.emacs.d :exports code
git checkout develop
#+END_SRC
The rest of this READMEs code blocks should now be executable from Emacs
itself, and we should be able to have a perfectly running Emacs installation.
Thats the power of Org-mode!
** Install our needed packages
Now, we can install all the packages I usually have installed on my computer.
#+BEGIN_SRC sh :dir /sudo:: :exports code
yay -S --needed 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 \
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-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 yadm graphviz xorg-xprop
#+END_SRC
Given how many packages will be install from the AUR, Ill probably have to
type my password a few times.
For some reasons, if you directly install =compton-tryone-git= without
installing =compton= first, the package wont work, which is why I made you
install =compton= in the command above. Now you can install
=compton-tryone-git=. It will replace =compton=, so say “yes” when it warns
you about the package conflict and whether =compton= should be removed.
#+BEGIN_SRC fish :exports code
yay -S compton-tryone-git
#+END_SRC
** Enable and start some services
As you can see above, docker has been installed. Lets enable and start its
service.
#+BEGIN_SRC fish :dir /sudo:: :exports code
systemctl enable docker
systemctl start docker
#+END_SRC
I also usually add myself as a member of the =docker= group because I dont
like prefixing every single docker command with =sudo=. So lets execute this
command:
#+BEGIN_SRC fish :exports code
sudo usermod -aG docker $USER
#+END_SRC
Depending on my machine, I might enable the SSH server shipped with
=openssh=. Edit your =/etc/ssh/sshd_config= file as needed, then lets do
that here:
#+BEGIN_SRC fish :dir /sudo:: :exports code
systemctl enable sshd
systemctl start sshd
#+END_SRC
** Install Fisher and our fish shell extensions
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.First,
lets 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
Now our fish shell is ready to rock! Plus, we already have our custom
functions installed from our dotfiles!
** Install packages from git ** Install packages from git
Now, we move on to the installation of git-based packages. Now, we move on to the installation of git-based packages.
@ -375,30 +409,73 @@
git clone https://github.com/hakimel/reveal.js.git git clone https://github.com/hakimel/reveal.js.git
#+END_SRC #+END_SRC
** Set your locale
Archs default locale configuration is crap. Like… really. It took me a while
to figure out why some elements in polybar didnt work along with some other
pieces of software. So, go and uncomment the locales youll use in
=/etc/locale.gen=. I personally have =en_US.UTF-8=, =fr_FR.UTF-8= and
=ja_JP.UTF-8= uncommented, but what you choose is really up to you. Then run
the following command as sudo.
#+BEGIN_SRC fish :dir /sudo:: :exports code
locale-gen
#+END_SRC
Now you can edit your =/etc/locale.conf= file. Mine looks like this, edit it
to fit your needs.
#+BEGIN_SRC conf :exports code
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
#+END_SRC
** Launch X
Aaaand we should finally be good to launch X for the first time! My
installation logs me in the tty by default, and I do this by choice, I dont
really like display managers or desktop environments. So, to launch i3, lets
run =startx=.
** Install Rust ** Install Rust
*** Install the toolchains *** Install the toolchains
When using rust, I bounce between two toolchains, the =stable= toolchain and When using rust, I bounce between two toolchains, the =stable= toolchain and
the =nightly= toolchain. To install them, I will use =rustup= which has the =nightly= toolchain. To install them, I will use =rustup= which has
already been installed. already been installed.
#+BEGIN_SRC fish :exports code #+BEGIN_SRC fish :exports code
rustup default stable rustup default nightly
#+END_SRC #+END_SRC
This will both download the stable toolchain and set it as the default one. This will both download the nightly toolchain and set it as the default one.
Now to install the nightly toolchain, lets run this: Yup, I like to live dangerously. Now to install the stable toolchain, lets
run this:
#+BEGIN_SRC fish :exports code #+BEGIN_SRC fish :exports code
rustup toolchain install nightly rustup toolchain install stable
#+END_SRC #+END_SRC
This one is updated about daily (hence the name), so well often have to run The nightly toolchain is ironically updated about daily (hence the name…
the following command: sort of?), so well often have to run the following command:
#+BEGIN_SRC fish :exports code #+BEGIN_SRC fish :exports code
rustup update rustup update
#+END_SRC #+END_SRC
*** Install some utilities
Well need some utilities when developing Rust from Emacs, namely =rustfmt=
and =racer=. Lets install them with =cargo=.
#+BEGIN_SRC fish
cargo install rustfmt racer
#+END_SRC
** Clean the =pacman= and =yay= cache ** Clean the =pacman= and =yay= cache
Finally, we are almost done! Lets clean the cache of =pacman= and =yay= Finally, we are almost done! Lets clean the cache of =pacman= and =yay=
#+BEGIN_SRC fish :dir /sudo:: :exports code #+BEGIN_SRC fish :dir /sudo:: :exports code
yay -Sc --noconfirm yay -Sc --noconfirm
#+END_SRC #+END_SRC
You should now run a system pretty close to the one I have on my main
computer and my thinkpad.
* Licence * Licence
All of my dotfiles (and my dotfiles only) are available under the GNU GPLv3 All of my dotfiles (and my dotfiles only) are available under the GNU GPLv3