krops/README.md

68 lines
2.0 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
krops is a lightweigt toolkit to deploy NixOS systems, remotely or locally.
2018-05-01 15:56:49 +02:00
## Some Features
2018-09-28 16:04:22 +02:00
2018-09-28 17:03:24 +02:00
- store your secrets in [password store](https://www.passwordstore.org/)
2018-05-01 15:56:49 +02:00
- build your system remotely
- minimal overhead (it's basically just `nixos-rebuild switch`!)
2018-05-01 15:56:49 +02:00
- run from custom nixpkgs branch/checkout/fork
## Minimal Example
Create a file named `krops.nix` (name doesn't matter) with following content:
2018-05-01 15:56:49 +02:00
```
let
2018-05-01 16:55:06 +02:00
krops = (import <nixpkgs> {}).fetchgit {
url = https://cgit.krebsco.de/krops/;
rev = "3022582ade8049e6ccf18f358cedb996d6716945";
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 = {
2018-10-31 18:24:57 +01:00
clean.exclude = ["/.version-suffix"];
2018-05-01 15:56:49 +02:00
ref = "4b4bbce199d3b3a8001ee93495604289b01aaad3";
url = https://github.com/NixOS/nixpkgs;
};
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 ];
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-03 21:52:43 +02:00
target = "root@YOUR_IP_ADDRESS_OR_HOST_NAME_HERE";
2018-05-01 15:56:49 +02:00
}
```
and run `$(nix-build --no-out-link krops.nix)` to deploy the target machine.
Under the hood, this will make the sources available on the target machine
below `/var/src`, and execute `nixos-rebuild switch -I /var/src`.
2018-09-28 16:11:52 +02:00
## References
- [In-depth example](http://tech.ingolf-wagner.de/nixos/krops/) by [Ingolf Wagner](https://ingolf-wagner.de/)
2018-10-05 20:13:26 +02:00
## Communication
Comments, questions, pull-requests, etc. are very welcome, and can be directed
at:
- IRC: #krebs at freenode
- Mail: [spam@krebsco.de](mailto:spam@krebsco.de)