{ lib, config, ... }:
let fs = import ../../../lib/modules/partition/fs.nix;
in {
  imports = [ ./defaults.nix ];

  config = {
    valhalla = {
      partition = {
        os = {
          partitions = {
            Boot = {
              index = 1;
              type = "uefi";
              size = "+1G";
              format = fs.fat32;
              mountPoint = config.valhalla.boot.efiMountPoint;
            };

            Swap = {
              index = 2;
              type = "swap";
            };

            OS = {
              index = 3;
              label = lib.mkDefault config.valhalla.boot.label;
              type = "linux";
              format = fs.ext4;
              mountPoint = "/";
            };
          };
        };
      };

      hostname = "nuth.ch";
      timeZone = "Europe/Zurich";
      keyMap = "de_CH-latin1";
      keyboardLayout = "ch";

      i18n = {
        localeSettings = let defaultLocale = "en_US.UTF-8";
        in {
          LANG = "de_CH.UTF-8";
          LANGUAGE = defaultLocale;
          LC_MESSAGE = defaultLocale;
        };
      };

      software = {
        essential = true;
        server = true;
      };

      programs.docker.enable = true;

      linux.programs = {
        docker = {
          services = {
            drone.enable = true;
            forgejo.enable = true;
            jellyfin.enable = true;
            minecraft.enable = true;
            nextcloud.enable = true;
            teamspeak.enable = true;
            trackmania.enable = true;
            vaultwarden.enable = true;
            woodpecker.enable = true;
          };
        };
      };
    };
  };
}