{
  config,
  inputs,
  pkgs,
  util,
  ...
}:
let
  # Directories for nvim to use.
  runtimes = [
    "~/.cache/nvim"
    "~/.cache/nvim/treesitter"
    "${inputs.nvimAlign}"
    "${inputs.nvimAutoclose}"
    "${inputs.nvimBufferline}"
    "${inputs.nvimCloseBuffers}"
    "${inputs.nvimColorizer}"
    "${inputs.nvimDevicons}"
    "${inputs.nvimDressing}"
    "${inputs.nvimGen}"
    "${inputs.nvimGitsigns}"
    "${inputs.nvimGruvboxMaterial}"
    "${inputs.nvimIndentoMatic}"
    "${inputs.nvimLspconfig}"
    "${inputs.nvimPlenary}"
    "${inputs.nvimTelescope}"
    "${inputs.nvimTodo}"
    "${inputs.nvimTreesitter}"
    "${inputs.nvimTree}"
    "${inputs.nvimTrouble}"
  ];

  # Order of files to load.
  configs = [
    ./module/key/Rekey.lua
    ./module/key/Leader.lua
    ./module/config/Autoread.lua
    ./module/config/Etc.lua
    ./module/config/Search.lua
    ./module/config/Tab.lua
    ./module/config/Highlight.lua
    ./module/plugin/Filetree.lua
    ./module/plugin/Gruvbox.lua
    ./module/plugin/Bufferline.lua
    ./module/plugin/Autoclose.lua
    ./module/plugin/Gitsigns.lua
    ./module/plugin/Trouble.lua
    ./module/plugin/Closebuffers.lua
    ./module/plugin/Telescope.lua
    ./module/plugin/Todo.lua
    ./module/plugin/Indent.lua
    ./module/plugin/Align.lua
    ./module/plugin/Treesitter.lua
    ./module/plugin/Fold.lua
    ./module/plugin/Gen.lua
    ./module/plugin/Colorizer.lua
    ./module/plugin/Dressing.lua
    ./module/plugin/lsp/Go.lua
    ./module/plugin/lsp/Haskell.lua
    ./module/plugin/lsp/Lua.lua
    ./module/plugin/lsp/Nix.lua
    ./module/plugin/lsp/Rust.lua
    ./module/plugin/lsp/Tex.lua
    ./module/key/Autocomplete.lua
    ./module/key/Buffer.lua
    ./module/key/Cmd.lua
    ./module/key/Colorscheme.lua
    ./module/key/Filetree.lua
    ./module/key/Gitsigns.lua
    ./module/key/Navigation.lua
    ./module/key/Prompt.lua
    ./module/key/Save.lua
    ./module/key/Sort.lua
    ./module/key/TabWidth.lua
    ./module/key/Telescope.lua
    ./module/key/Terminal.lua
    ./module/key/Trouble.lua
  ];

  # Configuration.
  accent = config.module.style.color.accent;
  bg = config.module.style.color.bg.regular;
  fg = config.module.style.color.fg.dark;
  ollamaModel = config.module.ollama.primaryModel;
  selection = config.module.style.color.selection;

  # Plugin paths to install.
  runtimeRc = builtins.foldl' (acc: r: acc + "set runtimepath+=${r}\n") "" runtimes;

  # My configuration files combined into one big file.
  cfgRaw = pkgs.writeText "nvim-rc-raw" (util.readFiles configs);
  cfg = pkgs.replaceVars cfgRaw {
    inherit
      accent
      bg
      fg
      ollamaModel
      selection
      ;
  };

  # Tell Neovim to load this file.
  configRc = "lua dofile(\"${cfg}\")";

  init = pkgs.writeText "nvim-init" (runtimeRc + configRc);
in
{
  inherit init;
}