{
  config,
  pkgs,
  lib,
  ...
}:
{

  # Allows me to make sure I can work on my dotfiles locally

  options.dotfiles.enable = lib.mkEnableOption "Clone dotfiles.";

  config = lib.mkIf config.dotfiles.enable {

    home-manager.users.${config.user} = {

      home.activation = {

        # Always clone dotfiles repository if it doesn't exist
        cloneDotfiles = config.home-manager.users.${config.user}.lib.dag.entryAfter [ "writeBoundary" ] ''
          if [ ! -d "${config.dotfilesPath}" ]; then
              $DRY_RUN_CMD mkdir --parents $VERBOSE_ARG $(dirname "${config.dotfilesPath}")
              $DRY_RUN_CMD ${pkgs.git}/bin/git \
                  clone ${config.dotfilesRepo} "${config.dotfilesPath}"
          fi
        '';
      };

      # Set a variable for dotfiles repo, not necessary but convenient
      home.sessionVariables.DOTS = config.dotfilesPath;
    };
  };
}