Droidnix: A Dendritic NixOS + Home Manager Configuration

Table of Contents

Table of Contents

Introduction   intro

What is Droidnix

Droidnix is a modular, declarative NixOS + Home Manager configuration system. It allows users to choose between Hyprland and Mangowc as their window manager, with shared and WM-specific configurations managed via Emacs Org and Nix Flakes. The project is designed for reproducibility, maintainability, and cross-machine compatibility.

Folder Structure and Goals

The Droidnix repository is organized into two main parts:

  1. .assets/: Static, non-generated files (e.g., configs, scripts, themes).
  2. Generated folders (common, hyprland, mangowc): NixOS and Home Manager configurations, generated from Org files.
.
├── assets
│   ├── common
│   │   ├── conf
│   │   │   └── base.conf
│   │   ├── emacs
│   │   │   └── setup_emacs.sh
│   │   └── scripts
│   ├── hyprland
│   │   ├── conf
│   │   ├── scripts
│   │   └── themes
│   ├── machines
│   │   ├── maindroid
│   │   │   └── configuration.nix
│   │   └── traveldroid
│   │       └── configuration.nix
│   └── mangowc
│       ├── conf
│       ├── scripts
│       └── themes
├── flake.nix
├── generated
│   ├── common
│   │   ├── home-manager
│   │   │   ├── programs
│   │   │   ├── shell
│   │   │   └── starship
│   │   ├── nixos
│   │   │   ├── hardware
│   │   │   ├── packages
│   │   │   ├── security
│   │   │   ├── services
│   │   │   └── users
│   │   ├── templates
│   │   └── themes
│   │       ├── fonts
│   │       ├── gtk
│   │       ├── icons
│   │       └── shells
│   ├── hyprland
│   │   ├── home-manager
│   │   │   ├── programs
│   │   │   └── scripts
│   │   ├── nixos
│   │   │   ├── plugins
│   │   │   └── window-manager
│   │   ├── overrides
│   │   └── themes
│   │       ├── hypr
│   │       ├── rofi
│   │       └── waybar
│   └── mangowc
│       ├── home-manager
│       │   ├── programs
│       │   └── scripts
│       ├── nixos
│       │   ├── plugins
│       │   └── window-manager
│       ├── overrides
│       └── themes
│           ├── mangowc
│           ├── waybar
│           └── wofi
├── README.html
└── README.org

First Setup

  1. Clone this repository.
  2. Run the setup script: ./setup_droidnix.sh.
  3. Edit .assets/common/conf/base.conf to choose your window manager (wm = "hyprland" or wm = "mangowc").
  4. Tangle this Org file to generate Nix configurations: C-c C-v t in Emacs or use this: emacs README.org --batch -f org-babel-tangle && emacs --batch --eval "(setq org-html-htmlize-output-type nil)" README.org -f org-html-export-to-html
  5. Build and switch: sudo nixos-rebuild switch --flake .#<hostname>.

—

The Assets Folder   assets

The .assets/ folder contains all static files, such as configs, scripts, and themes. These files are not generated and can be edited directly.

.assets/common/

This folder contains files shared across both window managers, such as wallpapers, shell configs, and common scripts.

  • conf/base.conf: Defines the window manager choice and other global settings.
  • scripts/: System-wide scripts (e.g., utilities, helpers).

.assets/hyprland/

Hyprland-specific assets, including configs, themes, and scripts.

  • conf/: Hyprland configuration files (e.g., hyprland.conf).
  • themes/: Hyprland-specific theme scripts.
  • scripts/: Hyprland-specific scripts.

.assets/mangowc/

Mangowc-specific assets, including configs, themes, and scripts.

  • conf/: Mangowc configuration files.
  • themes/: Mangowc-specific theme scripts.
  • scripts/: Mangowc-specific scripts.

.assets/machines/

Machine-specific NixOS configurations (e.g., configuration.nix for maindroid and traveldroid).

—

The Actual Code   code

This section contains the Org blocks for tangling Nix code into the generated folders.

flake.nix

The Nix flake definition for Droidnix.

{
  description = "Droidnix: A dendritic NixOS + Home Manager configuration";

  inputs = {
    nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
    home-manager.url = "github:nix-community/home-manager";
  };

  outputs = { self, nixpkgs, home-manager, ... }@inputs: {
    # Your flake outputs here
  };
}

generated/common/nixos/hardware/placeholder.nix

This is a placeholder for the description of generated/common/nixos/hardware/placeholder.nix.

{ pkgs, user, ... }:
{
  # Your hardware configurations here
}

generated/common/nixos/packages/placeholder.nix

This is a placeholder for the description of generated/common/nixos/packages/placeholder.nix.

{ pkgs, user, ... }:
{
  # Your package configurations here
}

generated/common/nixos/security/placeholder.nix

This is a placeholder for the description of generated/common/nixos/security/placeholder.nix.

{ pkgs, user, ... }:
{
  # Your security configurations here
}

generated/common/nixos/services/placeholder.nix

This is a placeholder for the description of generated/common/nixos/services/placeholder.nix.

{ pkgs, user, ... }:
{
  # Your service configurations here
}

generated/common/nixos/users/placeholder.nix

This is a placeholder for the description of generated/common/nixos/users/placeholder.nix.

{ pkgs, user, ... }:
{
  # Your user configurations here
}

generated/common/home-manager/programs/placeholder.nix

