Skip to content

hankertrix/Dotfiles

Repository files navigation

Linux Config Files

The laptop that I currently use is an ASUS TUF Gaming A16 AMD Advantage Edition, with a Ryzen 9-7940HS processor, an AMD Radeon RX7600S GPU and a screen resolution of 2560x1600, model number FA617X-S. It has 16GB of RAM and a 1TB SSD. I am currently using Arch Linux and running Niri as my window manager and Wayland compositor.

I installed Arch Linux by manually following the tutorial from Dreams of Autonomy. There is also a written guide if you prefer to read instead of watching a video.

If you are using btrfs, which you would be if you are following the guide above, you should also install btrfs-progs so that the mkinitcpio hook to create the initramfs for the kernel doesn't throw an error due to fsck not being available. The system will still work fine even without installing btrfs-progs, but the error gets annoying as it appears every time you update the kernel, and it might trick you into thinking there is actually an error in the mkinitcpio build hook for the kernel when there actually isn't.

Configuration files

I am making use of Chezmoi (pronounced shay-mwa) to manage my configuration files. To use my configuration files, install Chezmoi, and Git, then run the command below to deploy the configuration files:

ROOTMOI=t chezmoi init hankertrix/dotfiles --source ~/.dotfiles --apply

If you don't want to deploy the system level configuration files, remove the ROOTMOI=t at the front of the command to only deploy the user level configuration files, like this:

chezmoi init hankertrix/dotfiles --source ~/.dotfiles --apply

You can also choose another directory to store the source directory, but take note that references to the ~/.dotfiles directory in the Emacs configuration need to be changed to point to the correct source directory instead of ~/.dotfiles. The reason for not templating the reference to ~/.dotfiles in the Emacs configuration is due to Emacs not having an easy way to set the file type, or to ignore the .tmpl file extension.

The configuration files are all stored in either tilde, which refers to user-specific configuration found under ~/, or slash, which are the global configuration options that apply to all users, which can be found under the / folder.

There is a README.md file inside the browser-extensions folder that explains the configuration.

This folder stores all the packages that are custom-built for me. It currently only contains the PKGBUILD for building all 3 Nerd Font variants for Maple Mono, with the font features I want frozen so that they work in Emacs. Maple Mono only provides the default Nerd Font variant, but I need all 3 variants as I use the Propo variant in GUI applications like Waybar and Rofi to ensure the icons don't have funky spacing. The Mono variant is used in the browser by Firenvim so that the icons are not cut off. The default variant is used in the terminals I use.

This folder stores the package lists for my system. The main package list contains all the packages installed through a repository using Pacman, while the AUR package list contains all the packages installed through the AUR, as well as custom packages.

The slash folder contains all the system level configuration, such as configuration files for the package manager, the display manager and the bootloader.

boot folder

The boot folder contains the configuration for the bootloader I use, rEFInd. The rEFInd configuration is just the standard boot options that are provided by default when running refind-install. However, the amdgpu.dcdebugmask option is added so that the AMD driver doesn't crash or lock up. There is a really helpful tutorial here.

The theme I use is a modified version of the Gruvbox theme from rEFInd minimal themes. The selection icons were taken from dm, which itself is a modified version of the Dream Machine theme.

The background image was taken from Pexels.

etc folder

The etc folder contains the configuration for system level configuration files.

The ly configuration is just the default configuration file but with the animation changed to use the matrix animation.

The Network manager configuration

The .chezmoiignore file ignores the files that do not need to be deployed to the system, like READMEs and licences, but also ignores the boot/efi directory so that rootmoi can apply the changes to the /boot/efi directory separately from the / directory.

tilde folder

The .chezmoiscripts folder is just to store the scripts that run with Chezmoi. It currently only contains a script to run rootmoi after the Chezmoi configuration is applied.

.config folder

The .config folder is where the configuration for the applications I use on Linux are located. There is a README.md file inside that briefly explains the configuration for the various applications inside.

.librewolf folder

The .librewolf folder is just to store my overrides for the Librewolf browser. All the overrides are exactly the same as my overrides for the Arkenfox user.js.

.mozilla folder

The .mozilla folder is just to store my overrides for the Arkenfox user.js.

.local folder

The bin folder in the .local folder is just to store some useful scripts I made that can also be run as a standalone script, like a script to easily select the wallpapers based on the current system theme, a screen recording script, and rootmoi, which runs Chezmoi as root to manage system configuration.

The share folder inside is to store the scripts to run when darkman changes from light to dark mode, which handles switching the wallpapers and dynamically theming everything.

.zen folder

The .zen folder is just to store my overrides for the Arkenfox user.js, as well as some configuration options specific to the Zen browser. It also contains the keyboard shortcuts and the Zen mods that I have installed and configured for the Zen browser.

The .chezmoi.toml is just to configure the source directory for Chezmoi and use Neovim as the merge tool.

The .chezmoidata.toml file is just to store additional variables that are used in the Chezmoi templates. They are mostly just fonts, icon theme, cursor theme and cursor size.

The .chezmoiexternal.toml file is just to automatically download all the different variations of the cursor theme I use and put them in the right place.

The .chezmoiignore file is just to ignore the files that do not need to be deployed to the system, like READMEs, licences, and formatter configuration files.

The .bash_profile configuration is just to load the .profile file when starting bash. This is needed thanks to the Arch Linux LightDM package changing the script to source the files.

This change may or may not be relevant since I am now using ly, instead of LightDM, but things are working fine, so I'm not going to change it.

The .inputrc file is just to set the key binds for arrow up and arrow down to search the history for completions instead of just giving the last used command.

The .xinitrc file is just to merge the configuration inside .Xresources into xrdb so that the changes will apply.

This file is no longer relevant since I am no longer on X11, but I am keeping it here just in case.

The .Xresources configuration is just to make sure the display works properly with my high DPI screen. I also turned on antialiasing.

This file is no longer relevant since I am no longer on X11, but I am keeping it here just in case.

The .bashrc file is quite minimal, just setting some useful settings like vi mode and the prompt.

It also has some useful aliases that are provided by Arch Linux by default, mostly just colouring the output of grep and ls and useful aliases for ls.

It also adds the local binaries to the shell path and has a few if statement added in so that I can change the shell's directory when using lf and yazi.

This file is just to set the default applications for various tasks. The default terminal is set to Ghostty, the default editor is set to Neovim, the default browser is set to Firefox and the default pager is set to less.

This folder just contains all the wallpapers I use, sourced from various places, separated into two subfolders, one containing wallpapers to use for the light system theme, and another for the dark system theme.

This repository is licensed under the MIT Licence. You can view the full text in the LICENCE.txt file.

About

My configuration files for various things on Linux.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published