< Back

Checklist for setting up Linux

2 min read
  • linux
  • distrohopping
  • devtools
Thu Feb 29 2024

I’m writing this little guide to help me remember what I need to set up a new Linux installation (when going distro-hopping or setting up a new PC). Could be useful to someone else reading this too, who knows?

Distro hopping meme

Useful repos

Use the following repos to automate some of the setup tasks.

  • Dotfiles
    • git, bash, tmux, neovim, starship
  • Homelab
    • docker, caddy, dnsmasq, grafana, prometheus, nextcloud

Linux

  • Desktop Environment: KDE Plasma
  • System theme: Catppuccin Mocha Lavender
  • Application theme: Lightly
  • Cursor theme: Catppuccin
  • Icons: Papirus Dark
  • Monospace font: JetBrains Mono Nerd Font
  • Wallpaper: endy_vector_satteliet (EndeavourOS community wallpaper)
  • Terminal: default (Gnome, Konsole etc.)
    • Terminal multiplexer: tmux (see dotfiles for config), don’t forget to install tpm
  • Terminal prompt: Starship
  • Web browser: Brave
  • Clipboard: xclip (required for tmux)

Programming

  • IDE: Neovim - full config in dotfiles
    • Telescope requires ripgrep, fd
    • Do a checkhealth after configuration
  • Git: check dotfiles for improved log commands (git lg, lg1, lg2 etc.)
  • JavaScript/TypeScript:
    • nvm
    • pnpm
  • Python:
    • pyenv
    • poetry
  • Rust
  • Go
  • HTML (not a programming language, fight me)

Homelab

  • Docker
  • Web server: Caddy
  • DNS server: dnsmasq
    • Copy over /etc/dnsmasq.conf and /etc/resolv.conf from homelab repo.
    • Ensure systemd-resolved service is stopped, disabled and masked.
    • Start and enabled dnsmasq.
  • SSH
    • Install sshd and enable it: sudo service ssh enable
    • Setup certificate based authentification for access from my other PC:
      • Create a new key-pair ssh-keygen -t ed25519 -C "your_email@example.com"
      • Append the contents of id_ed15519.pub to authorized_keys on the host PC
      • Test your SSH connection
    • Edit /etc/ssh/sshd_config with the following:
      • Change default port: Port n
      • Disable password authentication: PasswordAuthentication no
    • Setup another certificate for Github CI access using a similar process.
  • Nextcloud
    • Use Nextcloud AIO image with docker
    • Ensure the borg backup is itself backed up to an external drive
    • Setup a systemd service with a timer to trigger the nextcloud-preview-generator
  • Firewall: use ufw to only open up the right ports

Get In Touch