> caddy package in NixOS is undergoing a [major change](https://github.com/NixOS/nixpkgs/pull/86686), do not use this guide in production.
In NixOS 20.03, `caddy` package is still version 1.0.4 and `caddy2` package uses version 2.0 beta 10. The package maintainer [plans](https://github.com/NixOS/nixpkgs/pull/86686) to upgrade the `caddy` package to v2 in 20.09, while retaining v1 as `caddy1`. In the meantime, I show you how to run v2 stable release by using the `caddy2` package from the `unstable` channel; note that this only affects `caddy2` package, all other packages still use the stable `nixos` channel.
# Remove two options below if caddy doesn't listen on port <1024
AmbientCapabilities = "cap_net_bind_service";
CapabilityBoundingSet = "cap_net_bind_service";
};
};
users.users.caddy = {
home = cfg.dataDir;
createHome = true;
};
users.groups.caddy = {
members = [ "caddy" ];
};
};
}
```
Enable caddy service in "configuration.nix":
``` plain /etc/nixos/configuration.nix
require = [ /etc/caddy/caddyTwo.nix ];
services.caddyTwo = {
enable = true;
package = unstable.caddy2
config = "/path/to/caddyFile";
adapter = "caddyfile";
};
```
If you use other [config formats](https://caddyserver.com/docs/config-adapters#known-config-adapters), modify the following options:
``` plain /etc/nixos/configuration.nix
services.caddyTwo = {
config = "/path/to/yaml";
adapter = "yaml";
};
```
Package maintainer is updating the `caddy` package to v2 in [#86686](https://github.com/NixOS/nixpkgs/pull/86686), once that pull request is merged, update the following option:
``` plain /etc/nixos/configuration.nix
services.caddyTwo = {
package = unstable.caddy;
};
```
Import `unstable` channel:
``` plain /etc/nixos/configuration.nix
{ config, pkgs, ... }:
let
unstable = import <unstable> {};
in
{
# existing options
require = [ /etc/caddy/caddyTwo.nix ];
services.caddyTwo = {
enable = true;
package = unstable.caddy2
config = "/path/to/caddyFile";
adapter = "caddyfile";
};
}
```
Runs a rebuild and check the status:
```
$ nixos-rebuild switch
$ systemctl status caddy
```
To revert to v1, remove `package` and `adapter` options: