mirror of
https://github.com/kmein/niveum
synced 2026-03-19 19:41:08 +01:00
feat: replace scripts by shell.nix
This commit is contained in:
@@ -1,6 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
niveum_dir="$HOME/projects/niveum"
|
|
||||||
|
|
||||||
[ $# -eq 1 ] || echo >&2 "Usage: niveum-deploy SYSTEM"
|
|
||||||
|
|
||||||
eval "$(nix-build --no-out-link "$niveum_dir/deploy.nix" -A "$1")"
|
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
version_file=/etc/niveum/version
|
|
||||||
niveum_dir="$HOME/projects/niveum"
|
|
||||||
|
|
||||||
machine_status () {
|
|
||||||
hostname="$1"
|
|
||||||
|
|
||||||
if commit_id="$(ssh "$hostname" cat $version_file 2>/dev/null)"; then
|
|
||||||
machine_status="$(git -C "$niveum_dir" log -1 --oneline "$commit_id")"
|
|
||||||
else
|
|
||||||
machine_status=offline
|
|
||||||
fi
|
|
||||||
|
|
||||||
printf "\033[1m%11s\033[0m %s\n" "$hostname" "$machine_status"
|
|
||||||
}
|
|
||||||
|
|
||||||
for system in "$niveum_dir"/systems/*; do
|
|
||||||
hostname="$(basename "$system")"
|
|
||||||
machine_status "$hostname"
|
|
||||||
done
|
|
||||||
@@ -1,69 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
NIXOS_VERSION=20.03
|
|
||||||
|
|
||||||
fetch() {
|
|
||||||
rev=$1
|
|
||||||
output=$2
|
|
||||||
url=${3:-https://github.com/NixOS/nixpkgs-channels.git}
|
|
||||||
|
|
||||||
printf "\033[1m$url\033[0m $rev\n"
|
|
||||||
nix-prefetch-git \
|
|
||||||
--url "${url}" \
|
|
||||||
--rev "${rev}" \
|
|
||||||
> "${output}"
|
|
||||||
}
|
|
||||||
|
|
||||||
nixpkgs() {
|
|
||||||
fetch "refs/heads/nixos-$NIXOS_VERSION" .versions/nixpkgs.json
|
|
||||||
}
|
|
||||||
|
|
||||||
nixpkgs_unstable() {
|
|
||||||
fetch "refs/heads/nixos-unstable" .versions/nixpkgs-unstable.json
|
|
||||||
}
|
|
||||||
|
|
||||||
home_manager() {
|
|
||||||
fetch "refs/heads/release-$NIXOS_VERSION" .versions/home-manager.json "https://github.com/rycee/home-manager.git"
|
|
||||||
}
|
|
||||||
|
|
||||||
krops() {
|
|
||||||
fetch "refs/tags/v1.21.0" .versions/krops.json "https://cgit.krebsco.de/krops"
|
|
||||||
}
|
|
||||||
|
|
||||||
stockholm() {
|
|
||||||
fetch "refs/heads/master" .versions/stockholm.json "https://cgit.krebsco.de/stockholm"
|
|
||||||
}
|
|
||||||
|
|
||||||
usage() {
|
|
||||||
echo >&2 "Usage: $0 [--all | REPO... ]
|
|
||||||
|
|
||||||
Where REPO is one of nixpkgs, home-manager, krops, stockholm"
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
|
|
||||||
if [ $# -eq 0 ]; then
|
|
||||||
usage
|
|
||||||
else
|
|
||||||
for arg in "$@"; do
|
|
||||||
case $arg in
|
|
||||||
nixpkgs)
|
|
||||||
nixpkgs &
|
|
||||||
nixpkgs_unstable & ;;
|
|
||||||
home-manager)
|
|
||||||
home_manager & ;;
|
|
||||||
krops)
|
|
||||||
krops & ;;
|
|
||||||
stockholm)
|
|
||||||
stockholm & ;;
|
|
||||||
--all)
|
|
||||||
nixpkgs &
|
|
||||||
nixpkgs_unstable &
|
|
||||||
home_manager &
|
|
||||||
krops &
|
|
||||||
stockholm & ;;
|
|
||||||
*)
|
|
||||||
usage ;;
|
|
||||||
esac
|
|
||||||
shift
|
|
||||||
done
|
|
||||||
wait
|
|
||||||
fi
|
|
||||||
79
shell.nix
Normal file
79
shell.nix
Normal file
@@ -0,0 +1,79 @@
|
|||||||
|
{ pkgs ? import <nixpkgs> { } }:
|
||||||
|
let
|
||||||
|
inherit (pkgs) lib;
|
||||||
|
|
||||||
|
dependencies = let nixosVersion = "20.03";
|
||||||
|
in {
|
||||||
|
nixpkgs = {
|
||||||
|
ref = "refs/heads/nixos-${nixosVersion}";
|
||||||
|
url = "https://github.com/NixOS/nixpkgs-channels.git";
|
||||||
|
path = ".versions/nixpkgs.json";
|
||||||
|
};
|
||||||
|
nixpkgs-unstable = {
|
||||||
|
ref = "refs/heads/nixos-unstable";
|
||||||
|
url = "https://github.com/NixOS/nixpkgs-channels.git";
|
||||||
|
path = ".versions/nixpkgs-unstable.json";
|
||||||
|
};
|
||||||
|
home-manager = {
|
||||||
|
ref = "refs/heads/release-${nixosVersion}";
|
||||||
|
url = "https://github.com/rycee/home-manager.git";
|
||||||
|
path = ".versions/home-manager.json";
|
||||||
|
};
|
||||||
|
krops = {
|
||||||
|
ref = "refs/tags/v1.21.0";
|
||||||
|
url = "https://cgit.krebsco.de/krops";
|
||||||
|
path = ".versions/krops.nix";
|
||||||
|
};
|
||||||
|
stockholm = {
|
||||||
|
ref = "refs/heads/master";
|
||||||
|
url = "https://cgit.krebsco.de/stockholm";
|
||||||
|
path = ".versions/stockholm.json";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
updateScript = name: dependency: ''
|
||||||
|
${pkgs.nix-prefetch-git}/bin/nix-prefetch-git --url "${dependency.url}" --rev "${dependency.ref}" > "${toString ./.}/${dependency.path}"'';
|
||||||
|
|
||||||
|
updateScripts =
|
||||||
|
lib.mapAttrsToList
|
||||||
|
(name: dependency: pkgs.writers.writeDashBin "niveum-update-${name}" (updateScript name dependency))
|
||||||
|
dependencies;
|
||||||
|
|
||||||
|
updateAllScript = pkgs.writers.writeDashBin "niveum-update" (lib.concatStringsSep " &\n" (lib.mapAttrsToList updateScript dependencies));
|
||||||
|
in pkgs.mkShell {
|
||||||
|
|
||||||
|
buildInputs = updateScripts ++ [ updateAllScript ] ++ [
|
||||||
|
(let
|
||||||
|
deployCommand = pkgs.writers.writeDash "niveum-deploy-one" ''
|
||||||
|
eval "$(${pkgs.nix}/bin/nix-build --no-out-link "${toString ./.}/deploy.nix" -A "$1")"
|
||||||
|
'';
|
||||||
|
in pkgs.writers.writeDashBin "niveum-deploy" ''
|
||||||
|
${pkgs.parallel}/bin/parallel --line-buffer --tagstring '{}' -q ${deployCommand} '{1}' ::: "$@"
|
||||||
|
'')
|
||||||
|
|
||||||
|
(pkgs.writers.writeDashBin "niveum-status" ''
|
||||||
|
cd "${toString ./.}"
|
||||||
|
|
||||||
|
version_file=/etc/niveum/version
|
||||||
|
|
||||||
|
machine_status () {
|
||||||
|
hostname="$1"
|
||||||
|
|
||||||
|
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")"
|
||||||
|
else
|
||||||
|
machine_status=offline
|
||||||
|
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