{
  pkgs,
  self,
  ...
}: let
  inherit (pkgs.lib) listToAttrs nameValuePair;
  mkLangsShells = langs:
    listToAttrs (map (
        l:
          nameValuePair
          l
          ((pkgs.callPackage "${self}/homeManagerModules/neovim/langs/${l}/shell.nix" {inherit self;}).overrideAttrs (o: {
            meta.description = "${l} shell to be loaded by my Neovim config dynamically.";
          }))
      )
      langs);
in
  mkLangsShells [
    "csharp"
    "json"
    "lua"
    "markdown"
    "rust"
    "web"
    "c-lang"
  ]