bootstrap/specs/phoenix/template/README.md

2.0 KiB

Phoenix Flake Template

This is a template for constructing a environment for Elixir development (version 1.15.7, Erlang/OTP 25) with the Phoenix (version 1.7.10) framework. direnv can be used to launch a dev shell upon entering this directory (refer to .envrc). Otherwise run via:

$> nix develop

Quickstart

An empty Postgres cluster is initialized at /db. To start the database, run the following:

$> pg_ctl -D db -l db/logfile -o --unix_socket_directories=@phoenix start

In the above command, @phoenix refers to an abstract socket name. Rename to whatever is appropriate for your use case. To then connect to this database instance, run:

$> psql -h @phoenix

To later shut the database down, run:

$> pg_ctl -D db stop

Afterward, you can run the Phoenix setup commands:

$> mix ecto.setup
$> mix assets.setup

and then start the local server:

$> mix phx.server

Dependencies

This project pins Mix dependencies using mix2nix. After updating your mix.lock file, make sure to re-run the following:

$> mix2nix > deps.nix

As of now, mix2nix cannot handle git dependencies found inside the mix.lock file. If you have git dependencies, add them manually or use FODs.

Language Server

The elixir-ls LSP (version 0.17.10) is included in this flake.

Formatting

Formatting depends on the mix format task. A pre-commit hook is included in .githooks that can be used to format all *.exs? files prior to commit. Install via:

$> git config --local core.hooksPath .githooks/

If running direnv, this hook is installed automatically when entering the directory.