Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 37 additions & 0 deletions .github/workflows/stakpak-agent.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
name: Stakpak Agent
on:
workflow_dispatch:
inputs:
prompt:
description: Request to run the agent with
required: true

jobs:
run_agent:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- uses: DeterminateSystems/nix-installer-action@v14

- uses: DeterminateSystems/magic-nix-cache-action@v7

- name: Build stakpak tools
run: |
OUT=$(nix build ./.github/workflows/stakpak#stakpak-tools --no-link --print-out-paths)
echo "$OUT/bin" >> "$GITHUB_PATH"

- name: Tool versions
run: |
aws --version
terraform version || true
kubectl version --client=true --output=yaml | head -n 5
gh --version
docker --version || true

- name: Run Stakpak Agent
uses: stakpak/stakpak-action@v1.0.11
with:
api_key: ${{ secrets.STAKPAK_API_KEY }}
prompt: ${{ inputs.prompt }}
args: "--enable-slack-tools"
45 changes: 45 additions & 0 deletions .github/workflows/stakpak/flake.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
{
description = "Stakpak Agent CI tools";

inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.05";

outputs = { self, nixpkgs, ... }:
let
system = "x86_64-linux";
pkgs = import nixpkgs {
inherit system;
config.allowUnfree = true;
};
in {
packages.${system}.stakpak-tools = pkgs.symlinkJoin {
name = "stakpak-tools";
paths = with pkgs; [
# cloud/iac
awscli2
azure-cli
google-cloud-sdk
terraform
# opentofu # alternative if you want drop-in replacement
sops
age

# k8s
kubectl
helm
k9s

# containers
docker # client, talks to GitHub runner's daemon
docker-compose

# misc devtools
gh
jq
yq
just
coreutils
curl
];
};
};
}
10 changes: 8 additions & 2 deletions src/components/mode-toggle.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,9 @@
import { Button } from "@/components/ui/button";
import { MoonIcon, SunIcon } from "@radix-ui/react-icons";
import { useTheme } from "next-themes";
import React from "react";

export function ModeToggle() {
const ModeToggle = React.forwardRef<HTMLButtonElement, {}>((_, ref) => {
const { theme, setTheme } = useTheme();

return (
Expand All @@ -13,10 +14,15 @@ export function ModeToggle() {
type="button"
size="icon"
className="px-2"
aria-label="switch theme"
onClick={() => setTheme(theme === "dark" ? "light" : "dark")}
>
<SunIcon className="h-[1.2rem] w-[1.2rem] text-neutral-800 dark:hidden dark:text-neutral-200" />
<MoonIcon className="hidden h-[1.2rem] w-[1.2rem] text-neutral-800 dark:block dark:text-neutral-200" />
</Button>
);
}
});

ModeToggle.displayName = "ModeToggle";

export { ModeToggle };
1 change: 1 addition & 0 deletions src/components/navbar.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ export default function Navbar() {
<TooltipTrigger asChild>
<Link
href={social.url}
aria-label={name}
className={cn(
buttonVariants({ variant: "ghost", size: "icon" }),
"size-12"
Expand Down