Well, the US has done this in the past and gotten away with it regardless of lawsuits.
The USPS recently formed an alliance with Fed-Ex with a contract that was not up for bid. I agree that there should definitely be bidding over who should get the contract.
In the case of OS choice, the winning contract should be won based on a monetary value and a level of service guarantee with a penalty for failing to meet it.