106 lines
3.5 KiB
Nix
106 lines
3.5 KiB
Nix
|
|
{
|
||
|
|
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"
|
||
|
|
'';
|
||
|
|
};
|
||
|
|
});
|
||
|
|
}
|