{
  description = "Reproducible Environment for anish.lakhwara.com";

  inputs = {
    nixpkgs.url = "github:nixos/nixpkgs";
    flake-utils.url = "github:numtide/flake-utils";
  };

  outputs = { self, nixpkgs, flake-utils }:
    flake-utils.lib.eachDefaultSystem (system:
      let
        pkgs = nixpkgs.legacyPackages.${system};
        my-python = pkgs.python3;
        python-with-my-packages = my-python.withPackages (p: with p; [
          icecream
          python-ctags3
          jinja2
          click
          pypandoc
          # other python packages you want
        ]);
      in
      {
        devShell = pkgs.mkShell {
          buildInputs = [
            python-with-my-packages
            pkgs.pandoc
          ];
          shellHook = ''
            PYTHONPATH=${python-with-my-packages}/${python-with-my-packages.sitePackages}
            # This only works when you have ~/vimwiki locally, since I'm not putting my unfiltered kitaab online
            alias build='python3 src/kitaab-public/main.py'
            # maybe set more env-vars
          '';
        };
        defaultPackage = pkgs.python3Packages.buildPythonPackage {
          # We should probably only call grab from main.py here
          pname = "basant";
          src = ./.;
          version = "0.1";
          propagatedBuildInputs = [ python-with-my-packages ];
          doCheck = false;
        };
        packages.site = pkgs.stdenv.mkDerivation {
          name = "anish-lakhwara-site";
          src = ./.;
          buildInputs = [ pkgs.python3 ];
          buildPhase = ''
            ${self.defaultPackage.${system}}/bin/main.py
          '';
          installPhase = ''
            mkdir -p $out
            cp -R output/* $out/
          '';
        };
        #nixosModule = { options, lib, config, pkgs, ... }:
        #  let
        #    serverName = "anish.lakhwara.com";
        #    webRoot = "/var/www/${serverName}";

        #    serviceConfig = config.services."${serverName}";
        #    options = {
        #      enable = lib.mkEnableOption "${serverName} service";
        #    };
        #  in
        #  {
        #    options.services.${serverName} = options;
        #    config = lib.mkIf serviceConfig.enable {
        #      systemd.services."source-${serverName}" = {
        #        description = ''
        #          https://${serverName} source
        #        '';
        #        serviceConfig = {
        #          Type = "oneshot";
        #        };
        #        startAt = "*00:00:00";
        #        path = with pkgs; [ nix gnutar gzip curl jq ];
        #        script = ''
        #          set -ex

        #          ln -sfT ${flake.packages.system.site} ${webRoot}
        #        '';
        #      };
        #    };
        #  };
      });
}
