Skip to content

Home Manager modules

“Local network” folder of the app grid: nix-admin on the admin host.


Home profile for advanced users (computer scientists, developers, admins).

  • enable bool Enable advanced user features
  • enableTools bool Various tools for advanced users
  • enablePhoneTools bool Smartphone tools (scrcpy)
  • enableAdmin bool Enable administrator features (network, os tools)
  • enableNixAdmin bool Enable nix administration features
  • enableDnfDeveloper bool Enable all tools for DNF Codev Developer
  • enableDeveloper bool Enable tools for developer
  • enableVscode bool VS Code. Opt-in: ~0.3 GiB to download, Zed is the default editor
  • enableSlidev bool Slidev presentations (slidev-cli, plus its VS Code extension when enableVscode). Opt-in: ~0.4 GiB to download
  • enableEssentials bool Frequently used tools
  • enableVaultwardenSsh bool SSH agent backed by the user’s Vaultwarden vault (rbw). Do not enable on a host reached with ssh -A: the local agent would mask the forwarded one
darkone.home.advanced = {
enable = false;
enableTools = false;
enablePhoneTools = false;
enableAdmin = false;
enableNixAdmin = false;
enableDnfDeveloper = false;
enableDeveloper = true;
enableVscode = false;
enableSlidev = false;
enableEssentials = true;
enableVaultwardenSsh = false;
};

Agent tools of an AI space in a member’s home: Claude Code, Codex, OpenCode, MCP, skills.

Everything comes from the space (darkone.host.ai-space of the host), so OpenClaw and every member share the same MCP servers and skills. On by default in the space-member home; off on any other host.

  • MCP: HM programs.mcp, integrated into Claude Code, Codex and OpenCode;
  • skills: ~/.claude/skills, ~/.codex/skills, ~/.config/opencode/skills;
  • logins: once per member, claude (/login), codex login --device-auth, opencode auth login;
  • ~/projects: the space’s shared projects (projectsDir).
  • enable bool Agent tools of the AI space (Claude Code, Codex, OpenCode, MCP, skills)
darkone.home.ai-space.enable = false;

AI coding tools and supporting utilities.

  • enable bool Enable AI tools and supporting utilities
  • enableClaude bool Claude Code CLI
  • enableOpenCode bool OpenCode terminal AI agent
  • enableCodex bool OpenAI Codex CLI
  • enableAntigravity bool Google Antigravity CLI
  • enableAider bool Aider AI pair programming
  • enableGoose bool Goose AI coding agent (Block Inc.)
  • preferLocal bool Prefer local models than cloud ones
darkone.home.ai = {
enable = false;
enableClaude = false;
enableOpenCode = false;
enableCodex = false;
enableAntigravity = false;
enableAider = false;
enableGoose = false;
preferLocal = false;
};

Audio tools and effects.

Installs the MP3 encoder (lame) and, with GNOME, an audio player (vlc), then layers editors and effects (audacity, easyeffects) when enableTools is set. Real-time noise reduction (noisetorch) is intentionally disabled because it requires PulseAudio.

  • enable bool Audio tools
  • enableTools bool Audio tools / editors (audacity, easyeffects)
darkone.home.audio = {
enable = false;
enableTools = false;
};

Several graphical education packages.

  • enable bool Education software collection
  • enableBaby bool Education software for babies (<=6 yo)
  • enableChild bool Education software for children (6-12 yo)
  • enableStudent bool Education software for teenagers and adults (>=12 yo)
  • enableMath bool Math tools and apps
  • enableMusic bool Music tools and apps
  • enableScience bool Scientific tools and apps
  • enableDraw bool Draw tools and apps
  • enableLang bool Lang tools and apps
  • enableMisc bool Misc tools and apps (general, training…)
  • enableComputer bool Computing tools and apps (klavaro, etc.)
  • excludePackages listOf package Software of the enabled themes not to install, matched by name.
darkone.home.education = {
enable = false;
enableBaby = false;
enableChild = false;
enableStudent = false;
enableMath = true;
enableMusic = true;
enableScience = true;
enableDraw = true;
enableLang = true;
enableMisc = true;
enableComputer = true;
excludePackages = [ ];
};

