diff --git a/random-thoughts/2025-01-02.md b/random-thoughts/2025-01-02.md new file mode 100644 index 0000000..491f68d --- /dev/null +++ b/random-thoughts/2025-01-02.md @@ -0,0 +1,67 @@ +--- +title: +date: 2025-01-02T00:03 +dg-publish: true +dg-permalink: "" +description: "" +tags: + - +--- +> 沒什麼組織、一些倏忽即逝有趣或不有趣的想法 + +- Nix 初探 + - Installation - https://nix.dev/install-nix + - `sh <(curl -L https://nixos.org/nix/install)` + - What it does: + - Install Nix package manager + - Create a new profile for the current user + - Add the Nix profile to the user's shell profile + - Based on the installation log, here are the critical changes Nix made to your machine: + - 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. + - Usage + - `nix-shell -p `: Start a shell with the specified package available + - `nix-shell -p --command `: Run a command in a shell with the specified package available + - `nix-shell -p --run `: Run a command in a shell with the specified package available and exit + - `nix-store --gc`: Garbage collect the Nix store to remove unused packages \ No newline at end of file