{ config, inputs, lib, pkgs, ... }: { options.my.shell.exercism = { enable = lib.mkEnableOption "Exercism coding practice platform"; users = lib.mkOption { type = lib.types.either lib.types.str (lib.types.listOf lib.types.str); default = config.my.toggleUsers.shell; merge = inputs.self.lib.mergeUsersOption lib; description = "Users to install Exercism for"; }; }; config = lib.mkIf config.my.shell.exercism.enable { users.users = let packages = builtins.attrValues { inherit (pkgs) exercism # learn to code bats # testing system, required by Exercism ; }; in inputs.self.lib.mkUserPackages lib config.my.shell.exercism.users packages; }; }