Skip to content

Modules

A full desktop configuration with gnome, multimedia and office tools.

  • enable bool Desktop optimized host configuration
darkone.host.desktop.enable = false;

The main gateway / router of a local network zone.

  • enable bool Enable gateway features for the current host (dhcp, dns, proxy, etc.)
  • enableFail2ban bool Enable fail2ban service
  • enableAdguardhome bool Enable pre-configured Aguard Home service
  • enableIdm bool Enable identity manager (kanidm)
darkone.host.gateway = {
enable = false;
enableFail2ban = true;
enableAdguardhome = builtins.hasAttr "adguardhome" host.services;
enableIdm = builtins.hasAttr "idm" host.services;
};

The main headscale coordination server.

  • enable bool Enable headscale coordination server
  • enableFail2ban bool Enable fail2ban service
  • enableClient bool Enable tailscale client on HCS node (recommande to host services)
  • enableIdm bool Enable identity manager (kanidm)
darkone.host.hcs = {
enable = false;
enableFail2ban = true;
enableClient = true;
enableIdm = builtins.hasAttr "idm" host.services;
};

Desktop config + laptop specific tools & configuration.

  • enable bool Laptop optimized host configuration
darkone.host.laptop.enable = false;

Every host configuration is based on this minimal config.

  • enable bool Minimal host configuration
  • secure bool Prefer more secure options (disable mutable users…)
  • enableHomepage bool Enable the auto-configured homepage service
  • enableForgejo bool Enable pre-configured forgejo git forge service
  • enableImmich bool Enable pre-configured immich service
  • enableNextcloud bool Enable pre-configured nextcloud service
  • enableMonitoring bool Enable pre-configured monitoring service (prometheus, grafana)
  • enableVaultwarden bool Enable pre-configured Vaultwarden service
  • enableMattermost bool Enable a mattermost server
  • enableNfsHomeShares bool Enable a DNF nfs home shares
  • enableJitsiMeet bool Enable jitsi-meet service
  • enableRestic bool Enable Restic service
  • enableJellyfin bool Enable Jellyfin server
  • enableOutline bool Enable Outline WIKI service
  • enableMealie bool Enable Mealie service
darkone.host.minimal = {
enable = false;
secure = false;
enableHomepage = attrsets.hasAttrByPath [ "services" "homepage" ] host;
enableForgejo = attrsets.hasAttrByPath [ "services" "forgejo" ] host;
enableImmich = attrsets.hasAttrByPath [ "services" "immich" ] host;
enableNextcloud = attrsets.hasAttrByPath [ "services" "nextcloud" ] host;
enableMonitoring = attrsets.hasAttrByPath [ "services" "monitoring" ] host;
enableVaultwarden = attrsets.hasAttrByPath [ "services" "vaultwarden" ] host;
enableMattermost = attrsets.hasAttrByPath [ "services" "mattermost" ] host;
enableNfsHomeShares = attrsets.hasAttrByPath [ "services" "nfs" ] host;
enableJitsiMeet = builtins.hasAttr "jitsi-meet" host.services;
enableRestic = builtins.hasAttr "restic" host.services;
enableJellyfin = builtins.hasAttr "jellyfin" host.services;
enableOutline = builtins.hasAttr "outline" host.services;
enableMealie = builtins.hasAttr "mealie" host.services;
};

Portable configuration for a bootable USB drive containing a NixOS machine from the local network.

  • enable bool Portable host configuration for usb keys
darkone.host.portable.enable = false;

Improved configuration for servers (minimal, no sleep, watchdog…).

  • enable bool Server host minimal configuration
  • enableWatchdog bool Enable systemd watchdog
darkone.host.server = {
enable = false;
enableWatchdog = true;
};

Virtual machines guest tools.

  • enableVirtualbox bool Virtualbox client
  • enableQemu bool Qemu/KVM client
  • enableXen bool Xen client
darkone.host.vm = {
enableVirtualbox = false;
enableQemu = false;
enableXen = false;
};

Profile for advanced users (computer scientists, developers, admins).

  • enable bool Advanced user (admin sys, developper)
darkone.profile.advanced.enable = false;

NixOS configuration for the local LAN administrator computer.

  • enable bool Enable NIX configuration builder tools
  • enableNh bool Enable nix helper (nh) management tool
darkone.admin.nix = {
enable = false;
enableNh = false;
};

A pre-configured git environment.

  • enable bool Pre-configured git environment
darkone.console.git.enable = false;

Pandoc with texlive and exiftool utils + gentium fonts.

  • enable bool Pre-configured pandoc environment
