diff --git a/src/apps/personal/zsh.nix b/src/apps/personal/zsh.nix
index 77f6efa..35be94c 100644
--- a/src/apps/personal/zsh.nix
+++ b/src/apps/personal/zsh.nix
@@ -56,6 +56,9 @@
             # switch group using `,` and `.`
             zstyle ':fzf-tab:*' switch-group ',' '.'
             enable-fzf-tab
+
+            alias compinit="true"
+            source ${./zsh/completions}/*
         '';
         enableSyntaxHighlighting = true;
         enableAutosuggestions = true;
diff --git a/src/apps/personal/zsh/completions/_bun b/src/apps/personal/zsh/completions/_bun
new file mode 100644
index 0000000..91becac
--- /dev/null
+++ b/src/apps/personal/zsh/completions/_bun
@@ -0,0 +1,550 @@
+_bun() {
+    zstyle ':completion:*:*:bun:*' group-name ''
+    zstyle ':completion:*:*:bun-grouped:*' group-name ''
+    
+    zstyle ':completion:*:*:bun::descriptions' format '%F{green}-- %d --%f'
+    zstyle ':completion:*:*:bun-grouped:*' format '%F{green}-- %d --%f'
+    
+    local program=bun
+    typeset -A opt_args
+    local curcontext="$curcontext" state line context
+
+    # ---- Command:
+    _arguments -s \
+        '1: :->cmd' \
+        '*: :->args' &&
+        ret=0
+
+    case $state in
+    cmd)
+        local -a scripts_list
+        IFS=$'\n' scripts_list=($(SHELL=zsh bun getcompletes i))
+        scripts="scripts:scripts:(($scripts_list))"
+
+        main_commands=('add\:"Add a dependency to package.json" bun\:"Generate a bundle" create\:"Create a new project" dev\:"Start a dev server" help\:"Show command help" install\:"Install packages from package.json" remove\:"Remove a dependency from package.json" run\:"Run a script or package bin" upgrade\:"Upgrade to the latest version of bun"')
+        main_commands=($main_commands)
+        _alternative "$scripts" "args:bun:(($main_commands))"
+        ;;
+    args)
+        case $line[1] in
+        add)
+
+            # ---- Command: add
+            _arguments -s -C \
+                '1: :->cmd1' \
+                '*: :->package' \
+                '--version[Show version and exit]' \
+                '-V[Show version and exit]' \
+                '--cwd[Change directory]:cwd' \
+                '--help[Show command help]' \
+                '-h[Show command help]' \
+                '--registry[Change default registry (default: \$BUN_CONFIG_REGISTRY || \$npm_config_registry)]:registry' \
+                '--token[Authentication token used for npm registry requests (default: \$npm_config_token)]:token' \
+                '-y[Write a yarn.lock file (yarn v1)]' \
+                '--yarn[Write a yarn.lock file (yarn v1)]' \
+                '-g[Add a package globally]' \
+                '--global[Add a package globally]' \
+                '--production[Don'"'"'t install devDependencies]' \
+                '--optional[Add dependency to optionalDependencies]' \
+                '--development[Add dependency to devDependencies]' \
+                '-d[Add dependency to devDependencies]' \
+                '-p[Don'"'"'t install devDependencies]' \
+                '--no-save[]' \
+                '--dry-run[Don'"'"'t install anything]' \
+                '--force[Always request the latest versions from the registry & reinstall all dependenices]' \
+                '--lockfile[Store & load a lockfile at a specific filepath]:lockfile' \
+                '--cache-dir[Store & load cached data from a specific directory path]:cache-dir' \
+                '--no-cache[Ignore manifest cache entirely]' \
+                '--silent[Don'"'"'t output anything]' \
+                '--verbose[Excessively verbose logging]' \
+                '--cwd[Set a specific cwd]:cwd' \
+                '--backend[Platform-specific optimizations for installing dependencies]:backend:("clonefile" "copyfile" "hardlink" "clonefile_each_dir")' \
+                '--link-native-bins[Link "bin" from a matching platform-specific dependency instead. Default: esbuild, turbo]:link-native-bins' &&
+                ret=0
+
+            case $state in
+            package)
+                _bun_add_param_package_completion
+                ;;
+            esac
+
+            ;;
+        bun)
+
+            # ---- Command: bun
+            _arguments -s -C \
+                '1: :->cmd' \
+                '*: :->file' \
+                '--version[Show version and exit]' \
+                '-V[Show version and exit]' \
+                '--cwd[Change directory]:cwd' \
+                '--help[Show command help]' \
+                '-h[Show command help]' \
+                '--use[Use a framework, e.g. "next"]:use' &&
+                ret=0
+
+            case $state in
+            file)
+                _files
+                ;;
+            esac
+
+            ;;
+        create)
+
+            # ---- Command: create
+            _arguments -s -C \
+                '1: :->cmd' \
+                '2: :->cmd2' \
+                '*: :->args' &&
+                ret=0
+
+            case $state in
+            cmd2)
+                _alternative 'args:create:((next\:"Next.js app" react\:"React app"))'
+                ;;
+
+            args)
+                case $line[2] in
+                next)
+
+                    # ---- Command: create next
+                    _arguments -s -C \
+                        '1: :->cmd' \
+                        '2: :->cmd2' \
+                        '3: :->file' \
+                        '--version[Show version and exit]' \
+                        '-V[Show version and exit]' \
+                        '--cwd[Change directory]:cwd' \
+                        '--help[Show command help]' \
+                        '-h[Show command help]' &&
+                        ret=0
+
+                    case $state in
+                    file)
+                        _files
+                        ;;
+                    esac
+
+                    ;;
+                react)
+
+                    # ---- Command: create react
+                    _arguments -s -C \
+                        '1: :->cmd' \
+                        '2: :->cmd2' \
+                        '3: :->file' \
+                        '--version[Show version and exit]' \
+                        '-V[Show version and exit]' \
+                        '--cwd[Change directory]:cwd' \
+                        '--help[Show command help]' \
+                        '-h[Show command help]' &&
+                        ret=0
+
+                    case $state in
+                    file)
+                        _files
+                        ;;
+                    esac
+
+                    ;;
+                esac
+
+                ;;
+
+            esac
+            ;;
+        dev)
+
+            # ---- Command: dev
+            _arguments -s -C \
+                '1: :->cmd' \
+                '--version[Show version and exit]' \
+                '-V[Show version and exit]' \
+                '--cwd[Change directory]:cwd' \
+                '--help[Show command help]' \
+                '-h[Show command help]' \
+                '--bunfile[Use a specific .bun file (default: node_modules.bun)]:bunfile' \
+                '--origin[Rewrite import paths to start from a different url. Default: http://localhost:3000]:origin' \
+                '-u[Rewrite import paths to start from a different url. Default: http://localhost:3000]:u' \
+                '--server-bunfile[Use a specific .bun file for SSR in bun dev (default: node_modules.server.bun)]:server-bunfile' \
+                '--extension-order[defaults to: .tsx,.ts,.jsx,.js,.json]:extension-order' \
+                '--jsx-runtime[JSX runtime to use. Defaults to "automatic"]:jsx-runtime:("automatic" "classic")' \
+                '--main-fields[Main fields to lookup in package.json. Defaults to --platform dependent]:main-fields' \
+                '--disable-react-fast-refresh[Disable React Fast Refresh]' \
+                '--disable-hmr[Disable Hot Module Reloading]' \
+                '--jsx-factory[Changes the function called when compiling JSX elements using the classic JSX runtime]:jsx-factory' \
+                '--jsx-fragment[Changes the function called when compiling JSX fragments]:jsx-fragment' \
+                '--jsx-import-source[Declares the module specifier to be used for importing the jsx and jsxs factory functions. Default: "react"]:jsx-import-source' \
+                '--port[Port number]:port' &&
+                ret=0
+
+            ;;
+
+        help)
+
+            # ---- Command: help
+            _arguments -s -C \
+                '1: :->cmd' \
+                '2: :->cmd2' \
+                '*: :->args' &&
+                ret=0
+
+            case $state in
+            cmd2)
+                _alternative 'args:cmd3:((bun create dev run upgrade))'
+                ;;
+
+            args)
+                case $line[2] in
+                bun)
+
+                    # ---- Command: help bun
+                    _arguments -s -C \
+                        '1: :->cmd' \
+                        '2: :->cmd2' \
+                        '--version[Show version and exit]' \
+                        '-V[Show version and exit]' \
+                        '--cwd[Change directory]:cwd' \
+                        '--help[Show command help]' \
+                        '-h[Show command help]' \
+                        '--all[]' &&
+                        ret=0
+
+                    ;;
+                install)
+
+                    # ---- Command: help install
+                    _arguments -s -C \
+                        '1: :->cmd1' \
+                        '2: :->cmd2' \
+                        '--version[Show version and exit]' \
+                        '-V[Show version and exit]' \
+                        '--cwd[Change directory]:cwd' \
+                        '--help[Show command help]' \
+                        '-g[Add a package globally]' \
+                        '--global[Add a package globally]' \
+                        '-h[Show command help]' \
+                        '--all[]' &&
+                        ret=0
+
+                    ;;
+
+                remove)
+
+                    # ---- Command: help remove
+                    _arguments -s -C \
+                        '1: :->cmd1' \
+                        '2: :->cmd2' \
+                        '--version[Show version and exit]' \
+                        '-V[Show version and exit]' \
+                        '--cwd[Change directory]:cwd' \
+                        '-g[Remove a package globally]' \
+                        '--global[Remove a package globally]' \
+                        '--help[Show command help]' \
+                        '-h[Show command help]' \
+                        '--all[]' &&
+                        ret=0
+
+                    ;;
+
+                create)
+
+                    # ---- Command: help create
+                    _arguments -s -C \
+                        '1: :->cmd' \
+                        '2: :->cmd2' \
+                        '3: :->cmd3' \
+                        '*: :->args' &&
+                        ret=0
+
+                    case $state in
+                    cmd3)
+                        _alternative 'args:create:((next react))'
+                        ;;
+
+                    args)
+                        case $line[3] in
+                        next)
+
+                            # ---- Command: help create next
+                            _arguments -s -C \
+                                '1: :->cmd' \
+                                '2: :->cmd2' \
+                                '3: :->cmd3' \
+                                '--version[Show version and exit]' \
+                                '-V[Show version and exit]' \
+                                '--cwd[Change directory]:cwd' \
+                                '--help[Show command help]' \
+                                '-h[Show command help]' \
+                                '--all[]' &&
+                                ret=0
+
+                            ;;
+
+                        react)
+
+                            # ---- Command: help create react
+                            _arguments -s -C \
+                                '1: :->cmd' \
+                                '2: :->cmd2' \
+                                '3: :->cmd3' \
+                                '--version[Show version and exit]' \
+                                '-V[Show version and exit]' \
+                                '--cwd[Change directory]:cwd' \
+                                '--help[Show command help]' \
+                                '-h[Show command help]' \
+                                '--all[]' &&
+                                ret=0
+
+                            ;;
+
+                        esac
+
+                        ;;
+
+                    esac
+                    ;;
+                dev)
+
+                    # ---- Command: help dev
+                    _arguments -s -C \
+                        '1: :->cmd' \
+                        '2: :->cmd2' \
+                        '--version[Show version and exit]' \
+                        '-V[Show version and exit]' \
+                        '--cwd[Change directory]:cwd' \
+                        '--help[Show command help]' \
+                        '-h[Show command help]' \
+                        '--all[]' &&
+                        ret=0
+
+                    ;;
+
+                run)
+                    # ---- Command: help run
+                    _arguments -s -C \
+                        '1: :->cmd' \
+                        '2: :->cmd2' \
+                        '--version[Show version and exit]' \
+                        '-V[Show version and exit]' \
+                        '--cwd[Change directory]:cwd' \
+                        '--help[Show command help]' \
+                        '-h[Show command help]' \
+                        '--all[]' &&
+                        ret=0
+
+                    ;;
+
+                upgrade)
+
+                    # ---- Command: help upgrade
+                    _arguments -s -C \
+                        '1: :->cmd' \
+                        '2: :->cmd2' \
+                        '--version[Show version and exit]' \
+                        '-V[Show version and exit]' \
+                        '--cwd[Change directory]:cwd' \
+                        '--help[Show command help]' \
+                        '-h[Show command help]' \
+                        '--all[]' &&
+                        ret=0
+
+                    ;;
+
+                esac
+
+                ;;
+
+            esac
+            ;;
+        install)
+
+            # ---- Command: install
+            _arguments -s -C \
+                '1: :->cmd1' \
+                '--version[Show version and exit]' \
+                '-V[Show version and exit]' \
+                '--help[Show command help]' \
+                '-h[Show command help]' \
+                '--registry[Change default registry (default: \$BUN_CONFIG_REGISTRY || \$npm_config_registry)]:registry' \
+                '--token[Authentication token used for npm registry requests (default: \$npm_config_token)]:token' \
+                '-y[Write a yarn.lock file (yarn v1)]' \
+                '--yarn[Write a yarn.lock file (yarn v1)]' \
+                '--production[Don'"'"'t install devDependencies]' \
+                '-p[Don'"'"'t install devDependencies]' \
+                '--no-save[]' \
+                '--dry-run[Don'"'"'t install anything]' \
+                '--force[Always request the latest versions from the registry & reinstall all dependenices]' \
+                '--lockfile[Store & load a lockfile at a specific filepath]:lockfile' \
+                '--cache-dir[Store & load cached data from a specific directory path]:cache-dir' \
+                '--no-cache[Ignore manifest cache entirely]' \
+                '--silent[Don'"'"'t output anything]' \
+                '--verbose[Excessively verbose logging]' \
+                '--cwd[Set a specific cwd]:cwd' \
+                '-g[Add a package globally]' \
+                '--global[Add a package globally]' \
+                '--backend[Platform-specific optimizations for installing dependencies]:backend:("clonefile" "copyfile" "hardlink" "clonefile_each_dir")' \
+                '--link-native-bins[Link "bin" from a matching platform-specific dependency instead. Default: esbuild, turbo]:link-native-bins' &&
+                ret=0
+
+            ;;
+
+        remove)
+
+            # ---- Command: remove
+            _arguments -s -C \
+                '1: :->cmd1' \
+                '*: :->package' \
+                '--version[Show version and exit]' \
+                '-V[Show version and exit]' \
+                '--help[Show command help]' \
+                '-h[Show command help]' \
+                '--registry[Change default registry (default: \$BUN_CONFIG_REGISTRY || \$npm_config_registry)]:registry' \
+                '--token[Authentication token used for npm registry requests (default: \$npm_config_token)]:token' \
+                '-y[Write a yarn.lock file (yarn v1)]' \
+                '--yarn[Write a yarn.lock file (yarn v1)]' \
+                '--production[Don'"'"'t install devDependencies]' \
+                '-p[Don'"'"'t install devDependencies]' \
+                '--no-save[]' \
+                '--dry-run[Don'"'"'t install anything]' \
+                '-g[Remove a package globally]' \
+                '--global[Remove a package globally]' \
+                '--force[Always request the latest versions from the registry & reinstall all dependenices]' \
+                '--lockfile[Store & load a lockfile at a specific filepath]:lockfile' \
+                '--cache-dir[Store & load cached data from a specific directory path]:cache-dir' \
+                '--no-cache[Ignore manifest cache entirely]' \
+                '--silent[Don'"'"'t output anything]' \
+                '--verbose[Excessively verbose logging]' \
+                '--backend[Platform-specific optimizations for installing dependencies]:backend:("clonefile" "copyfile" "hardlink" "clonefile_each_dir")' \
+                '--link-native-bins[Link "bin" from a matching platform-specific dependency instead. Default: esbuild, turbo]:link-native-bins' &&
+                ret=0
+
+            case $state in
+            package) ;;
+
+            esac
+
+            ;;
+        run)
+            # ---- Command: run
+            _arguments -s -C \
+                '1: :->cmd' \
+                '2: :->script' \
+                '*: :->other' \
+                '--version[Show version and exit]' \
+                '-V[Show version and exit]' \
+                '--cwd[Change directory]:cwd' \
+                '--help[Show command help]' \
+                '-h[Show command help]' \
+                '--silent[Don'"'"'t echo the command]' &&
+                ret=0
+
+            case $state in
+            script)
+                curcontext="${curcontext%:*:*}:bun-grouped"
+                _bun_run_param_script_completion
+                ;;
+            other)
+                _files
+                ;;
+            esac
+
+            ;;
+        upgrade)
+
+            # ---- Command: upgrade
+            _arguments -s -C \
+                '1: :->cmd' \
+                '--version[Show version and exit]' \
+                '-V[Show version and exit]' \
+                '--cwd[Change directory]:cwd' \
+                '--help[Show command help]' \
+                '-h[Show command help]' &&
+                ret=0
+
+            ;;
+
+        esac
+
+        ;;
+
+    esac
+
+}
+
+_bun_run_param_script_completion() {
+    local -a scripts_list
+    IFS=$'\n' scripts_list=($(SHELL=zsh bun getcompletes s))
+    scripts="scripts:scripts:(($scripts_list))"
+
+    IFS=$'\n' bunjs=($(SHELL=zsh bun getcompletes j))
+    IFS=$'\n' bins=($(SHELL=zsh bun getcompletes b))
+
+    if [ -n "$bunjs" ] && [ "$bunjs" != " " ]; then
+        if [ -n "$bins" ] && [ "$bins" != " " ]; then
+            _alternative $scripts "files:files:(($bunjs))" "bin:bin:(($bins))"
+            return 1
+        fi
+
+        _alternative $scripts "args:Bun.js:(($bunjs))"
+    fi
+
+    if [ -n "$bins" ] && [ "$bins" != " " ]; then
+        _alternative $scripts "args:bin:(($bins))"
+        return 1
+    fi
+}
+
+_set_remove() {
+    comm -23 <(echo $1 | sort | tr " " "\n") <(echo $2 | sort | tr " " "\n") 2>/dev/null
+}
+
+_bun_add_param_package_completion() {
+
+    IFS=$'\n' inexact=($(history -n bun | grep -E "^bun add " | cut -c 9- | uniq))
+    IFS=$'\n' exact=($($inexact | grep -E "^$words[$CURRENT]"))
+    IFS=$'\n' packages=($(SHELL=zsh bun getcompletes a $words[$CURRENT]))
+
+    to_print=$inexact
+    if [ ! -z "$exact" -a "$exact" != " " ]; then
+        to_print=$exact
+    fi
+
+    if [ ! -z "$to_print" -a "$to_print" != " " ]; then
+        if [ ! -z "$packages" -a "$packages" != " " ]; then
+            _describe -1 -t to_print 'History' to_print
+            _describe -1 -t packages "Popular" packages
+            return
+        fi
+
+        _describe -1 -t to_print 'History' to_print
+        return
+    fi
+
+    if [ ! -z "$packages" -a "$packages" != " " ]; then
+        _describe -1 -t packages "Popular" packages
+        return
+    fi
+
+}
+
+__bun_dynamic_comp() {
+    local comp=""
+
+    for arg in scripts; do
+        local line
+        while read -r line; do
+            local name="$line"
+            local desc="$line"
+            name="${name%$'\t'*}"
+            desc="${desc/*$'\t'/}"
+            echo
+        done <<<"$arg"
+    done
+
+    return $comp
+}
+
+autoload -U compinit && compinit
+compdef _bun bun
