These dotfiles are organized as ansible roles. Each role is responsible for one aspect of the setup. This could be:
- a program to install and configure (i.e. KDE)
- a system setting to change (i.e. autologin)
There are two special roles, that deserve to be pointed out:
- packages
- Installs an AUR-helper (yay) and a lot of
packages.
- These packages can be defined via the file in the
packages’ roles
defaults
-folder. - This role can be reused in other roles to install needed packages. (i.e. see role KDE).
- These packages can be defined via the file in the
packages’ roles
- dotfiles
- Installs all dotfiles that are not installed by a
dedicated role. Many programs are just installed and then configured
by a dotfile. To spare me of creating a role for each program, the
dotfiles role installs all these dotfiles in one go. The dotfiles in
question are installed by sym-linking them from the ansible template
into their desired folders. All dotfiles for this are found in the
dotfiles’ roles
templates
-folder.
There’s a few special folders/files in the hierarchy.
bin/
- Anything in `bin/` will get added to your `$PATH` and be made available everywhere.
When installing a program, you can symlink files into the .config/zsh
folder to update the path, environment variables, etc. For this,
ideally, you create a subdirectory for the application, the config is
for. The following behavior is honored by the zsh config:
.config/zsh/**/*.zsh
- Any files ending in `.zsh` get loaded into your environment.
.config/zsh/**/path.zsh
- Any file named `path.zsh` is loaded first and is expected to setup `$PATH` or similar.
.config/zsh/**/completion.zsh
- Any file named `completion.zsh` is loaded late and is expected to setup autocomplete.
.config/zsh/autostart.zsh
- This file will be loaded last (if
present) and can be used to start software on terminal
start. I.e. the following snippet starts KDE if the user is on TTY1
and no display session is running:
if [ -z "$DISPLAY" ] && [ -n "$XDG_VTNR" ] && [ "$XDG_VTNR" -eq 1 ]; then exec startplasma-wayland fi
Make sure to keep the if, if you don’t want the auto-start-command to run on every zsh session 😉.
Currently, Wayland with KDE and a lot of software. I just made the switch to Wayland and am not in the mood to build up a complete system basically from scratch 🙈
Some applications, notification:
Emacs as an only window on a desktop in monocle view:
These dotfiles are installed using ansible. To install them, first
install ansible (pacman -S ansible
).
Run this:
git clone https://github.com/phuhl/.dotfiles.git ~/.dotfiles
cd ~/.dotfiles
cp vars.yml ansible/inventory/host_vars/localhost
# Edit variables in ansible/inventory/host_vars/localhost/vars.yml to your likings
pacman -S ansible
ansible-playbook setup.yml -i inventory -K
#reboot
- Missing installs:
- notify-send.py
- Installing root scripts (still needed?)
- Improvement: If rofi is used by multiple setups, create own role (currently it is part of river)
- bspwm-rounded-corners-git
- For java on bspwm:
export _JAVA_AWT_WM_NONREPARENTING=1
- For java on bspwm:
- URXVT-Plugins
- betterlockscreen
- compton
- deadd-notification-system
- picom launch script
- polybar
- rofi
- crontab
- hosts
- ssh-key
- node, npm, volta?
- npm: .npmrc has /home/philipp in it
- volta:
yay -S volta-bin
(aur), needs to runvolta setup
- Firefox post install scripts via Pacman hooks?
- Firefox add-ons?