{
  pkgs,
  # nixgl,
  ...
}:
{
  home.username = "marley";
  home.homeDirectory = "/home/marley";

  targets.genericLinux.enable = true;

  # GPU integration.
  # nixGL.packages = nixgl.packages;
  # nixGL.defaultWrapper = "nvidia";
  # nixGL.installScripts = [ "nvidia" ];

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

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

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

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

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

  home.packages = with pkgs; [
    nixfmt-rfc-style
    nil
    just
  ];

  imports = [
    ./appearance
    ./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.

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