From 0c72a6e05f5912e70a8579ed59f089f7f43353c6 Mon Sep 17 00:00:00 2001 From: tv Date: Thu, 12 Nov 2026 01:21:34 +0000 Subject: flake: pass populate to krops, describe using krops from a flake pkgs/krops takes populate as an argument, which nixpkgs doesn't provide, so evaluating any of the flake's lib attributes from pkgs/krops fails. The flake passes its own populate. The README describes using krops from a flake: writeDeploy and the other functions from lib., evalSource and mkTarget from krops' lib directory, and deploying with nix run --impure, because krops' lib evaluates , environment variables, and /etc/hostname. --- README.md | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) (limited to 'README.md') diff --git a/README.md b/README.md index 8f71b59..ab9f4a6 100644 --- a/README.md +++ b/README.md @@ -53,6 +53,40 @@ in ``` and run `$(nix-build --no-out-link krops.nix)` to deploy the target machine. + + +## Using krops from a flake + +krops' flake provides `populate`, `writeDeploy`, and the other functions +described below as `lib.`, and its `lib` directory provides +`evalSource` and `mkTarget`: + +```nix +{ + inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; + inputs.krops.url = "git+https://cgit.krebsco.de/krops"; + inputs.krops.inputs.nixpkgs.follows = "nixpkgs"; + + outputs = { self, krops, ... }: let + system = "x86_64-linux"; + lib = import "${krops}/lib"; + in { + apps.${system}.deploy = { + type = "app"; + program = toString (krops.lib.${system}.writeDeploy "deploy" { + source = lib.evalSource [{ + nixos-config.file = toString ./configuration.nix; + nixpkgs.flake-input = { flake = toString self; name = "nixpkgs"; }; + }]; + target = "root@YOUR_IP_ADDRESS_OR_HOST_NAME_HERE"; + }); + }; + }; +} +``` + +krops evaluates ``, environment variables, and `/etc/hostname`, +which pure evaluation doesn't allow, so deploy with `nix run --impure .#deploy`. krops exports some funtions under `krops.` namely: ## writeDeploy -- cgit v1.3.1