Devenv
This commit is contained in:
+58
@@ -0,0 +1,58 @@
|
||||
{ pkgs, lib, config, ... }:
|
||||
|
||||
{
|
||||
languages.rust = {
|
||||
enable = true;
|
||||
channel = "stable"; # edition 2024 needs a recent stable (CLAUDE.md: Rust 1.93+)
|
||||
components = [ "rustc" "cargo" "clippy" "rustfmt" "rust-analyzer" "rust-src" ];
|
||||
};
|
||||
|
||||
# Native build deps + the full justfile toolchain.
|
||||
packages = with pkgs; [
|
||||
pkg-config
|
||||
openssl
|
||||
git
|
||||
|
||||
# task runner + Rust extras
|
||||
just
|
||||
cargo-audit
|
||||
|
||||
# frontend tooling (no root package.json — these are expected as global bins)
|
||||
nodejs_22
|
||||
biome
|
||||
typescript # provides `tsc`
|
||||
stylelint
|
||||
|
||||
# helper scripts (tools/check-icons.py, tools/check-missing-translations.py)
|
||||
python3
|
||||
|
||||
# API/WebDAV functional tests + the DB-readiness probe in tests/common/spawn-db.sh
|
||||
hurl
|
||||
netcat-gnu # provides `nc`
|
||||
];
|
||||
|
||||
# Dev Postgres on :5432, matching DATABASE_URL in example.env
|
||||
# (postgres://postgres:postgres@localhost:5432/oxicloud).
|
||||
services.postgres = {
|
||||
enable = true;
|
||||
listen_addresses = "127.0.0.1";
|
||||
port = 5432;
|
||||
initialDatabases = [ { name = "oxicloud"; } ];
|
||||
# devenv's bootstrap superuser is the OS user with trust auth, so the
|
||||
# password is not actually checked — but the `postgres` role must exist
|
||||
# for the DATABASE_URL above to connect. Extensions per CLAUDE.md.
|
||||
initialScript = ''
|
||||
CREATE ROLE postgres SUPERUSER LOGIN PASSWORD 'postgres';
|
||||
\connect oxicloud
|
||||
CREATE EXTENSION IF NOT EXISTS pg_trgm;
|
||||
CREATE EXTENSION IF NOT EXISTS ltree;
|
||||
'';
|
||||
};
|
||||
|
||||
# Load .env (justfile uses `set dotenv-load`); contributor should `cp example.env .env`.
|
||||
dotenv.enable = true;
|
||||
|
||||
enterShell = ''
|
||||
echo "OxiCloud dev env — Rust $(rustc --version | cut -d' ' -f2), Node $(node --version), Postgres on :5432"
|
||||
'';
|
||||
}
|
||||
Reference in New Issue
Block a user