Flatwork UI: mijn NixOS-desktop als flake

Vlak, technisch, rustig.
Een NixOS-desktoprice die nu herbruikbaar is als publieke flake:
github:jurrebuunk/flatwork-ui.
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.
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.
Human interface
/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.
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.