krops/README.md

51 lines
1.3 KiB
Markdown
Raw Normal View History

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:
2018-09-28 16:04:22 +02:00
2018-05-01 15:56:49 +02:00
- 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 = ./.;
krops = (import <nixpkgs> {}).fetchgit {
url = https://cgit.krebsco.de/krops/;
2018-05-01 15:56:49 +02:00
rev = "3022582ade8049e6ccf18f358cedb996d6716945";
2018-05-01 16:55:06 +02:00
sha256 = "0k3zhv2830z4bljcdvf6ciwjihk2zzcn9y23p49c6sba5hbsd6jb";
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 = {
ref = "4b4bbce199d3b3a8001ee93495604289b01aaad3";
url = https://github.com/NixOS/nixpkgs;
2018-05-01 16:55:06 +02:00
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-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.