darkone.console.pandoc.enable = false;

A full zsh installation with aliases, bindkeys and optimized prompt.

  • enable bool ZSH environment
  • enableForRoot bool Root home manager ZSH configuration
darkone.console.zsh = {
enable = false;
enableForRoot = false;
};

Pre-configured gnome environment with dependences.

  • enable bool Pre-configured gnome WM
  • enableDashToDock bool Dash to dock plugin
  • enableLightDM bool Enable LightDM instead of GDM
  • enableCaffeine bool Disable auto-suspend
  • enableGsConnect bool Communication with devices
  • xkbVariant str Keyboard variant. Layout is extracted from console keymap.
darkone.graphic.gnome = {
enable = false;
enableDashToDock = false;
enableLightDM = false;
enableCaffeine = false;
enableGsConnect = false;
xkbVariant = "oss";
};

SuperTuxKart with configurations to play in local network.

  • enable bool SuperTuxKart + firewall config + tracks share
  • isNfsServer bool NFS server (share tracks), default is the main NFS server. (wip, enable on main server)
darkone.graphic.supertuxkart = {
enable = false;
isNfsServer = isMainNfsServer;
};

Virt manager + viewer with spice, win-virtio and ovmf.

  • enable bool Virt manager with dependencies
darkone.graphic.virt-manager.enable = false;

Virtualbox host installation.

  • enable bool Pre-configured virtualbox installation
  • enableExtensionPack bool Enable extension pack (causes recompilations)
darkone.graphic.virtualbox = {
enable = false;
enableExtensionPack = false;
};

Full-configured AdGuard Home for local gateway / router.

  • enable bool Enable local adguardhome service
darkone.service.adguardhome.enable = false;

Audio services: alsa, pulse (not jack for the moment).

  • enable bool Enable sound system
darkone.service.audio.enable = false;

Media library management system for obsessive music geeks.

Beets service is hosted by β€œcommon-files” user.

Terminal window
su - common-files
beets import [dir]
  • enable bool Enable beets for common-files
  • enableService bool Enable beets service (incoming music -> shared music dir)
darkone.service.beets = {
enable = false;
enableService = false;
};

Pre-configured dnsmasq for local gateway / router.

  • enable bool Enable local dnsmasq service
darkone.service.dnsmasq.enable = false;

Fail2ban DNF specific module.

  • enable bool Enable fail2ban with DNF specificities
darkone.service.fail2ban.enable = false;

A full-configured forgejo git forge.

  • enable bool Enable local forgejo service
darkone.service.forgejo.enable = false;

A full-configured headscale service for HCS.

  • enable bool Enable headscale DNF service
  • enableGRPC bool Open GRPC TCP port
darkone.service.headscale = {
enable = false;
enableGRPC = false;
};

A Home Assistant with some plugins (wip).

  • enable bool Enable home assitant
darkone.service.home-assistant.enable = false;

Dynamically configured homepage dashboard for your local network.

  • enable bool Enable homepage dashboard + httpd + host
  • localServices listOf attrs Services to add in Local Applications section
  • globalServices listOf attrs Full network common & public-accessible services
  • remoteServices listOf attrs Services to add in Remote Applications section
  • bookmarks listOf attrs Replace default bookmarks (links)
  • widgets listOf attrs Replace default widgets
darkone.service.homepage = {
enable = false;
localServices = [ ];
globalServices = [ ];
remoteServices = [ ];
bookmarks = [ ];
widgets = [ ];
};

Kanidm (identity manager) DNF Service.

  • enable bool Enable local SSO with Kanidm
darkone.service.idm.enable = false;

Immich (photo management) full-configured service.

  • enable bool Enable local immich service
  • enableMachineLearning bool Enable machine learning features (face recognition, object detection)
  • enableRedis bool Enable Redis for caching (recommended for performance)
darkone.service.immich = {
enable = false;
enableMachineLearning = false;
enableRedis = false;
};

A full-configured jellyfin server.

  • enable bool Enable jellyfin service
darkone.service.jellyfin.enable = false;

A full-configured jitsi-meet service.

  • enable bool Enable local jitsi-meet service
darkone.service.jitsi-meet.enable = false;

A mattermost server. (WIP)

  • enable bool Enable mattermost service
  • enableSmtp bool Enable SMTP to send emails (recommended)
darkone.service.mattermost = {
enable = false;
enableSmtp = true;
};

Mealie Recipe Management

  • enable bool Enable mealie service
