{ self, inputs, ... }: let packageName = "zed-editor"; zedWrapper = inputs.wrappers.lib.wrapModule ({ config, lib, wlib, ... }: { options = { text-to-say = lib.mkOption { type = lib.types.str; description = "Text for the ascii cow to say."; }; }; config = { binName = "my-pkg"; package = config.pkgs.cowsay; args = [ config.text-to-say ]; }; }); in { perSystem = { system, pkgs, lib, ... }: { packages."${packageName}" = (zedWrapper.apply { inherit pkgs; text-to-say = "Hello from wrapped module!"; }).wrapper; }; flake.modules.homeManager."${packageName}" = { config, pkgs, lib, ... }: { home.packages = [ inputs.self.packages.${pkgs.stdenv.hostPlatform.system}."${packageName}" ]; }; }