Several graphical game packages.

  • enable bool Enable games
  • enableBaby bool Games for babies (<=6 yo)
  • enableChild bool Games for children (6-12 yo)
  • enableTeenager bool Games for teenagers and adults (>=12 yo)
  • enable3D bool More 3D Games
  • enableCli bool Cli Games
  • enableStk bool SuperTuxKart (only)
  • enableMore bool More (secondary) games in each categories
  • excludePackages listOf package Games of the enabled categories not to install, matched by name.
darkone.home.games = {
enable = false;
enableBaby = false;
enableChild = false;
enableTeenager = false;
enable3D = false;
enableCli = false;
enableStk = false;
enableMore = false;
excludePackages = [ ];
};

Launchers hidden from the app grid, gathered from gnome.nix and umi.nix.

  • hiddenEntries listOf str Desktop file ids hidden from the app grid: gnome.hiddenApps, umi.hiddenApps of a UMI host
darkone.home.gnome.hidden-apps.hiddenEntries = [ ];

Gnome tweaks for home-manager.

Hides launchers: the bare xterm, Qt5/Qt6 settings and NixOS manual for every profile, scrcpy and scrcpy-console when installed, Extensions for non-technical profiles, and (hideTechnicalIcons) Settings, Printers and File Roller for beginner / child profiles. hiddenApps (default: vim, btop, htop) hides more, entries still launchable by id (gnome/hidden-apps.nix, shared with the UMI module). keepKeyring opts the user out of the login keyring reset that follows an admin password change (read by the NixOS gnome module).

  • enable bool Enable gnome settings for home manager
  • hideTechnicalIcons bool Hide some icons for beginners / children / babies
  • keepKeyring bool Keep the login keyring when the admin changes the session password (keyring with a password of its own)
  • hiddenApps listOf str Desktop entries hidden from the app grid, still launchable by id
darkone.home.gnome = {
enable = false;
hideTechnicalIcons = false;
keepKeyring = false;
hiddenApps = [ ];
};

Image processing software.

Always installs the editor (gimp); the viewer (geeqie) is one of the office essentials. Then layers tooling by audience: enableBeginner adds pinta, enablePro adds inkscape/krita/yed, enable3D (with enablePro) adds blender, enableCAD adds freecad, and enableCli adds imagemagick/jhead.

  • enable bool Imagery creation
  • enablePro bool Additional image processing software for professionals
  • enableBeginner bool Additional image processing software for beginners
  • enable3D bool 3D softwares
  • enableCAD bool CAD softwares
  • enableCli bool CLI tools (imagemagick, jhead…)
darkone.home.imagery = {
enable = false;
enablePro = false;
enableBeginner = false;
enable3D = false;
enableCAD = false;
enableCli = false;
};

Default applications (xdg.mimeApps) for documents, images, audio, video.

Each MIME type lists desktop entries by preference, the first installed one wins: Papers (PDF), Geeqie (images), Celluloid (video), Audacious (audio), GNOME Text Editor (plain text), Zed (Markdown).

TODO: per-profile choices (beginner: GNOME apps, advanced: Zed, vim, VS Code), shell scripts in Zed, AsciiDoc in GNOME Text Editor.

  • enable bool Enable DNF default applications update
darkone.home.mime.enable = false;

Graphical music and sound creation apps.

Categorised by audience: enablePro (ardour, reaper, renoise, rosegarden), enableCreator (decibels, hydrogen), enableScore (musescore, muse-sounds-manager), enableFun (mixxx, mousai), enableCli (mpg123, cmus, lilypond), enableEasy (gnome-music vs. audacious, GNOME only), enableMpd (MPD daemon, ncmpcpp, mpd-mpris), and enableDev (lilypond).

  • enable bool Music creation home module
  • enablePro bool Hard tools for professionals (rose, ardour…)
  • enableFun bool Fun audio tools (mixxx…)
  • enableCli bool Command line audio tools (mpg123, cmus, moc…)
  • enableDev bool Audio software for developers (lilypond…)
  • enableMpd bool MPD daemon and players (mpd, ncmpcpp…)
  • enableEasy bool Easy tools instead of efficient (gnome-music vs audacious…)
  • enableScore bool Score softwares (musescore…)
  • enableCreator bool Creation tools for beginners (lmms, hydrogen…)
