nathaniel@dalencon:~/tesela$

ES GL EN

Email me
Back to the portfolio

In development· tested in a virtual machine

TeselaSistema operativo

Tu espacio, a tu manera · Your space, your way.

A desktop operating system in Spanish with a Linux base, designed as an alternative to Windows for everyday users: it works like Windows 7, has its own look called “Cristal”, sends no telemetry and runs with a local account. On top of that base, everything you see and use is designed and hand-coded by me: from the system image to the installer and the control panel.

of the interface designed and hand-coded
100%
ISO size after optimising it
11.3→5.4 GB
telemetry: everything stays local
0
ISO for any PC and graphics card
1

Its desktop: Tesela Cristal

Its own interface, with the Windows 7 layout people already know and Tesela’s own look.

  • Round Start buttonwith the Tesela cube and a two-column menu: programs on the left, folders on the right.
  • “All programs”grouped in folders, with search, a built-in calculator and recent programs.
  • Glass taskbartranslucent blue, with a pill-shaped search box, custom icons and a clock.
  • Light windowswith a lavender tint and a blue title bar: the “Tesela Cristal” colour scheme.
Explorador de archivosObtener programasPanel de controlCalculadoraTodos los programasBuscar programas y archivos
DocumentosImágenesEquipoPanel de controlTesela UpdateApagar
Buscar 10:05

From boot to desktop

Three screens of its own: the boot screen with Tesela’s cube, sign-in with a local account and the Cristal desktop. Recreated with the system’s real graphic assets.

  1. 01Boot

  2. 02Sign-in

  3. 03Desktop

The code in numbers

Counted in the project folder: non-blank lines, with no libraries or third-party code.

Lines of code
17,101
Files
114
systemd services
6
Launchers
16
  • QML57 %
  • Bash23 %
  • Python12 %
  • JavaScript2 %
  • Other5 %
  1. Control PanelPanelControl.qml4,844
  2. InstallerInstalador.qml · motor.py · Bienvenida.qml3,224
  3. Start menuMenuInicio.qml · main.qml1,251
  4. Admin tooltesela-admin601
  5. Image and ISO buildconstruir.sh · usb-minimo.py · paquetes.sh1,153

What it has to achieve

The requirements behind every technical decision.

  • Windows 7-style usage

    Taskbar, Start menu with “All programs”, Computer and Control Panel where people expect them.

  • No terminal, no odd passwords

    Everything happens in windows: installing software, networks, accounts, drivers and updates.

  • Private by default

    No telemetry or automatic reports, a local account, and updates the user decides on.

  • One single ISO

    For laptops and desktops, integrated or dedicated graphics, new or old, like the Windows installer.

  • Windows programs and games

    Runs 32- and 64-bit programs and games through Wine, DXVK and Steam.

  • Only Tesela is visible

    No third-party names or logos in boot, installer, windows or menus.

Architecture: a Linux base, everything else hand-made

Tesela uses the Linux kernel and its drivers as the foundation. On top of it, every layer the user sees or touches is custom: the system image, the installer, the services, the desktop and the tools.

LayerWhat is thereOrigin
InterfaceStart menu, Control Panel, Computer, Tesela Update and Get Programs (QML and Python)Hand-made
InstallerWindows 11-style installation and first-run setup (QML and a Python engine)Hand-made
ServicesAutomatic graphics, network, Bluetooth, accounts, restore and activation (Bash, Python and systemd)Hand-made
DesktopKDE Plasma 6 with Tesela’s theme, icons, boot screen and wordingAdapted for Tesela
SystemImmutable atomic image with updates and rollback (bootc and OSTree)Adapted for Tesela
KernelLinux, Intel/AMD/NVIDIA drivers and Secure Boot with our own keysLinux base

How Tesela is built

  1. Containerfile

    The whole system defined as code: packages, drivers, configuration and branding.

  2. podman build

    Built on WSL; the NVIDIA module is compiled and signed inside.

  3. OCI image

    Layers rebuilt without duplicate files so it weighs and downloads less.

  4. Minimal USB

    A script resolves the installer’s dependencies and creates a small boot system.

  5. Bootable ISO

    Signed shim and GRUB: it boots with Secure Boot enabled.

  6. Atomic system

    The installer writes the image with bootc; every update can be rolled back.

visitor@nd: ~/Sistema Operativo Tesela

What it already does