darkone.service.mealie.enable = false;

Supervision module with prometheus, grafana and node exporter.

  • enable bool Enable monitoring with prometheus, grafana and node exporter
  • isNode bool Is a monitoring node
  • retentionTime str DurΓ©e de rΓ©tention des mΓ©triques Prometheus
darkone.service.monitoring = {
enable = false;
isNode = lib.hasAttrByPath [ "features" "monitoring-node" ] host;
retentionTime = "30d";
};

Nix cache proxy with NCPS module.

This module is activated by core. Server and clients are automatically detected.

  • enable bool Enable nix cache proxy for packages
  • dataPath str Nix cache proxy cache folder
  • extraOptions attrs services.ncps extra options
darkone.service.ncps = {
enable = false;
dataPath = "/var/cache/ncps";
extraOptions = { };
};

Nextcloud full-configured service.

  • enable bool Enable local nextcloud service
  • adminUser str Admin username for Nextcloud
  • adminPassword str Admin password for Nextcloud (change this!)
darkone.service.nextcloud = {
enable = false;
adminUser = "admin";
adminPassword = "changeme";
};

NFS server + client for home shares.

  • enable bool Enable NFS DNF server (avoid enable manually)
  • serverDomain str NFS Server FQDN
darkone.service.nfs = {
enable = hasServer && (isServer || isClient);
serverDomain = "nfs";
};

A full-configured outline wiki.

  • enable bool Enable local outline service
darkone.service.outline.enable = false;

Postfix SMTP Relay.

  • enable bool Enable Postfix SMTP Relay
darkone.service.postfix.enable = false;

Printers and scanners.

  • enable bool Default useful packages
  • loadAll bool Full printers and scanners
  • enableScanners bool Enable scanners
  • enableHpPrinters bool HP printers only
  • enableManualInstall bool Manual drivers installation
darkone.service.printing = {
enable = false;
loadAll = false;
enableScanners = false;
enableHpPrinters = false;
enableManualInstall = false;
};

Restic backup module with DNF configuration.

Default settings:

/srv/nfs/(homes|common) -> /mnt/backup/restic/[host]/srv/nfs
/mnt/medias/(music|videos) -> /mnt/backup/restic/[host]/mnt/medias
/ -> /mnt/backup/restic/[host]/system
  • enable bool Enable main restic backup service
  • enableDryRun bool Dry Run mode
  • enableServer bool Enable restic rest server
  • enableWaitRemoteFs bool Trigger the restic service only if remote-fs service is started
  • enableSystemBackup bool Enable full system backup excepted /srv, /mnt and cache files
  • enableExtraSystemBackup bool Enable system backup on extra repository
  • mainBackupZone str Zone of main backup (to select the right password)
  • extraBackupZone str Zone of extra backup (to select the right password)
  • repositoryRoot str Main backup target root path (default is local)
  • extraRepositoryRoot str Extra backup target root path
  • enableNfsBackup bool Backup /srv/nfs/<xxx> dirs
  • enableExtraNfsBackup bool Enable NFS backup on extra repository
  • nfsPaths listOf str NFS dirs (/srv/nfs/<xxx>) to include in backup configuration
  • enableMediasBackup bool Backup /srv/medias/<xxx> dirs
  • enableExtraMediasBackup bool Enable medias backup on extra repository
  • mediasPaths listOf str NFS dirs (/srv/medias/<xxx>) to include in backup configuration
darkone.service.restic = {
enable = false;
enableDryRun = false;
enableServer = false;
enableWaitRemoteFs = false;
enableSystemBackup = false;
enableExtraSystemBackup = false;
mainBackupZone = zone.name;
extraBackupZone = "";
repositoryRoot = "rest:restic.${zone.domain}:8888";
extraRepositoryRoot = "rest:restic.${network.zones.other-zone.domain}:8888";
enableNfsBackup = false;
enableExtraNfsBackup = false;
nfsPaths = [ ];
enableMediasBackup = false;
enableExtraMediasBackup = false;
mediasPaths = [ ];
};

Tailscale client service for HCS.

  • enable bool Enable tailscale client to connect HCS
  • isGateway bool This tailscale node is a subnet gateway
  • isExitNode bool Configure this client as exit node
darkone.service.tailscale = {
enable = false;
isGateway = false;
isExitNode = false;
};

A full-configured vaultwarden server (wip).

  • enable bool Enable local Vaultwarden service
  • enableSmtp bool Enable SMTP to send emails (recommended)
darkone.service.vaultwarden = {
enable = false;
enableSmtp = true;
};

