aboutsummaryrefslogtreecommitdiff
path: root/src/fcuny.net/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'src/fcuny.net/default.nix')
-rw-r--r--src/fcuny.net/default.nix67
1 files changed, 67 insertions, 0 deletions
diff --git a/src/fcuny.net/default.nix b/src/fcuny.net/default.nix
new file mode 100644
index 0000000..b34bfe0
--- /dev/null
+++ b/src/fcuny.net/default.nix
@@ -0,0 +1,67 @@
+{
+ pkgs ? import <nixpkgs> { },
+}:
+
+let
+ pname = "fcuny-net";
+ version = "0.1.0";
+
+ site = pkgs.stdenv.mkDerivation {
+ inherit pname version;
+ src = ./.;
+
+ nativeBuildInputs = with pkgs; [
+ lychee
+ zola
+ ];
+
+ buildPhase = ''
+ zola build
+ lychee docs/*.html
+ '';
+
+ installPhase = ''
+ mkdir -p $out
+ cp -r docs/* $out/
+ '';
+ };
+
+ # Development server
+ serve = pkgs.writeShellScriptBin "serve-fcuny-net" ''
+ cd src/fcuny.net
+ ${pkgs.zola}/bin/zola serve --interface 0.0.0.0 --port 1111
+ '';
+
+ # Nginx configuration
+ nginxConfig = pkgs.writeText "fcuny-net.conf" ''
+ server {
+ listen 80;
+ server_name fcuny.net;
+
+ root ${site};
+ index index.html;
+
+ location / {
+ try_files $uri $uri/ =404;
+ }
+
+ # Optional: Add some basic security headers
+ add_header X-Frame-Options "SAMEORIGIN" always;
+ add_header X-Content-Type-Options "nosniff" always;
+ add_header X-XSS-Protection "1; mode=block" always;
+
+ # Cache static assets
+ location ~* \.(css|js|png|jpg|jpeg|gif|ico|svg)$ {
+ expires 1y;
+ add_header Cache-Control "public, immutable";
+ }
+ }
+ '';
+
+in
+{
+ inherit site serve nginxConfig;
+
+ # Make site the default output
+ default = site;
+}