/dev/tpmrm0 cannot enroll yet.
+so on a host with no /dev/tpmrm0 the service exits with flag --identity-token is required and cannot enroll yet.
/dev/tpmrm0 cannot enroll yet.
];
```
-2. Download [`step-agent.nix`](https://files.smallstep.com/step-agent.nix), place it alongside your `configuration.nix`, and add `./step-agent.nix` to your `imports` list.
- The `.nix` file declares the `step-agent` system user, the systemd service and its restart path unit, the `polkit` rules the agent needs, and the `p11-kit` module that publishes our PKCS#11 server.
+3. [Add your devices via API](./enrollment-guide.mdx#add-devices-via-api) so that they are pre-approved,
+ and look up your team slug and agent CA fingerprint as described in [Pre-registration via API](#pre-registration-via-api).
+ Then enable the agent:
- ```bash
- curl -fsSLO https://files.smallstep.com/step-agent.nix
+ ```nix
+ services.step-agent = {
+ enable = true;
+ settings = {
+ team = "[team name]";
+ fingerprint = "[agent CA fingerprint]";
+ };
+ };
```
-3. Rebuild your system:
+ This declares the `step-agent` system user, the systemd service and its PKCS#11 socket, the `polkit` rules the agent needs, and the `p11-kit` module that publishes the agent's PKCS#11 server.
+ `settings` is written to `/etc/step-agent/agent.yaml`.
+ Every host in a fleet gets the same two values; nothing in the file is per-device.
+ The agent only reads it, and everything it writes lives in `/var/lib/step-agent`.
- ```bash
- sudo nixos-rebuild switch
- ```
+ To register interactively instead, leave `settings` out
+ and run `sudo step-agent register [team name]` after the rebuild.
+ The agent starts as soon as that writes `agent.yaml`.
+ With `settings` declared, you can still register a device interactively:
+ run `sudo step-agent register [team name] --skip-config`,
+ which registers the device without trying to rewrite the file you declared.
-4. Register the device with your team:
+4. Rebuild your system:
```bash
- sudo step-agent register [team name]
+ sudo nixos-rebuild switch
```
- Registration writes `agent.yaml` into `/etc/step-agent`,
- which systemd creates and keeps writable through `ConfigurationDirectory=`.
- Do not manage `agent.yaml` with `environment.etc`:
- that produces a read-only symlink into the Nix store, and the service refuses to start.
+ This installs the package and enables and starts the agent, which enrolls the device on its first start.
5. Check that it was installed correctly:
@@ -350,10 +367,37 @@ so a host with no /dev/tpmrm0 cannot enroll yet.
Output:
```bash
- step-agent/0.67.3 (linux/amd64)
- Release Date: 2026-05-19 15:50 UTC
+ step-agent/0.69.2 (linux/arm64)
+ Release Date: 2026-08-31 18:14 UTC
```
-
+
+ And that the service is running:
+
+ ```bash
+ systemctl status step-agent.service
+ ```
+
+#### Edge releases
+
+nixpkgs carries a stable release, and only once it has been packaged there.
+To run an edge release, or a stable release your channel does not have yet,
+point `services.step-agent.package` at the release tarball on `packages.smallstep.com`:
+
+```nix
+services.step-agent.package = pkgs.step-agent.overrideAttrs (final: prev: rec {
+ version = "0.69.2";
+ src = pkgs.fetchurl {
+ url = "https://packages.smallstep.com/edge/step-agent/linux/${version}/step-agent_${version}_linux_amd64.tar.gz";
+ sha256 = "1c8217188733c3a6ea558d399936825b426164d6e01d6f1c0ca4a67944f349fd";
+ };
+});
+```
+
+Pick the version on [releases.smallstep.com](https://releases.smallstep.com) and copy the `sha256` of the tarball from its listing there,
+or from the version's manifest at `https://packages.smallstep.com/edge/step-agent/linux/[version]/index.json`.
+Nix accepts the hex form as-is.
+On `aarch64` hosts, use the `_linux_arm64.tar.gz` file and its hash.
+Then run `sudo nixos-rebuild switch` and confirm with `step-agent version`.
## Registering and approving endpoints
@@ -466,7 +510,7 @@ To uninstall the Smallstep Agent from a Linux system:
sudo apt-get remove step-agent
```
- **For NixOS:** remove `./step-agent.nix` from your `imports` list, then run `sudo nixos-rebuild switch`.
+ **For NixOS:** remove the `services.step-agent` block and `./step-agent.nix` from your `imports` list, then run `sudo nixos-rebuild switch`.
2. Optionally, remove configuration and certificate files:
diff --git a/platform/troubleshooting-agent.mdx b/platform/troubleshooting-agent.mdx
index da9f6202..3d62dede 100644
--- a/platform/troubleshooting-agent.mdx
+++ b/platform/troubleshooting-agent.mdx
@@ -604,6 +604,8 @@ If the agent won't start, check for this message in the logs:
step-agent.service was skipped because of an unmet condition check
(ConditionPathIsReadWrite=/etc/step-agent/agent.yaml)
```
+On NixOS the check is `ConditionPathExists=`.
+
This may indicate the device needs to be registered and approved. See [Registering and Approving Endpoints](./smallstep-agent.mdx#registering-and-approving-endpoints).