<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Sui Blog</title><description>Ciallo～(∠・ω&lt; )⌒★</description><link>https://blog.suichyan.top/</link><language>zh_CN</language><item><title>Markdown 语法</title><link>https://blog.suichyan.top/posts/markdown_syntax_cheatsheet/</link><guid isPermaLink="true">https://blog.suichyan.top/posts/markdown_syntax_cheatsheet/</guid><description>本项目支持的常用 Markdown 语法</description><pubDate>Wed, 25 Mar 2026 12:00:00 GMT</pubDate><content:encoded>&lt;p&gt;这是一篇给本项目使用的手写语法速查模板。复制下面的示例即可。&lt;/p&gt;
&lt;h2&gt;Markdown 基础语法&lt;/h2&gt;
&lt;h3&gt;标题&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;# 一级标题
## 二级标题
### 三级标题
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;lt;h1&amp;gt;一级标题&amp;lt;/h1&amp;gt;
&amp;lt;h2&amp;gt;二级标题&amp;lt;/h2&amp;gt;
&amp;lt;h3&amp;gt;三级标题&amp;lt;/h3&amp;gt;&lt;/p&gt;
&lt;h3&gt;强调&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;这是**加粗**，这是*斜体*，这是~~删除线~~。
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这是&lt;strong&gt;加粗&lt;/strong&gt;，这是&lt;em&gt;斜体&lt;/em&gt;，这是&lt;s&gt;删除线&lt;/s&gt;。&lt;/p&gt;
&lt;h3&gt;列表&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;- 无序项 A
- 无序项 B

