{
  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 "$@"
  '';
in
{
  imports = [ ];

  environment.systemPackages = with pkgs; [
    kubectl
    kubeswitch
    stern
    alias_kx
    alias_ks
    alias_k
    alias_ka
    alias_kdel
    alias_kd
    alias_klog
  ];

  environment.persistence."/persist" = lib.mkIf (!config.me.buildingIso) {
    hideMounts = true;
    users.talexander = {
      directories = [
        {
          directory = ".kube";
          user = "talexander";
          group = "talexander";
          mode = "0750";
        }
      ];
    };
  };

}