{
  options,
  config,
  lib,
  pkgs,
  ...
}:
with lib;
with lib.metacfg;
let
  cfg = config.metacfg.base;
in
{
  options.metacfg.base = with types; {
    enable = mkBoolOpt false "Whether or not to enable the base config.";

  };

  config = mkIf cfg.enable {
    environment = {
      systemPackages = with pkgs; [
        age
        delta
        git
        git-crypt
        git-delete-merged-branches
        home-manager
        htop
        mosh
        nixpkgs-fmt
        openssl
        openssh
        restic
        rrsync
        sops
        tmux
        vim
        wget
        starship
      ];
      shells = [
        pkgs.fish
        pkgs.bash
        pkgs.zsh
      ];
    };

    programs = {
      fish.enable = true;
      vim.enable = true;
      bash = {
        ## shellInit = ''
        interactiveShellInit = ''
          bind '"\e[A": history-search-backward'
          bind '"\e[B": history-search-forward'
        '';
      };
    };

    security = {
      pam.enableSudoTouchIdAuth = true;
    };
  };
}