Howto nixos
configure enviroment
download nixos installation iso:
https://channels.nixos.org/nixos-23.05/latest-nixos-minimal-x86_64-linux.iso
create usb to install on physical desktop:
yay -S ventoy-bin
or install nixos on virtual machine:
qemu-img create -f qcow2 /var/lib/libvirt/images/nixos_disk1_100G.qcow2 100G
boot with nixos iso and create partitions:
parted /dev/vda -- mklabel gpt parted /dev/sda -- mkpart ESP fat32 1 1GB parted /dev/sda -- mkpart primary linux-swap 1GB 8GB parted /dev/sda -- mkpart primary ext4 8GB 100%
format partitions:
mkfs.fat -F 32 -n boot /dev/vda1 mkswap -L swap /dev/vda2 mkfs.ext4 -L nixos /dev/vda3
installing os
mount root partition on /mnt:
mount /dev/vda3 /mnt
make boot directory and mount boot partition:
mkdir /mnt/boot mount /dev/vda1 /mnt/boot
mount swap partition:
swapon /dev/vda2
generate nixos configuration file:
nixos-generate-config --root /mnt
edit configuration file /mnt/etc/nixos/configuration.nix:
{ config, pkgs, ... }: { imports = ./hardware-configuration.nix ]; boot.loader.systemd-boot.enable = true; boot.loader.efi.canTouchEfiVariables = true; time.timeZone = "America/Puerto_Rico"; i18n.defaultLocale = "en_US.UTF-8"; services.xserver.enable = true; services.xserver.layout = "us"; sound.enable = true; hardware.pulseaudio.enable = true; users.users.linux = { isNormalUser = true; extraGroups = [ "wheel" "networkmanager" "virt-manager" ]; packages = with pkgs; [ firefox tree ]; }; services.openssh.enable = true; }
configure static ip networking:
networking.networkmanager.enable = true; networking.interfaces.eth0.ipv4.addresses = [ { address = "192.168.75.44"; prefixLength = 24; } ]; networking.defaultGateway = "192.168.75.1"; networking.nameservers = [ "4.2.2.1" "4.2.2.2" ];
hostname and /etc/hosts:
networking.hostName = "nixos"; networking.extraHosts = 127.0.0.1 localhost 192.168.75.44 nixos ;
configure desktop gnome:
services.xserver.displayManager.gdm.enable = true; services.xserver.desktopManager.gnome.enable = true; programs.dconf.enable = true; services.udev.packages = with pkgs; [ gnome.gnome-settings-daemon ]; environment.gnome.excludePackages = (with pkgs; [ gnome-photos gnome-tour ]) ++ (with pkgs.gnome; [ gnome-terminal gedit # text editor evince # document viewer gnome-characters ]);
enable virtualization:
virtualisation.libvirtd.enable = true;
enable flatpak:
services.flatpak.enable = true;
then when system boot configure flatpak repo:
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
system packages:
environment.systemPackages = with pkgs; [ wget vim nano zsh file lsof virt-manager ];
intel drivers:
services.xserver.videoDrivers = [ "modesetting" ];
if you experience screen tearing no matter what, this configuration was reported to resolve the issue:
services.xserver.videoDrivers = [ "intel" ]; services.xserver.deviceSection = Option "DRI" "2" Option "TearFree" "true" ;
nvidia gpu drivers:
services.xserver.videoDrivers = [ "nvidia" ];
or nvidia gpu legacy drivers:
services.xserver.videoDrivers = [ "nvidiaLegacy390" ]; services.xserver.videoDrivers = [ "nvidiaLegacy340" ]; services.xserver.videoDrivers = [ "nvidiaLegacy304" ];
amd gpu drivers:
services.xserver.videoDrivers = [ "amdgpu-pro" ];
for laptop touchpads:
services.xserver.libinput.enable = true;
load kernel modules:
boot.kernelModules = [ "fuse" "kvm-intel" "coretemp" ];
load kernel modules on initrd:
boot.initrd.kernelModules = [ "cifs" ];
run the installer:
nixos-install
reboot the system:
reboot