Skip to content

zy9306/nix-home

Repository files navigation

nix

https://github.com/zy9306/nix-home/workflows/Build/badge.svg?branch=master

tldr

nix-env -qaP ".*emacs.*"
# output:
# ...
# emacsGcc                   emacs-gcc-20210627.0
# emacsGit                   emacs-git-20210627.0
# qemacs                     qemacs-0.3.3
# ...

# 如果已存在则会更新
nix-env -iA nixpkgs.emacsGcc

nix-env --install emacs-gcc-20210627.0

nix-env -q
# output:
# ...
# aria2-1.35.0
# bat-0.17.1
# bfg-repo-cleaner-1.13.0
# ...

nix-env --uninstall aria2-1.35.0

nix-env -e aria2

nix-shell -p python37Full

# 查询旧版本
# https://lazamar.co.uk/nix-versions/

# 锁定版本
nix-env -qaP ".*emacs.*" -f https://github.com/NixOS/nixpkgs/archive/e85975942742a3728226ac22a3415f2355bfc897.tar.gz

cachix

https://app.cachix.org/cache/arcueid

nix-shell

可用于启用一个含指定 pkg 的 shell 环境或构造一个含相应编译依赖的环境。

Summary

nix-shell \
    [--arg name value] \
    [--argstr name value] \
    [ { --attr | -A } attrPath ] \
    [--command cmd] [--run cmd] \
    [--exclude regexp] \
    [--pure] \
    [--keep name] \
    { { --packages | -p } packages... | [path]}
# 启动一个包含 pkg 的 shell,pkg 为 nixpkgs 中的属性名。
nix-shell '<nixpkgs>' -p <pkg>

# --pure 的作用为不继承宿主机环境
nix-shell '<nixpkgs>' -p <pkg> --pure

# 启动一个包含 alacritty 所需编译环境的 shell
nix-shell -A alacritty '<nixpkgs>'

nix-env

install

# pkg 为 nix 文件中定义的属性名/包名 paths 为 nix 文件路径,或者 url
nix-env -iA {pkg} -f {paths}

nix-env -iA nixpkgs.docker

# 安装一个文件中的所有包
nix-env -f ~/foo.nix -i '.*'

# --dry-run 不实际安装,仅查看安装内容
nix-env -iA emacsGcc -f ./emacs --dry-run

query

# 查询 pkg , 支持通配符
nix-env -qaP {pkg}

# 查询 nix 文件中的包
nix-env -qa -f {paths}

# To show installed packages
nix-env -q

# To show all packages with “firefox” or “chromium” in the name
nix-env -qa '.*(firefox|chromium).*'

update

nix-env --upgrade gcc

delete

nix-env --uninstall gcc

# remove everything
nix-env -e '.*'

rollback

nix-env --list-generations
nix-env --rollback {generation}

conflict

# nix-env -u 里不会更新 firefox
nix-env --set-flag keep true firefox

# 保留旧版本 firefox 配置文件的情况下安装新的 firefox
# firefox-2.0.0.11 (the enabled one) firefox-2.0.0.9 (the disabled one)
nix-env --set-flag active false firefox
nix-env --preserve-installed -i firefox-2.0.0.11
nix-env -q

# 设置优先级,priority 越小优先级越高
nix-env --set-flag priority {priority} gcc

issues

nix 安装的包有时会出现工具链或动态库原因造成一些奇怪的问题

以 libffi.so.6 为例,其它类似问题也可以同样处理,如果解决不了通过其它 途径安装

fd libffi.so /nix
# /nix/store/q6ifii7y5cm5m593rf3bj29pb1qgrg7i-libffi-3.3/lib/libffi.so
# /nix/store/q6ifii7y5cm5m593rf3bj29pb1qgrg7i-libffi-3.3/lib/libffi.so.7.1.0
# /nix/store/q6ifii7y5cm5m593rf3bj29pb1qgrg7i-libffi-3.3/lib/libffi.so.7
sudo cp /nix/store/q6ifii7y5cm5m593rf3bj29pb1qgrg7i-libffi-3.3/lib/libffi.so.7.1.0 /usr/local/lib
sudo ln -s /usr/local/lib/libffi.so.7.1.0 /usr/local/lib/libffi.so.6

About

my nix config and dotfiles.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published