docs: def list_pkgs(versions_as_list=False, with_origin=False, **kwargs):
      '''
      List the packages currently installed as a dict::
  
          {'<package_name>': '<version>'}
  
      with_origin : False
          Return a nested dictionary containing both the origin name and version
          for each installed package.
  
          .. versionadded:: 2014.1.0
  
      CLI Example:
  
      .. code-block:: bash
  
          salt '*' pkg.list_pkgs
      '''
      versions_as_list = salt.utils.data.is_true(versions_as_list)
      # not yet implemented or not applicable
      if any([salt.utils.data.is_true(kwargs.get(x))
              for x in ('removed', 'purge_desired')]):
          return {}
  
      if 'pkg.list_pkgs' in __context__:
          ret = copy.deepcopy(__context__['pkg.list_pkgs'])
          if not versions_as_list:
              __salt__['pkg_resource.stringify'](ret)
          if salt.utils.data.is_true(with_origin):
              origins = __context__.get('pkg.origin', {})
              return dict([
                  (x, {'origin': origins.get(x, ''), 'version': y})
                  for x, y in six.iteritems(ret)
              ])
          return ret
  
      ret = {}
      origins = {}
      out = __salt__['cmd.run_stdout'](['pkg_info', '-ao'],
                                       output_loglevel='trace',
                                       python_shell=False)
      pkgs_re = re.compile(r'Information for ([^:]+):\s*Origin:\n([^\n]+)')
      for pkg, origin in pkgs_re.findall(out):
          if not pkg:
              continue
          try:
              pkgname, pkgver = pkg.rsplit('-', 1)
          except ValueError:
              continue
          __salt__['pkg_resource.add_pkg'](ret, pkgname, pkgver)
          origins[pkgname] = origin
  
      __salt__['pkg_resource.sort_pkglist'](ret)
      __context__['pkg.list_pkgs'] = copy.deepcopy(ret)
      __context__['pkg.origin'] = origins
      if not versions_as_list:
          __salt__['pkg_resource.stringify'](ret)
      if salt.utils.data.is_true(with_origin):
          return dict([
              (x, {'origin': origins.get(x, ''), 'version': y})
              for x, y in six.iteritems(ret)
          ])
      return ret