darkone.home.music = {
enable = false;
enablePro = false;
enableFun = false;
enableCli = false;
enableDev = false;
enableMpd = false;
enableEasy = false;
enableScore = false;
enableCreator = false;
};

DNF office: Firefox ESR, LibreWolf and Chromium. Doc: ../office.nix header.


🏠 darkone.home.office.cartable-fantastique

Section titled “🏠 darkone.home.office.cartable-fantastique”

DNF office: Cartable Fantastique toolbar in LibreOffice. Doc: ../office.nix header.


DNF office: Matrix desktop clients (Element, Fractal). Doc: ../office.nix header.


DNF office: Nextcloud client and GNOME Online Accounts. Doc: ../office.nix header.

  • webdavLogin package nextcloud-webdav-login helper, installed by the office package list.
darkone.home.office.nextcloud.webdavLogin = nextcloudWebdavLogin;

DNF office: md2pdf and the pandoc toolchain. Doc: ../office.nix header.

  • md2pdf package md2pdf command, installed by the office package list.
darkone.home.office.pandoc.md2pdf = md2pdf;

Office desktop: browsers, office suite, communication, cloud and PDF tools.

Packages are gated by audience flags (enableEssentials, enableOffice, enableTools, enableCommunication…). Sub-modules (office/):

  • browsers.nix: Firefox ESR (LibreWolf, Chromium) with shared policies: zone homepage and locale, tracking protection, Bitwarden pinned when the network runs Vaultwarden.
  • cartable-fantastique.nix: Cartable Fantastique toolbar in LibreOffice (cartableFantastique, default for the child profile).
  • matrix.nix: Element Desktop as soon as the network runs Matrix, pre-configured (Kanidm SSO); Fractal with enableCommunication.
  • nextcloud.nix: desktop client bound to the network instance, and nextcloud-webdav-login for GNOME Online Accounts.
  • pandoc.nix: md2pdf and the pandoc defaults (enablePandoc).
  • enable bool Default useful packages

  • enableMore bool More alternative packages

  • enableUnsafeFeatures bool Features for advanced non-child users

  • enableUBlock bool Enable ublock plugin

  • enableTools bool Little (gnome) tools (iotas, dialect, etc.)

  • enableProductivity bool Productivity apps (obsidian, time mgm, projects, etc.)

  • enableCommunication bool Communication tools

  • enableOffice bool Office packages (libreoffice, hunspell, fonts…)

  • enableFirefox bool Enable firefox

  • enableLibreWolf bool Enable LibreWolf (firefox alternative)

  • enableChromium bool Enable chromium

  • enableBrave bool Enable Brave Browser

  • enableEmail bool Email management packages (thunderbird)

  • enableSecurity bool Security tools (keepass)

  • enableCalendarContacts bool Calendar, contacts, tasks and related apps

  • enablePandoc bool Markdown to PDF toolchain: pandoc, typst, Gentium and DejaVu fonts, and the md2pdf command (Gentium body, A4, the zone’s language).

    Fenêtre de terminal
    md2pdf notes.md # A4, 10pt -&gt; notes.pdf
    md2pdf --big notes.md # A4, 12pt
    md2pdf --tablet notes.md # A6, 9pt (11pt with --big), zoomed on a tablet
    md2pdf -e context notes.md # ConTeXt engine (enablePandocContext)

    The engine is typst. It renders the raw TeX usual in notes (\pagebreak, \placecontent, \centerline…) and reports any other. Table columns fit their content, unless the separator dashes differ in length (|--|--------|): the widths then follow them. A bare pandoc notes.md -o notes.pdf uses the same engine, language and fonts. Under GNOME, the three layouts are also offered on right click in Nautilus (Scripts menu).

  • enablePandocContext bool ConTeXt as an alternative PDF engine, md2pdf -e context (~900 MiB, needs enablePandoc)

  • pandocAuthor nullOr str Creator written into PDFs by md2pdf. null takes the account’s full name.

  • enableEssentials bool Essential tools

  • hunspellLang str Hunspell dictionary 🡕

  • cartableFantastique nullOr ( enum [ "primaire" "college" "adaptateur" ] ) Edition of the Cartable Fantastique 🡕 toolbar installed in LibreOffice, for pupils with dyspraxia or other DYS disorders. null installs nothing.

    • primaire: Lire, Écrire, Mathématiques and Tableau bars.
    • college: adds languages, chemistry, electricity, equation editor.
    • adaptateur: adds tools for the adult adapting school material.

    Installed per account, in its LibreOffice profile, at Home Manager activation. Needs enableOffice. Text-to-speech goes through spd-say (speech-dispatcher, on by default on NixOS desktops).

  • enableElementAutoStart bool Auto-start Element Desktop (hidden) on login when the network runs Matrix

  • enableFractalAutoStart bool Auto-start Fractal on login, with enableCommunication (opt-in: no background mode, its window opens)

  • nextcloud.enable bool Install the Nextcloud desktop client, pre-bound to the network instance

  • nextcloud.server nullOr str Nextcloud instance the client binds to. null picks the one declared on the network (this zone first). Set it to target a local or external instance instead.

  • nextcloud.enableAutoStart bool Start the Nextcloud client in the background on login

  • nextcloud.enableWebdav bool Ship nextcloud-webdav-login, a one-shot helper that authenticates through the browser (Kanidm SSO) and registers the result as a GNOME Online Account: files over WebDAV in the file manager, plus calendar and contacts in Evolution. Needed because Nextcloud refuses to create an app password from its web UI for an OIDC user.

    The helper also prints the app password, so any other WebDAV client can be pointed at the same account.

    Ignored when darkone.home.office.nextcloud.enable is off.

  • nextcloud.syncDir nullOr str Local folder pre-filled in the setup wizard, relative to $HOME.

  • shared raw Office values shared with the office/ sub-modules.

