Yet another structured logging library
0

Configure Feed

Select the types of activity you want to include in your feed.

elp and flake.nix -> default.nix

author
ollie
date (Jul 25, 2026, 10:34 PM +0200) commit c63e78d5 parent 9d8f8312 change-id zktttrov
+91 -112
+2
.elp.toml
··· 1 + [build_info] 2 + file = ".elp.build_info"
+2 -2
.envrc
··· 1 - if nix flake show &> /dev/null; then 2 - use flake 1 + if [ -e shell.nix -o -e default.nix ]; then 2 + use nix 3 3 fi
+2
.gitignore
··· 5 5 6 6 # Ignore direnv cache 7 7 .direnv/ 8 + .elp 9 + .elp.build_info
+27
default.nix
··· 1 + let 2 + nixpkgs = fetchTarball "https://github.com/NixOS/nixpkgs/tarball/nixos-26.05"; 3 + pkgs = import nixpkgs { 4 + config = { }; 5 + overlays = [ ]; 6 + }; 7 + in 8 + { 9 + shell = pkgs.mkShellNoCC { 10 + packages = with pkgs; [ 11 + gleam 12 + erlang-language-platform 13 + beam28Packages.erlang 14 + rebar3 15 + just 16 + nodejs 17 + watchexec 18 + caddy 19 + ]; 20 + 21 + shellHook = '' 22 + echo "dev env loaded" 23 + just --list 24 + echo "Use just to run them." 25 + ''; 26 + }; 27 + }
-61
flake.lock
··· 1 - { 2 - "nodes": { 3 - "nixpkgs": { 4 - "locked": { 5 - "lastModified": 1777954456, 6 - "narHash": "sha256-hGdgeU2Nk87RAuZyYjyDjFL6LK7dAZN5RE9+hrDTkDU=", 7 - "owner": "NixOS", 8 - "repo": "nixpkgs", 9 - "rev": "549bd84d6279f9852cae6225e372cc67fb91a4c1", 10 - "type": "github" 11 - }, 12 - "original": { 13 - "owner": "NixOS", 14 - "ref": "nixos-unstable", 15 - "repo": "nixpkgs", 16 - "type": "github" 17 - } 18 - }, 19 - "root": { 20 - "inputs": { 21 - "nixpkgs": "nixpkgs", 22 - "utils": "utils" 23 - } 24 - }, 25 - "systems": { 26 - "locked": { 27 - "lastModified": 1681028828, 28 - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", 29 - "owner": "nix-systems", 30 - "repo": "default", 31 - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", 32 - "type": "github" 33 - }, 34 - "original": { 35 - "owner": "nix-systems", 36 - "repo": "default", 37 - "type": "github" 38 - } 39 - }, 40 - "utils": { 41 - "inputs": { 42 - "systems": "systems" 43 - }, 44 - "locked": { 45 - "lastModified": 1731533236, 46 - "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", 47 - "owner": "numtide", 48 - "repo": "flake-utils", 49 - "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", 50 - "type": "github" 51 - }, 52 - "original": { 53 - "owner": "numtide", 54 - "repo": "flake-utils", 55 - "type": "github" 56 - } 57 - } 58 - }, 59 - "root": "root", 60 - "version": 7 61 - }
-40
flake.nix
··· 1 - { 2 - description = "dev env"; 3 - 4 - inputs = { 5 - nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; 6 - utils.url = "github:numtide/flake-utils"; 7 - }; 8 - 9 - outputs = 10 - { 11 - self, 12 - nixpkgs, 13 - utils, 14 - }: 15 - utils.lib.eachDefaultSystem ( 16 - system: 17 - let 18 - pkgs = import nixpkgs { inherit system; }; 19 - in 20 - { 21 - devShells.default = pkgs.mkShell { 22 - buildInputs = with pkgs; [ 23 - gleam 24 - erlang_28 25 - rebar3 26 - just 27 - nodejs 28 - 29 - watchexec 30 - ]; 31 - 32 - shellHook = '' 33 - echo "dev env loaded" 34 - just --list 35 - echo "Use just to run them." 36 - ''; 37 - }; 38 - } 39 - ); 40 - }
+2 -9
justfile
··· 1 - # show this 2 1 default: 3 2 @just --list 4 3 5 - # gleam build 6 - build: 7 - gleam build 8 - 9 - # gleam run 10 - run: 11 - gleam run 12 - 4 + update-elp: 5 + bash ./update-elp.bash
+1
shell.nix
··· 1 + (import ./.).shell
+55
update-elp.bash
··· 1 + set -euo pipefail 2 + 3 + app_name=$(awk -F'"' '/^name[[:space:]]*=/ { print $2; exit }' gleam.toml) 4 + build_dir="build/dev/erlang/$app_name" 5 + 6 + rm -rf .elp 7 + mkdir -p .elp 8 + for erl_file in "$build_dir"/_gleam_artefacts/*.erl; do 9 + [ -e "$erl_file" ] || continue 10 + base_name=$(basename "$erl_file") 11 + already_in_src=$(find src -name "$base_name" -print -quit) 12 + if [ -z "$already_in_src" ]; then 13 + ln -sf "$(pwd)/$erl_file" ".elp/$base_name" 14 + fi 15 + done 16 + 17 + list_deps() { 18 + for dep_dir in build/dev/erlang/*/; do 19 + dep_name=$(basename "$dep_dir") 20 + [ "$dep_name" = "$app_name" ] && continue 21 + 22 + if [ -d "${dep_dir}_gleam_artefacts" ]; then 23 + dep_src_dir=_gleam_artefacts 24 + elif find "${dep_dir}src" -maxdepth 1 -iname "*.erl" -print -quit 2>/dev/null | grep -q .; then 25 + dep_src_dir=src 26 + else 27 + continue 28 + fi 29 + 30 + jq -n \ 31 + --arg name "$dep_name" \ 32 + --arg dir "build/dev/erlang/$dep_name" \ 33 + --arg src_dir "$dep_src_dir" \ 34 + '{name: $name, dir: $dir, src_dirs: [$src_dir], include_dirs: ["include"], ebin: "ebin"}' 35 + done 36 + } 37 + 38 + jq -n \ 39 + --arg name "$app_name" \ 40 + --arg include_dir "$build_dir/include" \ 41 + --arg ebin_dir "$build_dir/ebin" \ 42 + --slurpfile deps <(list_deps) \ 43 + '{ 44 + apps: [{ 45 + name: $name, 46 + dir: ".", 47 + src_dirs: ["src"], 48 + extra_src_dirs: [".elp"], 49 + include_dirs: [$include_dir], 50 + ebin: $ebin_dir 51 + }], 52 + deps: $deps 53 + }' > .elp.build_info 54 + 55 + echo "wrote .elp.build_info for app \"$app_name\""