1
0
mirror of https://github.com/kmein/niveum synced 2026-03-21 12:21:08 +01:00

chore(style): shell.nix

This commit is contained in:
Kierán Meinhardt
2020-09-08 22:01:22 +02:00
parent 02452abfa1
commit 58fc4c1ce6

View File

@@ -2,47 +2,49 @@
let let
inherit (pkgs) lib; inherit (pkgs) lib;
dependencies = let nixosVersion = "20.03"; dependencies = let nixosVersion = "20.03"; in {
in {
nixpkgs = { nixpkgs = {
ref = "refs/heads/nixos-${nixosVersion}"; ref = "refs/heads/nixos-${nixosVersion}";
url = "https://github.com/NixOS/nixpkgs-channels.git"; url = "https://github.com/NixOS/nixpkgs-channels.git";
path = ".versions/nixpkgs.json"; path = toString .versions/nixpkgs.json;
}; };
nixpkgs-unstable = { nixpkgs-unstable = {
ref = "refs/heads/nixos-unstable"; ref = "refs/heads/nixos-unstable";
url = "https://github.com/NixOS/nixpkgs-channels.git"; url = "https://github.com/NixOS/nixpkgs-channels.git";
path = ".versions/nixpkgs-unstable.json"; path = toString .versions/nixpkgs-unstable.json;
}; };
home-manager = { home-manager = {
ref = "refs/heads/release-${nixosVersion}"; ref = "refs/heads/release-${nixosVersion}";
url = "https://github.com/rycee/home-manager.git"; url = "https://github.com/rycee/home-manager.git";
path = ".versions/home-manager.json"; path = toString .versions/home-manager.json;
}; };
krops = { krops = {
ref = "refs/tags/v1.21.0"; ref = "refs/tags/v1.21.0";
url = "https://cgit.krebsco.de/krops"; url = "https://cgit.krebsco.de/krops";
path = ".versions/krops.nix"; path = toString .versions/krops.nix;
}; };
stockholm = { stockholm = {
ref = "refs/heads/master"; ref = "refs/heads/master";
url = "https://cgit.krebsco.de/stockholm"; url = "https://cgit.krebsco.de/stockholm";
path = ".versions/stockholm.json"; path = toString .versions/stockholm.json;
}; };
}; };
updateScript = name: dependency: '' updateCommand = name: dependency: ''
${pkgs.nix-prefetch-git}/bin/nix-prefetch-git --url "${dependency.url}" --rev "${dependency.ref}" > "${toString ./.}/${dependency.path}"''; ${pkgs.nix-prefetch-git}/bin/nix-prefetch-git --url "${dependency.url}" --rev "${dependency.ref}" > "${dependency.path}"'';
updateScripts = updateScripts =
lib.mapAttrsToList lib.mapAttrsToList
(name: dependency: pkgs.writers.writeDashBin "niveum-update-${name}" (updateScript name dependency)) (name: dependency: pkgs.writers.writeDashBin "niveum-update-${name}" (updateCommand name dependency))
dependencies; dependencies;
updateAllScript = pkgs.writers.writeDashBin "niveum-update" (lib.concatStringsSep " &\n" (lib.mapAttrsToList updateScript dependencies));
in pkgs.mkShell { in pkgs.mkShell {
buildInputs = updateScripts ++ [ updateAllScript ] ++ [ buildInputs = updateScripts ++ [
(pkgs.writers.writeDashBin "niveum-update"
(lib.concatStringsSep " &\n" (lib.mapAttrsToList updateCommand dependencies)))
(let (let
deployCommand = pkgs.writers.writeDash "niveum-deploy-one" '' deployCommand = pkgs.writers.writeDash "niveum-deploy-one" ''
eval "$(${pkgs.nix}/bin/nix-build --no-out-link "${toString ./.}/deploy.nix" -A "$1")" eval "$(${pkgs.nix}/bin/nix-build --no-out-link "${toString ./.}/deploy.nix" -A "$1")"
@@ -56,8 +58,8 @@ in pkgs.mkShell {
version_file=/etc/niveum/version version_file=/etc/niveum/version
machine_status () { for system in systems/*; do
hostname="$1" hostname="$(${pkgs.coreutils}/bin/basename "$system")"
if commit_id="$(${pkgs.openssh}/bin/ssh "$hostname" cat $version_file 2>/dev/null)"; then if commit_id="$(${pkgs.openssh}/bin/ssh "$hostname" cat $version_file 2>/dev/null)"; then
machine_status="$(${pkgs.git}/bin/git log -1 --oneline "$commit_id")" machine_status="$(${pkgs.git}/bin/git log -1 --oneline "$commit_id")"
@@ -66,13 +68,9 @@ in pkgs.mkShell {
fi fi
printf "\033[1m%11s\033[0m %s\n" "$hostname" "$machine_status" printf "\033[1m%11s\033[0m %s\n" "$hostname" "$machine_status"
}
for system in systems/*; do
hostname="$(basename "$system")"
machine_status "$hostname"
done done
'') '')
]; ];
shellHook = "export HISTFILE=${toString ./.history}"; shellHook = "export HISTFILE=${toString ./.history}";