NixOS ist inder der Grundinstallation gestartet und läuft. Nun sollen weitere Programm installiert werden.
Das Schema , dies zu tun, ist recht übersichtlich.
In einer Datei werden die Eintragungen vorgenommen.
Abschließend wird ein Kommanfo ausgeführt, damit die
Eintragungen übernommen werden. Dabei wird die Sofware
installiert. Im Bootmenü erscheint dann eine neue Version,
die nach einem Neustart automatisch gestartet wird.
Bei dein Eintragungen selbst muss man genau hinschauen. Syntaxfehler schleichen sich schnell ein.
sudo nano /etc/nixos/configuration.nix
Suchen Sie in der Datei nach dem Bereich 'environment.systemPackages'. Dort finden Sie eine Liste, die in eckigen Klammern [ ... ] gefasst ist. Fügen Sie dort einfach den Namen des Programms hinzu.
Das Ganze sieht dann beispielsweise so aus (hier am Beispiel von git, vim und curl):
environment.systemPackages = with pkgs; [ vim git curl firefox # Hier werden die neuen Programme untereinander aufgelistet. ];
Speichern Sie die Datei (in nano mit Strg+o, Enter und schließen Sie mit Strg+x).
Damit NixOS das Programm nun tatsächlich herunterlädt und installiert, führen Sie diesen Befehl aus:
sudo nixos-rebuild switch
Einige populäre Programme sind proprietär. Wenn Sie ein solches Programm hinzufügen, wird NixOS beim Aktualisieren Fehlermeldungen ausgeben, weil standardmäßig nur Open-Source-Software erlaubt ist.
Um unfreie Software zu erlauben, fügen Sie folgende Zeile irgendwo in Ihre configuration.nix ein:
nixpkgs.config.allowUnfree = true;
Beispieldatei mit Kommentaren
# 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 = "Europe/Berlin";
# Select internationalisation properties.
i18n.defaultLocale = "de_DE.UTF-8";
i18n.extraLocaleSettings = {
LC_ADDRESS = "de_DE.UTF-8";
LC_IDENTIFICATION = "de_DE.UTF-8";
LC_MEASUREMENT = "de_DE.UTF-8";
LC_MONETARY = "de_DE.UTF-8";
LC_NAME = "de_DE.UTF-8";
LC_NUMERIC = "de_DE.UTF-8";
LC_PAPER = "de_DE.UTF-8";
LC_TELEPHONE = "de_DE.UTF-8";
LC_TIME = "de_DE.UTF-8";
};
# Enable the X11 windowing system.
services.xserver.enable = true;
# Enable the Cinnamon Desktop Environment.
services.xserver.displayManager.lightdm.enable = true;
services.xserver.desktopManager.cinnamon.enable = true;
# Configure keymap in X11
services.xserver.xkb = {
layout = "de";
variant = "";
};
# Configure console keymap
console.keyMap = "de";
# Enable CUPS to print documents.
services.printing.enable = true;
# Enable sound with pipewire.
services.pulseaudio.enable = false;
security.rtkit.enable = true;
services.pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
};
# Define a user account. Don't forget to set a password with ‘passwd’.
users.users."wheezy" = {
isNormalUser = true;
description = "wheezy";
# "cdrom" hinzugefügt, damit Brasero und Sound Juicer brennen/lesen dürfen
extraGroups = [ "networkmanager" "wheel" "cdrom" ];
packages = with pkgs; [
# thunderbird
];
};
# Install firefox.
programs.firefox.enable = true;
# Allow unfree packages
nixpkgs.config.allowUnfree = true;
# List packages installed in system profile.
### Ich habe mich für eine alphabetische
### Sortierung entschieden.
environment.systemPackages = with pkgs; [
ausweisapp
bluefish
brasero
cheese
clementine
darktable
filezilla
flameshot
gedit
gimp
keepassxc
libreoffice-fresh
lmms
mc
nano
onlyoffice-desktopeditors
signal-desktop
simple-scan
sound-juicer
thunderbird
vlc
];
system.stateVersion = "26.05"; # Künftige NixOS Version beibehalten
### Akkuschonung Anfang
# WICHTIG: Den Standard-Dienst deaktivieren, um Konflikte zu vermeiden
services.power-profiles-daemon.enable = false;
# TLP aktivieren und Schwellenwerte setzen (Beispiel: Laden ab 75%, Stopp bei 80%)
services.tlp = {
enable = true;
settings = {
START_CHARGE_THRESH_BAT0 = 75;
STOP_CHARGE_THRESH_BAT0 = 80;
};
};
### Akkuschonung Ende
### Bluetooth aktivieren Anfang
hardware.bluetooth = {
enable = true;
powerOnBoot = true;
};
### Bluetooth aktivieren Ende
### Bluetooth Stromsparen abschalten Anfang
services.tlp.settings = {
# Verhindert, dass TLP Bluetooth beim Booten abschaltet
DEVICES_TO_DISABLE_ON_STARTUP = "";
DEVICES_TO_ENABLE_ON_STARTUP = "bluetooth";
};
### Buetooth Stromsparen abschalten Ende
### Zweite Platte einbinden Anfang
### Im Rechner ist eine zweite Festplatte,
### die nachträglich eingebunden werden soll.
### Der Mountpunkt ist bereits eingerichtet.
fileSystems."/mnt/data" = {
device = "/dev/disk/by-uuid/87654321-ce8e-5eif-c432-eg36548gfj46";
fsType = "ext4";
options = [ "users" "nofail" ];
};
### Zweite Platte einbinden Ende
### Apache Anfang
### Der Webserver soll auf die zweite Festplatte
### zugreifen. Bei einer Neuinstallation bleiben
### die Dateien des Webservers erhalten.
services.httpd = {
enable = true;
adminAddr = "admin@example.com";
virtualHosts.localhost = {
# Hier den Pfad zur zweiten Festplatte eintragen:
documentRoot = "/mnt/data/hidrive-himmelsrand/webserver/html";
};
};
### Apache Ende
###letzte schliessende Klammer
}