This is a placeholder for the description of generated/common/home-manager/programs/placeholder.nix.

{ pkgs, user, ... }:
{
  # Your program configurations here
}

generated/common/home-manager/shell/placeholder.nix

This is a placeholder for the description of generated/common/home-manager/shell/placeholder.nix.

{ pkgs, user, ... }:
{
  # Your shell configurations here
}

generated/common/home-manager/starship/placeholder.nix

This is a placeholder for the description of generated/common/home-manager/starship/placeholder.nix.

{ pkgs, user, ... }:
{
  # Your starship configurations here
}

generated/common/templates/placeholder.nix

This is a placeholder for the description of generated/common/templates/placeholder.nix.

{ pkgs, user, ... }:
{
  # Your template configurations here
}

generated/common/themes/fonts/placeholder.nix

This is a placeholder for the description of generated/common/themes/fonts/placeholder.nix.

{ pkgs, user, ... }:
{
  # Your font configurations here
}

generated/common/themes/gtk/placeholder.nix

This is a placeholder for the description of generated/common/themes/gtk/placeholder.nix.

{ pkgs, user, ... }:
{
  # Your GTK theme configurations here
}

generated/common/themes/icons/placeholder.nix

This is a placeholder for the description of generated/common/themes/icons/placeholder.nix.

{ pkgs, user, ... }:
{
  # Your icon configurations here
}

generated/common/themes/shells/placeholder.nix

This is a placeholder for the description of generated/common/themes/shells/placeholder.nix.

{ pkgs, user, ... }:
{
  # Your shell theme configurations here
}

generated/hyprland/nixos/window-manager/placeholder.nix

This is a placeholder for the description of generated/hyprland/nixos/window-manager/placeholder.nix.

{ pkgs, user, ... }:
{
  # Your Hyprland window manager configurations here
}

generated/hyprland/nixos/plugins/placeholder.nix

This is a placeholder for the description of generated/hyprland/nixos/plugins/placeholder.nix.

{ pkgs, user, ... }:
{
  # Your Hyprland plugin configurations here
}

generated/hyprland/home-manager/programs/placeholder.nix

This is a placeholder for the description of generated/hyprland/home-manager/programs/placeholder.nix.

{ pkgs, user, ... }:
{
  # Your Hyprland program configurations here
}

generated/hyprland/home-manager/scripts/placeholder.nix

This is a placeholder for the description of generated/hyprland/home-manager/scripts/placeholder.nix.

{ pkgs, user, ... }:
{
  # Your Hyprland script configurations here
}

generated/hyprland/themes/hypr/placeholder.nix

This is a placeholder for the description of generated/hyprland/themes/hypr/placeholder.nix.

{ pkgs, user, ... }:
{
  # Your Hyprland theme configurations here
}

generated/hyprland/themes/rofi/placeholder.nix

This is a placeholder for the description of generated/hyprland/themes/rofi/placeholder.nix.

{ pkgs, user, ... }:
{
  # Your Rofi theme configurations here
}

generated/hyprland/themes/waybar/placeholder.nix

This is a placeholder for the description of generated/hyprland/themes/waybar/placeholder.nix.

{ pkgs, user, ... }:
{
  # Your Waybar theme configurations here
}

generated/hyprland/overrides/placeholder.nix

This is a placeholder for the description of generated/hyprland/overrides/placeholder.nix.

{ pkgs, user, ... }:
{
  # Your Hyprland overrides here
}

generated/mangowc/nixos/window-manager/placeholder.nix

This is a placeholder for the description of generated/mangowc/nixos/window-manager/placeholder.nix.

{ pkgs, user, ... }:
{
  # Your Mangowc window manager configurations here
}

generated/mangowc/nixos/plugins/placeholder.nix

This is a placeholder for the description of generated/mangowc/nixos/plugins/placeholder.nix.

{ pkgs, user, ... }:
{
  # Your Mangowc plugin configurations here
}

generated/mangowc/home-manager/programs/placeholder.nix

This is a placeholder for the description of generated/mangowc/home-manager/programs/placeholder.nix.

{ pkgs, user, ... }:
{
  # Your Mangowc program configurations here
}

generated/mangowc/home-manager/scripts/placeholder.nix

This is a placeholder for the description of generated/mangowc/home-manager/scripts/placeholder.nix.

{ pkgs, user, ... }:
{
  # Your Mangowc script configurations here
}

generated/mangowc/themes/generated/mangowc/placeholder.nix

This is a placeholder for the description of generated/mangowc/themes/generated/mangowc/placeholder.nix.

{ pkgs, user, ... }:
{
  # Your Mangowc theme configurations here
}

generated/mangowc/themes/waybar/placeholder.nix

This is a placeholder for the description of generated/mangowc/themes/waybar/placeholder.nix.

{ pkgs, user, ... }:
{
  # Your Waybar theme configurations here
}

generated/mangowc/themes/wofi/placeholder.nix

This is a placeholder for the description of generated/mangowc/themes/wofi/placeholder.nix.

{ pkgs, user, ... }:
{
  # Your Wofi theme configurations here
}

generated/mangowc/overrides/placeholder.nix

This is a placeholder for the description of generated/mangowc/overrides/placeholder.nix.

{ pkgs, user, ... }:
{
  # Your Mangowc overrides here
}

Author: Henro Veijer

Created: 2026-03-05 do 21:30

Validate