System Configuration and Package Management
-
NixOS enables users to define their entire system configuration in a single file, allowing for easy management and reproducible setups across different machines.
-
The Nix package manager supports multiple versions of packages coexisting without conflicts through isolated environments and per-user installations.
Development and Containerization
- NixOS supports containerization and virtualization technologies like Docker and QEMU, facilitating isolated environments for software testing and development.
Release Model and Stability
- NixOS follows a rolling release model while allowing users to pin specific package versions, balancing access to latest software with stability for production systems.
Target Audience and Use Cases
- NixOS is particularly suitable for developers and system administrators managing complex software environments, due to its focus on reproducibility and reliability.
Here is the set up:
OS: NixOS (Nix) WM: Hyprland (C++) Bar: Waybar (written in C++). I'll try out here soon hyprpanel, but it's written in TS and I guess it’s bloated because there are reports of freezing and lagging... but it sure is pretty. Launcher: Rofi-wayland (C) Terminal: foot (C). I like alacritty and have heard good things about wezterm, plus they’re written in Rust and I’m obviously a rust fanboy now… but I have no GPU on this machine so can’t even use their GPU acceleration. But I'll try out wezterm at some point. Fetch: Nitch (C). Because I like the way it looks - gonna write my own fetcher in Rust though, just for fun. Lock: Hyprlock (C++) Dock: nwg-dock-hyprland (Python) File Manager: Yazi (Rust) and Thunar (C). One is terminal, one is GUI, respectively. Shell: zsh (C) with starship (Rust). Text Editor: Base Neovim (Lua). Just base because I’m not diving into it just yet. When I do, I’ll do just as much research as I’ve done for this video - a lot. But I’ve seen things about nixCats, nvchad, nixvim… don’t know the difference but I’ll cross that bridge when I get there. IDE: VS Code & JetBrains. I'll do this setup in the next video, plus everything setup for Java dev, Rust dev, and whatever else I need to setup. I'd like to get Neovim to a spot where it can replace these, but I'll need a lot of plugins to make it as convenient as my typical IDEs, or close to it. PDF Reader: Zathura (C). Supports vim keybinds. TTY: no DM, but setup TTY to auto-start Hyprland on login. But maybe SDDM if I want to later. Scratchpad: pyprland (Python) Animated Wallpapers: swww (Rust) Browser: Firefox. I'll look into Ladybird and maybe Zen. Idk if it really matters or if I really care. Discord-Client: vesktop (JS/Electron, oof.) Clipboard Tools: cliphist for history (Go) and wl-clipboard for basic clipboard operations (C) Screenshots: grimblast (Bash)