NixOS / nixops

NixOps is a tool for deploying to NixOS machines in a network or cloud.
https://nixos.org/nixops
GNU Lesser General Public License v3.0
1.87k stars 364 forks source link

Flake support #1365

Closed adisbladis closed 4 years ago

adisbladis commented 4 years ago

Copied PR body from #1202

As we are now using Flakes for development on master the scope of this PR is much smaller than the original one. It's only about adding Flakes support to NixOps, we are not touching the development workflow.


This PR adds flake support to NixOps, meaning that you can do things like

# nixops create -d hydra-ec2-demo --flake github:edolstra/hydra-ec2-demo
# nixops deploy

This will create an EC2 instance running Hydra, using exactly the configuration locked by flake.lock.

Currently evaluation is not as hermetic as we'd like since the NixOps-specific NixOS modules are provided impurely. Ideally, the flake would lock a particular version of the NixOps flake as input.

Likewise, NixOps needs to pass in the generated file physical.nix as an impure input. This is something of an inherent issue with the NixOps model. Maybe for flakes in local Git repositories, physical.nix could be auto-committed.