If clauses in the config

I have a primary config = {}.
When I ad a secondary one:

config = {
  networking.dhcpcd.persistent = true;
};

it works fine.

However if I use it with lib.mkMerge,

config = lib.mkMerge [
    { networking.dhcpcd.persistent = true; }
  ];

I get errors: error: attribute 'config' already defined at /etc/nixos/file.nix
I have read that there can be only one config, so is two working a side effect or something?

Where can I read up on the mkMerge?

I have also tried putting mkMerge on top – that worked.
Now i have

config = lib.mkMerge [
  {normal-config}
  (lib.mkIf !atHome {
      networking.nameservers = [ "9.9.9.9" "149.112.112.112" ];
    })
];

I get a syntax error unexpected '!', expecting ')'

For context, my option looks like this:

options = {
    atHome = lib.mkOption {
      type = lib.types.bool;
      default = true;
    };
  };

What is wrong?