-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathindex.html
378 lines (337 loc) · 41.3 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
<!DOCTYPE HTML>
<html lang="en" class="light" dir="ltr">
<head>
<!-- Book generated using mdBook -->
<meta charset="UTF-8">
<title>📔README.md - Xieby1's Nix/NixOS Config</title>
<!-- Custom HTML head -->
<meta name="description" content="">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="theme-color" content="#ffffff">
<link rel="icon" href="favicon.svg">
<link rel="shortcut icon" href="favicon.png">
<link rel="stylesheet" href="css/variables.css">
<link rel="stylesheet" href="css/general.css">
<link rel="stylesheet" href="css/chrome.css">
<link rel="stylesheet" href="css/print.css" media="print">
<!-- Fonts -->
<link rel="stylesheet" href="FontAwesome/css/font-awesome.css">
<link rel="stylesheet" href="fonts/fonts.css">
<!-- Highlight.js Stylesheets -->
<link rel="stylesheet" href="highlight.css">
<link rel="stylesheet" href="tomorrow-night.css">
<link rel="stylesheet" href="ayu-highlight.css">
<!-- Custom theme stylesheets -->
</head>
<body class="sidebar-visible no-js">
<div id="body-container">
<!-- Provide site root to javascript -->
<script>
var path_to_root = "";
var default_theme = window.matchMedia("(prefers-color-scheme: dark)").matches ? "navy" : "light";
</script>
<!-- Work around some values being stored in localStorage wrapped in quotes -->
<script>
try {
var theme = localStorage.getItem('mdbook-theme');
var sidebar = localStorage.getItem('mdbook-sidebar');
if (theme.startsWith('"') && theme.endsWith('"')) {
localStorage.setItem('mdbook-theme', theme.slice(1, theme.length - 1));
}
if (sidebar.startsWith('"') && sidebar.endsWith('"')) {
localStorage.setItem('mdbook-sidebar', sidebar.slice(1, sidebar.length - 1));
}
} catch (e) { }
</script>
<!-- Set the theme before any content is loaded, prevents flash -->
<script>
var theme;
try { theme = localStorage.getItem('mdbook-theme'); } catch(e) { }
if (theme === null || theme === undefined) { theme = default_theme; }
var html = document.querySelector('html');
html.classList.remove('light')
html.classList.add(theme);
var body = document.querySelector('body');
body.classList.remove('no-js')
body.classList.add('js');
</script>
<input type="checkbox" id="sidebar-toggle-anchor" class="hidden">
<!-- Hide / unhide sidebar before it is displayed -->
<script>
var body = document.querySelector('body');
var sidebar = null;
var sidebar_toggle = document.getElementById("sidebar-toggle-anchor");
if (document.body.clientWidth >= 1080) {
try { sidebar = localStorage.getItem('mdbook-sidebar'); } catch(e) { }
sidebar = sidebar || 'visible';
} else {
sidebar = 'hidden';
}
sidebar_toggle.checked = sidebar === 'visible';
body.classList.remove('sidebar-visible');
body.classList.add("sidebar-" + sidebar);
</script>
<nav id="sidebar" class="sidebar" aria-label="Table of contents">
<div class="sidebar-scrollbox">
<ol class="chapter"><li class="chapter-item expanded affix "><li class="part-title">🏠主页</li><li class="chapter-item expanded "><a href="index.html" class="active"><strong aria-hidden="true">1.</strong> 📔README.md</a></li><li class="chapter-item expanded affix "><li class="part-title">🌏全局配置</li><li class="chapter-item expanded "><a href="config.nix.html"><strong aria-hidden="true">2.</strong> config.nix</a></li><li class="chapter-item expanded "><a href="nix/nix.conf.html"><strong aria-hidden="true">3.</strong> TODO: nix/nix.conf</a></li><li class="chapter-item expanded "><a href="opt.nix.html"><strong aria-hidden="true">4.</strong> opt.nix</a></li><li class="chapter-item expanded affix "><li class="part-title">🖥️系统配置(需sudo,用于NixOS)</li><li class="chapter-item expanded "><a href="system.nix.html"><strong aria-hidden="true">5.</strong> system.nix</a></li><li class="chapter-item expanded "><a href="sys/index.html"><strong aria-hidden="true">6.</strong> sys/</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="sys/cli.nix.html"><strong aria-hidden="true">6.1.</strong> cli.nix</a></li><li class="chapter-item expanded "><a href="sys/gui.nix.html"><strong aria-hidden="true">6.2.</strong> gui.nix.md</a></li><li class="chapter-item expanded "><div><strong aria-hidden="true">6.3.</strong> modules/</div></li><li><ol class="section"><li class="chapter-item expanded "><a href="sys/modules/cachix.nix.html"><strong aria-hidden="true">6.3.1.</strong> cachix.nix.md</a></li></ol></li><li class="chapter-item expanded "><a href="sys/wayland.html"><strong aria-hidden="true">6.4.</strong> Currently, Not Wayland, But X11</a></li></ol></li><li class="chapter-item expanded "><li class="part-title">😺用户配置(无需sudo,用于Nix/NixOS)</li><li class="chapter-item expanded "><a href="home.nix.html"><strong aria-hidden="true">7.</strong> home.nix</a></li><li class="chapter-item expanded "><div><strong aria-hidden="true">8.</strong> usr/</div></li><li><ol class="section"><li class="chapter-item expanded "><a href="usr/cli-extra.nix.html"><strong aria-hidden="true">8.1.</strong> cli-extra.nix: Extra CLI configs (added to minial cli.nix)</a></li><li class="chapter-item expanded "><a href="usr/cli.nix.html"><strong aria-hidden="true">8.2.</strong> cli.nix.md</a></li><li class="chapter-item expanded "><a href="usr/cli/index.html"><strong aria-hidden="true">8.3.</strong> cli/</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="usr/cli/clash.nix.html"><strong aria-hidden="true">8.3.1.</strong> clash.nix.md</a></li><li class="chapter-item expanded "><a href="usr/cli/clashctl.nix.html"><strong aria-hidden="true">8.3.2.</strong> clashctl.nix.md</a></li><li class="chapter-item expanded "><a href="usr/cli/kaleido.nix.html"><strong aria-hidden="true">8.3.3.</strong> kaleido.nix.md</a></li><li class="chapter-item expanded "><a href="usr/cli/ld.html"><strong aria-hidden="true">8.3.4.</strong> binutils's ld and gcc's ld collsion</a></li><li class="chapter-item expanded "><a href="usr/cli/node.html"><strong aria-hidden="true">8.3.5.</strong> Nodejs packages (npm) in NixOS</a></li><li class="chapter-item expanded "><a href="usr/cli/pandora-chatgpt.html"><strong aria-hidden="true">8.3.6.</strong> 打包python(pip)包,以pandora-chatgpt为例</a></li><li class="chapter-item expanded "><a href="usr/cli/pandora-chatgpt.nix.html"><strong aria-hidden="true">8.3.7.</strong> pandora-chatgpt.nix.md</a></li><li class="chapter-item expanded "><a href="usr/cli/python.html"><strong aria-hidden="true">8.3.8.</strong> Python in Nix/NixOS</a></li><li class="chapter-item expanded "><a href="usr/cli/searxng.nix.html"><strong aria-hidden="true">8.3.9.</strong> searxng.nix.md</a></li><li class="chapter-item expanded "><a href="usr/cli/static_qemu.html"><strong aria-hidden="true">8.3.10.</strong> 静态链接,以qemu为例</a></li><li class="chapter-item expanded "><a href="usr/cli/tailscale.html"><strong aria-hidden="true">8.3.11.</strong> Tailscale/Headscale</a></li><li class="chapter-item expanded "><a href="usr/cli/tailscale.nix.html"><strong aria-hidden="true">8.3.12.</strong> tailscale.nix.md</a></li><li class="chapter-item expanded "><a href="usr/cli/tmux.nix.html"><strong aria-hidden="true">8.3.13.</strong> tmux</a></li><li class="chapter-item expanded "><a href="usr/cli/vim/index.html"><strong aria-hidden="true">8.3.14.</strong> 📑neovim</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="usr/cli/vim/DrawIt.nix.html"><strong aria-hidden="true">8.3.14.1.</strong> DrawIt: ascii art drawing</a></li><li class="chapter-item expanded "><a href="usr/cli/vim/codecompanion-nvim.nix.html"><strong aria-hidden="true">8.3.14.2.</strong> codecompanion-nvim.nix.md</a></li><li class="chapter-item expanded "><a href="usr/cli/vim/color-scheme.nix.html"><strong aria-hidden="true">8.3.14.3.</strong> 🎨My nvim color scheme</a></li><li class="chapter-item expanded "><a href="usr/cli/vim/conform-nvim.nix.html"><strong aria-hidden="true">8.3.14.4.</strong> conform-nvim: formatter</a></li><li class="chapter-item expanded "><a href="usr/cli/vim/default.nix.html"><strong aria-hidden="true">8.3.14.5.</strong> default.nix.md</a></li><li class="chapter-item expanded "><a href="usr/cli/vim/git-wip.nix.html"><strong aria-hidden="true">8.3.14.6.</strong> git-wip: auto wip branch</a></li><li class="chapter-item expanded "><a href="usr/cli/vim/gitsigns-nvim.nix.html"><strong aria-hidden="true">8.3.14.7.</strong> gitsigns-nvim: git support</a></li><li class="chapter-item expanded "><a href="usr/cli/vim/hbac-nvim.nix.html"><strong aria-hidden="true">8.3.14.8.</strong> hbac-nvim: auto close buffer</a></li><li class="chapter-item expanded "><a href="usr/cli/vim/leap-nvim.nix.html"><strong aria-hidden="true">8.3.14.9.</strong> leap-nvim.nix.md</a></li><li class="chapter-item expanded "><a href="usr/cli/vim/mini-nvim.nix.html"><strong aria-hidden="true">8.3.14.10.</strong> mini-nvim: a nvim distro</a></li><li class="chapter-item expanded "><a href="usr/cli/vim/nvim-cmp.nix.html"><strong aria-hidden="true">8.3.14.11.</strong> nvim-cmp: completion</a></li><li class="chapter-item expanded "><a href="usr/cli/vim/nvim-config-local.nix.html"><strong aria-hidden="true">8.3.14.12.</strong> nvim-config-local: load local vim config</a></li><li class="chapter-item expanded "><a href="usr/cli/vim/nvim-lspconfig.nix.html"><strong aria-hidden="true">8.3.14.13.</strong> nvim-lspconfig</a></li><li class="chapter-item expanded "><div><strong aria-hidden="true">8.3.14.14.</strong> nvim-metals/</div></li><li><ol class="section"><li class="chapter-item expanded "><a href="usr/cli/vim/nvim-metals/default.nix.html"><strong aria-hidden="true">8.3.14.14.1.</strong> nvim-metals: Scala LSP</a></li><li class="chapter-item expanded "><a href="usr/cli/vim/nvim-metals/jre_with_proxy.nix.html"><strong aria-hidden="true">8.3.14.14.2.</strong> JRE with Proxy</a></li></ol></li><li class="chapter-item expanded "><a href="usr/cli/vim/nvim-treesitter.nix.html"><strong aria-hidden="true">8.3.14.15.</strong> nvim-treesitter: languages parsing</a></li><li class="chapter-item expanded "><a href="usr/cli/vim/smartyank-nvim.nix.html"><strong aria-hidden="true">8.3.14.16.</strong> smartyank-nvim: smart yank to clipboard</a></li><li class="chapter-item expanded "><a href="usr/cli/vim/telescope-nvim.nix.html"><strong aria-hidden="true">8.3.14.17.</strong> telescope-nvim</a></li><li class="chapter-item expanded "><a href="usr/cli/vim/vim-easy-align.nix.html"><strong aria-hidden="true">8.3.14.18.</strong> vim-easy-align: A simple, easy-to-use Vim alignment plugin.</a></li><li class="chapter-item expanded "><a href="usr/cli/vim/vim-floaterm.nix.html"><strong aria-hidden="true">8.3.14.19.</strong> vim-floaterm: floating terminal</a></li><li class="chapter-item expanded "><a href="usr/cli/vim/vim-hexokinase.nix.html"><strong aria-hidden="true">8.3.14.20.</strong> vim-hexokinase: display colors</a></li><li class="chapter-item expanded "><a href="usr/cli/vim/vim-mark.nix.html"><strong aria-hidden="true">8.3.14.21.</strong> vim-mark: multi-color highlight</a></li><li class="chapter-item expanded "><a href="usr/cli/vim/vim-markdown.nix.html"><strong aria-hidden="true">8.3.14.22.</strong> vim-markdown: md support</a></li><li class="chapter-item expanded "><a href="usr/cli/vim/vista-vim.nix.html"><strong aria-hidden="true">8.3.14.23.</strong> vista-vim: lsp symbols</a></li><li class="chapter-item expanded "><a href="usr/cli/vim/winshift-nvim.nix.html"><strong aria-hidden="true">8.3.14.24.</strong> winshift-nvim: rearrange windows</a></li></ol></li></ol></li><li class="chapter-item expanded "><a href="usr/gui.nix.html"><strong aria-hidden="true">8.4.</strong> gui.nix.md</a></li><li class="chapter-item expanded "><a href="usr/gui/index.html"><strong aria-hidden="true">8.5.</strong> gui/</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="usr/gui/feishu.html"><strong aria-hidden="true">8.5.1.</strong> 安装deb包,以飞书为例</a></li><li class="chapter-item expanded "><a href="usr/gui/firefox.nix.html"><strong aria-hidden="true">8.5.2.</strong> firefox.nix.md</a></li><li class="chapter-item expanded "><a href="usr/gui/gnome.html"><strong aria-hidden="true">8.5.3.</strong> Gnome in NixOS</a></li><li class="chapter-item expanded "><a href="usr/gui/gnome.nix.html"><strong aria-hidden="true">8.5.4.</strong> gnome.nix.md</a></li><li class="chapter-item expanded "><a href="usr/gui/kdeconnect.nix.html"><strong aria-hidden="true">8.5.5.</strong> KDE Connect</a></li><li class="chapter-item expanded "><a href="usr/gui/mime.nix.html"><strong aria-hidden="true">8.5.6.</strong> https://nixos.org/manual/nixos/stable/#sec-writing-modules</a></li><li class="chapter-item expanded "><a href="usr/gui/rofi.nix.html"><strong aria-hidden="true">8.5.7.</strong> rofi.nix.md</a></li><li class="chapter-item expanded "><a href="usr/gui/rustdesk.nix.html"><strong aria-hidden="true">8.5.8.</strong> rustdesk, the remote desktop app</a></li><li class="chapter-item expanded "><a href="usr/gui/singleton_web_apps.nix.html"><strong aria-hidden="true">8.5.9.</strong> singleton_web_apps.nix.md</a></li><li class="chapter-item expanded "><a href="usr/gui/terminal.nix.html"><strong aria-hidden="true">8.5.10.</strong> terminal.nix.md</a></li><li class="chapter-item expanded "><a href="usr/gui/typora.html"><strong aria-hidden="true">8.5.11.</strong> Typora</a></li><li class="chapter-item expanded "><a href="usr/gui/waydroid.html"><strong aria-hidden="true">8.5.12.</strong> Wayland</a></li><li class="chapter-item expanded "><a href="usr/gui/weixin.nix.html"><strong aria-hidden="true">8.5.13.</strong> weixin.nix.md</a></li><li class="chapter-item expanded "><a href="usr/gui/wrapWine.nix.html"><strong aria-hidden="true">8.5.14.</strong> based on https://github.com/lucasew/nixcfg/blob/49d44c1a655f1c20d7354ecea942c78704067d50/pkgs/wrapWine.nix</a></li><li class="chapter-item expanded "><a href="usr/gui/xdot.nix.html"><strong aria-hidden="true">8.5.15.</strong> xdot, the dot (graphviz) viewer</a></li><li class="chapter-item expanded "><a href="usr/gui/xelfviewer.nix.html"><strong aria-hidden="true">8.5.16.</strong> xelfviewer.nix.md</a></li></ol></li><li class="chapter-item expanded "><div><strong aria-hidden="true">8.6.</strong> modules/</div></li><li><ol class="section"><li class="chapter-item expanded "><a href="usr/modules/cachix.nix.html"><strong aria-hidden="true">8.6.1.</strong> cachix.nix.md</a></li></ol></li></ol></li><li class="chapter-item expanded "><li class="part-title">🤖安卓配置(无需sudo,复用"用户配置")</li><li class="chapter-item expanded "><a href="nix-on-droid.nix.html"><strong aria-hidden="true">9.</strong> nix-on-droid.nix</a></li><li class="chapter-item expanded affix "><li class="part-title">🔩通用模块</li><li class="chapter-item expanded "><div><strong aria-hidden="true">10.</strong> modules/</div></li><li><ol class="section"><li class="chapter-item expanded "><a href="modules/cachix.nix.html"><strong aria-hidden="true">10.1.</strong> cachix.nix.md</a></li></ol></li><li class="chapter-item expanded "><li class="part-title">📝文档和心得体会</li><li class="chapter-item expanded "><div><strong aria-hidden="true">11.</strong> docs/</div></li><li><ol class="section"><li class="chapter-item expanded "><a href="docs/explanation/index.html"><strong aria-hidden="true">11.1.</strong> explanation/</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="docs/explanation/modules.html"><strong aria-hidden="true">11.1.1.</strong> Module</a></li><li class="chapter-item expanded "><a href="docs/explanation/nixpkgs.html"><strong aria-hidden="true">11.1.2.</strong> Nixpkgs</a></li></ol></li><li class="chapter-item expanded "><a href="docs/howto/index.html"><strong aria-hidden="true">11.2.</strong> howto/</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="docs/howto/32bit.html"><strong aria-hidden="true">11.2.1.</strong> 打包/编译32位程序</a></li><li class="chapter-item expanded "><a href="docs/howto/auto_push_to_cachix/index.html"><strong aria-hidden="true">11.2.2.</strong> Auto Push Packages to Cachix</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="docs/howto/auto_push_to_cachix/cachix-package.nix.html"><strong aria-hidden="true">11.2.2.1.</strong> cachixPackage</a></li><li class="chapter-item expanded "><a href="docs/howto/auto_push_to_cachix/test.nix.html"><strong aria-hidden="true">11.2.2.2.</strong> Test for cachixPackage</a></li></ol></li><li class="chapter-item expanded "><a href="docs/howto/backup_binary_cache.html"><strong aria-hidden="true">11.2.3.</strong> 备份binary cache</a></li><li class="chapter-item expanded "><a href="docs/howto/cross.html"><strong aria-hidden="true">11.2.4.</strong> 交叉编译和安装跨平台程序</a></li><li class="chapter-item expanded "><a href="docs/howto/install_nixos.html"><strong aria-hidden="true">11.2.5.</strong> 安装NixOS</a></li></ol></li><li class="chapter-item expanded "><a href="docs/slides/index.html"><strong aria-hidden="true">11.3.</strong> slides/</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="docs/slides/2023.nix-env.html"><strong aria-hidden="true">11.3.1.</strong> Nix让你的团队成员不再受环境问题困扰</a></li></ol></li></ol></li><li class="chapter-item expanded "><li class="part-title">📃Nix脚本(nix-shell和打包)</li><li class="chapter-item expanded "><div><strong aria-hidden="true">12.</strong> scripts/</div></li><li><ol class="section"><li class="chapter-item expanded "><a href="scripts/fhs-shell/index.html"><strong aria-hidden="true">12.1.</strong> fhs-shell/</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="scripts/fhs-shell/dynamorio.nix.html"><strong aria-hidden="true">12.1.1.</strong> dynamorio.nix.md</a></li><li class="chapter-item expanded "><a href="scripts/fhs-shell/hello.nix.html"><strong aria-hidden="true">12.1.2.</strong> hello.nix.md</a></li><li class="chapter-item expanded "><a href="scripts/fhs-shell/pin.nix.html"><strong aria-hidden="true">12.1.3.</strong> pin.nix.md</a></li><li class="chapter-item expanded "><a href="scripts/fhs-shell/spec.nix.html"><strong aria-hidden="true">12.1.4.</strong> spec.nix.md</a></li><li class="chapter-item expanded "><a href="scripts/fhs-shell/x11.nix.html"><strong aria-hidden="true">12.1.5.</strong> x11.nix.md</a></li><li class="chapter-item expanded "><a href="scripts/fhs-shell/xilinx.nix.html"><strong aria-hidden="true">12.1.6.</strong> xilinx.nix.md</a></li></ol></li><li class="chapter-item expanded "><a href="scripts/pkgs/index.html"><strong aria-hidden="true">12.2.</strong> pkgs/</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="scripts/pkgs/7z.nix.html"><strong aria-hidden="true">12.2.1.</strong> TODO: 7z need dynamical link 7z.so</a></li><li class="chapter-item expanded "><a href="scripts/pkgs/android.html"><strong aria-hidden="true">12.2.2.</strong> 在NixOS上使用Android程序</a></li><li class="chapter-item expanded "><a href="scripts/pkgs/android.nix.html"><strong aria-hidden="true">12.2.3.</strong> android.nix.md</a></li><li class="chapter-item expanded "><a href="scripts/pkgs/appimage_runtime.nix.html"><strong aria-hidden="true">12.2.4.</strong> appimage_runtime.nix.md</a></li><li class="chapter-item expanded "><a href="scripts/pkgs/coremarks.nix.html"><strong aria-hidden="true">12.2.5.</strong> coremarks.nix.md</a></li><li class="chapter-item expanded "><a href="scripts/pkgs/cross_mips.nix.html"><strong aria-hidden="true">12.2.6.</strong> cross_mips.nix.md</a></li><li class="chapter-item expanded "><a href="scripts/pkgs/cross_static_hello.nix.html"><strong aria-hidden="true">12.2.7.</strong> cross_static_hello.nix.md</a></li><li class="chapter-item expanded "><a href="scripts/pkgs/fhs_helloworld.nix.html"><strong aria-hidden="true">12.2.8.</strong> fhs_helloworld.nix.md</a></li><li class="chapter-item expanded "><a href="scripts/pkgs/fhs_spec2000_perl.nix.html"><strong aria-hidden="true">12.2.9.</strong> fhs_spec2000_perl.nix.md</a></li><li class="chapter-item expanded "><a href="scripts/pkgs/nix-binary-tarballs-new.nix.html"><strong aria-hidden="true">12.2.10.</strong> nix-binary-tarballs-new.nix.md</a></li><li class="chapter-item expanded "><a href="scripts/pkgs/nix-binary-tarballs.nix.html"><strong aria-hidden="true">12.2.11.</strong> nix-binary-tarballs.nix.md</a></li><li class="chapter-item expanded "><div><strong aria-hidden="true">12.2.12.</strong> nix-docker-isa/</div></li><li><ol class="section"><li class="chapter-item expanded "><a href="scripts/pkgs/nix-docker-isa/default.nix.html"><strong aria-hidden="true">12.2.12.1.</strong> 🐳Nix Docker🐋 for Multiple ISAs</a></li><li class="chapter-item expanded "><a href="scripts/pkgs/nix-docker-isa/dockers.nix.html"><strong aria-hidden="true">12.2.12.2.</strong> dockers.nix.md</a></li></ol></li><li class="chapter-item expanded "><a href="scripts/pkgs/nvchad.nix.html"><strong aria-hidden="true">12.2.13.</strong> nvchad.nix.md</a></li><li class="chapter-item expanded "><a href="scripts/pkgs/qemu-sys-static.nix.html"><strong aria-hidden="true">12.2.14.</strong> qemu-sys-static.nix.md</a></li><li class="chapter-item expanded "><a href="scripts/pkgs/qemu-sys_riscv64_static.nix.html"><strong aria-hidden="true">12.2.15.</strong> qemu-sys_riscv64_static.nix.md</a></li><li class="chapter-item expanded "><a href="scripts/pkgs/qemu_riscv64_static.nix.html"><strong aria-hidden="true">12.2.16.</strong> qemu_riscv64_static.nix.md</a></li><li class="chapter-item expanded "><a href="scripts/pkgs/qemu_static.nix.html"><strong aria-hidden="true">12.2.17.</strong> qemu_static.nix.md</a></li><li class="chapter-item expanded "><a href="scripts/pkgs/qemu_tests_tcg.nix.html"><strong aria-hidden="true">12.2.18.</strong> qemu_tests_tcg.nix.md</a></li><li class="chapter-item expanded "><a href="scripts/pkgs/qemus.nix.html"><strong aria-hidden="true">12.2.19.</strong> build by version</a></li><li class="chapter-item expanded "><a href="scripts/pkgs/shellinabox.nix.html"><strong aria-hidden="true">12.2.20.</strong> https://github.com/NixOS/nixpkgs/issues/185773</a></li></ol></li><li class="chapter-item expanded "><a href="scripts/shell/index.html"><strong aria-hidden="true">12.3.</strong> shell/</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="scripts/shell/ccache.nix.html"><strong aria-hidden="true">12.3.1.</strong> ccache.nix.md</a></li><li class="chapter-item expanded "><a href="scripts/shell/chipyard.nix.html"><strong aria-hidden="true">12.3.2.</strong> chipyard.nix.md</a></li><li class="chapter-item expanded "><a href="scripts/shell/cross_mips.nix.html"><strong aria-hidden="true">12.3.3.</strong> cross_mips.nix.md</a></li><li class="chapter-item expanded "><a href="scripts/shell/cross_platform.nix.html"><strong aria-hidden="true">12.3.4.</strong> cross_platform.nix.md</a></li><li class="chapter-item expanded "><a href="scripts/shell/devshell_hello.nix.html"><strong aria-hidden="true">12.3.5.</strong> devshell_hello.nix.md</a></li><li class="chapter-item expanded "><a href="scripts/shell/gcc.nix.html"><strong aria-hidden="true">12.3.6.</strong> gcc.nix.md</a></li><li class="chapter-item expanded "><a href="scripts/shell/hello.nix.html"><strong aria-hidden="true">12.3.7.</strong> hello.nix.md</a></li><li class="chapter-item expanded "><a href="scripts/shell/pygame.nix.html"><strong aria-hidden="true">12.3.8.</strong> pygame.nix.md</a></li><li class="chapter-item expanded "><a href="scripts/shell/python_fhs_venv.nix.html"><strong aria-hidden="true">12.3.9.</strong> https://nixos.wiki/wiki/Python</a></li><li class="chapter-item expanded "><a href="scripts/shell/python_mach.nix.html"><strong aria-hidden="true">12.3.10.</strong> python_mach.nix.md</a></li><li class="chapter-item expanded "><a href="scripts/shell/python_venv.nix.html"><strong aria-hidden="true">12.3.11.</strong> python_venv.nix.md</a></li><li class="chapter-item expanded "><a href="scripts/shell/qemu_plugins.nix.html"><strong aria-hidden="true">12.3.12.</strong> qemu_plugins.nix.md</a></li><li class="chapter-item expanded "><a href="scripts/shell/qemu_tests_tcg.nix.html"><strong aria-hidden="true">12.3.13.</strong> qemu_tests_tcg.nix.md</a></li><li class="chapter-item expanded "><a href="scripts/shell/riscv-tests.nix.html"><strong aria-hidden="true">12.3.14.</strong> riscv-tests.nix.md</a></li><li class="chapter-item expanded "><a href="scripts/shell/spike.nix.html"><strong aria-hidden="true">12.3.15.</strong> spike.nix.md</a></li><li class="chapter-item expanded "><a href="scripts/shell/texlive.nix.html"><strong aria-hidden="true">12.3.16.</strong> texlive.nix.md</a></li><li class="chapter-item expanded "><a href="scripts/shell/ucasproposal.nix.html"><strong aria-hidden="true">12.3.17.</strong> ucasproposal.nix.md</a></li><li class="chapter-item expanded "><a href="scripts/shell/v8.nix.html"><strong aria-hidden="true">12.3.18.</strong> v8.nix.md</a></li><li class="chapter-item expanded "><a href="scripts/shell/venv.nix.html"><strong aria-hidden="true">12.3.19.</strong> venv.nix.md</a></li><li class="chapter-item expanded "><a href="scripts/shell/wine6.nix.html"><strong aria-hidden="true">12.3.20.</strong> wine6.nix.md</a></li><li class="chapter-item expanded "><a href="scripts/shell/xiangshan.nix.html"><strong aria-hidden="true">12.3.21.</strong> xiangshan.nix.md</a></li></ol></li></ol></li><li class="chapter-item expanded "><li class="part-title">📌其他</li><li class="chapter-item expanded "><a href="shell.nix.html"><strong aria-hidden="true">13.</strong> shell.nix</a></li></ol>
</div>
<div id="sidebar-resize-handle" class="sidebar-resize-handle"></div>
</nav>
<!-- Track and set sidebar scroll position -->
<script>
var sidebarScrollbox = document.querySelector('#sidebar .sidebar-scrollbox');
sidebarScrollbox.addEventListener('click', function(e) {
if (e.target.tagName === 'A') {
sessionStorage.setItem('sidebar-scroll', sidebarScrollbox.scrollTop);
}
}, { passive: true });
var sidebarScrollTop = sessionStorage.getItem('sidebar-scroll');
sessionStorage.removeItem('sidebar-scroll');
if (sidebarScrollTop) {
// preserve sidebar scroll position when navigating via links within sidebar
sidebarScrollbox.scrollTop = sidebarScrollTop;
} else {
// scroll sidebar to current active section when navigating via "next/previous chapter" buttons
var activeSection = document.querySelector('#sidebar .active');
if (activeSection) {
activeSection.scrollIntoView({ block: 'center' });
}
}
</script>
<div id="page-wrapper" class="page-wrapper">
<div class="page">
<div id="menu-bar-hover-placeholder"></div>
<div id="menu-bar" class="menu-bar sticky">
<div class="left-buttons">
<label id="sidebar-toggle" class="icon-button" for="sidebar-toggle-anchor" title="Toggle Table of Contents" aria-label="Toggle Table of Contents" aria-controls="sidebar">
<i class="fa fa-bars"></i>
</label>
<button id="theme-toggle" class="icon-button" type="button" title="Change theme" aria-label="Change theme" aria-haspopup="true" aria-expanded="false" aria-controls="theme-list">
<i class="fa fa-paint-brush"></i>
</button>
<ul id="theme-list" class="theme-popup" aria-label="Themes" role="menu">
<li role="none"><button role="menuitem" class="theme" id="light">Light</button></li>
<li role="none"><button role="menuitem" class="theme" id="rust">Rust</button></li>
<li role="none"><button role="menuitem" class="theme" id="coal">Coal</button></li>
<li role="none"><button role="menuitem" class="theme" id="navy">Navy</button></li>
<li role="none"><button role="menuitem" class="theme" id="ayu">Ayu</button></li>
</ul>
<button id="search-toggle" class="icon-button" type="button" title="Search. (Shortkey: s)" aria-label="Toggle Searchbar" aria-expanded="false" aria-keyshortcuts="S" aria-controls="searchbar">
<i class="fa fa-search"></i>
</button>
</div>
<h1 class="menu-title">Xieby1's Nix/NixOS Config</h1>
<div class="right-buttons">
<a href="print.html" title="Print this book" aria-label="Print this book">
<i id="print-button" class="fa fa-print"></i>
</a>
<a href="https://github.com/xieby1/nix_config" title="Git repository" aria-label="Git repository">
<i id="git-repository-button" class="fa fa-github"></i>
</a>
</div>
</div>
<div id="search-wrapper" class="hidden">
<form id="searchbar-outer" class="searchbar-outer">
<input type="search" id="searchbar" name="searchbar" placeholder="Search this book ..." aria-controls="searchresults-outer" aria-describedby="searchresults-header">
</form>
<div id="searchresults-outer" class="searchresults-outer hidden">
<div id="searchresults-header" class="searchresults-header"></div>
<ul id="searchresults">
</ul>
</div>
</div>
<!-- Apply ARIA attributes after the sidebar and the sidebar toggle button are added to the DOM -->
<script>
document.getElementById('sidebar-toggle').setAttribute('aria-expanded', sidebar === 'visible');
document.getElementById('sidebar').setAttribute('aria-hidden', sidebar !== 'visible');
Array.from(document.querySelectorAll('#sidebar a')).forEach(function(link) {
link.setAttribute('tabIndex', sidebar === 'visible' ? 0 : -1);
});
</script>
<div id="content" class="content">
<main>
<p>🏗️ <em>我的Nix/NixOS配置详细文档正在施工中,完成进度:<span style="font-size:2em;"><strong>44/108</strong></span></em> 🏗️</p>
<p>为了更好的文档阅读体验,请看<a href="https://xieby1.github.io/nix_config/">GitHub Pages</a>的版本。</p>
<h2 id="目录"><a class="header" href="#目录">目录</a></h2>
<!-- vim-markdown-toc GFM -->
<ul>
<li><a href="#nixnixos%E7%AE%80%E4%BB%8B">Nix/NixOS简介</a></li>
<li><a href="#xieby1%E5%92%8Cnixnixos">xieby1和Nix/NixOS</a></li>
<li><a href="#xieby1%E7%9A%84nixnixos%E9%85%8D%E7%BD%AE">xieby1的Nix/NixOS配置</a>
<ul>
<li><a href="#%E6%96%87%E4%BB%B6%E5%A4%B9%E7%BB%93%E6%9E%84">文件夹结构</a></li>
<li><a href="#nix%E8%84%9A%E6%9C%AC%E7%9A%84%E4%BD%BF%E7%94%A8%E6%96%B9%E6%B3%95">nix脚本的使用方法</a>
<ul>
<li><a href="#nix-shell%E7%9A%84%E4%BE%8B%E5%AD%90">nix-shell的例子</a></li>
</ul>
</li>
<li><a href="#nix%E9%85%8D%E7%BD%AE%E7%9A%84%E4%BD%BF%E7%94%A8%E6%96%B9%E6%B3%95">nix配置的使用方法</a></li>
<li><a href="#%E5%BC%95%E7%94%A8">引用</a></li>
</ul>
</li>
</ul>
<!-- vim-markdown-toc -->
<h1 id="nixnixos简介"><a class="header" href="#nixnixos简介">Nix/NixOS简介</a></h1>
<p>Nix是一个可重现的(Reproducible)包管理器,也是一门纯函数式的(Pure Functional)编程语言。
理论上讲,Nix包管理器可以安装在任何Linux发行版上(比如Ubuntu、Debian和Arch等),并与这些发行版原有的包管理器(比如snap、apt和pacman等)共存。
而NixOS则是完全由Nix包管理器进行管理的Linux发行版。</p>
<p>Nix/NixOS采用了“包(Package)”的理念,将Linux内核、驱动、函数库、用户程序、配置文件等方方面面抽象出来。
这类似于Linux内核将设备、磁盘文件、管道等都抽象为文件的理念。
这样的抽象使得Nix/NixOS能以一种统一的方式管理所有的包。</p>
<p>为了防止“包”被用户有意或无意地修改(即保证可重现性),Nix/NixOS将所有的包都放在一个只读文件系统中(挂载在<code>/nix/store</code>目录上)。
这个目录中的包仅能通过Nix包管理器和Nix语言编程进行增删改。
为了将<code>/nix/store</code>中的文件放置在它们应该在的地方(比如某个用户使用的包里存在<code>bin/</code>目录,则应当把bin/中所有的文件放入<code>/run/current-system/sw/bin/</code>),Nix/NixOS大量使用符号链接。</p>
<p>上述Nix/NixOS的特点和传统Linux发行版有着极大的区别。
这使得Nix/NixOS的学习曲线十分陡峭。
不过当你适应Nix/NixOS的这些特点后,它可以极大提升工程效率!</p>
<h1 id="xieby1和nixnixos"><a class="header" href="#xieby1和nixnixos">xieby1和Nix/NixOS</a></h1>
<p>多年来,Nix/NixOS已成为我学习和工作的重要基础,主要用于以下方面:</p>
<ul>
<li>学习Linux。
Nix/NixOS采用了“包(Package)”的理念,将Linux内核、驱动、函数库、用户程序、配置文件等方方面面抽象出来。
通过学习Nix语言,我能够以统一的方式了解Linux系统的各个方面,这是其他工具所无法提供的。</li>
<li>管理环境。
通过使用nix-shell管理所有依赖(包括库、环境变量、配置等),可以避免项目环境重现的问题。
类似的工具还有虚拟机和Docker。
相比使用虚拟机,它更轻量。
相比Docker,它支持可复现构建,采用Nix语言更灵活。
详细可见我于2023年为实验室同学们准备的<a href="https://xieby1.github.io/nix_config/docs/slides/2023.nix-env.html">推荐Nix/NixOS的幻灯片</a>。</li>
<li>备份电脑。
Nix/NixOS能够管理系统、软件及其配置。
虽然Nix/NixOS不直接管理数据,但Nix/NixOS可以很好地管理数据同步软件,比如Syncthing。
因此只要保留着Nix/NixOS的配置文件(由Nix语言编写),就能恢复出一个几乎一模一样<sup class="footnote-reference"><a href="#impure">1</a></sup>的软件环境/操作系统。</li>
</ul>
<h1 id="xieby1的nixnixos配置"><a class="header" href="#xieby1的nixnixos配置">xieby1的Nix/NixOS配置</a></h1>
<p>这个仓库<a href="https://github.com/xieby1/nix_config">Github: xieby1/nix_config</a>里存放着我的Nix/NixOS配置和文档。
该仓库使用nix expression,而非nix flakes;
使用NixOS稳定源(目前版本24.11),而非非稳定源(unstable)。
该仓库的配置在多个平台都可以正常使用:</p>
<ul>
<li>NixOS: QEMU✅,NixOS单系统✅,NixOS+Windows双系统✅</li>
<li>Nix: Linux✅,安卓(nix-on-droid)✅,WSL2✅</li>
</ul>
<p>你可以使用该仓库的配置,配置出完整NixOS操作系统。
也可以使用其中的部分包、模块,扩充自己的Nix/NixOS。
若你不仅只是想安装Nix/NixOS,还想了解更多Nix/NixOS的知识,
欢迎看看这个仓库的文档<a href="https://xieby1.github.io/nix_config">xieby1.github.io/nix_config</a>。</p>
<h2 id="文件夹结构"><a class="header" href="#文件夹结构">文件夹结构</a></h2>
<ul>
<li>docs/: 文档</li>
<li>scripts/: nix脚本
<ul>
<li>fhs-shell/: 采用FHS的nix-shell脚本</li>
<li>shell/: nix-shell脚本</li>
<li>pkgs/: 独立的软件包脚本</li>
</ul>
</li>
<li>system.nix: 系统总体配置(nixos-rebuild的配置)
<ul>
<li>sys/cli.nix: 系统命令行配置</li>
<li>sys/gui.nix: 系统图形配置</li>
<li>modules/: 系统模块</li>
</ul>
</li>
<li>home.nix: 用户总体配置(home-manager的配置)
<ul>
<li>usr/cli.nix: 用户命令行配置</li>
<li>usr/gui.nix: 用户图形配置</li>
<li>modules/: 用户模块</li>
</ul>
</li>
<li>nix-on-droid.nix: 安卓总体配置(nix-on-droid的配置)</li>
<li>modules/: nixos/home-manager通用的模块</li>
</ul>
<h2 id="nix脚本的使用方法"><a class="header" href="#nix脚本的使用方法">nix脚本的使用方法</a></h2>
<p>安装Nix不在此赘述,参考<a href="https://nixos.org/download.html">nixos.org/download.html</a>。</p>
<p>安装完Nix后,下载所需的nix脚本,然后:</p>
<ul>
<li><code>fhs-shell/</code>和<code>shell/</code>脚本用<code>nix-shell</code>命令进入shell环境;</li>
<li><code>pkgs/</code>脚本用<code>nix-build</code>命令生成软件包。</li>
</ul>
<h3 id="nix-shell的例子"><a class="header" href="#nix-shell的例子">nix-shell的例子</a></h3>
<pre><code class="language-bash"># 以xiangshan.nix配置香山开发环境为例
# 进入香山的根目录
cd Xiangshan
# 下载xiangshan.nix脚本,并重命名为shell.nix
wget https://raw.githubusercontent.com/xieby1/nix_config/main/scripts/shell/xiangshan.nix -O shell.nix
# 进入nix shell
nix-shell
</code></pre>
<h2 id="nix配置的使用方法"><a class="header" href="#nix配置的使用方法">nix配置的使用方法</a></h2>
<p>虚拟机/物理机单系统/物理机双系统 安装NixOS 可以参考我两年前的<a href="./docs/howto/install_nixos.html">NixOS安装</a>过程。
安装Nix/NixOS不在此赘述,参考<a href="https://nixos.org/download.html">nixos.org/download.html</a>。</p>
<p>安装完Nix/NixOS后,首先下载我的配置</p>
<pre><code class="language-bash">git clone https://github.com/xieby1/nix_config.git ~/.config/nixpkgs
# [仅NixOS] 在imports中添加system.nix的路径
vim /etc/nixos/configuration.nix
</code></pre>
<p>然后设置软件源,在NixOS中推荐使用<code>sudo</code>。</p>
<ul>
<li>注一:更多其他nix channels参考
<a href="https://nixos.wiki/wiki/Nix_channels">NixOS Wiki: Nix channels</a>
和<a href="https://status.nixos.org/">Nix channel status</a>。</li>
<li>注二:为什么用https://nixos.org/channels/nixos-24.11,
而非https://github.com/NixOS/nixpkgs/archive/release-24.11.tar.gz?
前者包含额外内容,比如programs.command-not-found.dbPath,详细见<code>man configuration.nix</code>。</li>
</ul>
<pre><code class="language-bash"># [对于NixOS]
nix-channel --add https://nixos.org/channels/nixos-24.11 nixos
# [对于Nix]
nix-channel --add https://nixos.org/channels/nixos-24.11 nixpkgs
# 添加home manager源
nix-channel --add https://github.com/nix-community/home-manager/archive/release-24.11.tar.gz home-manager
nix-channel --update
</code></pre>
<p>最后部署配置</p>
<pre><code class="language-bash"># [仅NixOS]
sudo nixos-rebuild switch
# 安装home-manager
nix-shell '<home-manager>' -A install
home-manager switch
</code></pre>
<h2 id="引用"><a class="header" href="#引用">引用</a></h2>
<div class="footnote-definition" id="impure"><sup class="footnote-definition-label">1</sup>
<p>nix 2.8的impure特性和home-manager等会引入一些你几乎察觉不到的差异。</p>
</div>
<div class="footnote-definition" id="doc_thesis"><sup class="footnote-definition-label">2</sup>
<p>Dolstra, Eelco. “The purely functional software deployment model.” (2006).</p>
</div>
<div class="footnote-definition" id="nix-on-droid"><sup class="footnote-definition-label">3</sup>
<p><a href="https://github.com/t184256/nix-on-droid">github.com/t184256/nix-on-droid</a> termux的分支,支持nix。</p>
</div>
</main>
<nav class="nav-wrapper" aria-label="Page navigation">
<!-- Mobile navigation buttons -->
<a rel="next prefetch" href="config.nix.html" class="mobile-nav-chapters next" title="Next chapter" aria-label="Next chapter" aria-keyshortcuts="Right">
<i class="fa fa-angle-right"></i>
</a>
<div style="clear: both"></div>
</nav>
</div>
</div>
<script src="https://utteranc.es/client.js"
repo="xieby1/nix_config"
issue-term="pathname"
theme="github-light"
crossorigin="anonymous"
async>
</script>
<nav class="nav-wide-wrapper" aria-label="Page navigation">
<a rel="next prefetch" href="config.nix.html" class="nav-chapters next" title="Next chapter" aria-label="Next chapter" aria-keyshortcuts="Right">
<i class="fa fa-angle-right"></i>
</a>
</nav>
</div>
<script>
window.playground_copyable = true;
</script>
<script src="elasticlunr.min.js"></script>
<script src="mark.min.js"></script>
<script src="searcher.js"></script>
<script src="clipboard.min.js"></script>
<script src="highlight.js"></script>
<script src="book.js"></script>
<!-- Custom JS scripts -->
</div>
</body>
</html>