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