3.5 KiB
3.5 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
History
- 2003: a declarative programming language
- 2008: first stable NixOS version
- 2014: 10.000 packages
- 2019: Flakes
- 2025: 120.000 packages
Features
- declarative configuration (20.000 options)
- package count (120.000 + third party)
- Development community on Github and other hosters
Infrastructure
- nixpkgs on Github
- nix language on Github
- Binary cache for built packages
- CI server
- Build status page
- ...
Nextcloud
%%{init: {'theme': 'dark', 'themeVariables': { 'darkMode': true }}}%%
flowchart TD
B(Disk & OS Installation)
C[services.nextcloud.enable=true]
D(<b>Nextcloud server)
E[services.nextcloud.package=nextcloud30]
B--> D
D-->C & E
Gitlab
%%{init: {'theme': 'dark', 'themeVariables': { 'darkMode': true }}}%%
flowchart TD
B(<b>Disk & OS Installation)
E(nspawn container)
F(<b>Gitlab server)
G[services.gitlab.enable=true]
H[services.gitlab.backup.startAt=03:00]
I[services.nginx.enable=true]
B--> E --> F
F-->G & H & I
Forgejo
%%{init: {'theme': 'dark', 'themeVariables': { 'darkMode': true }}}%%
flowchart LR
B(<b>Disk & OS Installation)
G(Podman container)
H(<b>Forgejo)
I[virtualisation.containers.enable=true]
J[virtualisation.oci-containers.containers.forgejo-frontend.image=codeberg.org/forgejo/forgejo:11.0.3-rootless]
K[forgejo-backend.image=docker.io/library/mariadb:11.8.2]
B --> I --> G --> H --> J & K
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
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