{"record":{"id":"d7b448768b96db6e","repo":"jdx/mise","slug":"bootstrap-users-and-groups-are-only-supported-on-l","errorCode":null,"errorMessage":"bootstrap users and groups are only supported on Linux","messagePattern":"bootstrap users and groups are only supported on Linux","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/system/accounts.rs","lineNumber":180,"sourceCode":"\npub fn requests_from_config(config: &Config) -> Result<AccountRequests> {\n    let mut groups = IndexMap::new();\n    let mut users = IndexMap::new();\n    for cf in config.config_files.values() {\n        if let Some(bootstrap) = cf.bootstrap_config() {\n            for (name, group) in bootstrap.groups {\n                groups.entry(name).or_insert(group);\n            }\n            for (name, user) in bootstrap.users {\n                users.entry(name).or_insert(user);\n            }\n        }\n    }\n    if groups.is_empty() && users.is_empty() {\n        return Ok(AccountRequests::default());\n    }\n    if !cfg!(target_os = \"linux\") {\n        bail!(\"bootstrap users and groups are only supported on Linux\");\n    }\n    let groups = groups\n        .into_iter()\n        .map(|(name, config)| GroupRequest::from_toml(name, config))\n        .collect::<Result<Vec<_>>>()?;\n    let users = users\n        .into_iter()\n        .map(|(name, config)| UserRequest::from_toml(name, config))\n        .collect::<Result<Vec<_>>>()?;\n    validate_requests(&groups, &users)?;\n    Ok(AccountRequests { groups, users })\n}\n\npub fn prepare_requests_from_config(config: &Config) -> Result<AccountRequests> {\n    requests_from_config(config)\n}\n\nimpl GroupRequest {","sourceCodeStart":162,"sourceCodeEnd":198,"githubUrl":"https://github.com/jdx/mise/blob/9dcfcaa0dc8747a2577d3270b69bb9d8313b2807/src/system/accounts.rs#L162-L198","documentation":"requests_from_config folds [bootstrap.groups] and [bootstrap.users] tables from all config layers; if the merged result is non-empty and the platform is not Linux (checked with cfg!(target_os = \"linux\")), it bails. Bootstrap account management is implemented on nix user/group database primitives that only exist on Linux, so macOS/Windows configs with these tables are rejected before any plan is computed (a non-Linux stub module backs the same public API).","triggerScenarios":"Running `mise bootstrap ...` (or anything that loads account requests, e.g. plan/apply) with a mise.toml containing [bootstrap.users.<name>] or [bootstrap.groups.<name>] on macOS or Windows. Any config layer (project, local, global) contributing a non-empty users/groups map triggers it.","commonSituations":"Sharing one mise.toml across a mixed macOS/Linux team; macOS developers pulling a Linux server's bootstrap config; porting dotfiles that include bootstrap sections without platform gating.","solutions":["Move Linux account bootstrap into a Linux-only config file (e.g. mise.linux.toml or a per-host config layer) so macOS runs never load these tables.","Remove the [bootstrap.users]/[bootstrap.groups] sections on non-Linux machines.","On macOS/Windows, provision accounts with the native tooling (dscl, useradd alternatives) instead of mise bootstrap."],"exampleFix":"# before: mise.toml (shared, fails on macOS)\n[bootstrap.users.deploy]\nstate = \"present\"\ngroup = \"deploy\"\n# after: mise.linux.toml — only loaded on Linux\n[bootstrap.users.deploy]\nstate = \"present\"\ngroup = \"deploy\"","handlingStrategy":"validation","validationCode":"#!/usr/bin/env bash\nif [ \"$(uname -s)\" != \"Linux\" ] && grep -rq '^\\[bootstrap\\.\\(users\\|groups\\)' mise.toml mise.*.toml 2>/dev/null; then\n  echo 'error: bootstrap users/groups tables are Linux-only' >&2; exit 1\nfi\nmise bootstrap \"$@\"","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Keep Linux bootstrap tables in a Linux-only config file (mise.linux.toml) or per-host layer.","Run `mise bootstrap plan` on each new platform as a dry check before automating.","Don't share one monolithic mise.toml across macOS and Linux hosts."],"tags":["mise","bootstrap","users-groups","linux","platform-support","config"],"backgroundTag":"unsupported-platform-feature","analyzedSha":"9dcfcaa0dc8747a2577d3270b69bb9d8313b2807","analyzedAt":"2026-08-17T14:28:50.624Z","schemaVersion":2},"datasetVersion":"2026-08-21T13:17:26.733Z"}