Screenshot van de Flatwork UI NixOS-desktop
Flatwork UI op mijn Niri/NixOS-desktop.

Vlak, technisch, rustig.

Een NixOS-desktoprice die nu herbruikbaar is als publieke flake:

github:jurrebuunk/flatwork-ui

.

niri / flatwork-ui / 1px

Ik heb mijn desktoprice herschreven tot een losse flake: Flatwork UI. Het idee is simpel: het visuele systeem staat op één publieke plek, en mijn NixOS-config neemt de hele ervaring daarvandaan over in plaats van een stapel lokale themabestanden mee te slepen.

Er staat ook een getagde release met downloadbare bestanden op de releasespagina.

Hij is gebouwd voor mijn Niri-desktop, maar het belangrijkste is de ontwerptaal: vierkante vormen, warme donkere vlakken, dunne structurele randen, serif/mono-typografie en een ingetogen technisch blauw.

0px radiusGeen pillen, geen ronde tabs, geen bubbelige UI.
1px-randenStructuur komt van lijnen, niet van schaduwen.
ingetogen accentBlauwgrijze interactiekleur, geen neon-cyberpunk.
serif / monoMenselijke labels en machinewaarden krijgen elk hun eigen stem.

De stijl

Het standaardpalet is donker, maar niet puur zwart. De basiskleur is een warm bijna-zwart, met iets lichtere vlakken en een onverzadigd blauw accent.

background


#1b1818

surface


#252121

surfaceAlt


#302b2b

text


#c4c1c1

accent


#8aa1a8

focus


#a5bbc2

soft


#9fc7c4

highlight


#d7ffc3

Typografie is waarschijnlijk het grootste deel van de persoonlijkheid. STIX Two Text geeft de desktop een licht academisch, menselijk gevoel. IBM Plex Mono houdt de technische stukken strak.

STIX Two Text

Human interface

IBM Plex Mono

/nix/store


13:37:42

Het doel is niet om retro te ogen. Het is in de eerste plaats modern, maar met wat workstation-discipline: compacte witruimte, duidelijke focusstates, rustige kleuren en geen decoratieve zachtheid.

De technische opzet

Het thema zelf is gewoon een Nix-waarde. Daardoor voelt de desktop minder als een map met dotfiles en meer als een klein designsysteem.

# in een andere flake
flatwork-ui = {
  url = "github:jurrebuunk/flatwork-ui";
  inputs.nixpkgs.follows = "nixpkgs";
};

Mijn NixOS-config geeft het thema vervolgens door aan zowel NixOS als Home Manager:

specialArgs = {
  inherit inputs;
  theme = inputs.flatwork-ui.lib.themes.default;
};

home-manager.extraSpecialArgs = {
  inherit inputs;
  theme = inputs.flatwork-ui.lib.themes.default;
};

En in plaats van elke app-config met de hand opnieuw op te bouwen, wordt de volledige Home Manager-ervaring uit de flake geïmporteerd:

imports = [
  inputs.flatwork-ui.nixosModules.fonts
  inputs.flatwork-ui.homeManagerModules.default
];

Dat geeft me de gedeelde styling voor de desktop: GTK, Firefox, Waybar, Rofi, Mako, SwayOSD, Alacritty, Fastfetch en de shellprompt. In mijn hoofdconfig staan alleen nog de machinespecifieke delen: Niri-sneltoetsen, monitornamen, opstartgedrag, secrets en de hardware van de host.

tokenskleuren, fonts, vormen, witruimte
modulesHome Manager past de ervaring toe
hostNiri, schermen, services, hardware
desktopoveral dezelfde visuele taal

Waarom een losse flake?

Omdat ik de rice herbruikbaar wil maken. Mijn eigenlijke NixOS-repo hoort mijn machine te beschrijven. Flatwork UI beschrijft de look-and-feel.

Het betekent ook dat ik themavarianten kan uitproberen zonder modules te herschrijven:

theme = inputs.flatwork-ui.lib.themes.gruvbox;
theme = inputs.flatwork-ui.lib.themes.starship;
theme = inputs.flatwork-ui.lib.themes.teal;

De standaard is nog steeds die uit de screenshot: warme donkere achtergrond, blauwgrijs accent, STIX Two Text, IBM Plex Mono en alles vierkant.

Het eindresultaat

Met Flatwork UI voelt mijn desktoprice voor het eerst als een echt product van mijn config, in plaats van iets wat er bovenop is gelegd. De ontwerpregels staan op één plek, de modules zijn herbruikbaar en de hostconfig is kleiner.

Dat vind ik het mooiste aan NixOS-rice: niet alleen de desktop er goed uit laten zien, maar die look ook reproduceerbaar maken.