website/flake.nix
2026-03-28 20:18:58 -07:00

78 lines
1.9 KiB
Nix

{
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
./src
./tsconfig.json
./vite-plugin-ansi.ts
./vite.config.ts
];
};
website = pkgs.buildNpmPackage {
pname = "jet-website";
version = "0.1.0";
src = websiteSrc;
npmDepsHash = "sha256-UDz4tXNvEa8uiDDGg16K9JbNeQZR3BsVNKtuOgcyurQ=";
installPhase = ''
runHook preInstall
mkdir -p $out
cp -r dist/* $out/
runHook postInstall
'';
};
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;
};
}