The real status of each part, no gloss: tested in a virtual machine, built and awaiting testing, or waiting for real hardware.

  • Tested

    Windows 11-style installer

    The USB boots straight into the installer: language, disk, encryption and installing alongside Windows by shrinking its partition.

  • Tested

    First-run setup

    The account is created on first boot, always local, with no connection required.

  • Tested

    “Cristal” desktop and Start menu

    A Windows 7 menu with search, calculator, recent programs and “All programs” by folder.

  • Tested

    Custom Control Panel

    System, accounts, security, programs, Device Manager and display, in a single panel.

  • Tested

    Computer and Local Disk

    Internal and removable drives in one click; “Users”, “Program Files” and “System” like Windows.

  • Tested

    System Restore

    Restore points and rolling back an update that went wrong.

  • Built

    Tesela Update and Get Programs

    Updates and a built-in program store, with drivers listed separately.

  • Needs real PC

    Automatic graphics

    Intel, AMD and NVIDIA with Secure Boot; if a driver fails to load, it falls back to an open one by itself.

  • Tested

    Windows programs

    32- and 64-bit programs with Wine; games with DXVK and Steam.

  • Built

    Security and privacy

    Custom firewall, on-demand antivirus, accounts with separate permissions and zero telemetry.

  • Needs real PC

    Wi-Fi and Bluetooth

    Connect from the taskbar and the panel, with Bluetooth audio; the virtual machine has no radios.

  • Built

    Licences in order

    Its own licence for Tesela’s parts, and source code for every open component ready to distribute.

Technical challenges solved

Some real problems from development and how I solved them.

An ISO that did not fit on a USB stick

Problem
The first Tesela ISO weighed 11.3 GB. Measuring it from the inside, 5 GB was the USB system: almost a full copy of the desktop.
Solution
A Python script that resolves the dependency tree of the installer’s packages —conditional dependencies included— and assembles only what is needed; image layers rebuilt without duplicates; an initrd without graphics drivers.
Result
ISO from 11.3 to 5.4 GB; initrd from 290 to 135 MB.

NVIDIA with Secure Boot

Problem
The NVIDIA driver is an external module: with Secure Boot enabled, the system refuses to load it.
Solution
The open module is compiled inside the image itself and signed with a Tesela MOK key. At boot, a service picks the driver by model (Turing or newer → NVIDIA; older → nouveau/NVK).
Result
If the driver fails to load, it falls back to the open one with no reboot loops.

Only Tesela is visible

Problem
The base ships third-party names and logos in the boot screen, boot menu, window titles and menus.
Solution
Custom system identity and UEFI entry, a Plymouth boot screen written from scratch, a custom icon theme, and window titles changed by rewriting the translation catalogues (.mo).
Result
“— Dolphin” becomes “— File Explorer”; the boot menu says Tesela.

A hang that was not Tesela’s fault

Problem
In VirtualBox the ISO hung when switching to the real system, with CPUs stuck for minutes.
Solution
I isolated the cause —the Windows hypervisor that WSL enables— and built a test bench with QEMU/KVM inside WSL, UEFI firmware (OVMF) and logging over a serial console.
Result
The installer booted first time and a full installation reached the desktop.

Own parts, not borrowed ones

Problem
The Start menu used GPL-licensed Plasma data models, which would force that piece to be open.
Solution
A custom Python backend for the program list, recents and session, with search and calculator in QML.
Result
A 100% Tesela Start menu, under its own licence.

Accounts and permissions audited

Problem
Accounts shared a group that could read whole disks, and some passwords went through the command line.
Solution
A dedicated group for accounts, passwords via standard input (invisible in ps), private home folders and a firewall that only exposes services to the local network.
Result
There is always at least one administrator, and no one can see another account’s processes.

Project progress

  1. October 2026

    First versions

    From the first ISO to a complete system.

    • Installer, first-run setup and custom desktop
    • Control Panel, accounts, Wi-Fi, Bluetooth and restore points
    • 32- and 64-bit Windows programs
  2. October 2026

    Atomic image

    The whole system is now built as code on Linux.

    • Atomic updates with rollback
    • Drivers for new and old hardware
  3. November 2026

    Tesela in a virtual machine

    Atomic image, own ISO and a complete installation.

    • Installer, first-run setup, desktop and panel tested
    • ISO cut from 11.3 to 5.4 GB (to be re-tested)
    • Zero failed services at boot
  4. Next

    Towards version 1.0

    What is left before releasing it.

    • Testing on 2–3 real PCs: NVIDIA, AMD, Wi-Fi and Bluetooth
    • Own update server
    • A few weeks of testing with real users

Tech stack

~/tesela — bash
Languages
Bash, Python, QML/JavaScript, C
Base
Linux kernel with an atomic image (bootc and OSTree)
Boot and security
UEFI, signed shim and GRUB, MOK keys, LUKS2, SELinux, polkit
File systems
Btrfs, squashfs
Desktop
KDE Plasma 6, Qt 6, KWin, SDDM, Plymouth
Services
systemd, udev, NetworkManager, BlueZ, firewalld, Flatpak
Build
Containerfile, podman, skopeo, mksquashfs, xorriso, WSL
Testing
QEMU/KVM with OVMF, VirtualBox, serial console, Xvfb

Curious about how it is built?

I can show it to you running and walk you through any part in detail. Just write to me.

Or, if you prefer, another channel:

See the rest of the portfolio

Email me LinkedIn