沒什麼組織、一些倏忽即逝有趣或不有趣的想法
sh <(curl -L https://nixos.org/nix/install)
File System Changes: (this is because macOS now (starting in 10.15 Catalina) has a read-only root directory. To support Nix, it will create a volume and configure macOS to mount it at /nix)
Created a dedicated encrypted volume called "Nix Store" mounted at /nix
Modified /etc/synthetic.conf
to create the mount point
Modified /etc/fstab
to specify volume mount options
User and Group Creation:
Created a system group called nixbld
with GID 350
Created 32 system users (_nixbld1 through _nixbld32) with UIDs 351-382
All build users are:
Set to have /var/empty as home directory
Disabled from logging in
Added to the nixbld group
Hidden from the system
Directory Structure:
Created several directories under /nix, including:
install: mkdir /nix/var
install: mkdir /nix/var/log
install: mkdir /nix/var/log/nix
install: mkdir /nix/var/log/nix/drvs
install: mkdir /nix/var/nix
install: mkdir /nix/var/nix/db
install: mkdir /nix/var/nix/gcroots
install: mkdir /nix/var/nix/profiles
install: mkdir /nix/var/nix/temproots
install: mkdir /nix/var/nix/userpool
install: mkdir /nix/var/nix/daemon-socket
install: mkdir /nix/var/nix/gcroots/per-user
install: mkdir /nix/var/nix/profiles/per-user
install: mkdir /nix/store
install: mkdir /etc/nix
Shell Configuration:
Backed up and modified shell configuration files:
/etc/bashrc
/etc/zshrc
Added Fish shell configurations
Added Nix environment setup scripts to these files (e.g. execute . '/nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh'
)
System Services:
Created a LaunchDaemon at /Library/LaunchDaemons/org.nixos.nix-daemon.plist
Set up a service to automatically mount the Nix volume
Package Management:
Installed Nix package manager under /nix/store/
Set up the default profile with basic packages including SSL certificates (nss-cacert)
These changes make Nix work as a separate package manager on macOS, isolated from the rest of your system in its own volume.
nix-shell -p <package>
: Start a shell with the specified package availablenix-shell -p <package> --command <command>
: Run a command in a shell with the specified package availablenix-shell -p <package> --run <command>
: Run a command in a shell with the specified package available and exitnix-store --gc
: Garbage collect the Nix store to remove unused packages