{ 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 = "/";
            };
          };
        };
      };

      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;
        desktopExperience = true;
        productivity = true;
        socialMedia = true;
        media = true;
        gaming = true;
        coding = true;
      };

      linux.programs.grub.enable = true;

      programs = {
        git = let defaultBranch = "main";
        in {
          inherit defaultBranch;

          flow = {
            mainBranch = defaultBranch;
            devBranch = "dev";
          };

          aliases = {
            ahfange = "init";
            tuedezue = "add";
            beschuldig = "blame";
            zieh = "pull";
            druck = "push";
            machnah = "clone";
            hol = "fetch";
            zwiigab = "branch";
            buechiih = "commit";
            eich = "rebase";
            erd = "rebase";
            gahufwiifelde = "rebase";
            vergliich = "diff";
            tuezemme = "merge";
            versorg = "stash";
            markier = "tag";
            pflueckoepfel = "cherry-pick";
            pflueckhimbeeri = "cherry-pick";
            buechuus = "checkout";
            quaetsch = "merge --squash";
            pfudle = "push --force";
            beschuldigung = "blame";
            zwiigli = "branch";
            tagebuech = "log";
            versteck = "stash";
            zuestand = "status";
            markierig = "tag";
          };
        };
      };
    };
  };
}