flake.nix
Rama main · réplica de lectura del repositorio original.
{
description = "Tools for general use around h8s";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
flake-utils.url = "github:numtide/flake-utils";
};
outputs =
{
self,
nixpkgs,
flake-utils,
...
}:
flake-utils.lib.eachDefaultSystem (
system:
let
pkgs = nixpkgs.legacyPackages.${system};
tools = with pkgs; [
kubectl
kubernetes-helm
talosctl
argocd
cilium-cli
go-task
jq
opentofu
yq
sshpass
netcat
authelia
sops
openssl
age
age-plugin-fido2-hmac
pam_u2f
];
in
{
devShells.default = pkgs.mkShell {
buildInputs = tools;
shellHook = ''
export PROJECT_ROOT="$(git rev-parse --show-toplevel 2>/dev/null)"
export TF_VAR_project_root=$PROJECT_ROOT
export INFRA_ROOT=$PROJECT_ROOT/infrastructure
export TF_VAR_infra_root=$INFRA_ROOT
'';
};
devShells.infra = pkgs.mkShell {
inputsFrom = [ self.devShells.${system}.default ];
SOPS_AGE_KEY_CMD = ''
bash -c 'grep -lZF -- "# public key: $SOPS_AGE_RECIPIENT" "$H8S_SECRETS_DIR"/keys/age/* | xargs -0r cat'
'';
shellHook = ''
export H8S_SECRETS_DIR="''${H8S_SECRETS_DIR:-$PROJECT_ROOT/../h8s-secrets}"
h8s_exports="$(sops exec-env --pristine "$H8S_SECRETS_DIR/secrets.yaml" 'export -p')" || exit 1
eval "$h8s_exports" 2>/dev/null || exit 1
unset h8s_exports
'';
};
packages.tools = pkgs.buildEnv {
name = "tools";
paths = tools;
};
defaultPackage = self.packages.${system}.tools;
}
);
}