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

let
  userCfg = config.users.foo-dogsquared;
  cfg = userCfg.dotfiles;

  dotfiles = config.lib.file.mkOutOfStoreSymlink config.home.mutableFile."library/dotfiles".path;
  getDotfiles = path: "${dotfiles}/${path}";
in
{
  options.users.foo-dogsquared.dotfiles.enable = lib.mkEnableOption "custom outside dotfiles for other programs";

  config = lib.mkIf cfg.enable {
    # Fetching my dotfiles,...
    home.mutableFile."library/dotfiles" = {
      url = "https://github.com/foo-dogsquared/dotfiles.git";
      type = "git";
    };

    # Add the custom scripts here.
    home.sessionPath = [
      "${config.home.mutableFile."library/dotfiles".path}/bin"
    ];

    # All of the personal configurations.
    xdg.configFile = {
      doom.source = getDotfiles "emacs";
      kitty.source = getDotfiles "kitty";
      nvim.source = getDotfiles "nvim";
      nyxt.source = getDotfiles "nyxt";
      wezterm.source = getDotfiles "wezterm";
    };
  };
}