1
0
Fork 0
mirror of https://cgit.krebsco.de/krops synced 2024-11-23 03:29:48 +01:00
Mirror of Krops
Find a file
2018-09-29 20:44:50 +02:00
lib lib: add shell.quote 2018-07-12 14:14:47 +02:00
pkgs populate: no name clashes anymore 2018-09-19 19:57:26 +02:00
README.md Merge remote-tracking branch 'ni/master' into HEAD 2018-09-29 20:44:50 +02:00

krops (krebs ops)

krops is a lightweigt toolkit to deploy NixOS systems, remotely or locally.

Some Features

  • store your secrets in password store
  • build your system remotely
  • minimal overhead (it's basically just nixos-rebuild switch!)
  • run from custom nixpkgs branch/checkout/fork

Minimal Example

Create a file named krops.nix (name doesn't matter) with following content:

let
  krops = (import <nixpkgs> {}).fetchgit {
    url = https://cgit.krebsco.de/krops/;
    ref = "master";
  };

  lib = import "${krops}/lib";
  pkgs = import "${krops}/pkgs" {};

  source = lib.evalSource [{
    nixpkgs.git = {
      ref = "4b4bbce199d3b3a8001ee93495604289b01aaad3";
      url = https://github.com/NixOS/nixpkgs;
    };
    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 --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.

References