{ config, pkgs, ... }:
let
  #home-manager = builtins.fetchTarball "https://github.com/nix-community/home-manager/archive/master.tar.gz";
  home-manager = (import ./nix/sources.nix).home-manager;
in
{
  imports = [
    (import "${home-manager}/nixos")
  ];

  home-manager.users.yoda = {
    /* The home.stateVersion option does not have a default and must be set */
    /* https://nixos.wiki/wiki/FAQ/When_do_I_update_stateVersion */
    home.stateVersion = "23.05";

    /* Here goes the rest of your home-manager config, e.g. home.packages = [ pkgs.foo ]; */

    #home.username = "yoda";
    #home.homeDirectory = "/home/yoda";
    
    # Git config using Home Manager modules
    programs.git = {
      enable = true;
      userName = "Daniel Langbein";
      userEmail = "daniel@systemli.org";
      aliases = {
        #st = "status";
      };
    };
    
    #services.gpg-agent = {
    #  enable = true;
    #  enableSshSupport = true;
    #  defaultCacheTtl = 1800;
    #};

# TODO: See history.path below.
#    xdg = {
#      enable = true;
#      #dataHome = "${config.xdg.home.homeDirectory}/.local/share";
#    };

    programs.zsh = {
      enable = true;
      shellAliases = {
        #ll = "ls -l";
        #update = "sudo nixos-rebuild switch";
      };
      history.size = 1000;
      history.ignoreDups = true;
      #history.ignoreAllDups = true;

      # TODO:
      #   Currently, `config` is my NixOS config. However, I want to access Home Manager's `config`.
      #   I could change home-manager.users.yoda to be a function and take config as an argument there.
      #history.path = "${config.xdg.dataHome}/.histfile";

      oh-my-zsh = {
        enable = true;
        plugins = [
          # Provides many aliases and a few useful functions.
          #"git"
          # Easily prefix your current or previous commands with sudo by pressing `esc` twice.
          #"sudo"
        ];
        #theme = "robbyrussell";
        theme = "agnoster";
      };
    };
  };
}