diff --git a/.config/nvim/fnl/init.fnl b/.config/nvim/fnl/init.fnl
index d1a3f771..954cf28f 100644
--- a/.config/nvim/fnl/init.fnl
+++ b/.config/nvim/fnl/init.fnl
@@ -91,6 +91,7 @@
;;; filetype
(set vim.g.do_filetype_lua true)
+(vim.filetype.add {:extension {:ua :uiua}})
;;; ftplugins in fennel
diff --git a/.config/nvim/syntax/uiua.vim b/.config/nvim/syntax/uiua.vim
new file mode 100644
index 00000000..234a21c8
--- /dev/null
+++ b/.config/nvim/syntax/uiua.vim
@@ -0,0 +1,117 @@
+" https://github.com/Apeiros-46B/nvim/blob/main/after/syntax/uiua.vim
+
+" uiua 0.8.0
+
+if exists("b:current_syntax")
+ finish
+endif
+
+let b:current_syntax = "uiua"
+syn iskeyword a-z
+
+syn keyword uiuaIdentifier e os Family Arch ExeExt DllExt Sep NumProcs MaxInt
+syn match uiuaIdentifier '\a\+!*'
+
+" {{{ functions and modifiers
+" constants and recur
+syn keyword uiuaNoadic eta pi tau inf[inity] rand[om] recu[r] tag now
+syn match uiuaNoadic '[ηπ∞τ⚂↫]'
+
+" monadic and dyadic pervasive functions
+syn keyword uiuaPervasive not sig[n] abs[olute] sqr[t] sin[e] flo[or] cei[ling] rou[nd] add subtract multiply divide mod[ulus] pow[er] log[arithm] min[imum] max[imum] ata[ngent] com[plex]
+syn match uiuaPervasive '[¬±`¯⌵√○⌊⌈⁅]\|!=\|<=\|>=\|[=≠<≤>≥+\-×*÷%◿ⁿₙ↧↥∠ℂ]'
+
+" monadic non-pervasive functions
+syn keyword uiuaMonadic len[gth] sha[pe] rang[e] fir[st] rev[erse] des[hape] fix bit[s] tran[spose] ris[e] fal[e] whe[re] cla[ssify] ded[uplicate] box par[se] wait recv tryrecv gen utf type memo comptime
+syn match uiuaMonadic '[⧻△⇡⊢⇌♭¤⋯⍉⍏⍖⊚⊛⊝□⋕↬]'
+
+" dyadic non-pervasive functions
+syn keyword uiuaDyadic joi[n] cou[ple] mat[ch] pic[k] sel[ect] res[hape] rer[ank] tak[e] dro[p] rot[ate] win[dows] kee[p] fin[d] mem[ber] ind[exof] ass[ert] send deal regex map has get insert remove
+syn match uiuaDyadic '[⊂⊟≍⊡⊏↯☇↙↘↻◫▽⌕∊⊗⍤]'
+
+" monadic modifiers
+" gap, dip, and identity single-letter spellings aren't accounted for
+" 1. it's not very useful since adjacent ones won't be highlighted
+" 2. it'll get formatted anyways
+syn keyword uiuaMonadicMod gap dip eac[h] row[s] tab[le] cro[ss] rep[eat] fol[d] reduce scan gro[up] par[tition] un bot[h] unp[ack] rect[ify] thi[s] spawn
+syn match uiuaMonadicMod '[⋅⊙∵≡⊞⊠⍥∧/\\⊕⊜°∩⊐⌅↬]'
+
+" non-monadic modifiers
+syn keyword uiuaOtherMod do und[er] fil[l] bra[cket] for[k] cas[cade] all try setinv setund
+syn match uiuaOtherMod /[⍢⍜⬚⊓⊃⪾⋔⍣]/
+" }}}
+
+" {{{ system functions
+" defined in inverse order so precedence for e.g.
+" &i and &ime, &s and &sc, etc. is correct
+
+" modules
+syn match uiuaModuleSF '&i'
+
+syn match uiuaDyadicSF '\v\&(rs|rb|ru|w|fwa|ime|ae|tcpsrt|tcpswt|httpsw)'
+syn match uiuaMonadicSF '\v\&(sl|s|pf|p|raw|var|runi|runc|cd|cl|fo|fc|fde|ftr|fe|fld|fif|fras|frab|fwa|imd|ims|gifd|gife|ad|ap|tcpl|tcpa|tcpc|tcpsnb|tcpaddr|invk)'
+syn match uiuaNoadicSF '\v\&(sc|ts|args|asr)'
+syn match uiuaModifierSF '&ast'
+" }}}
+
+" {{{ literals
+" numeric literal
+syn match uiuaNum 'NaN\|[¯`]\?\d\+\(\.\d\+\)\?\(e[¯`]\?\d\+\)\?'
+
+" escape sequence and format placeholder
+syn match uiuaEsc contained /\\[\\'"_0nrt]/
+syn match uiuaFmt contained '_'
+
+" character literal
+syn match uiuaChar '@.' contains=uiuaEsc
+
+" string literal (plain, format, and multiline)
+syn region uiuaStr start='"' end='"' skip='\\"' contains=uiuaEsc
+syn region uiuaStr start='\$"' end='"' skip='\\"' contains=uiuaEsc,uiuaFmt
+syn region uiuaStr start='\$ ' end='$' contains=uiuaEsc,uiuaFmt
+" }}}
+
+" {{{ misc
+" function signatures
+syn match uiuaSignature '|\d\+\(\.\d\+\)\?'
+
+" function placeholders in custom modifiers
+syn match uiuaFunctionPlaceholder '\^\d\+\(\.\d\+\)\?'
+
+" test scopes, <- assignments, stranded arrays, and ' or '' line joining
+syn match uiuaFaded '^---$\|[←_']'
+
+" debug functions
+syn keyword uiuaDebug dump stack trac[e]
+syn match uiuaDebug '[⸮?]'
+
+" comments
+syn match uiuaComment '#.*$'
+" }}}
+
+" {{{ highlight groups
+hi def link uiuaNoadic Keyword
+hi def link uiuaNoadicSF Keyword
+hi def link uiuaPervasive Operator
+hi def link uiuaMonadic Function
+hi def link uiuaMonadicSF Function
+hi def link uiuaDyadic Identifier
+hi def link uiuaDyadicSF Identifier
+hi def link uiuaMonadicMod Type
+hi def link uiuaOtherMod Number
+hi def link uiuaModifierSF Type
+hi def link uiuaOcean String
+hi def link uiuaModuleSF Keyword
+
+hi def link uiuaNum Number
+hi def link uiuaEsc SpecialChar
+hi def link uiuaChar String
+hi def link uiuaFmt Operator
+hi def link uiuaStr String
+
+hi def link uiuaSignature Type
+hi def link uiuaFunctionPlaceholder Keyword
+hi def link uiuaDebug Operator
+hi def link uiuaFaded Comment
+hi def link uiuaComment Comment
+" }}}