After 3 days and 4 re-installs, I think I can now list some of the things that make NixOS very different to every other OS.
https://channels.nixos.org/nixos-25.05/latest-nixos-graphical-x86_64-linux.iso
with the very simple Calamaris Install Wizard.
- No more DLL Hell !. Every program has its own directory and its own libraries. Its the same with every version of a program. They don’t mix anything and claim great stability as a result of this design.
- The biggest REPO . I once thought FreeBSD had a huge repo with 30,000 apps. NixOS has something like 120,000 apps. check out NixOS Search?
- NixOS depends on a single config file that contains everything it needs. You can take this file and put it in a new machine with similar hardware and it will build itself just like the one you copied the config file from. The config file is a simple programming language itself. However it doesn’t need to be a single file, it can be many files imported into the main file for simplicity and clarity.
- There is no package manager One adds the wanted app to the above config file and runs a specific command, NixOS rebuilds the entire system and when its done, the wanted app is installed. This is very fast.
- NixOS is older than Ubuntu, it has been around for ages and has a very active community.
- NixOS was a Thesis project to create an exactly reproducible computer. Docker was created for a similar reason.
I don’t think there is any coming back from NixOS. Solaris I loved you well and with all my heart, but I have found another, … farewell!
[tp@nixos:~]$ df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 1.6G 0 1.6G 0% /dev
tmpfs 16G 11M 16G 1% /dev/shm
tmpfs 7.9G 5.5M 7.9G 1% /run
/dev/nvme0n1p2 937G 30G 860G 4% /
efivarfs 128K 49K 75K 40% /sys/firmware/efi/efivars
tmpfs 1.0M 0 1.0M 0% /run/credentials/systemd-journald.service
tmpfs 16G 1.2M 16G 1% /run/wrappers
/dev/nvme0n1p1 1022M 46M 977M 5% /boot
tmpfs 1.0M 0 1.0M 0% /run/credentials/getty@tty1.service
tmpfs 3.2G 12K 3.2G 1% /run/user/1000
[tp@nixos:~]$ cat /etc/nixos/configuration.nix
# Edit this configuration file to define what should be installed on
# your system. Help is available in the configuration.nix(5) man page
# and in the NixOS manual (accessible by running ‘nixos-help’).
{ config, pkgs, ... }:
{
imports =
[ # Include the results of the hardware scan.
./hardware-configuration.nix
];
# Bootloader.
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
networking.hostName = "nixos"; # Define your hostname.
# networking.wireless.enable = true; # Enables wireless support via wpa_supplicant.
# Configure network proxy if necessary
# networking.proxy.default = "http://user:password@proxy:port/";
# networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
# Enable networking
networking.networkmanager.enable = true;
# Set your time zone.
time.timeZone = "Australia/Sydney";
# Select internationalisation properties.
i18n.defaultLocale = "en_GB.UTF-8";
i18n.extraLocaleSettings = {
LC_ADDRESS = "en_AU.UTF-8";
LC_IDENTIFICATION = "en_AU.UTF-8";
LC_MEASUREMENT = "en_AU.UTF-8";
LC_MONETARY = "en_AU.UTF-8";
LC_NAME = "en_AU.UTF-8";
LC_NUMERIC = "en_AU.UTF-8";
LC_PAPER = "en_AU.UTF-8";
LC_TELEPHONE = "en_AU.UTF-8";
LC_TIME = "en_AU.UTF-8";
};
# Configure keymap in X11
services.xserver.xkb = {
layout = "au";
variant = "";
};
fonts.packages = with pkgs; [
noto-fonts
noto-fonts-cjk-sans
noto-fonts-emoji
liberation_ttf
fira-code
fira-code-symbols
mplus-outline-fonts.githubRelease
dina-font
proggyfonts
];
# Define a user account. Don't forget to set a password with ‘passwd’.
users.users.tp = {
isNormalUser = true;
description = "tp";
extraGroups = [ "networkmanager" "wheel" ];
packages = with pkgs; [];
};
# Enable automatic login for the user.
services.getty.autologinUser = "tp";
# Allow unfree packages
nixpkgs.config.allowUnfree = true;
# List packages installed in system profile. To search, run:
# $ nix search wget
environment.systemPackages = with pkgs; [
# linuxKernel.packages.linux_zen.nvidia_x11
vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
alacritty
mc
wget
fossil
git
kicad
helix
neovim
graphviz
calcurse
pwsafe
vlc
mpv
ollama-cuda
undertime
hexchat
gkrellm
vscode
telegram-desktop
brave
sqlite
];
# Some programs need SUID wrappers, can be configured further or are
# started in user sessions.
# programs.mtr.enable = true;
# programs.gnupg.agent = {
# enable = true;
# enableSSHSupport = true;
# };
# List services that you want to enable:
# X Windows
services.xserver.enable = true;
services.xserver.videoDrivers = [ "nvidia" ];
hardware.graphics.enable = true;
hardware.nvidia.open = true;
services.xserver.windowManager.icewm.enable = true;
services.xserver.autorun = false;
# Enable the OpenSSH daemon.
services.openssh.enable = true;
# Open ports in the firewall.
# networking.firewall.allowedTCPPorts = [ ... ];
# networking.firewall.allowedUDPPorts = [ ... ];
# Or disable the firewall altogether.
networking.firewall.enable = false;
# This value determines the NixOS release from which the default
# settings for stateful data, like file locations and database versions
# on your system were taken. It‘s perfectly fine and recommended to leave
# this value at the release version of the first install of this system.
# Before changing this value read the documentation for this option
# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
system.stateVersion = "25.05"; # Did you read the comment?
}