darkone.home.office = {
enable = false;
enableMore = false;
enableUnsafeFeatures = false;
enableUBlock = false;
enableTools = false;
enableProductivity = false;
enableCommunication = false;
enableOffice = false;
enableFirefox = false;
enableLibreWolf = false;
enableChromium = false;
enableBrave = false;
enableEmail = false;
enableSecurity = false;
enableCalendarContacts = false;
enablePandoc = false;
enablePandocContext = false;
pandocAuthor = "Jane Doe";
enableEssentials = true;
hunspellLang = "en-us";
cartableFantastique = "primaire";
enableElementAutoStart = true;
enableFractalAutoStart = false;
nextcloud.enable = detectedNextcloud != null;
nextcloud.server = "https://cloud.example.com";
nextcloud.enableAutoStart = true;
nextcloud.enableWebdav = true;
nextcloud.syncDir = "Nextcloud";
shared = {
inherit
lang
country
hasHomepage
homeUrl
hasMatrix
hasVaultwarden
nextcloudUrl
hasNextcloud
hasNextcloudWebdav
;
};
};

DNF UMI: SuperTuxKart driven by the mouse alone (enableStkWithMouse). Doc: ../umi.nix header.


Unified Multimodal Input (UMI)

Touchscreen + voice + gaze (Talon autostart + Onboard).

  • enable bool UMI multimodal input configuration (Talon + Onboard)
  • enableTalonAutostart bool Start Talon on session login, once the panel tray is up (talon must be in PATH).
  • communityScripts nullOr package talonhub/community tree deployed to ~/.talon/user/community.
  • enableSpeech bool Talon speech recognition at start. Off by default: put to sleep at each Talon start, stray words must not trigger commands
  • enableDwell bool dwell click: clicking by resting the pointer. Off by default — it is only usable with an eye tracker, and with a mouse it fires on whatever the pointer was left over (the a11y menu toggling zoom or the on-screen keyboard, typically)
  • dwellTime float Dwell click delay in seconds.
  • enableTrackerAuto bool Eye tracker plugged in: Talon gaze mouse control and hover click on; unplugged: hover click off (Cinnamon session). Takes over enableDwell in Cinnamon.
  • gazeFilterSpeed nullOr numbers.positive Talon Control Mouse per-eye gaze filter coefficient, with enableTrackerAuto: higher reacts faster and smooths less. Default: Talon’s own, the head refines the last millimetres; null keeps Talon’s whatever its version.
  • cursorFilterSpeed nullOr numbers.positive Talon Control Mouse cursor filter coefficient, with enableTrackerAuto: higher reacts faster, overshoots more. null keeps Talon’s own (2.0).
  • headSpeed nullOr numbers.positive Talon Head Control sensitivity, with enableTrackerAuto and enableHeadControl: above 1 a slight head movement moves the cursor, below 1 ample, poorly controlled movements are dampened. null keeps Talon’s own (1).
  • enableGazeControl bool Talon Gaze Control, with enableTrackerAuto: the cursor follows the gaze.
  • enableHeadControl bool Talon Head Control, with enableTrackerAuto: head movements refine the cursor placed by the gaze (headSpeed). Off for an unsteady head, which drags the cursor away from the gaze.
  • enableHeadJump bool Talon Head Jump, with enableTrackerAuto: a head movement brings the cursor to the gaze
  • enableMouseJump bool Talon Mouse Jump, with enableTrackerAuto: moving a real mouse towards the gaze brings the cursor there. Off by default, it yanks a helper’s pointer
  • enableGazeFocus bool Talon Gaze Focus (experimental), with enableTrackerAuto: the window looked at gets the focus
  • panelHeight ints.between 40 96 Cinnamon panel height in pixels, its icons follow (gaze targets).
  • textScaling float Text scaling factor of the Cinnamon session (buttons grow with their labels).
  • enablePanel bool Cinnamon panel managed by DNF: launchers and open windows set apart, hover click controls (click types, pause zone), accessibility menu, keyboard toggle; no Bluetooth icon nor corner bar. Rewritten at every activation.
  • enableMaximize bool Application windows open maximized (Cinnamon extension), the panel stays in reach. Dialogs, Onboard and fixed-size windows keep their size.
  • panelLaunchers listOf str Panel launchers (desktop file ids), with enablePanel.
  • menuFavorites listOf str Cinnamon menu favorites (desktop file ids), rewritten at every activation. dnf-umi-calibrate.desktop, with enableTrackerAuto, starts the eye tracker calibration.
  • enableRofiMenu bool Full-screen application grid (rofi), UMI host only: pages of big tiles turned by edge buttons, one click launches, settings panels left out. Opened by the first panel launcher (with enablePanel).
  • rofiGridResolution submodule Application grid page, in tiles, with enableRofiMenu. The default 6 × 4 fits 96 px icons on a 1600×900 screen; fewer tiles grow wider.
    • columns ints.between 1 12 Tiles per row.
    • rows ints.between 1 8 Tile rows per page.
  • hiddenApps listOf str Applications hidden from the grid and the Cinnamon menu (desktop file ids), UMI host only. Launches by id and file associations still work.
  • enableStkWithMouse bool SuperTuxKart driven by the mouse alone, UMI host only: the stick (or mouse moves) accelerates, brakes and steers, left click drifts, double click fires, right click uses nitro. Installs the game, its launcher runs the converter
