{ inputs = { nixpkgs.url = "github:NixOs/nixpkgs/nixos-unstable"; utils.url = "github:numtide/flake-utils"; }; outputs = { self, nixpkgs, utils, }: let nixosModule = import ./nix/nixos-module.nix; uploadLimits = import ./nix/upload-limits.nix; in utils.lib.eachDefaultSystem ( system: let pkgs = nixpkgs.legacyPackages.${system}; devPhp = pkgs.php; packages = import ./nix/packages { inherit pkgs; }; in { inherit packages; checks = { inherit (packages) backend frontend; module-eval = pkgs.callPackage ./nix/checks/module-eval.nix { inherit nixpkgs system; module = nixosModule; }; dev-php-upload-limits = pkgs.runCommand "rabbi-gerzi-dev-php-upload-limits" { preferLocalBuild = true; } '' actual_upload_max_filesize="$( ${devPhp}/bin/php -r 'echo ini_get("upload_max_filesize");' )" actual_post_max_size="$( ${devPhp}/bin/php -r 'echo ini_get("post_max_size");' )" if [ "$actual_upload_max_filesize" != "${uploadLimits.phpUploadLimit}" ]; then echo "upload_max_filesize was $actual_upload_max_filesize" >&2 exit 1 fi if [ "$actual_post_max_size" != "${uploadLimits.phpUploadLimit}" ]; then echo "post_max_size was $actual_post_max_size" >&2 exit 1 fi echo "$actual_upload_max_filesize" > $out ''; }; devShells.default = pkgs.mkShell { buildInputs = with pkgs; [ onefetch devPhp phpPackages.composer phpPackages.php-codesniffer vscode-langservers-extracted nodejs nixfmt-rfc-style nixfmt-tree cypress yaml-language-server typescript postgresql process-compose ]; shellHook = '' REPO_ROOT="$(git rev-parse --show-toplevel 2>/dev/null || pwd)" export PGDATA="$REPO_ROOT/.postgres" export PGHOST="$PGDATA" export PGUSER="postgres" if [ ! -d "$PGDATA" ]; then echo "[pg] initializing cluster at $PGDATA" initdb --auth=trust --username=postgres --no-locale --encoding=UTF8 >/dev/null { echo "unix_socket_directories = '$PGDATA'" } >> "$PGDATA/postgresql.conf" fi echo "[dev] run 'process-compose up' to start postgres + backend + vite" ''; }; } ) // { nixosModules.default = nixosModule; }; }