let sources = import ./nix/sources.nix; krops = sources.krops; lib = import "${krops}/lib"; kropsPkgs = import "${krops}/pkgs" { }; kropsDeploy = { hostname , target ? null , secrets ? true , extraSources ? { } }: let source = lib.evalSource [ { nixpkgs.git = { ref = sources.nixpkgs.rev; url = https://github.com/NixOS/nixpkgs; shallow = true; }; config.file = { path = toString ./.; filters = [ { type = "exclude"; pattern = ".git"; } { type = "exclude"; pattern = "*.qcow2"; } ]; }; nixos-config.symlink = "config/machines/${hostname}/configuration.nix"; } (lib.mkIf secrets { secrets.pass = { dir = toString ~/.password-store; name = "nixos/machines/${hostname}"; }; }) extraSources ]; in kropsPkgs.krops.writeDeploy "deploy-${hostname}" { source = source; target = lib.mkTarget (if target == null then "root@${hostname}" else target) // { extraOptions = [ # force allocation of tty to allow aborting with ^C and to show build progress "-t" ]; }; }; in builtins.mapAttrs (hostname: configuration: kropsDeploy ({ inherit hostname; } // configuration)) { nunotaba = { }; sayuri = { }; ayu = { target = "root@192.168.100.56"; secrets = false; }; }