{
  # Empty configuration
  empty = {
    plugins.none-ls.enable = true;
  };

  with-lsp-format = {
    plugins = {
      lsp.enable = true;
      lsp-format.enable = true;
      none-ls = {
        enable = true;
        # This is implied:
        # enableLspFormat = true;
      };
    };
  };

  defaults = {
    plugins.none-ls = {
      enable = true;

      settings = {
        border.__raw = "nil";
        cmd = [ "nvim" ];
        debounce = 250;
        debug = false;
        default_timeout = 5000;
        diagnostic_config.__empty = { };
        diagnostics_format = "#{m}";
        fallback_severity.__raw = "vim.diagnostic.severity.ERROR";
        log_level = "warn";
        notify_format = "[null-ls] %s";
        on_attach.__raw = "nil";
        on_init.__raw = "nil";
        on_exit.__raw = "nil";
        root_dir = "require('null-ls.utils').root_pattern('.null-ls-root', 'Makefile', '.git')";
        root_dir_async.__raw = "nil";
        should_attach.__raw = "nil";

        # FIXME: This option can't take raw lua
        sources = null;

        temp_dir.__raw = "nil";
        update_in_insert = false;
      };
    };
  };

  example = {
    plugins.none-ls = {
      enable = true;

      settings = {
        diagnostics_format = "[#{c}] #{m} (#{s})";
        on_attach = ''
          function(client, bufnr)
            -- Integrate lsp-format with none-ls
            -- Disabled because plugins.lsp-format is not enabled
            -- require('lsp-format').on_attach(client, bufnr)
          end
        '';
        on_exit = ''
          function()
            print("Goodbye, cruel world!")
          end
        '';
        on_init = ''
          function(client, initialize_result)
            print("Hello, world!")
          end
        '';
        root_dir = ''
          function(fname)
            return fname:match("my-project") and "my-project-root"
          end
        '';
        root_dir_async = ''
          function(fname, cb)
            cb(fname:match("my-project") and "my-project-root")
          end
        '';
        should_attach = ''
          function(bufnr)
            return not vim.api.nvim_buf_get_name(bufnr):match("^git://")
          end
        '';
        temp_dir = "/tmp";
        update_in_insert = false;
      };
    };
  };

  with-sources =
    { options, lib, ... }:
    {
      plugins.none-ls = {
        enable = true;

        sources =
          let
            disabled = [
              # TODO Added 2025-12-20 build failure
              # https://github.com/NixOS/nixpkgs/issues/472704
              "terragrunt_fmt"
              "terragrunt_validate"

              # TODO Added 2025-11-15
              # dependency swift is broken
              # https://github.com/NixOS/nixpkgs/issues/461474
              "swift_format"

              # TODO Added 2025-10-12
              # mbedtls is marked insecure
              "haxe_formatter"

              # TODO Added 2025-04-01
              # php-cs-fixer is marked as broken
              "phpcsfixer"
            ];
          in
          # Enable every none-ls source that has an option
          lib.mapAttrs (
            _:
            lib.mapAttrs (
              sourceName: opts:
              {
                # Enable unless disabled above
                enable = !(lib.elem sourceName disabled);
              }
              # Some sources are defined using mkUnpackagedOption whose default will throw
              // lib.optionalAttrs (opts ? package && !(builtins.tryEval opts.package.default).success) {
                package = null;
              }
            )
          ) options.plugins.none-ls.sources;
      };
    };
}
