Alice.tech

使用nix配置环境

前言 在很多使用场景里,单单 py jdk 的环境冲突就够烦了。尤其是在桌面linux发行版上,各种层层相扣的依赖 在本文里 需要基本的linux知识 使用nix语言配置环境(使用nixos更棒了) 正文 在 nixos…

前言

在很多使用场景里,单单py jdk的环境冲突就够烦了。尤其是在桌面linux发行版上,各种层层相扣的依赖

在本文里

  • 需要基本的linux知识
  • 使用nix语言配置环境(使用nixos更棒了)

正文

在nixos上配置环境

临时配置

创建一个包含jdkxx的新终端进程,退出exit后即消失

nix-shell -p jdk21

nix-shell -p jdk25

Home Manager 与 Nix Profile

意义不明的方法 bushi,为什么不去使用flake呢

Nix Profile
nix profile install nixpkgs#jdk21
home Manager

直接在你的home.nix加入就好

home.packages = with pkgs; [
  jdk21
  jdk25
];

在其他发行版上

安装nix

先使用包管理推荐

多用户

sh <(curl --proto '=https' --tlsv1.2 -L https://nixos.cn/nix/install) --daemon

当前用户安装

sh <(curl --proto '=https' --tlsv1.2 -L https://nixos.cn/nix/install) --no-daemon

Arch Linux

包管理默认多用户安装

sudo pacman -S nix

加入用户组,不同发行版的nix用户组不同,先确认cat /etc/group

sudo gpasswd -a $USER nixbld

启用nix-daemon

sudo systemctl enable --now nix-daemon

添加一个channel,并更新,网络环境不好的,使用镜像源

nix-channel --add https://channels.nixos.org/nixpkgs-unstable
nix-channel --update
nix-channel --add https://mirrors.ustc.edu.cn/nix-channels/nixpkgs-unstable
nix-channel --update

添加缓存服务器到/etc/nix/nix.conf

substituters = https://mirrors.ustc.edu.cn/nix-channels/store https://cache.nixos.org/

重启一下nix-daemon,就可以使用nix包管理了

然后最简单的,一般安装到/nix/stora目录下

nix-env -iA nixpkgs.cowsay

删除

nix-enc --uninstall cowsay
nix-shell -p jdk26

此处插入图片

项目级别环境

创建shell.nix

{ pkgs ? import <nixpkgs> {} }:

pkgs.mkShell {
  buildInputs = [
    pkgs.jdk21
    pkgs.gradle
    pkgs.maven
  ];
  
  shellHook = ''
    echo "jdk21"
    java -version
  '';
}

如果需求没有使用nix的多个软件包,个人感觉到这里就好了。在arch上再写一次flake有点舍本逐末

参考

Nix - ArchWiki - Arch Linux 教程

Archlinux上使用nix包管理工具进行包管理 - 知乎

原始笔记:linux/nix/使用nix配置开发环境.md