Introduction
Introduction Statistics Contact Development Disclaimer Help
Title: A NixOS kiosk
Author: Solène
Date: 06 October 2022
Tags: linux security nixos
Description: In this article, you will learn how to use Cage on NixOS
to make kiosk computers
# Introduction
A kiosk, in the sysadmin jargon, is a computer that is restricted to a
single program so anyone can use it for the sole provided purpose. You
may have seen kiosk computers here and there, often wrapped in some
kind of box with just a touch screen available. ATM are kiosks, most
screens showing some information are also kiosks.
What if you wanted to build a kiosk yourself? For having done a bunch
of kiosk computers a few years ago, it's not an easy task, you need to
think about:
* how to make boot process bullet proof?
* which desktop environment to use?
* will the system show notifications you don't want?
* can the user escape from the kiosk program?
Nowadays, we have more tooling available to ease kiosk making. There
is also a distinction that has to be made between kiosks used
displaying things, and kiosks used by users. The latter is more
complicated and require lot of work, the former is a bit easier,
especially with the new tools we will see in this article.
# Cage
The tool used in this blog post is named Cage, it's a program running a
Wayland display that only allow one single window to be shown at once.
Cage GitHub project page
Using cage, we will be able to start a program in fullscreen, and only
it, without having any notification, desktop, title bar etc...
In my case, I want to open firefox to open a local file used to display
monitoring information. Firefox can still be used "normally" because
hardening it would require a lot of work, but it's fine because I'm at
home and it's just to display gauges and diagrams.
# NixOS configuration
Here is the piece of code that will start the firefox window at boot
automatically. Note that you need to disable any X server related
configuration.
```
services.cage = {
enable = true;
user = "solene";
program = "${pkgs.firefox}/bin/firefox -kiosk -private-window file:///hom…
};
```
Firefox has a few special flags, such as `-kiosk` to disable a few
components, and `-private-window` to not mix with the current history.
This is clearly not enough to prevent someone to use Firefox for
whatever they want, but it's fine to handle a display of a single page
reliably.
# Conclusion
I wish I had something like Cage available back in the time I had to
make kiosks. I can enjoy my low power netbook just displayin
monitoring graphs at home now.
a netbook displaying graphs
You are viewing proxied material from dataswamp.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.