This commit is contained in:
Lucy 2025-09-26 08:02:47 +02:00
commit 21e7d37205
15 changed files with 997 additions and 0 deletions

105
flake.nix Normal file
View file

@ -0,0 +1,105 @@
{
description = "C-base Website Clone - Pure Nix Web Development";
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 = nixpkgs.legacyPackages.${system};
# Import our core modules
html = import ./src/core/html.nix { inherit pkgs; };
css = import ./src/core/css.nix { inherit pkgs; };
components = import ./src/core/components.nix { inherit pkgs html css; };
content = import ./src/data/content.nix;
siteData = import ./src/pages/index.nix { inherit components content; };
stylesData = import ./src/styles/main.nix;
# Generate the complete website
generateSite = pkgs.writeShellScriptBin "generate-site" ''
echo "🚀 Generating C-base clone with Nix..."
# Create output directory
mkdir -p dist
# Generate HTML directly from Nix evaluation
cat > dist/index.html << 'EOF'
<!DOCTYPE html>
${siteData.html}
EOF
# Generate CSS directly from Nix evaluation
cat > dist/styles.css << 'EOF'
${stylesData.css}
EOF
# Create session tracking directory
mkdir -p ai/sessions
# Log build session
echo "{\"timestamp\": \"$(date -Iseconds)\", \"buildTime\": \"$(date +%s)\", \"status\": \"success\"}" > ai/sessions/build-session-$(date +%Y-%m-%d).json
echo " Site generated in ./dist/"
echo "📁 Files created:"
echo " - dist/index.html"
echo " - dist/styles.css"
'';
# Development server
devServer = pkgs.writeShellScriptBin "dev-server" ''
echo "🔧 Starting development server..."
# Generate site first
${generateSite}/bin/generate-site
# Start simple HTTP server
cd dist
echo "🌐 Server running at http://localhost:8000"
echo "📱 Open your browser and navigate to the URL above"
${pkgs.python3}/bin/python -m http.server 8000
'';
in {
packages = {
default = generateSite;
generate = generateSite;
dev = devServer;
site = pkgs.stdenv.mkDerivation {
name = "c-base-site";
src = ./.;
buildPhase = ''
mkdir -p $out
echo '<!DOCTYPE html>${siteData.html}' > $out/index.html
echo '${stylesData.css}' > $out/styles.css
'';
installPhase = "true";
};
};
devShells.default = pkgs.mkShell {
buildInputs = with pkgs; [
nix
jq
python3
nodejs
];
shellHook = ''
export PATH="${generateSite}/bin:${devServer}/bin:$PATH"
echo "🌟 C-base Nix Web Development Environment"
echo "Commands:"
echo " generate-site - Generate static site"
echo " dev-server - Start development server"
echo " nix run .#generate - Generate static site"
echo " nix run .#dev - Start development server"
echo ""
echo "Session tracking enabled in ./ai/ directory"
'';
};
});
}