16 KiB
Droidnix: A Dendritic NixOS + Home Manager Configuration
- Table of Contents
- Introduction
- The Assets Folder
- The Actual Code
flake.nixgenerated/common/nixos/hardware/placeholder.nixgenerated/common/nixos/packages/placeholder.nixgenerated/common/nixos/security/placeholder.nixgenerated/common/nixos/services/placeholder.nixgenerated/common/nixos/users/placeholder.nixgenerated/common/home-manager/programs/placeholder.nixgenerated/common/home-manager/shell/placeholder.nixgenerated/common/home-manager/starship/placeholder.nixgenerated/common/templates/placeholder.nixgenerated/common/themes/fonts/placeholder.nixgenerated/common/themes/gtk/placeholder.nixgenerated/common/themes/icons/placeholder.nixgenerated/common/themes/shells/placeholder.nixgenerated/hyprland/nixos/window-manager/placeholder.nixgenerated/hyprland/nixos/plugins/placeholder.nixgenerated/hyprland/home-manager/programs/placeholder.nixgenerated/hyprland/home-manager/scripts/placeholder.nixgenerated/hyprland/themes/hypr/placeholder.nixgenerated/hyprland/themes/rofi/placeholder.nixgenerated/hyprland/themes/waybar/placeholder.nixgenerated/hyprland/overrides/placeholder.nixgenerated/mangowc/nixos/window-manager/placeholder.nixgenerated/mangowc/nixos/plugins/placeholder.nixgenerated/mangowc/home-manager/programs/placeholder.nixgenerated/mangowc/home-manager/scripts/placeholder.nixgenerated/mangowc/themes/generated/mangowc/placeholder.nixgenerated/mangowc/themes/waybar/placeholder.nixgenerated/mangowc/themes/wofi/placeholder.nixgenerated/mangowc/overrides/placeholder.nix
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:
.assets/: Static, non-generated files (e.g., configs, scripts, themes).- 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
- Clone this repository.
- Run the setup script:
./setup_droidnix.sh. - Edit
.assets/common/conf/base.confto choose your window manager (wm = "hyprland"orwm = "mangowc"). - Tangle this Org file to generate Nix configurations:
C-c C-v tin 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 - 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
}