[{"content":"若说到当代编程领域的神教，我会想起这3样：Rust、Arch Linux以及Nix。这3个神教都得有一些魔力，吸引信徒虔诚追随。本文会先介绍一些Nix入门概念和学习指引，然后讲解一些实用的Nix写法，最后会探讨一下Nix的原理。\n介绍 你可以按照Download | Nix \u0026amp; NixOS中描述的安装Nix，推荐使用multi-user installation。安装后，我们通常会编辑/etc/nix/nix.conf开启下面两个实验特性。\n1experimental-features = nix-command flakes 这些特性虽然被标记为“实验”，Nix开发团队并不保证CLI的稳定性。但确实很好用，社区内也已经基于此构造了庞大的生态。后文都会假设这两个选项已经开启。\n作为一个包管理器 让我们来介绍一下Nix吧。Nix是一个包管理器。你可以像apt、yum、pacman那样命令式地安装软件。\n1$ nix profile add nixpkgs#kubectl 这个命令无需用root身份运行，只为当前用户安装软件。当然要真正使用Nix提供的软件，你需要配置一下shell，把~/.nix-profile/bin添加到PATH路径即可。\n1export PATH=~/.nix-profile/bin:$PATH 不同于其他包管理器，Nix支持原子回滚。我们会在后文介绍一下Nix是如何实现这个魔法的。\n1$ nix profile rollback 它还支持你ad-hoc运行一个软件，类似于npx，go run那样。你可以配置上Nix的GC daemon。这样这些ad-hoc下载的软件过一阵子会被垃圾回收。\n1$ nix run nixpkgs#bun 甚至你可以直接运行GitHub上发布的一个软件。当然如果不添加上游二进制源时，Nix会按照仓库中的Nix代码构建整个应用。\n1$ nix run github:nix-community/nixos-anywhere -- --help 自然而然地，你就可以用Nix把所有的依赖都声明在自己的脚本里。只要用户装了Nix，就不用担心脚本中的依赖不存在了。这使得我们可以放心使用bleeding edge的软件。如果还担心软件本身不稳定，你可以修改nix-shell参数，固定nixpkgs版本。这样就相当于固定了所有软件版本，能拥有极致的可复现性。\n1#!/usr/bin/env nix-shell 2#!nix-shell -i nu -p nushell curl 3 4let ip = (^curl -s \u0026#34;https://api.ipify.org?format=json\u0026#34; | from json).ip 5print $\u0026#34;Your IP is ($ip)\u0026#34; 这里提到的nixpkgs是刚才所有命令依赖的一个GitHub仓库。它是个巨大的monorepo，使用Nix代码描述了刚才提到的所有软件的构建方式。\n作为一个编程语言 NixOS介绍","permalink":"https://szp15.com/zh/posts/nix-introduction/","summary":"\u003cp\u003e若说到当代编程领域的神教，我会想起这3样：Rust、Arch Linux以及Nix。这3个神教都得有一些魔力，吸引信徒虔诚追随。本文会先介绍一些Nix入门概念和学习指引，然后讲解一些实用的Nix写法，最后会探讨一下Nix的原理。\u003c/p\u003e","title":"Nix入坑指南"},{"content":"大家好呀！👋 我叫孙子平，本硕毕业于清华大学软件学院。硕士研究方向是静态分析。目前我在佳期投资从事K8s平台相关的开发运维工作。\n这又不知道是我第几次建站了。不过这次，我会对内容有更高的要求。博客的内容计划是原创的技术分享和自己的一些思考。\n从初中开始，我就痴迷于编程，这么多年来可以说是“码耕不辍”。然而在最近一两年AI普及后，我开始感到迷茫。我很难说服自己写博客还有什么意义。当人们可以从AI那里快速地获得精准的答案时，还有人需要阅读博客吗？ 当文章没有读者，只有作者和以之为数据集的AI们时，文章还有意义吗？ 我不知道。\nAnyway，happy coding！Happy learning！\n","permalink":"https://szp15.com/about/","summary":"\u003cp\u003e大家好呀！👋\n我叫孙子平，本硕毕业于清华大学软件学院。硕士研究方向是静态分析。目前我在佳期投资从事K8s平台相关的开发运维工作。\u003c/p\u003e\n\u003cp\u003e这又不知道是我第几次建站了。不过这次，我会对内容有更高的要求。博客的内容计划是\u003cstrong\u003e原创的\u003c/strong\u003e技术分享和自己的一些思考。\u003c/p\u003e\n\u003cp\u003e从初中开始，我就痴迷于编程，这么多年来可以说是“码耕不辍”。然而在最近一两年AI普及后，我开始感到迷茫。我很难说服自己写博客还有什么意义。当人们可以从AI那里快速地获得精准的答案时，还有人需要阅读博客吗？\n当文章没有读者，只有作者和以之为数据集的AI们时，文章还有意义吗？\n我不知道。\u003c/p\u003e\n\u003cp\u003eAnyway，happy coding！Happy learning！\u003c/p\u003e","title":"关于本站"}]