nixos-demo/slides/demo.md
2025-08-10 23:50:11 +02:00

3.6 KiB

author
Birk

Nix(OS)

a introduction


What is Nix?

  • a domain specific language
  • a package manager
  • a Linux distribution

%%{init: {'theme': 'dark', 'themeVariables': { 'darkMode': true }}}%%
flowchart LR
    A(Nix language) 
    B(Nix package manager)
    C(NixOS)
    D(macOS)
    E(Debian)
    F(Software/User config)
    G(Git)
    H(File)
    A-->B--->C & D & E---->F --> G & H

Demo

%%{init: {'theme': 'dark', 'themeVariables': { 'darkMode': true }}}%%
flowchart TD
        B(<b>Disk & OS Installation)
        C(<b>Desktop)
        D(Nextcloud server)
        E(nspawn container)
        F(Gitlab server)
        G(Podman container)
        H(Forgejo)
        I(MicroVM)
        J(Kubernetes)
        K(Splunk)
        B--> D & E & G & I
        B-->C
        E-->F
        G-->H
        I-->J-->K
beancloud.software.desktop = true;

History


Features

  • declarative configuration (20.000 options)
  • package count (120.000 + third party)
  • versioned config in Git and on the installed NixOS
  • development community on Github and others

Infrastructure


Nextcloud

%%{init: {'theme': 'dark', 'themeVariables': { 'darkMode': true }}}%%
flowchart TD
        A(Disk & OS Installation)
        B(<b>Nextcloud server)
        C(MariaDB)
        D(nginx)
        E(php-fm)
        F(Redis)
        A--> C & D & E & F --> B
beancloud.software.nextcloud.server.enable = true;

Gitlab

%%{init: {'theme': 'dark', 'themeVariables': { 'darkMode': true }}}%%
flowchart LR
        A(<b>Disk & OS Installation)
        B(nspawn container)
        C(NixOS)
        D(<b>Gitlab server)
        E[Postgres]
        F[nginx]
        A --> B --> C --> E & F --> D
beancloud.software.gitlab = true;

Forgejo

%%{init: {'theme': 'dark', 'themeVariables': { 'darkMode': true }}}%%
flowchart LR
        A(<b>Disk & OS Installation)
        B(Podman container)
        C(<b>Forgejo)
        D[virtualisation.oci-containers.containers.forgejo-frontend.image=codeberg.org/forgejo/forgejo:11.0.3-rootless]
        E[forgejo-backend.image=docker.io/library/mariadb:11.8.2]
        A --> B --> D & E --> C
beancloud.software.forgejo = true;

Splunk

%%{init: {'theme': 'dark', 'themeVariables': { 'darkMode': true }}}%%
flowchart LR
    subgraph pc-demo1
        direction LR
        B(<b>Disk & OS Installation)
        subgraph k8s
            direction LR
            I("MicroVM(NixOS)")
            J(Kubernetes)
            subgraph containerd
                direction LR
                L(Container)
                K(<b>Splunk)
            end
        end
    end
    B--> I --> J --> L --> K
beancloud.software.splunk = true;

Unexpected stuff

  • Flakes are not stable yet, but everybody uses them
  • Documentation quality has room for improvement
  • Additional efforts for secrets management
  • Does not follow Linux Filesystem Hierarchy Standard
  • Commercial software usage can be tricky or impossible