{
  description = "jiriks74's ZSH configuration";

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

  outputs = {
    self,
    nixpkgs,
    flake-utils,
    ...
  } @ inputs: let
    inherit (self) outputs;
    # Supported systems for your flake packages, shell, etc.
    systems = [
      "aarch64-linux"
      "i686-linux"
      "x86_64-linux"
      "aarch64-darwin"
      "x86_64-darwin"
    ];
    # This is a function that generates an attribute by calling a function you
    # pass to it, with each system as an argument
    forAllSystems = nixpkgs.lib.genAttrs systems;
  in {
    formatter = forAllSystems (system: nixpkgs.legacyPackages.${system}.alejandra);
    homeManagerModules = {
      default = {
        config,
        lib,
        pkgs,
        ...
      }: {
        inport = ./zsh.nix;
      };
      withPackages = {
        config,
        lib,
        pkgs,
        ...
      }: {
        imports = [
          ./zsh.nix
          ./packages.nix
        ];
      };
    };
  };
}