bootstrap/specs/phoenix/template/README.md

63 lines
1.8 KiB
Markdown

# Phoenix Flake Template
This is a template for constructing a environment for Elixir development
(version 1.15.7, Erlang/OTP 25) with the [Phoenix](https://www.phoenixframework.org/)
(version 1.7.10) framework. [direnv](https://direnv.net/) can be used to launch
a dev shell upon entering this directory (refer to `.envrc`). Otherwise run via:
```bash
$> nix develop
```
## Quickstart
An empty Postgres cluster is initialized at `/data`. To start the database, run
the following:
```bash
$> pg_ctl start -o --unix_socket_directories="$PWD/data"
```
To shut the database down, run:
```bash
$> pg_ctl stop
```
You can connect to this database from the project root directory by running:
```bash
$> psql -h "$PWD/data" -d postgres
```
Afterward, you can run the Phoenix setup commands:
```bash
$> mix ecto.setup
$> mix assets.setup
```
and then start the local server:
```bash
$> mix phx.server
```
## Dependencies
This project pins Mix dependencies using [mix2nix](https://github.com/ydlr/mix2nix).
After updating your `mix.lock` file, make sure to re-run the following:
```bash
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](https://nixos.org/manual/nixpkgs/stable/#packaging-beam-applications).
## Language Server
The [elixir-ls](https://github.com/elixir-lsp/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:
```bash
$> git config --local core.hooksPath .githooks/
```
If running [direnv](https://direnv.net/), this hook is installed automatically
when entering the directory.