We develop an automated procedure to construct each Ni(PyC-X) 2 crystal structure model, culminating in our PoreMatMod.jl software [ ]. See Sec. . for details. First, we use the bonding graph of the parent Ni(PyC) 2 crystal to find, group, and label the substitution sites on the PyC ligands of the parent MOF. Once we specify a substitution site (ortho or meta), we align geometry-optimized molecular fragments, containing the functional group X, onto the PyC ligand of the parent MOF. After alignment, we remove the H at the substitution site and install the X group in its place-in a reasonable geometry with respect to the PyC ligand. Finally, we use density functional theory (DFT) calculations to optimize the geometry of the new Ni(PyC-X) 2 MOF under a fixed unit cell constraint. This refines the geometry and allows, e.g., the PyC-X linkers to rotate from their positions in the parent MOF, and the X groups to reorient, into more energetically favorable positions. See Sec. . . for details. After discarding structures where DFT-based geometry optimizations did not converge, likely due to the functional groups being too bulky to fit in the pore, our final Ni(PyC-X) 2 library contains total ( meta, ortho) crystal structure models of functionalized Ni(PyC) 2 derivatives.