1. 有序项 1
2. 有序项 2
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;无序项 A&lt;/li&gt;
&lt;li&gt;无序项 B&lt;/li&gt;
&lt;/ul&gt;
&lt;ol&gt;
&lt;li&gt;有序项 1&lt;/li&gt;
&lt;li&gt;有序项 2&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;引用&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;&amp;gt; 这是一段普通引用。
&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;这是一段普通引用。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;分隔线&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;---
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;h3&gt;链接与图片&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;[项目主页](https://github.com/suichyan/fuwari)

![示例图片](../../assets/images/banner-nacho.png)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/suichyan/fuwari&quot;&gt;项目主页&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/images/banner-nacho.png&quot; alt=&quot;示例图片&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;代码与结构&lt;/h2&gt;
&lt;h3&gt;行内代码&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;使用 `pnpm dev` 启动开发服务器。
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;使用 &lt;code&gt;pnpm dev&lt;/code&gt; 启动开发服务器。&lt;/p&gt;
&lt;h3&gt;围栏代码&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;```bash
pnpm install
pnpm dev
```

```nix
{ config, pkgs, ... }:
{
	services.openssh.enable = true;
}
```
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;pnpm install
pnpm dev
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;{ config, pkgs, ... }:
{
	services.openssh.enable = true;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;代码块标题&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;```ts title=&quot;src/utils/math.ts&quot;
export function add(a: number, b: number) {
	return a + b;
}
```
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;export function add(a: number, b: number) {
	return a + b;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;代码块单行高亮&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;```ts {2}
export function add(a: number, b: number) {
	return a + b;
}
```
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;export function add(a: number, b: number) {
	return a + b;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;代码块单行加减标记&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;```ts del={2} ins={3}
const oldValue = 1;
const newValue = 2;
console.log(newValue);
```
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;const oldValue = 1;
const newValue = 2;
console.log(newValue);
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;代码块多行与区间高亮&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;```ts {1,3-4}
const a = 1;
const b = 2;
const c = a + b;
console.log(c);
```
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;const a = 1;
const b = 2;
const c = a + b;
console.log(c);
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;代码块行内文本高亮&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;```ts &quot;newValue&quot;
const oldValue = 1;
const newValue = 2;
console.log(newValue);
```
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;const oldValue = 1;
const newValue = 2;
console.log(newValue);
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;代码块行内文本加减标记&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;```ts ins=&quot;newValue&quot; del=&quot;oldValue&quot;
const oldValue = 1;
const newValue = 2;
console.log(newValue);
```
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;const oldValue = 1;
const newValue = 2;
console.log(newValue);
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;代码块行号控制&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;```ts showLineNumbers startLineNumber=20
const a = 1;
const b = 2;
console.log(a + b);
```

```ts showLineNumbers=false
const hideLineNumber = true;
console.log(hideLineNumber);
```
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;const a = 1;
const b = 2;
console.log(a + b);
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;const hideLineNumber = true;
console.log(hideLineNumber);
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;代码块折叠区段&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;```ts collapse={1-3} collapseStyle=&quot;collapsible-start&quot;
import { readFileSync } from &quot;node:fs&quot;;
import { join } from &quot;node:path&quot;;
const fileContent = readFileSync(join(process.cwd(), &quot;README.md&quot;), &quot;utf-8&quot;);

console.log(fileContent.length);
```
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;import { readFileSync } from &quot;node:fs&quot;;
import { join } from &quot;node:path&quot;;
const fileContent = readFileSync(join(process.cwd(), &quot;README.md&quot;), &quot;utf-8&quot;);

console.log(fileContent.length);
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;代码块框架样式覆盖&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;```bash frame=&quot;none&quot;
pnpm build
```
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;pnpm build
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;代码块文件名注释标题（自动提取）&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;```ts
// src/lib/calc.ts
export const sum = (a: number, b: number) =&amp;gt; a + b;
```
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;// src/lib/calc.ts
export const sum = (a: number, b: number) =&amp;gt; a + b;
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;终端代码块标题&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;```powershell title=&quot;终端标题示例&quot;
Write-Output &quot;这个终端窗口带标题&quot;
```
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;Write-Output &quot;这个终端窗口带标题&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;ANSI 转义序列渲染&lt;/h3&gt;
&lt;p&gt;支持通过 ANSI 转义序列在代码块中渲染彩色文本与格式。将其语言设置为 &lt;code&gt;ansi&lt;/code&gt; 即可。&lt;/p&gt;
&lt;h4&gt;基础颜色&lt;/h4&gt;
&lt;p&gt;支持展示标准的 ANSI 8 色及其加粗、变暗变体：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;```ansi
ANSI 基础颜色:
- 正常: [31m红色[0m [32m绿色[0m [33m黄色[0m [34m蓝色[0m [35m洋红[0m [36m青色[0m
- 加粗: [1;31m红色[0m [1;32m绿色[0m [1;33m黄色[0m [1;34m蓝色[0m [1;35m洋红[0m [1;36m青色[0m
- 变暗: [2;31m红色[0m [2;32m绿色[0m [2;33m黄色[0m [2;34m蓝色[0m [2;35m洋红[0m [2;36m青色[0m
```
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;ANSI 基础颜色:
- 正常: [31m红色[0m [32m绿色[0m [33m黄色[0m [34m蓝色[0m [35m洋红[0m [36m青色[0m
- 加粗: [1;31m红色[0m [1;32m绿色[0m [1;33m黄色[0m [1;34m蓝色[0m [1;35m洋红[0m [1;36m青色[0m
- 变暗: [2;31m红色[0m [2;32m绿色[0m [2;33m黄色[0m [2;34m蓝色[0m [2;35m洋红[0m [2;36m青色[0m
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;256 色调色盘&lt;/h4&gt;
&lt;p&gt;可以使用 256 色模式渲染，这里以 160 到 177 取值为例：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;```ansi
256 色 (展示 160-177):
[38;5;160m160[0m [38;5;161m161[0m [38;5;162m162[0m [38;5;163m163[0m [38;5;164m164[0m [38;5;165m165[0m
[38;5;166m166[0m [38;5;167m167[0m [38;5;168m168[0m [38;5;169m169[0m [38;5;170m170[0m [38;5;171m171[0m
[38;5;172m172[0m [38;5;173m173[0m [38;5;174m174[0m [38;5;175m175[0m [38;5;176m176[0m [38;5;177m177[0m
```
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;256 色 (展示 160-177):
[38;5;160m160[0m [38;5;161m161[0m [38;5;162m162[0m [38;5;163m163[0m [38;5;164m164[0m [38;5;165m165[0m
[38;5;166m166[0m [38;5;167m167[0m [38;5;168m168[0m [38;5;169m169[0m [38;5;170m170[0m [38;5;171m171[0m
[38;5;172m172[0m [38;5;173m173[0m [38;5;174m174[0m [38;5;175m175[0m [38;5;176m176[0m [38;5;177m177[0m
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;全真 RGB 颜色与文本格式化&lt;/h4&gt;
&lt;p&gt;支持按照自定义 RGB 值渲染，以及设置文本格式，例如斜体、下划线：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;```ansi
全真 RGB 颜色:
[38;2;34;139;34m森林绿 - RGB(34, 139, 34)[0m

文本格式化: [1m加粗[0m [2m变暗[0m [3m斜体[0m [4m下划线[0m
```
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;全真 RGB 颜色:
[38;2;34;139;34m森林绿 - RGB(34, 139, 34)[0m

文本格式化: [1m加粗[0m [2m变暗[0m [3m斜体[0m [4m下划线[0m
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;diff 风格加减写法&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;```diff
+ 这行会被标记为新增
- 这行会被标记为删除
	这是一行普通内容
```
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;+ 这行会被标记为新增
- 这行会被标记为删除
	这是一行普通内容
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;diff 写法结合语法高亮&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;```diff lang=&quot;js&quot;
 function thisIsJavaScript() {
	 // 保持 JS 高亮，同时支持差异标记
-  console.log(&apos;旧代码将被移除&apos;)
+  console.log(&apos;新代码已添加&apos;)
 }
```
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt; function thisIsJavaScript() {
	 // 保持 JS 高亮，同时支持差异标记
-  console.log(&apos;旧代码将被移除&apos;)
+  console.log(&apos;新代码已添加&apos;)
 }
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;行标记标签&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;```ts {&quot;A&quot;:2} del={&quot;B&quot;:3} ins={&quot;C&quot;:4}
const keep = true;
const removeMe = false;
const addMe = true;
```
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;const keep = true;
const removeMe = false;
const addMe = true;
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;行内文本正则标记&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;```ts /已[启停]用/
console.log(&apos;关键词“已启用”和“已停止”会被标记。&apos;);
```
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;console.log(&apos;关键词“已启用”和“已停用”会被标记。&apos;);
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;正则中转义斜杠&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;```sh /\/home\//
echo &quot;测试&quot; &amp;gt; /home/test.txt
```
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;echo &quot;测试&quot; &amp;gt; /home/test.txt
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;按代码块控制自动换行&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;```ts wrap=false
function 获取超长文本() {
	return &apos;这是一段很长很长的文本，在容器宽度不足时更容易观察到自动换行的差异效果&apos;;
}
```
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;function 获取超长文本() {
	return &apos;这是一段很长很长的文本，在容器宽度不足时更容易观察到自动换行的差异效果&apos;;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;控制换行后缩进对齐&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;```ts preserveIndent=false
function 获取超长文本() {
	return &apos;这是一段很长很长的文本，在容器宽度不足时更容易观察到自动换行的差异效果&apos;;
}
```
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;function 获取超长文本() {
	return &apos;这是一段很长很长的文本，在容器宽度不足时更容易观察到自动换行的差异效果&apos;;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;表格&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;| 命令       | 说明           |
| ---------- | -------------- |
| pnpm dev   | 启动开发服务器 |
| pnpm build | 构建生产版本   |
&lt;/code&gt;&lt;/pre&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;命令&lt;/th&gt;
&lt;th&gt;说明&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;pnpm dev&lt;/td&gt;
&lt;td&gt;启动开发服务器&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;pnpm build&lt;/td&gt;
&lt;td&gt;构建生产版本&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3&gt;任务列表&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;- [x] 已完成项
- [ ] 待办项
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;[x] 已完成项&lt;/li&gt;
&lt;li&gt;[ ] 待办项&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;HTML 写法（Markdown 中可直接使用）&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;details&amp;gt;
	&amp;lt;summary&amp;gt;点击展开&amp;lt;/summary&amp;gt;
	这里是折叠内容。
&amp;lt;/details&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;lt;details&amp;gt;
&amp;lt;summary&amp;gt;点击展开&amp;lt;/summary&amp;gt;
这里是折叠内容。
&amp;lt;/details&amp;gt;&lt;/p&gt;
&lt;h2&gt;Markdown 进阶（通用扩展）&lt;/h2&gt;
&lt;h3&gt;数学公式（KaTeX）&lt;/h3&gt;
&lt;h3&gt;行内公式&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;勾股定理：$a^2 + b^2 = c^2$。
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;勾股定理：$a^2 + b^2 = c^2$。&lt;/p&gt;
&lt;h3&gt;块级公式&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;$$
\int_0^1 x^2\,dx = \frac{1}{3}
$$
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;$$
\int_0^1 x^2,dx = \frac{1}{3}
$$&lt;/p&gt;
&lt;h2&gt;Markdown 扩展功能&lt;/h2&gt;
&lt;h3&gt;GitHub 仓库卡片&lt;/h3&gt;
&lt;p&gt;可以通过 &lt;code&gt;::github{repo=&quot;&amp;lt;owner&amp;gt;/&amp;lt;repo&amp;gt;&quot;}&lt;/code&gt; 在文章中插入动态 GitHub 仓库卡片。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;::github{repo=&quot;saicaca/fuwari&quot;}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;::github{repo=&quot;saicaca/fuwari&quot;}&lt;/p&gt;
&lt;h3&gt;提示块&lt;/h3&gt;
&lt;p&gt;支持的类型：&lt;code&gt;note&lt;/code&gt;、&lt;code&gt;tip&lt;/code&gt;、&lt;code&gt;important&lt;/code&gt;、&lt;code&gt;warning&lt;/code&gt;、&lt;code&gt;caution&lt;/code&gt;。&lt;/p&gt;
&lt;h4&gt;基础写法&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;:::note
即使快速浏览，也建议留意这条信息。
:::

:::tip
这是可选建议，能帮助你更顺利完成操作。
:::

:::important
这是关键说明，通常和正确使用方式有关。
:::

:::warning
这是风险提示，请优先确认后再执行。
:::

:::caution
该操作可能带来负面后果，请谨慎处理。
:::
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;:::note
即使快速浏览，也建议留意这条信息。
:::&lt;/p&gt;
&lt;p&gt;:::tip
这是可选建议，能帮助你更顺利完成操作。
:::&lt;/p&gt;
&lt;p&gt;:::important
这是关键说明，通常和正确使用方式有关。
:::&lt;/p&gt;
&lt;p&gt;:::warning
这是风险提示，请优先确认后再执行。
:::&lt;/p&gt;
&lt;p&gt;:::caution
该操作可能带来负面后果，请谨慎处理。
:::&lt;/p&gt;
&lt;h4&gt;自定义标题&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;:::note[自定义标题]
这是一条带自定义标题的提示块。
:::
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;:::note[自定义标题]
这是一条带自定义标题的提示块。
:::&lt;/p&gt;
&lt;h4&gt;GitHub 风格写法&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;&amp;gt; [!NOTE]
&amp;gt; 也支持 GitHub 风格的提示写法。

&amp;gt; [!TIP]
&amp;gt; 也支持 GitHub 风格的提示写法。
&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;[!NOTE]
也支持 GitHub 风格的提示写法。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;[!TIP]
也支持 GitHub 风格的提示写法。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;指令语法扩展（remark-directive）&lt;/h2&gt;
&lt;h3&gt;行内指令&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;水的化学式是 H:sub[2]O，平方写作 x:sup[2]。
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;水的化学式是 H:sub[2]O，平方写作 x:sup[2]。&lt;/p&gt;
</content:encoded></item><item><title>使用Cloudflare origin rule重写端口</title><link>https://blog.suichyan.top/posts/cloudflare_originrule/</link><guid isPermaLink="true">https://blog.suichyan.top/posts/cloudflare_originrule/</guid><description>在服务器使用caddy反代高位端口没法使用cf代理，使用回源规则来重写端口</description><pubDate>Sun, 22 Feb 2026 20:33:00 GMT</pubDate><content:encoded>&lt;p&gt;在服务器上配置好caddy反代后，因为没有备案只能使用高位端口来访问。但是每次访问都需要使用域名加上端口，非常麻烦。而且因为Cloudflare支持的端口有限，没法使用cf代理，服务器安全性无法得到保障。&lt;/p&gt;
&lt;h3&gt;Cloudflare支持的端口&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;HTTP协议&lt;/th&gt;
&lt;th&gt;HTTPS协议&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;80&lt;/td&gt;
&lt;td&gt;443&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8080&lt;/td&gt;
&lt;td&gt;2053&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8880&lt;/td&gt;
&lt;td&gt;2083&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2052&lt;/td&gt;
&lt;td&gt;2087&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2082&lt;/td&gt;
&lt;td&gt;2096&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2086&lt;/td&gt;
&lt;td&gt;8443&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2095&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;在不使用80或443的情况下，访问域名就需要加上端口，例如：&lt;code&gt;https://blog.suichyan.top:8443&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;设置Cloudflare回源规则&lt;/h3&gt;
&lt;p&gt;使用回源规则重写端口来直接访问域名&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;访问&lt;a href=&quot;https://www.cloudflare.com/zh-cn/&quot;&gt;Cloudflare&lt;/a&gt;，登录，点击已经加入的域&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&quot;./images/1.png&quot; alt=&quot;Cloudflare域管理&quot; title=&quot;Cloudflare域管理&quot; /&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;左侧面板找到&lt;code&gt;规则&lt;/code&gt;→&lt;code&gt;概述&lt;/code&gt;→&lt;code&gt;Origin Rule&lt;/code&gt;→&lt;code&gt;创建规则&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&quot;./images/2.png&quot; alt=&quot;Cloudflare规则&quot; title=&quot;Cloudflare规则&quot; /&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;填写规则名称（随便编一个），选择&lt;code&gt;自定义筛选表达式&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&quot;./images/3.png&quot; alt=&quot;规则命名&quot; title=&quot;规则命名&quot; /&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;配置筛选条件：&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;字段选择&lt;code&gt;主机名&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;运算符选择&lt;code&gt;等于&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;值填入反代的主机名，例如：&lt;code&gt;abc.suichyan.top&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&quot;./images/4.png&quot; alt=&quot;筛选配置&quot; title=&quot;筛选配置&quot; /&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;如果有多个主机名，点击右侧&lt;code&gt;Or&lt;/code&gt;，然后反复按照第四步配置&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&quot;./images/5.png&quot; alt=&quot;添加多个主机名&quot; title=&quot;添加多个主机名&quot; /&gt;
&lt;img src=&quot;./images/6.png&quot; alt=&quot;配置多个主机名&quot; title=&quot;配置多个主机名&quot; /&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;配置完主机名后，转到下面目标端口：&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;选择&lt;code&gt;重写到...&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;端口号填写反代的端口，例如：&lt;code&gt;54321&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&quot;./images/7.png&quot; alt=&quot;配置目标端口&quot; title=&quot;配置目标端口&quot; /&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;最后点击部署&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;:::warning[部署遇到配置警告？]
如果提示此规则可能不适用于您的流量，如图：
&lt;img src=&quot;./images/8.png&quot; alt=&quot;警告&quot; /&gt;&lt;/p&gt;
&lt;p&gt;需要将对应解析的域名勾选&lt;strong&gt;代理状态&lt;/strong&gt;（小黄云图标），然后再次重试部署规则即可。
&lt;img src=&quot;./images/9.png&quot; alt=&quot;代理&quot; /&gt;
:::&lt;/p&gt;
&lt;p&gt;至此现在您可以直接通过域名访问网站不需要加端口了，例如：&lt;code&gt;https://blog.suichyan.top&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;防止 Cloudflare 被绕过&lt;/h3&gt;
&lt;p&gt;但是你可能发现使用原来带上端口的方法仍然能够访问，这涉及到 Web 服务器的工作原理和&lt;strong&gt;源站保护&lt;/strong&gt;的安全问题&lt;/p&gt;
&lt;p&gt;这里采用最简单的方式，直接配置源服务器防火墙，反代的端口只允许Cloudflare访问&lt;/p&gt;
&lt;h4&gt;腾讯云服务器防火墙&lt;/h4&gt;
&lt;p&gt;因为在使用腾讯云，所以这里例举腾讯云防火墙的配置方法&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;将之前开放的端口规则删除&lt;/li&gt;
&lt;li&gt;在任意位置编写一个&lt;code&gt;cloudflare_rules.csv&lt;/code&gt;文件&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;来源,协议,端口,策略,备注
173.245.48.0/20,TCP,40000,允许,Cloudflare IPv4节点
103.21.244.0/22,TCP,40000,允许,Cloudflare IPv4节点
103.22.200.0/22,TCP,40000,允许,Cloudflare IPv4节点
103.31.4.0/22,TCP,40000,允许,Cloudflare IPv4节点
141.101.64.0/18,TCP,40000,允许,Cloudflare IPv4节点
108.162.192.0/18,TCP,40000,允许,Cloudflare IPv4节点
190.93.240.0/20,TCP,40000,允许,Cloudflare IPv4节点
188.114.96.0/20,TCP,40000,允许,Cloudflare IPv4节点
197.234.240.0/22,TCP,40000,允许,Cloudflare IPv4节点
198.41.128.0/17,TCP,40000,允许,Cloudflare IPv4节点
162.158.0.0/15,TCP,40000,允许,Cloudflare IPv4节点
104.16.0.0/13,TCP,40000,允许,Cloudflare IPv4节点
104.24.0.0/14,TCP,40000,允许,Cloudflare IPv4节点
172.64.0.0/13,TCP,40000,允许,Cloudflare IPv4节点
131.0.72.0/22,TCP,40000,允许,Cloudflare IPv4节点
2400:cb00::/32,TCP,40000,允许,Cloudflare IPv6节点
2606:4700::/32,TCP,40000,允许,Cloudflare IPv6节点
2803:f800::/32,TCP,40000,允许,Cloudflare IPv6节点
2405:b500::/32,TCP,40000,允许,Cloudflare IPv6节点
2405:8100::/32,TCP,40000,允许,Cloudflare IPv6节点
2a06:98c0::/29,TCP,40000,允许,Cloudflare IPv6节点
2c0f:f248::/32,TCP,40000,允许,Cloudflare IPv6节点
&lt;/code&gt;&lt;/pre&gt;
&lt;ol&gt;
&lt;li&gt;添加服务器的防火墙规则&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;选择导入规则&lt;/li&gt;
&lt;li&gt;选择追加导入&lt;/li&gt;
&lt;li&gt;选择刚才编写的csv文件&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&quot;./images/10.png&quot; alt=&quot;导入规则&quot; title=&quot;导入规则&quot; /&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;再次尝试能否带端口访问，如果不能就是配置成功了&lt;/li&gt;
&lt;/ol&gt;
&lt;hr /&gt;
&lt;p&gt;:::tip[完成与验证]
最后检查能否不带端口访问网页。&lt;br /&gt;
如果能，那么恭喜你🎉，网站成功被 Cloudflare 代理并自动重写到了目标端口！
:::&lt;/p&gt;
</content:encoded></item><item><title>NixOS安装指南</title><link>https://blog.suichyan.top/posts/nixos_install/</link><guid isPermaLink="true">https://blog.suichyan.top/posts/nixos_install/</guid><description>折腾完arch就想来玩玩nixos，简直是梦中情os</description><pubDate>Fri, 06 Feb 2026 23:33:00 GMT</pubDate><content:encoded>&lt;h2&gt;Windows安装前准备&lt;/h2&gt;
&lt;hr /&gt;
&lt;h3&gt;调整时间设置&lt;/h3&gt;
&lt;p&gt;:::note[关于时间错乱]
Linux把主板时间改成标准UTC时间，然后根据系统设置的时区对UTC时间进行加减后显示出来。Windows直接读取主板时间显示出来，所以此时你Windows显示的时间就变成了UTC时间，表面上看就像是windows时间错乱了。
:::&lt;/p&gt;
&lt;p&gt;PowerShell &lt;strong&gt;管理员&lt;/strong&gt;权限运行：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Reg add HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation /v RealTimeIsUniversal /t REG_DWORD /d 1
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;进入Live CD&lt;/h2&gt;
&lt;hr /&gt;
&lt;p&gt;默认无密码自动登录，使用命令切换到root用户：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo -i
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;连接网络&lt;/h3&gt;
&lt;p&gt;安装过程&lt;strong&gt;几乎肯定&lt;/strong&gt;需要有效的网络连接。 无网络的安装是可行的, 但是可用的软件包集合是受限的。&lt;/p&gt;
&lt;h4&gt;有线网络&lt;/h4&gt;
&lt;p&gt;使用网线连接电脑，亦或是使用USB共享网络&lt;br /&gt;
使用命令确认网络连接：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ip a #查看网络连接信息
ping bilibili.com -c 4 # 确认网络正常
ping 119.29.29.29 -c 4  # 腾讯 DNSPod，不通请检查网络连接
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;WiFi连接&lt;/h4&gt;
&lt;p&gt;NixOS 默认使用&lt;code&gt;wpa_supplicant&lt;/code&gt;作为无线守护程序。&lt;br /&gt;
使用命令进入：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo systemctl start wpa_supplicant  # 启动服务
sudo wpa_cli  # 进入 wpa 命令行交互模式
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;接着进入交互模式：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;gt; add_network
0
&amp;gt; set_network 0 ssid &quot;你家 WIFI 的 SSID&quot;
OK
&amp;gt; set_network 0 psk &quot;WIFI 密码&quot;
OK
&amp;gt; set_network 0 key_mgmt WPA-PSK
OK
&amp;gt; enable_network 0
OK
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;如果你成功连接，执行完如上的命令后你将得到类似下面的一条message：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;3&amp;gt;CTRL-EVENT-CONNECTED - Connection to 32:85:ab:ef:24:5c completed [id=0 id_str=]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这个时候你就可以通过&lt;code&gt;quit&lt;/code&gt;命令来退出&lt;code&gt;wpa_cli&lt;/code&gt;。&lt;br /&gt;
再次检测网络连接：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ip a #查看网络连接信息
ping bilibili.com -c 4 # 确认网络正常
ping 119.29.29.29 -c 4  # 腾讯 DNSPod，不通请检查网络连接
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;更换频道&lt;/h3&gt;
&lt;p&gt;:::note[关于 Flake 与国内网络]
由于 Flake 使用 Git 仓库 URL 作为 inputs，较难直接使用国内的 Channel 镜像。因此在我们尚未配置好完美的代理环境前，本指南暂时不使用 Flake，以免因为网络问题卡在半路。
:::&lt;/p&gt;
&lt;p&gt;:::warning[警告]
在订阅系统版本时请指定系统版本，一般指定当前的最新稳定版。
:::&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;nix-channel --add https://mirrors.ustc.edu.cn/nix-channels/nixos-25.11 nixos
nix-channel --update  # 更新并解包频道
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;分区与格式化&lt;/h3&gt;
&lt;p&gt;NixOS 安装程序附带多种分区工具。&lt;br /&gt;
以下示例使用&lt;code&gt;cfdisk&lt;/code&gt;，但也提供&lt;code&gt;fdisk&lt;/code&gt;、&lt;code&gt;gdisk&lt;/code&gt;、&lt;code&gt;parted&lt;/code&gt;和&lt;code&gt;cgdisk&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;首先，我们使用&lt;code&gt;lsblk&lt;/code&gt;命令查看分区情况：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;lsblk -pf  #查看当前分区情况
fdisk -l /dev/想要查询详细情况的硬盘  #小写字母l，查看详细分区信息
cfdisk /dev/nvme0n1 #选择自己要使用的硬盘进行分区
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;格式化分区&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;再次查看分区情况&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;lsblk -pf #查看分区情况
fdisk -l /dev/想要查询详细情况的硬盘  #小写字母l，查看详细分区信息
&lt;/code&gt;&lt;/pre&gt;
&lt;ol&gt;
&lt;li&gt;格式化efi分区&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;mkfs.fat -F 32 /dev/nvme0n1p1（EFI分区名）
&lt;/code&gt;&lt;/pre&gt;
&lt;ol&gt;
&lt;li&gt;格式化btrfs根分区&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;mkfs.btrfs /dev/nvme0n1p2（根分区名）
#加上-f参数可以强制格式化
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;创建btrfs子卷&lt;/h4&gt;
&lt;p&gt;:::note[什么是 Btrfs 子卷？]
&lt;strong&gt;子卷&lt;/strong&gt;是 Btrfs 的一个重要特性，主要用于快照管理。通常至少要创建 root 子卷（存放系统文件）和 home 子卷（存放用户文件），根据命名规范取名为 &lt;code&gt;@&lt;/code&gt; 和 &lt;code&gt;@home&lt;/code&gt;。由于这两者是平级关系，所以创建 &lt;code&gt;@&lt;/code&gt; 的快照时不会包含 &lt;code&gt;@home&lt;/code&gt;。这样就可以做到单独恢复系统文件，而不影响用户数据。
:::&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;挂载&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;mount -t btrfs /dev/nvme0n1p2（根分区名） /mnt
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;创建子卷&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;btrfs subvolume create /mnt/@root
btrfs subvolume create /mnt/@home
btrfs subvolume create /mnt/@nix
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;可选：确认&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;btrfs subvolume list -p /mnt
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;取消挂载，因为我们要重新挂载子卷：&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;umount /mnt
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;正式挂载&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;挂载root子卷&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;mount -o subvol=@root,compress-force=zstd /dev/nvme0n1p2 /mnt
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;:::tip[压缩算法选择]
使用 compress-force 而不是 compress，是因为前者会让 Zstd 算法自己判断是否可压缩，这比内核自带的快速启发式检查（compress）压缩率更高。如果您的磁盘空间非常有限，可以指定一个更高的压缩等级，例如 compress-force=zstd:7。Zstd 可选的等级范围是 -15 (快) 到 15 (慢，高压缩率)，默认是 3。
:::&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;挂载home子卷&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;mount --mkdir -o subvol=@home,compress-force=zstd /dev/nvme0n1p2 /mnt/home
&lt;/code&gt;&lt;/pre&gt;
&lt;ol&gt;
&lt;li&gt;挂载nix子卷&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;mount --mkdir -o subvol=@nix,noatime,compress-force=zstd /dev/nvme0n1p2 /mnt/nix
&lt;/code&gt;&lt;/pre&gt;
&lt;ol&gt;
&lt;li&gt;挂载efi分区（ESP）&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;mount --mkdir /dev/nvme0n1p1 /mnt/efi
&lt;/code&gt;&lt;/pre&gt;
&lt;ol&gt;
&lt;li&gt;复查挂载情况&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;df -h
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;编辑系统配置&lt;/h3&gt;
&lt;p&gt;使用以下命令生成基础配置：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;nixos-generate-config --root /mnt
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;:::tip[用户密码准备]
马上我们要编辑系统的核心配置，如果你不想配置好系统启动后无法登录，我们需要提前生成密码哈希值：
:::&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;mkpasswd -m sha-512
&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;注意：&lt;/strong&gt; 运行后输入你的密码，它会输出一串极其复杂的哈希字符串（例如 &lt;code&gt;$6$F...&lt;/code&gt;），请把这串字符&lt;strong&gt;复制或拍照记录下来&lt;/strong&gt;，下一步编辑配置时会用到！&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;然后编辑配置：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;nano /mnt/etc/nixos/configuration.nix
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;{ config, lib, pkgs, ...}:
{
    imports = [ ./hardware-configuration.nix ];
    boot.loader = {
        grub = {
            enable = true; #启用GRUB
            default = &quot;saved&quot;;
            device = &quot;nodev&quot;; # `nodev`表示将生成一个 GRUB 引导菜单，但不会实际安装 GRUB。
            efiSupport = true; #启用EFI支持
            useOSProber = true; # 使用OSprober搜索其他系统
            extraConfig = &apos;&apos;
                GRUB_SAVEDEFAULT=true
            &apos;&apos;;
        };
        efi = {
            canTouchEfiVariables = true;
            efiSysMountPoint = &quot;/efi&quot;;
        };
    };
    networking = {
        hostName = &quot;NixOS&quot;;
        networkmanager.enable = true;
    };

    time.timeZone = &quot;Asia/Shanghai&quot;;
    i18n.defaultLocale = &quot;en_US.UTF-8&quot;;

    # ==== Display Manager ====
    services.greetd.enable = true;
    services.greetd.settings = {
        default_session = {
            command = &quot;${pkgs.greetd.tuigreet}/bin/tuigreet --cmd niri&quot;;
            user = &quot;greeter&quot;;
        };
    };

    # ==== Window Manager ====
    programs.niri.enable = true;

    # ==== Audio ====
    services.pipewire = {
        enable = true;
        alsa.enable = true;
        alsa.support32Bit = true;  # 需要 32 位音频支持可保留
        pulse.enable = true;       # 兼容 PulseAudio
        jack.enable = true;        # 需要 JACK 可保留，不需要可删
    };

    # ==== User ====
    users.mutableUsers = false; # 让用户完全由配置控制
    users.users.sui = {
        isNormalUser = true;
        hashedPassword = &quot;$6$F1JgV....$kK1R3z....&quot;;
        extraGroups = [ &quot;wheel&quot; &quot;networkmanager&quot; ];
    };

    environment.systemPackages = with pkgs; [
        neovim
    ];

    nix.settings.substituters = [ &quot;https://mirrors.ustc.edu.cn/nix-channels/store&quot; ];
    system.stateVersion = &quot;25.11&quot;;  # 不要改动
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;对于&lt;code&gt;hardware-configuration.nix&lt;/code&gt;不需要太多改动。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;先获取分区&lt;code&gt;uuid&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;blkid
&lt;/code&gt;&lt;/pre&gt;
&lt;ol&gt;
&lt;li&gt;填入各子卷的挂载参数以及uuid修改/boot为/efi&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;# 省略其余配置
fileSystem = {
            &quot;/&quot; = {
                device = &quot;...&quot;;
                fsType = &quot;btrfs&quot;;
                options = [ &quot;subvol=@root&quot; &quot;compress-force=zstd&quot; ];
            };
            &quot;/home&quot; = {
                device = &quot;...&quot;;
                fsType = &quot;btrfs&quot;;
                options = [ &quot;subvol=@home&quot; &quot;compress-force=zstd&quot; ];
            };
            &quot;/nix&quot; = {
                device = &quot;...&quot;;
                fsType = &quot;btrfs&quot;;
                options = [ &quot;subvol=@nix&quot; &quot;noatime&quot; &quot;compress-force=zstd&quot; ];
            };
            &quot;/efi&quot; = {
                device = &quot;...&quot;;
                fsType = &quot;vfat&quot;;
            };
# 省略其余配置
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;部署系统&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;sudo nixos-install --option substituters https://mirrors.ustc.edu.cn/nix-channels/store
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;最后只要重启电脑，祈求它能正常进入系统&lt;/p&gt;
</content:encoded></item></channel></rss>