Declarative, reproducible Linux

NixOS at Hebeko

We deploy, maintain and teach NixOS, and build custom tooling around Nix. Our engineers contribute to the French State's NixOS components, Sécurix and Bureautix, as well as to disko. Our teams develop NixWall, a free software firewall built on NixOS.

Discuss your NixOS project Our services

A declarative Linux distribution

NixOS is a free Linux distribution. On Debian or Ubuntu, administrators install packages and edit files machine by machine, and the real state of a server ends up drifting from its documentation. On NixOS, they describe the desired state in text files (software, services, accounts, network) and NixOS builds the system from that description.

Every build creates a new generation of the system. Previous ones remain available, and the boot menu lets you go back to one of them if an update causes a problem.

Software comes from nixpkgs, the Nix package repository. It is the largest across all distributions, with about 119,000 packages according to Repology.

Our article Understanding NixOS compares this approach with Debian, Ubuntu and RHEL. Nix flakes covers the most common way to organise a configuration.

NixOS GNOME desktop with the snowflake logo as wallpaper
The NixOS GNOME desktop.

Why NixOS for organisations

For a company or a public body, the configuration of every server lives in a Git repository. It is also the documentation, and another provider can take over the infrastructure from these files.

The example below describes a small web server.

{ config, pkgs, ... }:
{
  services.nginx.enable = true;
  services.nginx.virtualHosts."intranet.example.fr" = {
    enableACME = true;
    forceSSL = true;
    root = "/srv/intranet";
  };
  security.acme.acceptTerms = true;
  security.acme.defaults.email = "admin@example.fr";

  users.users.camille = {
    isNormalUser = true;
    extraGroups = [ "wheel" ];
  };

  system.autoUpgrade.enable = true;
}
Excerpt from a configuration.nix file: a website over HTTPS, an administrator account and automatic updates. This file is enough to rebuild the server.

Common uses

NixOS is used on servers as well as desktops.

UseWith NixOS
Web and application serversThe same file rebuilds the server after a failure or at another host.
DesktopsEvery desktop receives its configuration from a Git repository, as in Sécurix and Bureautix.
Firewalls and routersA wrong rule is undone by rolling back to the previous generation.
Network installationA new machine boots from the network and installs without a USB stick.
Development environmentsnix-shell or a flake gives every developer the same tool versions.
Testing before deploymentNixOS tests check a configuration in virtual machines before it reaches production.

How a project runs

Moving to NixOS happens in stages, without stopping what already works.

  1. Audit: inventory of servers, services and their dependencies, then choice of a first service to migrate.
  2. Pilot: that service moves to NixOS, with its whole configuration in a Git repository. The old server stays in place until sign-off.
  3. Extension: the other servers follow, with shared modules for accounts, monitoring, backups and hardening.
  4. Handover: training and documentation for your teams, who then change the configuration themselves.

NixOS services

We can take on the whole project or just one of these stages.

Audit and migration

Inventory of the fleet, choice of the first service and migration plan, then switchover of servers and desktops.

Deployment

Configurations as flakes and modules, partitioning and encryption with disko, automated or network installation, encrypted secrets.

Maintenance and operations

Tracked updates, monitoring and backups. Maintenance and managed services also cover NixOS fleets.

Sécurix and Bureautix desktops

Pilots for public bodies, with inventory, installer and security keys adapted to your organisation.

Custom development

NixOS modules, packages, deployment tooling and integrations written for your needs, released under a free licence when possible. NixWall, the free firewall we develop, is one example.

Training

A 3-day NixOS course for administration teams, on site or remote, with exercises on your own cases.

Sécurix and Bureautix

Sécurix is a NixOS distribution developed by DINUM for secure system administration, office and development desktops. Bureautix is its example variant for office desktops, with a machine inventory, an installer and settings designed for an IT department.

The project first targets unclassified information, then possibly the Diffusion Restreinte level. It follows ANSSI recommendations with a hardened kernel, Secure Boot and an encrypted disk unlocked with a FIDO2 key. Login also uses a security key, and the password is only a fallback. Thanks to NixOS, the same model adapts to each need, for example a desktop shared by several staff members or one restricted to the intranet.

The next steps announced by DINUM cover further hardening, sending logs to a central log collector, automatic enrolment of new desktops and Secure Boot key rotation.

Our engineers contribute actively to the project. We want to keep contributing upstream, especially on network installation and fleet management, and to support public bodies adopting Sécurix, from the first pilot to deployment.

Sécurix is released under the MIT licence. It is still in alpha, and its developers do not offer support yet. We can run a pilot with you.

KDE Plasma desktop on a Bureautix machine, with the application menu open
The Bureautix KDE Plasma desktop.

NixWall

NixWall is a firewall developed by our teams on NixOS. It is entirely free software, under the AGPL-3.0 licence, and its code is public on GitHub.

The goal is a reproducible firewall. Its whole configuration lives in files, and two machines built from the same files are identical. NixOS keeps every previous state of the system, so a change that cuts the network is undone by rolling back to the previous generation.

NixWall also benefits from nixpkgs, the repository described above. The software it relies on is updated there continuously.

The project is in alpha and not yet ready for production. NixWall will eventually be managed from a web interface, which will go through its API to change the configuration.

Installing and configuring NixWall

NixWall installs from an ISO image, on a dedicated machine or in a virtual machine.

NixWall installer welcome screen, with the installation steps

Installation

The ISO image boots to a screen that describes the steps. The administrator finds the disks and network interfaces, adapts two files, disko.nix for partitioning and config.toml for the network and rules, then runs nixwall-install. After the reboot, the firewall applies the configuration described in these files.

NixWall config.toml file with LAN and WAN zones and two filtering rules

Rules in a TOML file

Zones, addresses, DHCP and filtering rules are described in config.toml, a format a network administrator can read without knowing Nix. NixWall turns this file into a NixOS configuration. The roles stay separate. The administrator changes the rules, and developers evolve the NixOS modules without touching this file. A TOML file is easier to review and fix than Nix code. The NixWall API reads and writes this same file.

We develop NixWall actively, in house, and publish every release on GitHub. Contributions are welcome, whether code, tests, documentation or bug reports.

Frequently asked questions

Do we have to rewrite our whole infrastructure?

No. NixOS can arrive server by server, starting with one isolated service. Other machines stay on Debian or Ubuntu.

Is NixOS suitable for production?

Yes. A stable release comes out every six months, in May and November, and receives security fixes for seven months.

Can you deploy Sécurix or Bureautix?

Yes, as a pilot, since these two DINUM configurations are still in alpha.

Do you train our teams?

Yes, with the 3-day NixOS course, on site or remote.

Why Hebeko

  • Your servers, in your name

    They are rented in France in your organisation's name, and your data stays there.

  • Documentation handed over

    Audit reports and operations documentation belong to you, whether or not you keep working with us.

  • One engineer as your contact

    The person who answers you is the one who works on your servers and desktops.

Your NixOS project

Tell us how many machines you have and what you want to deploy or build. An engineer will reply by email.

contact@hebeko.fr · +33 6 52 89 53 00

How it starts

  1. A one-hour first conversation By video call, with an engineer. You describe your context, tools and constraints, and we show you the relevant software running.
  2. An audit or a scoping phase 2 to 5 days depending on the scope. You receive a report, an action plan and a quote. The report is yours, whatever comes next.
  3. The project, then ongoing support Migration, installation or development, in stages you sign off. Then support, maintenance or managed services, at the level you choose.