2018-05-01 16:55:06 +02:00
|
|
|
# krops (krebs ops)
|
2018-05-01 15:56:49 +02:00
|
|
|
|
2018-05-01 16:55:06 +02:00
|
|
|
krops is a lightweigt toolkit to deploy nixos systems, remotely or locally.
|
2018-05-01 15:56:49 +02:00
|
|
|
|
|
|
|
fancy features include:
|
|
|
|
- store your secrets in passwordstore
|
|
|
|
- build your system remotely
|
|
|
|
- minimal overhead
|
|
|
|
- run from custom nixpkgs branch/checkout/fork
|
|
|
|
|
|
|
|
minimal example:
|
|
|
|
|
2018-05-01 16:55:06 +02:00
|
|
|
create a krops.nix somewhere
|
2018-05-01 15:56:49 +02:00
|
|
|
```
|
|
|
|
let
|
2018-05-01 16:55:06 +02:00
|
|
|
#krops = ./.;
|
2018-05-03 21:50:48 +02:00
|
|
|
krops = builtins.fetchGit {
|
2018-05-01 16:55:06 +02:00
|
|
|
url = https://cgit.krebsco.de/krops/;
|
2018-05-03 21:50:48 +02:00
|
|
|
ref = "master";
|
2018-05-01 15:56:49 +02:00
|
|
|
};
|
|
|
|
|
2018-05-01 16:55:06 +02:00
|
|
|
lib = import "${krops}/lib";
|
|
|
|
pkgs = import "${krops}/pkgs" {};
|
2018-05-01 15:56:49 +02:00
|
|
|
|
|
|
|
source = lib.evalSource [{
|
|
|
|
nixpkgs.git = {
|
2018-05-03 21:51:36 +02:00
|
|
|
ref = "origin/nixos-18.03";
|
|
|
|
url = https://github.com/NixOS/nixpkgs-channels;
|
2018-05-01 15:56:49 +02:00
|
|
|
};
|
2018-05-01 16:55:06 +02:00
|
|
|
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 ];
|
2018-05-03 21:52:15 +02:00
|
|
|
users.users.root.openssh.authorizedKeys.keys = [
|
|
|
|
"ssh-rsa ADD_YOUR_OWN_PUBLIC_KEY_HERE user@localhost"
|
|
|
|
];
|
2018-05-01 15:56:49 +02:00
|
|
|
}
|
2018-05-01 16:55:06 +02:00
|
|
|
'');
|
2018-05-01 15:56:49 +02:00
|
|
|
}];
|
|
|
|
in
|
2018-05-01 16:55:06 +02:00
|
|
|
pkgs.krops.writeDeploy "deploy" {
|
2018-05-01 15:56:49 +02:00
|
|
|
source = source;
|
2018-05-01 16:55:06 +02:00
|
|
|
target = "root@192.168.56.101";
|
2018-05-01 15:56:49 +02:00
|
|
|
}
|
|
|
|
```
|
|
|
|
|
2018-05-01 16:55:06 +02:00
|
|
|
and run `$(nix-build krops.nix)`. This results in a script which deploys the machine via ssh & rsync on the target machine.
|