mirror of
https://github.com/kmein/niveum
synced 2026-03-16 10:11:08 +01:00
chore(style): shell.nix
This commit is contained in:
36
shell.nix
36
shell.nix
@@ -2,47 +2,49 @@
|
||||
let
|
||||
inherit (pkgs) lib;
|
||||
|
||||
dependencies = let nixosVersion = "20.03";
|
||||
in {
|
||||
dependencies = let nixosVersion = "20.03"; in {
|
||||
nixpkgs = {
|
||||
ref = "refs/heads/nixos-${nixosVersion}";
|
||||
url = "https://github.com/NixOS/nixpkgs-channels.git";
|
||||
path = ".versions/nixpkgs.json";
|
||||
path = toString .versions/nixpkgs.json;
|
||||
};
|
||||
nixpkgs-unstable = {
|
||||
ref = "refs/heads/nixos-unstable";
|
||||
url = "https://github.com/NixOS/nixpkgs-channels.git";
|
||||
path = ".versions/nixpkgs-unstable.json";
|
||||
path = toString .versions/nixpkgs-unstable.json;
|
||||
};
|
||||
home-manager = {
|
||||
ref = "refs/heads/release-${nixosVersion}";
|
||||
url = "https://github.com/rycee/home-manager.git";
|
||||
path = ".versions/home-manager.json";
|
||||
path = toString .versions/home-manager.json;
|
||||
};
|
||||
krops = {
|
||||
ref = "refs/tags/v1.21.0";
|
||||
url = "https://cgit.krebsco.de/krops";
|
||||
path = ".versions/krops.nix";
|
||||
path = toString .versions/krops.nix;
|
||||
};
|
||||
stockholm = {
|
||||
ref = "refs/heads/master";
|
||||
url = "https://cgit.krebsco.de/stockholm";
|
||||
path = ".versions/stockholm.json";
|
||||
path = toString .versions/stockholm.json;
|
||||
};
|
||||
};
|
||||
|
||||
updateScript = name: dependency: ''
|
||||
${pkgs.nix-prefetch-git}/bin/nix-prefetch-git --url "${dependency.url}" --rev "${dependency.ref}" > "${toString ./.}/${dependency.path}"'';
|
||||
updateCommand = name: dependency: ''
|
||||
${pkgs.nix-prefetch-git}/bin/nix-prefetch-git --url "${dependency.url}" --rev "${dependency.ref}" > "${dependency.path}"'';
|
||||
|
||||
updateScripts =
|
||||
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;
|
||||
|
||||
updateAllScript = pkgs.writers.writeDashBin "niveum-update" (lib.concatStringsSep " &\n" (lib.mapAttrsToList updateScript dependencies));
|
||||
in pkgs.mkShell {
|
||||
|
||||
buildInputs = updateScripts ++ [ updateAllScript ] ++ [
|
||||
buildInputs = updateScripts ++ [
|
||||
|
||||
(pkgs.writers.writeDashBin "niveum-update"
|
||||
(lib.concatStringsSep " &\n" (lib.mapAttrsToList updateCommand dependencies)))
|
||||
|
||||
(let
|
||||
deployCommand = pkgs.writers.writeDash "niveum-deploy-one" ''
|
||||
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
|
||||
|
||||
machine_status () {
|
||||
hostname="$1"
|
||||
for system in systems/*; do
|
||||
hostname="$(${pkgs.coreutils}/bin/basename "$system")"
|
||||
|
||||
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")"
|
||||
@@ -66,13 +68,9 @@ in pkgs.mkShell {
|
||||
fi
|
||||
|
||||
printf "\033[1m%11s\033[0m %s\n" "$hostname" "$machine_status"
|
||||
}
|
||||
|
||||
for system in systems/*; do
|
||||
hostname="$(basename "$system")"
|
||||
machine_status "$hostname"
|
||||
done
|
||||
'')
|
||||
|
||||
];
|
||||
|
||||
shellHook = "export HISTFILE=${toString ./.history}";
|
||||
|
||||
Reference in New Issue
Block a user