From Rick's post:

Rather than order Trump to comply with an injunction (which is immediately punishable by the power of contempt), the court instead used a declaratory judgment, simply declaring that Trump is violating the law. "Finally, we consider what form of relief should be awarded, as plaintiffs seek both declaratory relief and injunctive relief. While we reject defendants' categorical assertion that injunctive relief cannot ever be awarded against the President, we nonetheless conclude that it is unnecessary to enter that legal thicket at this time. A declaratory judgment should be sufficient, as no government official — including the President — is above the law, and all government officials are presumed to follow the law as has been declared."

Rick adds some more on the subject; I'd also add that, if Trump appeals (as seems likely), and doesn't want to unblock the plaintiffs while the appeal is pending, the absence of an injunction makes it unnecessary for him to ask for a stay of the judgment pending appeal. Had there been an injunction, it would have been immediately binding, and Trump and his staffer Daniel Scavino would have had to comply right away, unless a stay was issued. But a declaratory judgment doesn't have such binding effect. (In theory, if Trump doesn't immediately unblock the plaintiffs, and insists on waiting until the outcome of the appeal, the plaintiffs could go to court to ask the judge to issue an injunction; but that seems unlikely, so long as Trump's not unblocking the plaintiffs seems to stem from a good-faith attempt to get an appellate judgment on the matter.)