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.
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 --applyIf 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 --applyYou 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.
Browser extensions folder
There is a README.md file inside the
browser-extensions folder that explains the
configuration.
Custom packages folder
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.
Package lists folder
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 .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 yazi.
This file is just to set the default applications for various tasks. The default
editor is set to Neovim, the default browser is set to
Firefox, the default pager is set to
less, and the default man pager is
Neovim.
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.