{ lib, writeShellScriptBin, xrandr }: let inherit (builtins) getAttr hasAttr isAttrs concatStringsSep; inherit (lib) assertMsg lists escapeShellArgs getExe; inherit (lib.attrsets) mapAttrsToList; inherit (lib.cli) toGNUCommandLine; in name: config: assert assertMsg (isAttrs config) "config should be an attrs, found ${lib.typeOf config}"; let isPrimary = config: (hasAttr "primary" config) && (getAttr "primary" config); getArgList = output: config: (escapeShellArgs (lists.flatten [ (toGNUCommandLine { } { inherit output; }) (lists.optional (isPrimary config) "--primary") (toGNUCommandLine { } config) ])); args = mapAttrsToList getArgList config; in writeShellScriptBin name '' ${getExe xrandr} \ ${concatStringsSep " \\\n " args} ''