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-fsfrom 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-rootfspresent) 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.dif 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 installSee 📂 extras.
See 📄 TODO.