diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index fb5331f11ab..878b77969af 100644 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -98,6 +98,7 @@ ./programs/autojump.nix ./programs/bandwhich.nix ./programs/bash/bash.nix + ./programs/bash-my-aws.nix ./programs/bcc.nix ./programs/browserpass.nix ./programs/captive-browser.nix diff --git a/nixos/modules/programs/bash-my-aws.nix b/nixos/modules/programs/bash-my-aws.nix new file mode 100644 index 00000000000..15e429a7549 --- /dev/null +++ b/nixos/modules/programs/bash-my-aws.nix @@ -0,0 +1,25 @@ +{ config, pkgs, lib, ... }: + +with lib; + +let + prg = config.programs; + cfg = prg.bash-my-aws; + + initScript = '' + eval $(${pkgs.bash-my-aws}/bin/bma-init) + ''; +in + { + options = { + programs.bash-my-aws = { + enable = mkEnableOption "bash-my-aws"; + }; + }; + + config = mkIf cfg.enable { + environment.systemPackages = with pkgs; [ bash-my-aws ]; + + programs.bash.interactiveShellInit = initScript; + }; + } diff --git a/pkgs/tools/admin/bash-my-aws/default.nix b/pkgs/tools/admin/bash-my-aws/default.nix new file mode 100644 index 00000000000..8c0dd306743 --- /dev/null +++ b/pkgs/tools/admin/bash-my-aws/default.nix @@ -0,0 +1,71 @@ +{ stdenv +, awscli +, jq +, fetchgit +, installShellFiles +, bashInteractive +}: + +stdenv.mkDerivation rec { + pname = "bash-my-aws"; + version = "20200111"; + + src = fetchgit { + url = "https://github.com/bash-my-aws/bash-my-aws"; + rev = "5a97ce2c22affca1299022a5afa109d7b62242ba"; + sha256 = "459bda8b244af059d96c7c8b916cf956b01cb2732d1c2888a3ae06a4d660bea6"; + }; + + dontConfigure = true; + dontBuild = true; + + propagatedBuildInputs = [ + awscli + jq + bashInteractive + ]; + nativeBuildInputs = [ installShellFiles ]; + + checkPhase = '' + pushd test + ./shared-spec.sh + ./stack-spec.sh + popd + ''; + installPhase='' + mkdir -p $out + cp -r . $out + ''; + postFixup = '' + pushd $out + substituteInPlace scripts/build \ + --replace '~/.bash-my-aws' $out + substituteInPlace scripts/build-completions \ + --replace "{HOME}" $out \ + --replace '~/.bash-my-aws' $out + ./scripts/build + ./scripts/build-completions + substituteInPlace bash_completion.sh \ + --replace "{HOME}" $out \ + --replace .bash-my-aws "" + substituteInPlace bin/bma \ + --replace '~/.bash-my-aws' $out + installShellCompletion --bash --name bash-my-aws.bash bash_completion.sh + chmod +x $out/lib/* + patchShebangs --host $out/lib + installShellCompletion --bash --name bash-my-aws.bash bash_completion.sh + cat > $out/bin/bma-init <