{ lib, ... }:
let
  inherit (lib.mjallen.file)
    readFile
    pathExists
    safeImport
    scanDir
    getFile
    importModulesRecursive
    scanSystems
    filterNixOSSystems
    filterDarwinSystems
    scanHomes
    ;
in
{
  # Example of reading a file
  myFileContent = readFile ./example.txt;

  # Example of checking if a file exists
  fileExists = pathExists ./example.txt;

  # Example of safely importing a file
  myConfig = safeImport ./my-config.nix { };

  # Example of scanning a directory
  directoryContents = scanDir ./modules;

  # Example of getting a file path relative to the flake root
  flakeFile = getFile "flake.nix";

  # Example of importing modules recursively
  modules = importModulesRecursive ./modules;

  # Example of scanning systems
  allSystems = scanSystems ./systems;

  # Example of filtering systems
  nixosSystems = filterNixOSSystems allSystems;
  darwinSystems = filterDarwinSystems allSystems;

  # Example of scanning homes
  allHomes = scanHomes ./homes;

  # Example of using these functions together
  nixosConfigurations = lib.mapAttrs' (
    _name:
    { system, hostname, ... }:
    {
      name = hostname;
      value = lib.nixosSystem {
        inherit system;
        modules = [
          { networking.hostName = hostname; }
        ]
        ++ importModulesRecursive ./modules/nixos;
      };
    }
  ) nixosSystems;
}
