This repository documents workflows to reproduce a minimal Arch Linux build called monix
. While this repository sets up root-level configurations for the OS, the dotfiles
repository is used to set up user-level configurations. These are kept separate for modularity, but are designed to be used together. All setup workflows have been tested on both virtual machines and hardware.
For automatically formatting the development log in this repository, initialize a local pre-commit hook:
$ make init
Note: This repository focuses on approximate reproducibility oriented towards functionality. This implies that final builds may not be bit-for-bit identical.
Live medium
For this first step, follow the instructions from the Arch Linux installation guide.
Important: During the pacstrap
phase where basic packages are installed before chroot
, use the command below instead. This ensures a text editor and an active internet connection will be available after chroot
and the first reboot.
# pacman-key --init
# pacman-key --populate
# pacstrap -K /mnt base base-devel linux-lts linux-firmware vim git networkmanager
Note: Additional details:
-
For system encryption, depending on how you encrypt Arch Linux, you may need to install additional packages such as
lvm2
. Take note of special instructions in this Arch Wiki page, especially for partitioning,mkinitcpio
andgrub
. -
For dual booting, follow this Arch Wiki page closely and enable
os-prober
ingrub
for discovering additional OS's. -
nvidia
may not boot for Linux kernels 5.18 or greater, see issue here and here. In this case, set theibt=off
kernel parameter in the boot loader.
Post reboot
-
Log in to the freshly installed Arch Linux system as
root
-
Execute
EDITOR=vim visudo
to edit the/etc/sudoers
file. Uncomment the following line to allow users from thewheel
group to execute root-level commands withsudo
:%wheel ALL=(ALL:ALL) ALL
-
Create a new user and add this user to the
wheel
group:# useradd -m -G wheel <username>
-
Set a password for this user:
# passwd <username>
-
Execute
logout
and log in using your new user's details -
Start
NetworkManager.service
to ease the internet connection setup:$ sudo systemctl start NetworkManager.service
-
Configure your internet connection using
nmtui
, which should work for most connection types. Verify that your internet connection works by executingping www.example.com
and checking for successful packet transmission and receipt.Note:
nmtui
could requireroot
permissions at this point in time -
Clone this repository in your
$HOME
directory and install:$ git -C $HOME clone https://github.com/atreyasha/monix.git $ cd $HOME/monix $ make init $ make install
-
Clone the
dotfiles
repository in your$HOME
directory and install:$ git -C $HOME clone https://github.com/atreyasha/dotfiles.git $ cd $HOME/dotfiles $ make init $ make install
-
If you have any private dotfiles and data, deploy them now. In order to benefit from all the features of the
dotfiles
repository, rename your private dotfiles repository asprivates
and place it in your$HOME
directory. Thisprivates
repository should contain aMakefile
with atest
target -
Reboot and enjoy!
Note: Some common troubleshooting:
- Decrease GRUB resolution in case it is hard to read or laggy.
- Manually add timeservers such as
time.google.com
in case the default timeservers do not work.
bats-core
is a dependency for unit testing. To run tests, execute:
$ make test
Check out our development log for details on upcoming developments.