{ description = "Fizz.buzz homepage"; inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; natter = { url = "git+https://code.fizz.buzz/talexander/natter.git"; inputs.nixpkgs.follows = "nixpkgs"; }; organic_ast_explorer = { url = "git+https://code.fizz.buzz/talexander/organic_ast_explorer.git"; inputs.nixpkgs.follows = "nixpkgs"; }; }; outputs = { self, nixpkgs, natter, organic_ast_explorer, }: let forAllSystems = func: builtins.listToAttrs ( map (system: { name = system; value = func system; }) nixpkgs.lib.systems.flakeExposed ); in { devShells = forAllSystems ( system: let overlays = [ natter.overlays.default organic_ast_explorer.overlays.default ]; pkgs = import nixpkgs { inherit system overlays; }; in { default = pkgs.mkShell { nativeBuildInputs = [ ]; buildInputs = with pkgs; [ pkgs.natter.release ]; }; } ); packages = forAllSystems ( system: let overlays = [ natter.overlays.default organic_ast_explorer.overlays.default ]; pkgs = import nixpkgs { inherit system overlays; }; appliedOverlay = self.overlays.default pkgs pkgs; nginx_conf = pkgs.replaceVars "${./docker/server/nginx.conf}" { web_root = appliedOverlay.homepage.release; mime_types = "${pkgs.nginx}/conf/mime.types"; headers_include = "${./docker/server/headers.include}"; }; in rec { default = release; inherit (appliedOverlay.homepage) release ; docker_env = pkgs.stdenv.mkDerivation { pname = "homepage-docker-env"; version = "0.0.0"; dontUnpack = true; installPhase = '' mkdir -p $out cp ${nginx_conf} $out/nginx.conf ln -sf ${pkgs.nginx}/bin/nginx $out/nginx ''; }; } ); overlays.default = final: prev: { homepage = final.lib.makeScope final.newScope ( homepageScope: let homepage_private = fetchGit { url = "git@code.fizz.buzz:talexander/homepage_private.git"; ref = "main"; rev = "89ba9628bf3e596345bc83f59cef5a2943584894"; }; natter' = (natter.overlays.default final final).natter.release; organic_ast_explorer' = (organic_ast_explorer.overlays.default final final).organic_ast_explorer.release; release = homepageScope.callPackage ./nix/package.nix { natter = natter'; organic_ast_explorer = organic_ast_explorer'; inherit homepage_private; }; in { inherit release; } ); }; }; }