{
  pkgs,
  lib,
  ...
}:
{
  me = {
    username = "punkfairie";
    email = "marley@punkfairie.net";
  };

  targets.genericLinux.enable = lib.mkIf pkgs.stdenv.isLinux true;

  home.language.base = "en_US.UTF-8";

  # Tell nix what version it is.
  nix.package = pkgs.nix;

  nix = {
    # Enable flakes.
    settings.experimental-features = [
      "nix-command"
      "flakes"
    ];

    # Disable that annoying "git tree is dirty" warning.
    extraOptions = ''
      warn-dirty = false
    '';

    # Garbage collection.
    gc.automatic = true;
  };

  xdg.configFile."nixpkgs/config.nix".text = # nix
    ''
      {
        allowUnfree = true;
      }
    '';

  # Autostart wanted systemd services.
  systemd.user.startServices = true;

  imports = [
    ./appearance
    ./languages
    ./profile
    ./programs
    ./services
    ./xorg
  ];

  # This value determines the Home Manager release that your configuration is
  # compatible with. This helps avoid breakage when a new Home Manager release
  # introduces backwards incompatible changes.
  #
  # You should not change this value, even if you update Home Manager. If you do
  # want to update the value, then make sure to first check the Home Manager
  # release notes.
  # home.stateVersion = "24.05"; # Please read the comment before changing.
  # ((this is set in flake.nix but I wanted to keep the explanation here.))

  # Let home Manager install and manage itself.
  programs.home-manager.enable = true;
}