Die Linux Distro NixOS

Eine Distribution basierend auf rein funktionalem Packet Management.

Von Johannes Raggam / @thetetet / github.com/thet

Printansicht / PDF Export

$ whoami

Johannes Raggam (DI(FH))

Web Developer, Open Source Enthusiast, Linux User, Python Aficionado, Plone Developer.

Talk über Plone 5 um 16:00, SR2 :)

$ whatis NixOS

  • Linux Distribution
  • Basiert auf funktionalem Packet Manager Nix

$ whatis Nix

purely functional package manager

Packete werden mittels funktionaler Sprache ohne Seiteneffekte beschrieben. Mit einem definiertem Set an Eingabevariablen wird immer das selbe Build-Ergebnis erzielt.

Heißt was?

Packete werden unter

/nix/store
mit eindeutigem Hash als Pfadname abgelegt.


              /nix/store/r8vvq9kq18pz08v249h8my6r9vs7s0n3-firefox-2.0.0.1/ 
            

Bringt was?

  • Multiple versions: vom gleichen Packet
  • Complete dependencies: da diese definiert werden müssen. Compiler suchen nicht im /nix/store ...
  • Multi user support: per-user nix/store
  • Atomic upgrades and rollbacks
  • Garbage collection
  • Stateless

$ whatis NixOS

  • Linux Distribution
  • Basiert auf funktionalem Packet Manager Nix
  • Declarative system configuration
  • Repeatable deployments/rollouts
  • Reliable Upgrades
  • Atomic upgrades
  • Rollbacks
  • Reproducable system configurations
  • Safe to test changes
  • Source-based model, with binaries
  • Consistency
  • Multi-user package management

Meine NixOS Konfiguration


{ config, pkgs, ... }:

{
  imports = [ ./hardware-configuration.nix ];

  # Use the gummiboot efi boot loader.
  boot.loader.grub.enable = false;
  boot.loader.gummiboot.enable = true;
  boot.loader.gummiboot.timeout = 2;
  boot.loader.efi.canTouchEfiVariables = true;

  networking.hostName = "luft"; # Define your hostname.
  networking.connman.enable = true;  # Enables wireless.

  # Enable the X11 windowing system.
  services = {
    xserver = {
      enable = true;
      #layout = 'us';
      synaptics.enable = true;
      windowManager.awesome.enable = true;
      displayManager.slim.enable = true;		
      desktopManager.xfce.enable = true;
    };
  };
  hardware.opengl.videoDrivers = [ "intel" ];

  fileSystems = [
    { mountPoint = "/home";
      device = "/dev/sda9";
      options = "defaults,discard,noatime";
    }
    { mountPoint = "/tmp";
      device = "tmpfs";
      fsType = "tmpfs";
      options = "nosuid,nodev,relatime";
    }
  ];
  swapDevices = [
    { device = "/dev/sda11"; }
  ];

  environment = {
    interactiveShellInit = ''
        export EDITOR="vim"
        export EMAIL=johannes@raggam.co.at
        export FULLNAME="Johannes Raggam"
    '';
    systemPackages = with pkgs; [

      chromiumWrapper
      firefoxWrapper
      vimHugeX
      xlibs.xmodmap
      # ...

    ];
  };

}
            
          

Installation

Quelle: Domen Kožar NixOS: declarative linux distribution

  • Download ISO from http://nixos.org/nixos and boot it
  • fdisk /dev/sda
  • mkfs.ext4 /dev/sda1
  • mount /dev/sda1 /mnt
  • nixos-generate-config --root /mnt
  • nano /mnt/etc/nixos/configuration.nix
  • nixos-install
  • reboot

Links

That's all, folks!