darkone.home.umi = {
enable = false;
enableTalonAutostart = true;
communityScripts = null;
enableSpeech = false;
enableDwell = false;
dwellTime = 1.6;
enableTrackerAuto = true;
gazeFilterSpeed = 1.0;
cursorFilterSpeed = 4.0;
headSpeed = 0.3;
enableGazeControl = true;
enableHeadControl = true;
enableHeadJump = false;
enableMouseJump = false;
enableGazeFocus = false;
panelHeight = 64;
textScaling = 1.5;
enablePanel = true;
enableMaximize = true;
panelLaunchers = [ ];
menuFavorites = [ ];
enableRofiMenu = true;
rofiGridResolution.columns = 6;
rofiGridResolution.rows = 4;
hiddenApps = [ ];
enableStkWithMouse = false;
};

Video tools and applications.

Always installs the default player (celluloid, GTK4/libadwaita front-end over mpv) and gates the rest by audience: enableTools (ffmpeg, mlt, vlc, video-trimmer, parabolic), enableEditing (kdenlive, shotcut), enableCreator (OBS Studio with obs-backgroundremoval, obs-vkcapture, etc.), enableUnfree (davinci-resolve) and enableAlternative (mpv).

  • enable bool Video creation and tools home module
  • enableTools bool Video tools for professionals
  • enableEditing bool Video editing tools (kdenlive…)
  • enableCreator bool Video creator tools (obs…)
  • enableUnfree bool Unfree video apps (davinci…)
  • enableAlternative bool Alternative video apps (mpv…)
darkone.home.video = {
enable = false;
enableTools = false;
enableEditing = false;
enableCreator = false;
enableUnfree = false;
enableAlternative = false;
};