{% set common = salt['grains.filter_by']({ 'Debian': { 'packages': [ 'vim' ], }, 'RedHat': { 'packages': [ 'vim-enhanced' ], }, }) %} {% set distro = salt['grains.filter_by']({ 'Fedora': { 'packages': [ 'pcp-system-tools' ] }, 'default': { 'packages': [ 'dstat' ] } }, grain='os') %} {% set defaults = { 'packages': [ 'iftop', 'iotop', 'nano', 'screen', 'git' ] } %} {# custom deep merge #} {% for key in distro.keys() %} {% do common[key].extend(distro[key]) %} {% endfor %} {% for key in defaults.keys() %} {% do common[key].extend(defaults[key]) %} {% endfor %}