Negate a block visibility condition Found it useful and did not find any contributed module to fulfil this so, adding it for knowledge purpose.
Stuck in a situation where we need to hide a block for certain role.
Drupal 8 has functionality to hide for certain URLS.
But, for Roles, only show condition is there not Hide.
I have already answered my question and I would love to accept another solutions.
Please suggest a solution.
There are visibility settings where, we can select which pages the block can be visible.
The same form has an underlying functionality to hide the block for the selected list or URLs.
Unfortunately, the same is not the case of Roles.
You can select which roles you want to display the block, but, you cannot select which Roles you want to hide the block.
Following code adds a Negate condition to Roles Visibility:
/* Negate the condition to decide visibility of which user roles to show/hide. */
function YOUR_MODULE_form_block_form_alter(&amp;$form, \Drupal\Core\Form\FormStateInterface $form_state, $form_id) {
    $form['visibility']['user_role']['negate'] = [
        '#type' =&gt; 'radios',
        '#title' =&gt; '',
        '#default_value' =&gt; 0,
        '#options' =&gt; [
            t('Show for selected Roles'),
            t('Hide for selected Roles'),
        ],
    ];
}

This adds two radio buttons under the form: Roles.
Following is the screen shot for the same:

Reference: