93 lines
2.3 KiB
Nix
93 lines
2.3 KiB
Nix
{
|
|
config,
|
|
lib,
|
|
pkgs,
|
|
...
|
|
}:
|
|
|
|
let
|
|
alias_kx = pkgs.writeShellScriptBin "kx" ''
|
|
exec ${pkgs.kubeswitch}/bin/switcher "''${@}"
|
|
'';
|
|
alias_ks = pkgs.writeShellScriptBin "ks" ''
|
|
exec ${pkgs.kubeswitch}/bin/switcher namespace "''${@}"
|
|
'';
|
|
alias_k = pkgs.writeShellScriptBin "k" ''
|
|
exec ${pkgs.kubectl}/bin/kubectl "''${@}"
|
|
'';
|
|
alias_ka = pkgs.writeShellScriptBin "ka" ''
|
|
exec ${pkgs.kubectl}/bin/kubectl "''${@}" --all-namespaces
|
|
'';
|
|
alias_kdel = pkgs.writeShellScriptBin "kdel" ''
|
|
exec ${pkgs.kubectl}/bin/kubectl delete --all "''${@}"
|
|
'';
|
|
alias_kd = pkgs.writeShellScriptBin "kd" ''
|
|
export KUBECTL_EXTERNAL_DIFF="${pkgs.colordiff}/bin/colordiff -N -u"
|
|
exec ${pkgs.kubectl}/bin/kubectl diff "''${@}"
|
|
'';
|
|
alias_klog = pkgs.writeShellScriptBin "klog" ''
|
|
exec ${pkgs.kubectl}/bin/kubectl logs --all-containers "$@"
|
|
'';
|
|
decrypt_k8s_secret =
|
|
(pkgs.writeScriptBin "decrypt_k8s_secret" (builtins.readFile ./files/decrypt_k8s_secret.bash))
|
|
.overrideAttrs
|
|
(old: {
|
|
buildCommand = "${old.buildCommand}\n patchShebangs $out";
|
|
buildInputs = [ pkgs.makeWrapper ];
|
|
postBuild = ''
|
|
wrapProgram $out/bin/decrypt_k8s_secret --prefix PATH : ${
|
|
lib.makeBinPath [
|
|
pkgs.kubectl
|
|
pkgs.jq
|
|
]
|
|
}
|
|
'';
|
|
});
|
|
in
|
|
{
|
|
imports = [ ];
|
|
|
|
options.me = {
|
|
kubernetes.enable = lib.mkOption {
|
|
type = lib.types.bool;
|
|
default = false;
|
|
example = true;
|
|
description = "Whether we want to install kubernetes.";
|
|
};
|
|
};
|
|
|
|
config = lib.mkIf config.me.kubernetes.enable (
|
|
lib.mkMerge [
|
|
{
|
|
environment.systemPackages = with pkgs; [
|
|
kubectl
|
|
kubeswitch
|
|
stern
|
|
alias_kx
|
|
alias_ks
|
|
alias_k
|
|
alias_ka
|
|
alias_kdel
|
|
alias_kd
|
|
alias_klog
|
|
decrypt_k8s_secret
|
|
];
|
|
|
|
environment.persistence."/persist" = lib.mkIf (!config.me.buildingIso) {
|
|
hideMounts = true;
|
|
users.talexander = {
|
|
directories = [
|
|
{
|
|
directory = ".kube";
|
|
user = "talexander";
|
|
group = "talexander";
|
|
mode = "0750";
|
|
}
|
|
];
|
|
};
|
|
};
|
|
}
|
|
]
|
|
);
|
|
}
|