{ config, inputs, lib, pkgs, ... }: let packages = builtins.attrValues { inherit (pkgs) zig # Zig compiler and stdlib zls # Language server for Zig ; }; in { options = { my.dev.zig = { enable = lib.mkEnableOption "Install Zig tooling globally"; users = lib.mkOption { type = inputs.self.lib.usersOptionType lib; default = config.my.toggleUsers.dev; description = "Users to install Zig packages for"; }; }; devShells.zig = lib.mkOption { type = lib.types.package; default = pkgs.mkShell { inherit packages; name = "zig-dev-shell"; shellHook = '' echo "🦎 Zig dev environment" ''; }; description = "Zig development shell with compiler and LSP"; }; }; config = lib.mkIf config.my.dev.zig.enable { users.users = inputs.self.lib.mkUserAttrs lib config.my.dev.zig.users { inherit packages; }; }; }