The core DNF module.

  • enable bool Darkone framework core system (activated by default)
  • enableSystemdBoot bool Enable the default boot loader
  • enableFstrim bool SSD optimisation with fstrim
  • enableFirewall bool Enable firewall (default true)
  • enableSops bool Enable sops dnf module (default true)
  • enableFlatpak bool Enable flatpak DNF configuration (only for graphic environments)
  • enableKmscon bool Enable nerd font for TTY
  • enableBoost bool Enable overclocking, corectl
  • enableAutoSuspend bool Enable automatic suspend (for laptops, ignored if disableSuspend is true)
  • disableSuspend bool Full suspend disable (for servers)
  • enableCommonFilesUser bool Enable the common-files user used by several services
darkone.system.core = {
enable = true;
enableSystemdBoot = true;
enableFstrim = true;
enableFirewall = true;
enableSops = true;
enableFlatpak = true;
enableKmscon = true;
enableBoost = false;
enableAutoSuspend = false;
disableSuspend = false;
enableCommonFilesUser = false;
};

Documentation (man) for developers and admins.

  • enable bool Enable useful technical documentation (man, nixos)
darkone.system.documentation.enable = false;

Hardware configuration improvements.

  • enable bool Enable hardware optimisations
  • enableIntel bool Enable intel microcode updates
  • enableAmd bool Enable amd microcode updates
darkone.system.hardware = {
enable = false;
enableIntel = false;
enableAmd = false;
};

Location and lang configuration.

  • enable bool Enable i18n with network zone configuration by default
  • locale str Network locale
  • timeZone str Network time zone
darkone.system.i18n = {
enable = false;
locale = "fr_FR.UTF-8";
timeZone = "Europe/Paris";
};

DNF Service registration and configuration.

  • enable bool Enable DNF services manager to register and expose services
  • service attrs Global services configuration <name>
    • enable bool Enable service proxy
    • defaultParams submodule Theses options are calculated by dnfLib.srv.extractServiceParams
      • domain str Domain name for the service
      • title str Display name in homepage
      • description str Service description for homepage
      • icon str Icon name for homepageΒ πŸ‘•
      • global bool Global service is accessible on Internet
      • noRobots bool Prevent robots from scanning if global is true
      • fqdn str Calculated FQDN or the service before the reverse proxy
      • href str Calculated URL of the service before the reverse proxy
      • ip str Calculated IP to contact the service
    • displayOnHomepage bool Display a link on homepage
    • persist.dirs listOf str Service persistant dirs
    • persist.files listOf str Service persistant files
    • persist.dbDirs listOf str Service persistant dirs with database(s)
    • persist.dbFiles listOf str Service database file(s)
    • persist.varDirs listOf str Variable secondary files (log, cache, etc.)
    • persist.mediaDirs listOf str Service media dirs (pictures, videos, big files)
    • proxy.enable bool Whether to create virtualHost configuration (false for services that manage their own)
    • proxy.isProtected bool Oauth2 protected service
    • proxy.defaultService bool Is the default service
    • proxy.servicePort nullOr port Service internal port
    • proxy.preExtraConfig lines Extra caddy virtualHost configuration (prefix)
    • proxy.extraConfig lines Extra caddy virtualHost configuration
    • proxy.extraGlobalConfig lines Extra caddy configuration
    • proxy.scheme str Internal service scheme (http / https)
darkone.system.services = {
enable = false;
service.enable = false;
service.defaultParams.domain = "";
service.defaultParams.title = "";
service.defaultParams.description = "";
service.defaultParams.icon = "";
service.defaultParams.global = false;
service.defaultParams.noRobots = true;
service.defaultParams.fqdn = "";
service.defaultParams.href = "";
service.defaultParams.ip = "";
service.defaultParams.displayOnHomepage = true;
service.persist.dirs = [ ];
service.persist.files = [ ];
service.persist.dbDirs = [ ];
service.persist.dbFiles = [ ];
service.persist.varDirs = [ ];
service.persist.mediaDirs = [ ];
service.proxy.enable = true;
service.proxy.isProtected = false;
service.proxy.defaultService = false;
service.proxy.servicePort = null;
service.proxy.preExtraConfig = "";
service.proxy.extraConfig = "";
service.proxy.extraGlobalConfig = "";
service.proxy.scheme = "https";
};

DNF sops, passwords and secrets management

  • enable bool Enable sops automated configuration for DNF
