{ 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 = [ ]; 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 ]; environment.persistence."/persist" = lib.mkIf (!config.me.buildingIso) { hideMounts = true; users.talexander = { directories = [ { directory = ".kube"; user = "talexander"; group = "talexander"; mode = "0750"; } ]; }; }; } ] ); }