登录 注册

nixfmt

去点 Star
开发者工具效率与办公工具自动化与工作流 formatterhaskellnix
1,639
Stars
78
Forks
28
Watchers
22
Open Issues
MPL-2.0
许可证
Haskell
语言
2018-08-02
创建时间
2026-11-11
最近更新

项目能做什么

Nixfmt 是由官方团队维护的 Nix 语言代码格式化工具,基于 Haskell 开发。它致力于解决 Nix 代码排版不统一的问题,核心功能是严格按照官方标准自动规范并美化 Nix 代码。支持在 NixOS、VS Code 及 Neovim 等环境与编辑器中无缝集成使用。
来源:AI 基于仓库事实生成 · 内容以仓库实际 README 为准

使用说明 查看原始 README 原仓库文档

中文使用说明暂未生成。下面保留原仓库 README 摘录,命令与配置均以原文为准。
原始 README 摘录(英文原文,节选前 3000 字符)
# Nixfmt

Nixfmt is the official formatter for Nix language code.
The standard Nix format incorporates artistic formatting and is defined in [standard.md](./standard.md).
Nixfmt is maintained by the [Nix formatting team](https://nixos.org/community/teams/formatting/).
This document is the user documentation, see [CONTRIBUTING.md](./CONTRIBUTING.md) for contributor documentation.

## Installation

> [!NOTE]
> `nixfmt` can only process one file at a time.
> Consider using a configuration helper for [formatting a project](#in-a-project).

### In the environment

#### NixOS

To install `nixfmt` on NixOS for all users, add it to the [`environment.systemPackages`](https://search.nixos.org/options?show=environment.systemPackages) configuration option:

```nix
{ pkgs, ... }:
{
  environment.systemPackages = [ pkgs.nixfmt ];
}
```

To install it on NixOS for a particular user, add it to the [`users.users.<user>.packages`](https://search.nixos.org/options?show=users.users.%3Cname%3E.packages) configuration option:

```
{ pkgs, ... }:
{
  users.users.example-user-name.packages = [ pkgs.nixfmt ];
}
```

#### Home Manager

To install `nixfmt` in Home Manager, add it to the [`home.packages`](https://nix-community.github.io/home-manager/options.xhtml#opt-home.packages) configuration option:

```nix
{ pkgs, ... }:
{
  home.packages = [ pkgs.nixfmt ];
}
```

#### Declarative shell environment

To make `nixfmt` available in a shell environment invoked with [`nix-shell`](https://nix.dev/manual/nix/2.28/command-ref/nix-shell), add it to the `packages` argument of `mkShell`:

```nix
{ pkgs }:
pkgs.mkShellNoCC {
  packages = [ pkgs.nixfmt ];
}
```

### In an editor

#### neovim + nixd

```lua
vim.lsp.config('nixd', = {
    settings = {
        formatting = {
            command = { 'nixfmt' },
        },
    },
})
vim.lsp.enable('nixd')
```

> [!NOTE]
> This only works when `nixfmt` is available [in the environment](#in-the-environment).

#### neovim + nil

```lua
vim.lsp.config('nil', = {
    settings = {
        formatting = {
            command = { 'nixfmt' },
        },
    },
})
vim.lsp.enable('nil')
```

> [!NOTE]
> This only works when `nixfmt` is available [in the environment](#in-the-environment).

#### neovim + none-ls

```lua
local null_ls = require("null-ls")
null_ls.setup({
    sources = {
        null_ls.builtins.formatting.nixfmt,
    },
})
```

> [!NOTE]
> This only works when `nixfmt` is available [in the environment](#in-the-environment).

#### Visual Studio Code (VSC)

[vscode-nix-ide](https://github.com/nix-community/vscode-nix-ide) can invoke `nixfmt`.

> [!NOTE]
> This only works when `nixfmt` is available [in the environment](#in-the-environment).

### In a project

#### `nixfmt-tree`

[`nixfmt-tree`](https://search.nixos.org/packages?channel=unstable&show=nixfmt-tree) provides an instance of `treefmt`, pre-configured to use nixfmt.

Simply add it to your shell:

```nix
mkShell {
  packages = [ pkgs.nixfmt-tree ];
}
```

Then run `treefmt` from
阅读完整原文

项目深度分析 AI 生成

企业级 Nix 代码规范检查与 CI 自动化审查服务 (SaaS / GitHub App)

产品构想基于 nixfmt 与 Nix AST,构建集成到 GitHub/GitLab 的云端代码审查与自动修复服务,提供格式化合规门禁、变更 diff 最小化校验及一键自动 PR 修复。
核心功能GitHub App 自动检测 PR 代码格式;针对破坏性格式变更的风险预警;自动提交修复 commit;企业级风格规则报表与 CI 缓存加速。
目标用户在生产环境中深度使用 Nix/NixOS 的技术团队与 DevOps 部门(推测)。
难度/周期中等 · 1-3个月 · 成本:轻量应用服务器与 CI 测试运行环境成本(约 $50-$200/月)。
收费模式Freemium 模式:开源项目免费,私有仓库按席位或代码仓数量收取月度订阅费(推测)。
竞争风险可替代性高,团队通常倾向于使用免费的 treefmt、git-hooks.nix 或自建 GitHub Action 来解决该问题(已验证事实说明社区有成熟免费方案)。
依据 尚需验证的假设

IDE 增强版 Nix 语言套件与商业插件支持

产品构想针对 VS Code / JetBrains / Neovim 提供开箱即用、免去本地繁琐 Nix 环境安装与 LSP 配置的高性能 Nix IDE 扩展,内置格式化修复、智能提示与错误诊断。
核心功能内嵌高性能 WebAssembly/原生 nixfmt 二进制,无需系统预装 Nix 即可格式化;格式化与语法校验无缝结合;多项目配置自动识别。
目标用户新手 Nix 开发者、跨平台协作的团队成员(如 macOS/Windows 混合环境开发 Nix)。
难度/周期高(涉及跨平台打包与 LSP/IDE 生态集成) · 3-6个月 · 成本:开发机器与代码签名证书费用(约 $100-$300/年)。
收费模式JetBrains Marketplace 付费插件或 VS Code 增值功能订阅(推测)。
竞争风险开源社区已存在 vscode-nix-ide、nil、nixd 等成熟且免费的 LSP 和插件组合(已验证事实)。
依据 AI推测

Nix 架构现代化与代码库自动重构迁移咨询服务

产品构想针对拥有历史遗留大型 Nix 配置(如老旧 NixOS 配置、复杂 Flakes 架构)的企业,提供标准格式化迁移、语法现代化升级与工程化重构顾问服务。
核心功能自动化重构脚本;大仓一键批量格式化无冲突迁移方案;工程规范制定与团队内训培训。
目标用户技术栈全面转向 NixOS/Nix 且积累了技术债务的企业(推测)。
难度/周期中等 · 按项目定制(1-4周/单) · 成本:人工时间成本为主。
收费模式项目制咨询服务费、按人天计费(推测)。
竞争风险Nix 企业级市场盘子相对小众且集中,获客渠道窄,难以形成标准化规模效应。
依据 尚需验证的假设
AI 基于仓库公开数据分析生成,含推测成分,不构成收益承诺。
报告会保存到 个人中心

竞品与相似项目 GitHub Search 真实检索

相似项目数据正在完善中,暂不展示(避免误导)

项目优势与风险

技术成熟度创建于 2018-08-02,近 30 天仍在推送,发布过 14 个 Release
社区活跃Star 1,639 / Fork 78 / Issue 22(数据支持,可自行核实)
许可证MPL-2.0
主要风险上游项目方向可能变化;同赛道竞争者较多(见竞品表);热度与需求不完全等价

安装与使用

此项目未提供 Docker 镜像,安装步骤以原仓库 README 为准(涉及依赖安装与环境配置,对新手门槛较高)。