Joshua Potter 72a5d2e607 | ||
---|---|---|
.. | ||
.githooks | ||
.envrc | ||
README.md | ||
default.nix | ||
deps.nix | ||
flake.lock | ||
flake.nix |
README.md
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.