/dotfiles

My arch configuration

Primary LanguageShell

Table of Contents

Screenshots

Pre installation

Create live USB

$ dd if=arch-linux.iso of=/dev/sdX bs=4M conv=fsync

Change ISO file name and output device name

Installation

Live USB

Change keymap

$ loadkeys be-latin1

Setup disks

Name Format Size Mount Note
/dev/sda1 FAT32 512Mo /boot Only needed for UEFI boot
/dev/sda2 EXT4 * / System partition
/dev/sda3 swap = RAM swapon Swap partition

Partition disks

$ fdisk /dev/sda

Format partitions

$ mkfs.fat -F32 /dev/sda1
$ mkfs.ext4     /dev/sda2
$ mkswap        /dev/sda3

Mount file systems

$ swapon /dev/sda3
$ mount  /dev/sda2 /mnt
$ mkdir  /mnt/boot
$ mount  /dev/sda1 /mnt/boot !only for UEFI

Install Arch on disk

$ pacstrap /mnt base base-devel

Generate /etc/fstab

Automatically mounts filesystems at boot

$ genfstab -U /mnt >> /mnt/etc/fstab

System setup

Now that Arch is installed, change root to the new system

$ arch-chroot /mnt

Minor tweaks

Set timezone

$ ln -sf /usr/share/zoneinfo/Europe/Brussels /etc/localtime
$ hwclock --systohc

Set locale

Uncomment en_US.UTF-8 UTF-8 and other needed localizations in /etc/locale.gen

$ locale-gen
$ echo "LANG=en_US.UTF-8" >> /etc/locale.conf

Set keymap

$ localectl set-keymap --no-convert be-latin1

Set hostname

$ echo "myhostname" > /etc/hostname
$ echo "127.0.1.1	myhostname.localdomain	myhostname" >> /etc/hosts

Set root password

$ passwd

Install important packages

  • intel-ucode
  • grub
  • efibootmgr
  • zsh
$ pacman -S intel-ucode networkmanager grub efibootmgr zsh

Setup GRUB

$ grub-install --efi-directory=/boot /dev/sda
$ grub-mkconfig -o /boot/grub/grub.cfg

Add Windows entry

Follow this article

Create user

$ useradd -m <username>
$ passwd <username>
$ chsh -s /bin/zsh <username>

Then add the following line to /etc/sudoers

<username> ALL=(ALL) ALL

Reboot

$ exit
$ umount /dev/sda1 /dev/sda2
$ reboot

Remove the installation media and boot on the new system

Setup

Network (netctl)

Create configuration file

# nano /etc/netctl/ethernet-static
Interface=eno1
IP=static
Address=('ip/24')
Gateway=('192.168.0.1')
DNS=('8.8.8.8' '8.8.4.4')

Graphical interface

Intall XOrg, Display Manager and Window Manager

  • xorg
  • lightdm
  • lightdm-gtk-greeter
  • i3-gaps-next-git
  • i3lock-next-git
$ yes | pacman -S xorg lightdm lightdm-gtk-greeter
# yes | yaourt -S i3-gaps-next-git i3lock-next-git

Enable lightdm

$ systemctl enable lightdm.service

Set i3 keymap

$ localectl set-x11-keymap be

Set i3 default terminal emulator

$ localectl set-x11-keymap be

[yoga] Set resolution at startup

Create /usr/share/lightdm.sh

# touch /usr/share/lightdm.sh
# chmod a+rx /usr/share/lightdm.sh

Containing the following text

#!/bin/bash
xrandr --newmode "1920x1080_60.00"  173.00  1920 2048 2248 2576  1080 1083 1088 1120 -hsync +vsync
xrandr --addmode eDP-1 1920x1080_60.00
xrandr --output eDP-1 --mode 1920x1080_60.00

Append the following text to /etc/lightdm/ligthdm.conf in the [Seat:*] section

display-setup-script=/usr/share/lightdm.sh

[yoga] Touchpad driver

$ yes | pacman -S libinput

Create file /etc/x11/xorg.conf.d/30-touchpad.conf containing

Section "InputClass"
    Identifier "Synaptics TM3066-082"
    Driver "libinput"
    MatchIsTouchpad "on"
    Option "Tapping" "on"
    Option "TappingButtonMap" "lmr"
EndSection

Dotfiles

Install homesick

Homesick

# yes | yaourt -S homesick

Recover dotfiles

# homesick clone phito/dotfiles
# homesick link dotfiles

Update dotfiles

# homesick pull dotfiles

Packages

Pacman packages

Name Notes
firefox Web browser
git Version Control System
termite Terminal emulator
guake Terminal emulator (F12)
compton X11 compositor
rofi Application launcher
redshift Adjusts the computer display's color temperature based upon the time of day
variety Wallpaper manager
scrot Screenshot manager
feh X11 image viewer (for wallpaper)
xclip cli cliboard manager
openssh
mplayer Video player, mostly for codecs
ranger File manager (cli)
dotnet-runtime-2.0 DotNet Core runtime
python-pip Python package manager
jdk-8-openjdk Java jdk
maven Java build system
mariadb SQL database system
xf86-input-synaptics Touchpad driver
$ yes | pacman -S firefox termite compton rofi guake redshift variety scrot feh xclip openssh mplayer ranger dotnet-runtime-2.0 python-pip jdk-8-openjdk maven mariadb xf86-input-synaptics

AUR packages

Name Notes
polybar i3 status bar
homesick Dotfile manager
ttf-mplus Font
ttf-font-awesome Font
otf-fantasque-sans-mono Font
i3lock-color Screen locker (required for i3lock-next)
i3lock-next-git Screen locker
visual-studio-code IDE
icu55 International Components for Unicode library (required to debug C#)
neofetch System informations (cli)
dotnet-sdk-2.0 DotNet Core sdk
mullvad VPN client
oh-my-zsh zsh config manager
# yes | pacaur -S polybar homesick ttf-mplus ttf-font-awesome ttf-fantasque-sans-mono i3lock-color i3lock-next-git visual-studio-code icu55 neofetch dotnet-sdk-2.0 mullvad oh-my-zsh

PIP3 packages

Name Notes
requests
$ pip3 install requests

Other

VS Code extensions

Dump extension list

# code --list-extensions > vscode-extensions

Restore extensions

# while read in; do code --install-extension $in; done <vscode-extensions