{
  util,
  pkgs,
  secret,
  config,
  ...
}:
let
  accent = "${config.module.style.color.accentR};${config.module.style.color.accentG};${config.module.style.color.accentB}";
  negative = "${config.module.style.color.negativeR};${config.module.style.color.negativeG};${config.module.style.color.negativeB}";
  neutral = "${config.module.style.color.neutralR};${config.module.style.color.neutralG};${config.module.style.color.neutralB}";
  positive = "${config.module.style.color.positiveR};${config.module.style.color.positiveG};${config.module.style.color.positiveB}";

  tgbot = secret.tg.bt;
  tgdata = secret.tg.dt "false";
  tgdatasilent = secret.tg.dt "true";

  modulesRaw = pkgs.writeText "bash-user-modules-raw" (util.readFiles (util.ls ./module));
  modulesFile = pkgs.replaceVars modulesRaw {
    inherit
      accent
      negative
      neutral
      positive
      tgbot
      tgdata
      tgdatasilent
      ;
  };
in
{
  inherit modulesFile;

  bashrc =
    (builtins.readFile modulesFile)
    + ''
      # Find all functions.
      function find_function() {
        /usr/bin/env cat ${modulesFile} | /usr/bin/env grep "^function.*()" | /usr/bin/env sed -e "s/^function //" -e "s/().*//"
      }

      # Export all functions.
      export -f $(find_function | tr '\n' ' ')
      export -f find_function

      # Autostart Sway.
      if [[ -z $DISPLAY ]] && [[ "$(tty)" = "/dev/tty1" ]]; then
        exec sway
      fi
    '';

  # bash_profile = ''
  #   # Home manager.
  #   [ -e ~/.nix-profile/etc/profile.d/nix.sh ] && source ~/.nix-profile/etc/profile.d/nix.sh

  #   # Bashrc.
  #   [ -f ~/.bashrc ] && source ~/.bashrc

  #   # Profile.
  #   [ -f ~/.profile ] && source ~/.profile
  # '';

  # profile = ''
  #   # Load HM vars.
  #   [ -e ~/.nix-profile/etc/profile.d/hm-session-vars.sh ] && source ~/.nix-profile/etc/profile.d/hm-session-vars.sh
  # '';
}