Droidnix: A Dendritic NixOS + Home Manager Configuration
+Table of Contents
+-
+
- Table of Contents +
- Introduction intro + + +
- The Assets Folder assets + + +
- The Actual Code code
+
-
+
flake.nix
+generated/common/nixos/hardware/placeholder.nix
+generated/common/nixos/packages/placeholder.nix
+generated/common/nixos/security/placeholder.nix
+generated/common/nixos/services/placeholder.nix
+generated/common/nixos/users/placeholder.nix
+generated/common/home-manager/programs/placeholder.nix
+generated/common/home-manager/shell/placeholder.nix
+generated/common/home-manager/starship/placeholder.nix
+generated/common/templates/placeholder.nix
+generated/common/themes/fonts/placeholder.nix
+generated/common/themes/gtk/placeholder.nix
+generated/common/themes/icons/placeholder.nix
+generated/common/themes/shells/placeholder.nix
+generated/hyprland/nixos/window-manager/placeholder.nix
+generated/hyprland/nixos/plugins/placeholder.nix
+generated/hyprland/home-manager/programs/placeholder.nix
+generated/hyprland/home-manager/scripts/placeholder.nix
+generated/hyprland/themes/hypr/placeholder.nix
+generated/hyprland/themes/rofi/placeholder.nix
+generated/hyprland/themes/waybar/placeholder.nix
+generated/hyprland/overrides/placeholder.nix
+generated/mangowc/nixos/window-manager/placeholder.nix
+generated/mangowc/nixos/plugins/placeholder.nix
+generated/mangowc/home-manager/programs/placeholder.nix
+generated/mangowc/home-manager/scripts/placeholder.nix
+generated/mangowc/themes/generated/mangowc/placeholder.nix
+generated/mangowc/themes/waybar/placeholder.nix
+generated/mangowc/themes/wofi/placeholder.nix
+generated/mangowc/overrides/placeholder.nix
+
+
Table of Contents
++Introduction +The Assets Folder +The Actual Code +
+ ++— +
+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
+}
+
+