{ description = "Jet Pham's personal website"; inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; flake-utils.url = "github:numtide/flake-utils"; }; outputs = { self, nixpkgs, flake-utils, }: (flake-utils.lib.eachDefaultSystem ( system: let pkgs = import nixpkgs { inherit system; }; lib = pkgs.lib; websiteSrc = lib.fileset.toSource { root = ./.; fileset = lib.fileset.unions [ ./index.html ./package-lock.json ./package.json ./public ./server.mjs ./src ./tsconfig.json ./vite-plugin-ansi.ts ./vite.config.ts ]; }; website = pkgs.buildNpmPackage { pname = "jet-website"; version = "0.1.0"; src = websiteSrc; npmDepsHash = "sha256-tcWPiPTOfCEKBBt/ZilAnFcfWKD3FkWUM49vLqw41f0="; installPhase = '' runHook preInstall mkdir -p $out/share/jet-website $out/bin cp -r dist node_modules package.json server.mjs $out/share/jet-website/ makeWrapper ${pkgs.nodejs}/bin/node $out/bin/jet-website \ --add-flags $out/share/jet-website/server.mjs runHook postInstall ''; nativeBuildInputs = [ pkgs.makeWrapper ]; }; qa-api = pkgs.rustPlatform.buildRustPackage { pname = "jetpham-qa-api"; version = "0.1.0"; src = ./api; cargoHash = "sha256-mAQUSA5S3uCCo4RbWVgzMMPDjVoSTcJCFdFOx9ZaxQo="; nativeBuildInputs = [ pkgs.pkg-config ]; buildInputs = [ pkgs.openssl ]; }; in { packages = { default = website; inherit qa-api; }; devShells.default = pkgs.mkShell { buildInputs = with pkgs; [ nodejs git curl openssl typescript-language-server rust-analyzer rustc cargo pkg-config ]; }; } )) // { nixosModules.default = import ./module.nix self; }; }