{ description = "A flake containing a development environment for the CCCB website."; inputs = { nixpkgs.url = "github:nixos/nixpkgs/nixos-24.11"; }; outputs = { self, nixpkgs, }: let supported-systems = [ "x86_64-linux" "aarch64-linux" "aarch64-darwin" "x86_64-darwin" ]; forAllSystems = f: nixpkgs.lib.genAttrs supported-systems ( system: f rec { inherit system; pkgs = nixpkgs.legacyPackages.${system}; selfPkgs = self.packages.${system}; lib = pkgs.lib // self.lib; } ); in { packages = forAllSystems (import ./packages.nix); devShells = forAllSystems (import ./devShells.nix); formatter = forAllSystems ({ pkgs, ... }: pkgs.nixfmt-rfc-style); lib.mkWwwContent = { domain, system }: let pkgs = nixpkgs.legacyPackages.${system}; in pkgs.stdenvNoCC.mkDerivation { pname = "www-content"; version = domain; src = ./.; # Build dependencies nativeBuildInputs = [ pkgs.hugo pkgs.glibcLocales (pkgs.python3.withPackages (python-pkgs: [ python-pkgs.icalendar python-pkgs.pytz ])) ]; LOCALE_ARCHIVE = "${pkgs.glibcLocales}/lib/locale/locale-archive"; # Build phase - run Hugo to generate the site buildPhase = '' mkdir -p public hugo --baseURL=https://${domain}/ python3 ./tools/merge_cals.py upcoming="$(python3 tools/gen_upcoming.py static/all.ics 20 5 | tr '\n' ' ')" cp static/all.ics public/all.ics sed -i "s#CALENDAR#$upcoming#g" public/index.html ''; # Install phase - copy the public directory to the output installPhase = '' mkdir -p $out cp -r public/* $out/ ''; }; }; }