Menno van Leeuwen 020c32e8fe
Some checks failed
Ansible Lint Check / check-ansible (push) Failing after 32s
Nix Format Check / check-format (push) Failing after 1m44s
Python Lint Check / check-python (push) Failing after 23s
adds fastmail pwa via firefox to autostart
2025-06-04 13:31:29 +02:00
2025-05-19 15:27:46 +02:00

Setup

This dotfiles is intended to be used with either Fedora 40>, Ubuntu 20.04> or Arch Linux. Please install a clean version of either distro with GNOME and then follow the steps below.

Installation

0. Install distro

Download the latest ISO from your desired distro and write it to a USB stick. I'd recommend getting the GNOME version as it's easier to setup unless you're planning on setting up a server, in that case I recommend getting the server ISO for the specific distro.

Note: If you intend on using a desktop environment you should select the GNOME version as this dotfiles repository expects the GNOME desktop environment for various configurations

1. Clone dotfiles to home directory

Open a shell and begin the setup process. This setup requires you to provide a hostname as a parameter. You can use an existing hostname to restore an old system or choose a new name.

If you are running this in a VM be sure to answer yes if it prompts you.

curl -L https://df.mvl.sh | bash -s your-hostname

Replace your-hostname with your desired hostname for this machine.

2. Relog/Reboot

It's probably a good idea that you either reboot or log out and log back in to make sure all the changes are applied.

# sudo reboot

3. Create ~/.op_sat (Optional)

For servers you can place a file ~/.op_sat with your 1Password Service Access Token, this can then be used by Ansible to fetch secrets for services. This is mostly for server systems so you're able to skip it for workstations.

4. Run dotf update

Run the dotf update command, although the setup script did most of the work some symlinks still need to be set which at the moment is done using shell scripts.

dotf update

5. Decrypt secrets

Either using 1Password or by manualling providing the decryption key you should decrypt the secrets. Various configurations depend on the secrets to be decrypted such as the SSH keys, yubikey pam configuration and more.

dotf secrets decrypt

6. Profit

You should now have a fully setup system with all the configurations applied.

Adding a new system

Paths in the repository

Here are some paths that contain files named after the hostname of the system. If you add a new system you should add the relevant files to these paths.

  • config/ssh/authorized_keys: Contains the public keys per hostname that will be symlinked to the ~/.ssh/authorized_keys file.
  • config/home-manager/flake.nix: Contains an array homeConfigurations where you should be adding the new system hostname and relevant configuration.

Server reboots

In case you reboot a server, it's likely that this runs JuiceFS. To be sure that every service is properly accessing JuiceFS mounted files you should probably restart the services once when the server comes online.

dotf service stop --all
df # confirm JuiceFS is mounted
dotf service start --all

Object Storage (Servers only)

In case you need to adjust anything regarding the /mnt/object_storage JuiceFS. Ensure to shut down all services:

dotf service stop --all

Unmount the volume:

sudo systemctl stop juicefs

And optionally if you're going to do something with metadata you might need to stop redis too.

cd ~/services/juicefs-redis/
docker compose down --remove-orphans

Adding a new system

To add a new system you should follow these steps:

  1. Add the relevant files shown in the section above.
  2. Ensure you've either updated or added the $HOME/.hostname file with the hostname of the system.
  3. Run dotf update to ensure the symlinks are properly updated/created.
Description
No description provided
Readme 167 MiB
Languages
Python 42.3%
Jinja 20.1%
Nix 20%
Shell 12.1%
Go 5.5%