darkone.system.sops.enable = false;

  • enable bool Enable srv dirs, create the root dir (default /srv)
  • enableNfs bool Enable nfs service paths (nfs/common, nfs/homes)
  • enableMedias bool Enable media services paths (medias/[videos|music|incomming/…])
  • root str Root dir for persistant data (/srv)
  • nfs str NFS root directory (/srv/nfs)
  • homes str Directory for shared homes (/srv/nfs/homes)
  • common str Shared common directory (/srv/nfs/common linked to ~/Public)
  • medias str Medias root dir (/srv/medias)
  • music str Shared music files directory (/srv/medias/music)
  • videos str Shared video files directory (/srv/medias/videos)
  • incoming str Shared incoming directory (/srv/medias/incoming write access)
  • incomingMusic str Shared incoming directory (/srv/medias/incoming/music write access)
  • incomingVideos str Shared incoming directory (/srv/medias/incoming/videos write access)
darkone.system.srv-dirs = {
enable = cfg.enableNfs || cfg.enableMedias;
enableNfs = false;
enableMedias = false;
root = "/srv";
nfs = ;
homes = ;
common = ;
medias = ;
music = ;
videos = ;
incoming = ;
incomingMusic = ;
incomingVideos = ;
};

Build users from DNF configuration.

  • enable bool Users common builder (enabled by default)
darkone.user.build.enable = true;

Root user specific settings.

  • enable bool Root user specific configuration
darkone.user.root.enable = true;

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

  • enable bool Enable advanced user features
  • enableTools bool Various tools for advanced users
  • enableAdmin bool Enable administrator features (network, os tools)
  • enableNixAdmin bool Enable nix administration features
  • enableDeveloper bool Enable tools for developer
  • enableEssentials bool Frequently used tools
darkone.home.advanced = {
enable = false;
enableTools = false;
enableAdmin = false;
enableNixAdmin = false;
enableDeveloper = true;
enableEssentials = true;
};

Several graphical education packages.

  • 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.)
darkone.home.education = {
enableBaby = false;
enableChild = false;
enableStudent = false;
enableMath = true;
enableMusic = true;
enableScience = true;
enableDraw = true;
enableLang = true;
enableMisc = true;
enableComputer = true;
};

Several graphical game packages.

  • 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
  • stkServer str STK server domain name
darkone.home.games = {
enableBaby = false;
enableChild = false;
enableTeenager = false;
enable3D = false;
enableCli = false;
enableStk = false;
enableMore = false;
stkServer = osConfig.darkone.service.nfs.serverDomain;
};

Gnome tweaks for home manager.

  • enable bool Enable gnome settings for home manager
  • hideTechnicalIcons bool Hide some icons for beginners / children / babies
darkone.home.gnome = {
enable = false;
hideTechnicalIcons = false;
};

Image processing softwares (gimp, geeqie, pinta + blender, inkscape, krita…).

  • 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;
};

Mime types DNF module. (wip)

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

Graphical music and sound creation apps.

  • 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…)
  • enableTools bool Audio tools / editors (audacity…)
  • 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;
enableTools = false;
enableScore = false;
enableCreator = false;
};

Common tools for office desktop.

  • enable bool Default useful packages
  • enableMore bool More alternative packages
  • enableEssentials bool Essential tools
  • enableTools bool Little (gnome) tools (iotas, dialect, etc.)
  • enableProductivity bool Productivity apps (obsidian, time management, projects, etc.)
  • enableCalendarContacts bool Gnome calendar, contacts and related apps
  • enableCommunication bool Communication tools
  • enableOffice bool Office packages (libreoffice)
  • enableFirefox bool Enable firefox
  • enableChromium bool Enable chromium
  • enableBrave bool Enable Brave Browser
  • enableEmail bool Email management packages (thunderbird)
  • huntspellLang str Huntspell LangΒ πŸ‘•
darkone.home.office = {
enable = false;
enableMore = false;
enableEssentials = true;
enableTools = false;
enableProductivity = false;
enableCalendarContacts = false;
enableCommunication = false;
enableOffice = true;
enableFirefox = true;
enableChromium = false;
enableBrave = false;
enableEmail = false;
huntspellLang = "en-us";
};

Home sync module. (WIP)

  • enable bool Enable local syncthing service
  • enableTray bool Enable syncthing tray app / icon
darkone.home.syncthing = {
enable = false;
enableTray = true;
};

Video tools and apps.

  • 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;
};

  • enable bool Preconfigured ZED editor
  • enableAssistant bool Enable AI Assistant
darkone.home.zed = {
enable = false;
enableAssistant = false;
};