How to get /user/repos results using GraphQL?

How can I get the same results as the REST query /user/repos using GraphQL? Here’s the base query I’ve been trying to use (paginating as necessary):

query ($after: String) {
  viewer {
    repositories (
        first: 100, after: $after
    ) {
      nodes {
        owner {login}, name, viewerPermission, nameWithOwner

I tried a number of variations on the affiliations, ownerAffiliations and isFork parameters, but the results are always missing some repos and occasionally have some extra ones as compared to a fetch of /user/repos. I can’t figure out a pattern for the missing and extra repos – it’s a mix of public, private, original, forked, etc…

What’s the right combination of parameters (or possibly a union of queries) that will get me exactly the same result? Thanks.