pgxcrown
Build Postgres extensions in Nim.
Summary
| Latest Version | Unknown |
|---|---|
| License | MIT |
| CI Status | Failing |
| Downloads | 0 |
| Last Indexed | 2026-07-21 05:24 |
Tags
Installation
nimble install pgxcrown
choosenim install pgxcrown
git clone https://github.com/luisacosta828/pgxcrown
OS Compatibility
| Platform | Linux | macOS | Windows | FreeBSD | OpenBSD | NetBSD | Android | iOS | WASM | Embedded |
|---|---|---|---|---|---|---|---|---|---|---|
| pgxcrown | ✓ | ✓ | ✓ | - | - | - | - | - | - | - |
Source
| Repository | https://github.com/luisacosta828/pgxcrown |
|---|---|
| Homepage | https://github.com/luisacosta828/pgxcrown |
| Registry Source | nimble_official |
README
Pgxcrown
Build Postgres Extensions in Nim.

Requisites
- Postgres with CLI tools installed and running locally
- Nim
Usage
Install
nimble install
Create a pgxcrown project
- This command will create your project structure:
pgxtool create-project test
Write your code into main.nim
proc add_one*(a: int): int =
a + 1
Build a dynamic library
pgxtool build-extension test
Linux:
cp *.so $(pg_config --pkglibdir)
Windows:
- Windows may not add all Postgres CLI tools to PATH by default(?)
- Locate
pg_config.exein the folders"C:\Program Files\PostgreSQL\". - Run it in a terminal like so
pg_config.exe --pkglibdirto get the pkglibdir path. - See
pgconfigFinder()function source code as hint. - Check if you have development header files ("postgres.h", "spi.h", "analyze.h", "elog.h").
- See Windows CI builds for more.
Call your library function from Postgresql
-- Enter into psql and create a function to wrap your library function
-- omit library extension.
create function function_name(params) return data_type as
'{libname}', '{function}'
language c strict;
-- Example
create function nim_add_one(integer) return integer as
'libadd_one', 'pgx_add_one'
language c strict;
select nim_add_one(10); # -> 11
Contributing
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.
Please make sure to update tests as appropriate.