Init commit!

This commit is contained in:
2026-05-05 23:23:49 +03:00
commit 700bf0cc43
9 changed files with 549 additions and 0 deletions
+112
View File
@@ -0,0 +1,112 @@
{
description = "Personal website";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
flake-utils.url = "github:numtide/flake-utils";
# Sub-projects: uncomment and replace URLs when ready
# project-a = {
# url = "path:/path/to/project-a";
# inputs.nixpkgs.follows = "nixpkgs";
# };
# project-b = {
# url = "path:/path/to/project-b";
# inputs.nixpkgs.follows = "nixpkgs";
# };
};
outputs = { self, nixpkgs, flake-utils, ... } @ inputs:
flake-utils.lib.eachSystem [ "x86_64-linux" "aarch64-linux" ] (system:
let
pkgs = import nixpkgs { inherit system; };
# Sub-project outputs — uncomment when inputs above are added
# subProjectA = inputs.project-a.packages.${system}.default;
# subProjectB = inputs.project-b.packages.${system}.default;
site = pkgs.stdenv.mkDerivation {
name = "personal-site";
src = pkgs.lib.cleanSource ./.;
nativeBuildInputs = [ pkgs.emacs-nox ];
buildPhase = ''
mkdir -p public
export HOME=$(mktemp -d)
emacs --batch --load ./build.el
'';
installPhase = ''
cp -r public/. $out/
# Sub-project integration: when adding a sub-project, add lines like:
# mkdir -p $out/project-a
# cp -r <subProjectA-store-path>/. $out/project-a/
'';
};
serve = pkgs.writeShellApplication {
name = "serve";
runtimeInputs = [ pkgs.python3 ];
text = ''
echo "Serving site at http://localhost:8080"
python -m http.server --bind 0.0.0.0 8080 -d ${site}
'';
};
tunnel = pkgs.writeShellApplication {
name = "tunnel";
runtimeInputs = [ pkgs.python3 pkgs.cloudflared pkgs.qrencode ];
text = ''
echo "Starting local server and Cloudflare tunnel..."
echo ""
echo "Starting local server on http://localhost:8080..."
python -m http.server --bind 0.0.0.0 8080 -d ${site} &
SERVER_PID=$!
sleep 2
echo ""
echo "Starting HTTPS tunnel..."
echo "Use the QR code below on your device:"
echo ""
cloudflared tunnel --url http://localhost:8080 2>&1 | \
while IFS= read -r line; do
echo "$line"
if echo "$line" | grep -q "https://.*trycloudflare.com"; then
URL=$(echo "$line" | grep -o "https://[^ ]*trycloudflare.com")
echo ""
echo "=========================================="
echo "TUNNEL URL: $URL"
echo "=========================================="
echo ""
echo "QR Code:"
echo ""
qrencode -t ANSIUTF8 "$URL"
echo ""
fi
done
kill $SERVER_PID 2>/dev/null
'';
};
in {
packages.default = site;
apps = {
default = {
type = "app";
program = "${serve}/bin/serve";
};
tunnel = {
type = "app";
program = "${tunnel}/bin/tunnel";
};
};
}
);
}