{ writeCommand, lib, ... }: let # command that ensures we use flake.nix during switch command = targetPath: '' nix-shell \ -E "with import {}; mkShell { buildInputs = [ git (nixos { nix.package = nixFlakes; }).nixos-rebuild ]; }" \ --run 'nixos-rebuild build --flake ${targetPath} -L --keep-going' ''; secrets = name: { secrets.pass = { dir = toString ~/.password-store; name = "krops/${name}/secrets"; }; common_secrets.pass = { dir = toString ~/.password-store; name = "krops/common_secrets"; }; }; desktopSecrets = { desktop_secrets.pass = { dir = toString ~/.password-store; name = "krops/desktop_secrets"; }; }; source = { # only workhorse # property.file = toString ./submodules/property; assets.file = toString ./assets; configs.file = toString ./configs; library.file = toString ./library; modules.file = toString ./modules; #mqtt.file = toString ./mqtt; pkgs.file = toString ./pkgs; system.file = toString ./system; "flake.nix".file = toString ./flake.nix; #backup-module.file = toString ~/dev/backup; backup-module.git = { url = "https://git.ingolf-wagner.de/nix-modules/backup.git"; ref = "1.3.3"; }; #kops-lib.file = toString ~/dev/krops-lib; krops-lib.git = { url = "https://git.ingolf-wagner.de/nix-modules/krops.git"; ref = "1.0.3"; }; #cluster-module.file = toString ~/dev/cluster-module; cluster-module.git = { url = "https://git.ingolf-wagner.de/nix-modules/cluster.git"; ref = "1.2.0"; }; }; in { sterni = writeCommand "/bin/sterni" { #source = lib.evalSource [ source (secrets "sterni") desktopSecrets ]; source = lib.evalSource [ source ]; target = lib.mkTarget "root@sterni.private"; inherit command; }; }