{ config, pkgs, ... }:
{
  imports =
    [
      ./hardware-configuration.nix
      ../../modules/home-manager.nix
      ../../modules/nur-and-unstable.nix
      ../../modules/unfree.nix
      ../../modules/base.nix
      ../../modules/base-efi.nix
      ../../modules/xdg.nix
      ../../modules/power-management.nix
      ../../modules/tuxedo-rs.nix
      ../../modules/ntfs.nix
      ../../modules/git.nix
      ../../modules/zsh.nix
      ../../modules/nitrokey-gpg-smartcard.nix
      ../../modules/ssh-client.nix
      ../../modules/ssh-server.nix
      ../../modules/lid-switch-handling.nix

      ../../modules/btrfs-scrub.nix
      ../../modules/btrfs-mount-options.nix

      ../../modules/gpu-amd.nix
      #../../modules/kde.nix
      ../../modules/gnome-base.nix
      ../../modules/gnome-config.nix
      ../../modules/gnome-extensions.nix
      # TODO currently broken
      #../../modules/gnome-fractional-scaling.nix
      ../../modules/fwupd-gnome.nix
      ../../modules/gnome-wallpaper.nix

      #../../modules/gnome-terminal.nix
      ../../modules/blackbox.nix

      ../../modules/programs-base.nix
      ../../modules/programs.nix
      ../../modules/flatpak.nix
      ../../modules/file-roller.nix
      ../../modules/ausweisapp.nix
      ../../modules/nextcloud-client.nix
      ../../modules/syncthing.nix
      ../../modules/signal-desktop.nix
      ../../modules/obsidian.nix
      ../../modules/vlc-dvd-blu-ray.nix
      ../../modules/firefox.nix
      ../../modules/thunderbird.nix
      ../../modules/tor-browser.nix
      ../../modules/digikam-rawtherapee-hugin-gimp.nix
      ../../modules/freetube.nix
      ../../modules/ghostwriter.nix
      ../../modules/print-and-scan.nix
      #../../modules/waydroid.nix
      ../../modules/uni-vpn.nix

      ../../modules/games.nix
      ../../modules/dosbox-x.nix

      ../../modules/autostart.nix

      ../../modules/jetbrains-ide.nix
      #../../modules/vscodium.nix
      ../../modules/android.nix
      ../../modules/pmbootstrap.nix

      ../../modules/boxes.nix
      #../../modules/virtualbox.nix
      ../../modules/docker.nix
      ../../modules/docker-pushrm.nix
    ];

  networking.hostName = "yodaTux";
  boot.initrd.luks.devices."luks-ea7099e3-320d-4eb3-a4c3-9910a9af817b".allowDiscards = true;
  yoda.btrfsFileSystems = ["/"];
  #yoda.btrfsMounts = yoda.btrfsFileSystems;

  # Systemd Journal entry:
  # S Sat Sep 23 16:11:52 2023 p4 kernel: TSC found unstable after boot, most likely due to broken BIOS. Use 'tsc=unstable'.
  boot.kernelParams = [ "tsc=unstable" ];

  # LAN Internet is not working, only WiFi.
  # Replacing in-kernel r8169 with r8168 fixes this.
  #   https://github.com/avnik/nixos-configs/blob/master/modules/r8168.nix
  #   https://github.com/poscat0x04/nixos-configuration/blob/master/hardware/profiles/r8168.nix
  #   https://github.com/NixOS/nixpkgs/blob/961c422b48b3458a01a9c0f2a24e25a1d61018e9/pkgs/os-specific/linux/r8168/default.nix#L51-L52
  # But this requires an old kernel version (we use 5.15 LTS) as r8168 is broken for kernels >= 6
  #   https://github.com/NixOS/nixpkgs/issues/256329
  # This does not help, there is a compile error
  #   nixpkgs.config.allowBroken = true;
  #
  boot.blacklistedKernelModules = [ "r8169" ];
  boot.extraModulePackages = [
    config.boot.kernelPackages.r8168
  ];

  # List all available kernel versions:
  #   `nix repl` -> `:l <nixpkgs>` -> `pkgs.linuxPackages` and press `TAB`
  # Default.
  #boot.kernelPackages = pkgs.linuxPackages;
  # Latest.
  #boot.kernelPackages = pkgs.linuxPackages_latest;
  # LTS, see https://endoflife.date/linux
  # TODO: When NixOS 26.05 is out, this kernel is near EOL
  boot.kernelPackages = pkgs.linuxPackages_5_15;
  #boot.kernelPackages = pkgs.linuxPackages_6_1;
  # Hardened.
  # https://archlinux.org/packages/extra/x86_64/linux-hardened/
  # -> https://github.com/anthraxx/linux-hardened
  #boot.kernelPackages = pkgs.linuxPackages_hardened;
  # Free/Libre.
  # https://en.wikipedia.org/wiki/Linux-libre
  #boot.kernelPackages = pkgs.linuxPackages-libre;

  # Most users should never change this value after the initial install, for any reason, even if you've upgraded your system to a new NixOS release.
  system.stateVersion = "23.05";
}
