{ description = "teamdraft.net"; inputs = { devshell.url = "github:numtide/devshell"; flake-parts.url = "github:hercules-ci/flake-parts"; nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; process-compose-flake.url = "github:Platonic-Systems/process-compose-flake"; services-flake.url = "github:juspay/services-flake"; treefmt-nix.url = "github:numtide/treefmt-nix"; }; outputs = inputs @ { flake-parts, ... }: flake-parts.lib.mkFlake {inherit inputs;} { imports = [ inputs.devshell.flakeModule inputs.process-compose-flake.flakeModule inputs.treefmt-nix.flakeModule ]; systems = ["x86_64-linux" "aarch64-linux" "aarch64-darwin" "x86_64-darwin"]; perSystem = { config, self', inputs', pkgs, system, ... }: with builtins; rec { process-compose."services" = { imports = [ inputs.services-flake.processComposeModules.default ]; services.postgres."db" = { enable = true; package = pkgs.postgresql_16; extensions = extensions: [ extensions.pgtap extensions.pgsodium ]; initialScript.before = readFile ./src/db/init.sql; initialScript.after = readFile ./src/db/seed.sql; socketDir = "/tmp/db"; superuser = "teamdraft"; }; settings = { log_location = "./logs/services.log"; }; }; devshells.default = { commands = [ { name = "db"; help = "run postgresql"; command = "nix run .#services"; } { name = "reset"; help = "recreate db and run postgresql"; command = "rm -rf data && nix run .#services"; } { name = "ci"; help = "run all tests"; command = "pg_prove"; } ]; packages = with pkgs; [ gdb kcov perl538Packages.TAPParserSourceHandlerpgTAP pgcli pgformatter postgresql_16 postgresql16Packages.pgtap sops zig zls ]; }; treefmt.config = { projectRootFile = "flake.nix"; flakeCheck = true; flakeFormatter = true; }; }; }; }