Personalising an Ubuntu 22/24.04 installation.
The core of this repository is a set of Bash-scripts in
📂 .bashrc.d
that are sourced as part of 📄 ~/.bashrc
.
See 📂 install
for installation instructions.
Apart from the Bash-scripts, there's a set of static/manual modifications in
📂 static
.
To setup a WSL2 instance, copy 📄 wsl.conf
to
📂 /etc
— on the Windows-side, copy
📄 .wslconfig
and
📄 .wslgconfig
to 📂 %USERPROFILE%
.
See 📂 static/linux/etc
and
📂 static/windows
for further details.
Several of the Bash-scripts rely on the modifications made in these configuration files to function properly.
In their default state, the Bash-scripts and configuration files assume the WSL2
instance is running systemd
. See
📂 static/linux/etc
for instructions on how to
use Microsoft's /init
instead.
Although generally speaking, systemd works fine, there's a handful of caveats to be aware of:
- It is recommended to change the default target to "multi-user.target":
sudo systemctl set-default multi-user.target
- See https://github.com/arkane-systems/bottle-imp#requirements
- To prevent
systemd-remount-fs
from failing (resulting in a "degraded"-state), remove theLABEL=cloudimg-rootfs
-line from/etc/fstab
- Ubuntu-specific – apart from this, fstab should be empty; as the entry
didn't do anything to begin with (no filesystem labelled
cloudimg-rootfs
present) it seems safe to remove... - See https://randombytes.substack.com/i/74583493/systemd-remount-fsservice
- Ubuntu-specific – apart from this, fstab should be empty; as the entry
didn't do anything to begin with (no filesystem labelled
- See
📂 /usr/lib/binfmt.d
if you're running into issues with WSL-interop
A large array of linters and formatters is used to ensure consistent formatting and – where possible – more elaborate sanity-checking.
Pre-commit is used as a convenient way of generalising linter execution; its package management features are barely used – most of the linters in-use need to be installed locally anyway for their respective VS Code extensions...
To set up pre-commit, follow the below instructions. This assumes a system
running Debian/Ubuntu with Node/npm
, Python3/pip
, and Go already installed.
./.github/scripts/setup-pre-commit.sh
pre-commit install
See 📂 extras
.
See 📄 TODO
.