---
name: user
description: Manage NixOS users — add, remove, or modify user configurations. Use when asked to add users, create users, manage users, set up multi-user, or configure profiles and dotfiles.
---

# User

## 架构

```
users/profiles/          ← 共享 profile 模块（所有用户可用）
users/_template/         ← 新用户最小模板（GNOME，不能加入 mcb.users）
users/admin/             ← 内置真实用户（Niri + 全 profile）
users/<name>/packages.nix ← profile 开关（不内联包列表）
```

## 添加用户

```bash
./run.sh add-user                       # 交互式向导
./run.sh add-user alice --admin         # 管理员
./run.sh add-user bob                    # 普通用户（从 _template）
./run.sh add-user eve --copy-from admin  # 复制 admin 配置
./run.sh add-user ops --no-rebuild       # 仅生成文件
```

`run.sh` 做的事：生成 `users/<name>/` → 收集 Git 身份 → 同步到 `/etc/nixos` → 更新 `local.nix`

## 手动创建

```bash
cp -r users/_template users/<name>
# 编辑 default.nix：改 user 变量
# 编辑 packages.nix：选择 profile
# local.nix：mcb.users = [...]; mcb.adminUsers = [...]
```

```bash
git add users/<name>/
nix fmt && nix flake check
sudo nixos-rebuild switch --flake /etc/nixos#host
```

## 修改现有用户

| 改什么 | 去 |
|--------|-----|
| 软件选择 | `users/<user>/packages.nix`（profile 开关） |
| dotfiles | `users/<user>/config/` |
| Git 身份 | `users/<user>/local.nix`（gitignored） |
| Shell 配置 | `users/<user>/shell.nix` |

## 规则

- `root` 不参与用户系统，不在 `mcb.users` 中
- `_template` 不是真实用户，不能加入 `mcb.users`
- `local.nix` 用户列表是权威来源
- 仓库中 `git.nix` 用占位值，真实身份在 gitignored `local.nix`
