1
0
mirror of https://github.com/kmein/niveum synced 2026-03-16 10:11:08 +01:00
Files
niveum/deploy.nix
2021-12-30 14:08:05 +01:00

50 lines
1.6 KiB
Nix

let
importJson = (import <nixpkgs/lib>).importJSON;
krops = let kropsVersion = importJson .versions/krops.json; in builtins.fetchGit {
rev = kropsVersion.rev;
url = kropsVersion.url;
};
lib = import "${krops}/lib";
pkgs = import "${krops}/pkgs" {};
gitFromJson = path:
let
object = importJson path;
in {
inherit (object) url;
ref = object.rev;
};
source = name: {
niveum.file = toString ./.;
nixos-config.symlink = "niveum/systems/${name}/configuration.nix";
nixpkgs.git = gitFromJson .versions/nixpkgs.json // { shallow = true; };
nixpkgs-unstable.git = gitFromJson .versions/nixpkgs-unstable.json // { shallow = true; };
home-manager.git = gitFromJson .versions/home-manager.json;
stockholm.git = gitFromJson .versions/stockholm.json;
nix-writers.git = gitFromJson .versions/nix-writers.json;
retiolum.git = gitFromJson .versions/retiolum.json;
nixpkgs-mozilla.git = gitFromJson .versions/nixpkgs-mozilla.json;
system-secrets.pass = {
dir = toString ~/.password-store;
name = "systems/${name}";
};
secrets.pass = {
dir = toString ~/.password-store;
name = "shared";
};
};
system = {name, host}: let inherit (import ./lib/default.nix) sshPort; in pkgs.krops.writeDeploy "deploy-${name}" {
source = lib.evalSource [ (source name) ];
target = "root@${host}:${toString sshPort}";
};
in {
zaatar = system { name = "zaatar"; host = "zaatar.r"; };
kabsa = system { name = "kabsa"; host = "kabsa.r"; };
makanek = system { name = "makanek"; host = "makanek.r"; };
manakish = system { name = "manakish"; host = "manakish.r"; };
}