Commit 26222216 authored by Armin's avatar Armin
Browse files

nixos/kubeswitch: init

Add a module to activate the kubeswitch in the shell
parent e44c60eb
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -214,6 +214,7 @@
  ./programs/kclock.nix
  ./programs/kdeconnect.nix
  ./programs/lazygit.nix
  ./programs/kubeswitch.nix
  ./programs/less.nix
  ./programs/liboping.nix
  ./programs/light.nix
+56 −0
Original line number Diff line number Diff line
{
  config,
  pkgs,
  lib,
  ...
}:
let
  cfg = config.programs.kubeswitch;
in
{
  options = {
    programs.kubeswitch = {
      enable = lib.mkEnableOption (lib.mdDoc "kubeswitch");

      commandName = lib.mkOption {
        type = lib.types.str;
        default = "kswitch";
        description = "The name of the command to use";
      };

      package = lib.mkOption {
        type = lib.types.package;
        default = pkgs.kubeswitch;
        defaultText = lib.literalExpression "pkgs.kubeswitch";
        description = "The package to install for kubeswitch";
      };
    };
  };

  config =
    let
      shell_files = pkgs.stdenv.mkDerivation rec {
        name = "kubeswitch-shell-files";
        phases = [ "installPhase" ];
        installPhase = ''
          mkdir -p $out/share
          for shell in bash zsh; do
            ${cfg.package}/bin/switcher init $shell | sed 's/switch(/${cfg.commandName}(/' > $out/share/${cfg.commandName}_init.$shell
            ${cfg.package}/bin/switcher --cmd ${cfg.commandName} completion $shell > $out/share/${cfg.commandName}_completion.$shell
          done
        '';
      };
    in
    lib.mkIf cfg.enable {
      environment.systemPackages = [ cfg.package ];

      programs.bash.interactiveShellInit = ''
        source ${shell_files}/share/${cfg.commandName}_init.bash
        source ${shell_files}/share/${cfg.commandName}_completion.bash
      '';
      programs.zsh.interactiveShellInit = ''
        source ${shell_files}/share/${cfg.commandName}_init.zsh
        source ${shell_files}/share/${cfg.commandName}_completion.zsh
      '';
    };
}