Skip to content
Zerlei
Main Navigation homeblogsnavigation

Appearance

Sidebar Navigation

linux

Kwin平铺窗口管理

Nix-包管理的最终解决方案

konsole

linux修改键位映射

nix_os

1-whynix

2-nixlang

plasma桌面

sudo继承普通用户的PATH

ubuntu一次网络故障排查记录

why_linux

中文输入法问题

使用musicfox听网易云音乐

在linux上玩游戏

安装完成qt之后缺少opengl库

终极的zsh

轻量云服务器安装opensusetumbleweed

On this page

Introduction

一个简单的函数式编程语言,专门用来描述nix-package。

lazy evaluation。如果不需要,就不计算。

go https://nix.dev/tutorials/nix-language,nix lang 的语法关键词非常的少,大部分依赖buildin函数。这里写一些有意思的特点。

安装完nix后,使用nix repl进入交互式编程环境。

使用 nix-instantiate --eval <default.nix> 来运行一个文件,--strict 不再lazy,尝试计算所有数值。

Recursive attribute set rec ​

nix

rec {
  one = 1;
  two = one + 1;
  three = two + 1;
}

# 错误!!!
# {
#  one = 1;
#  two = one + 1;
#  three = two + 1;
# }

File system paths ​

因为 nix lang 的主要作用是描述包,那么它对文件系统的路径有很好的支持。

nix

/absolute/paths # 绝对路径

./relative # 相对路径

<nixpkgs> # 这个是一个特殊的路径,表示nixpkgs的路径

Multiple arguments ​

在一个nix函数中,传递多个参数,这个很有意思。

nix
let
  f = x: y: x + y;
in
f 1

上面的将会输出<LAMBDA>

nix
let
  f = x: y: x + y;
in
f 1 2

上面的将会输出3

nix nvim配置。 ​

不管是treesitter还是lsp 和format,都有nix lang 的。

不过我使用的nil_ls 需要完整安装rust,占了好多空间。。。

Pager
Previous page1-whynix
Next pageplasma桌面