mirror of
https://cgit.krebsco.de/krops
synced 2024-12-23 10:19:52 +01:00
Mirror of Krops
lib | ||
pkgs | ||
README.md |
krops (krebs ops)
krops is a lightweigt toolkit to deploy nixos systems, remotely or locally.
fancy features include:
- store your secrets in passwordstore
- build your system remotely
- minimal overhead
- run from custom nixpkgs branch/checkout/fork
minimal example:
create a krops.nix somewhere
let
#krops = ./.;
krops = builtins.fetchGit {
url = https://cgit.krebsco.de/krops/;
ref = "master";
};
lib = import "${krops}/lib";
pkgs = import "${krops}/pkgs" {};
source = lib.evalSource [{
nixpkgs.git = {
ref = "origin/nixos-18.03";
url = https://github.com/NixOS/nixpkgs-channels;
};
nixos-config.file = toString (pkgs.writeText "nixos-config" ''
{ pkgs, ... }: {
fileSystems."/" = { device = "/dev/sda1"; };
boot.loader.systemd-boot.enable = true;
services.openssh.enable = true;
environment.systemPackages = [ pkgs.git ];
users.users.root.openssh.authorizedKeys.keys = [
"ssh-rsa ADD_YOUR_OWN_PUBLIC_KEY_HERE user@localhost"
];
}
'');
}];
in
pkgs.krops.writeDeploy "deploy" {
source = source;
target = "root@YOUR_IP_ADDRESS_OR_HOST_NAME_HERE";
}
and run $(nix-build krops.nix)
. This results in a script which deploys the machine via ssh & rsync on the target machine.