#+title: Droidnix: A Dendritic NixOS + Home Manager Configuration #+author: Henro Veijer #+options: toc:t num:nil htmlize:nil #+language: en #+html_head: #+HTML_HEAD: #+HTML_HEAD: * Shortcuts [[#introduction][Introduction]] [[#the-assets-folder][The Assets Folder]] [[#the-actual-code][The Actual Code]] --- * Introduction :intro: :PROPERTIES: :CUSTOM_ID: introduction :END: ** 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. *** Installed components: **** Core **** Hyprland **** Mangowc *** Goals, project Structure, import hierarchy This project uses a **modular NixOS configuration** with **Hyprland** and **MangoWC** support, designed for **literate programming** and **cross-device reusability**. 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. #+title: NixOS Configuration Structure * Root Level - =flake.nix= is the entry point and imports: - =generated/system/= - =generated/hyprland/= - =generated/mangowc/= - Machine-specific configurations from =assets/machines/= * Generated Structure The =generated/= directory contains all generated configurations, divided into three main groups: =system=, =hyprland=, and =mangowc=. ** System (=generated/system/=) This directory contains system-wide configurations that are independent of the window manager. *** Applications (=applications/=) - =file_management/=: Configurations for file managers and storage solutions. - =gaming/=: Settings for gaming-related software. - =office_productivity/=: Configurations for office software. - =media_playback_editing/=: Settings for media playback and editing software. - =terminal_shell/=: Configurations for terminal emulators and shells. *** Development (=development/=) - =databases/=: Settings for local databases. - =devops_ci_cd/=: Configurations for DevOps tools. - =programming_languages/=: Settings for programming languages and their runtimes. - =virtualization/=: Configurations for virtualization and containerization tools. - =web_development/=: Settings for web development. *** System Management (=system_management/=) - =backups/=: Settings for backup software. - =bluetooth/=: Configurations for Bluetooth devices and services. - =power_management/=: Settings for power management. - =audio/=: Configurations for audio. - =hardware_sensors/=: Settings for hardware monitoring. - =logging_monitoring/=: Configurations for system logging and monitoring. - =login_manager/=: Settings for the login manager. - =monitor_setup/=: Configurations for display settings. - =networking/=: Settings for networking. - =printers_scanners/=: Configurations for printers and scanners. - =disk_management/=: Settings for disk management. - =security/=: Security-related configurations. - =system_updates/=: Settings for system updates and package management. ** Hyprland (=generated/hyprland/=) This directory contains configurations specific to Hyprland. - =animations_effects/=: Settings for window animations and visual effects. - =decorations/=: Configurations for window decorations. - =keyboard_binds/=: Keyboard shortcuts for Hyprland. - =notifications/=: Settings for notifications. - =statusbar_tray/=: Configurations for the status bar and system tray. - =task_launcher/=: Settings for task launchers. - =task_window_workspace_switcher/=: Configurations for switching between windows and workspaces. - =window_rules/=: Rules for window behavior. ** MangoWC (=generated/mangowc/=) This directory contains configurations specific to MangoWC. - =animations_effects/=: Settings for animations and effects in MangoWC. - =decorations/=: Configurations for window decorations. - =keyboard_binds/=: Keyboard shortcuts for MangoWC. - =notifications/=: Settings for notifications. - =statusbar_tray/=: Configurations for the status bar and system tray. - =task_launcher/=: Settings for task launchers. - =task_window_workspace_switcher/=: Configurations for switching between windows and workspaces. - =window_rules/=: Rules for window behavior. **File Structure and Imports** + Every =top.nix= file imports all =.nix= files in its directory. + Machine-specific configurations are stored in =assets/machines/=. + Themes and overrides are modular and reusable across setups. **Design Principles** - **Modularity**: Each component is self-contained and reusable. - **Consistency**: Every directory follows the same import pattern. - **Scalability**: Easy to add new machines or configurations. #+BEGIN_EXAMPLE . ├── assets │   ├── common │   │   ├── conf │   │   │   └── base.conf │   │   ├── cursors │   │   │   └── Bibata_Cursor-main │   │   ├── emacs │   │   │   └── setup_emacs.sh │   │   ├── icons │   │   │   └── papirus-icon-theme-master │   │   ├── neovim │   │   │   └── setup_nvim_literate_nixos.sh │   │   ├── nixos_conf │   │   │   └── wallpaperstuff │   │   │   ├── pictures │   │   │   └── videos │   │   ├── scripts │   │   │   ├── copy_stuff.sh │   │   │   └── end_script.sh │   │   └── themes │   │   └── Catppuccin-Mocha-Standard-Blue-Dark │   ├── copy_stuff │   │   ├── Droidnix │   │   │   ├── hypr │   │   │   │   ├── conf.d │   │   │   │   └── scripts │   │   │   └── wallpaperstuff │   │   │   ├── pictures │   │   │   └── videos │   │   └── kitty │   │   ├── kitty.conf │   │   └── themes │   │   └── Catppuccin-Mocha.conf │   ├── hyprland │   │   ├── conf │   │   ├── scripts │   │   └── themes │   ├── machines │   │   ├── maindroid │   │   └── traveldroid │   │   ├── configuration.nix │   │   ├── hardware-configuration.nix │   │   └── home.nix │   └── mangowc │   ├── conf │   ├── scripts │   └── themes ├── generated │   ├── hyprland │   │   ├── animations_effects │   │   │   ├── top.nix │   │   │   └── placeholder.nix │   │   ├── decorations │   │   │   ├── top.nix │   │   │   └── placeholder.nix │   │   ├── keyboard_binds │   │   │   ├── top.nix │   │   │   └── placeholder.nix │   │   ├── notifications │   │   │   ├── top.nix │   │   │   └── placeholder.nix │   │   ├── statusbar_tray │   │   │   ├── top.nix │   │   │   └── placeholder.nix │   │   ├── task_launcher │   │   │   ├── top.nix │   │   │   └── placeholder.nix │   │   ├── task_window_workspace_switcher │   │   │   ├── top.nix │   │   │   └── placeholder.nix │   │   └── window_rules │   │   ├── top.nix │   │   └── placeholder.nix │   ├── mangowc │   │   ├── animations_effects │   │   │   ├── top.nix │   │   │   └── placeholder.nix │   │   ├── decorations │   │   │   ├── top.nix │   │   │   └── placeholder.nix │   │   ├── keyboard_binds │   │   │   ├── top.nix │   │   │   └── placeholder.nix │   │   ├── notifications │   │   │   ├── top.nix │   │   │   └── placeholder.nix │   │   ├── statusbar_tray │   │   │   ├── top.nix │   │   │   └── placeholder.nix │   │   ├── task_launcher │   │   │   ├── top.nix │   │   │   └── placeholder.nix │   │   ├── task_window_workspace_switcher │   │   │   ├── top.nix │   │   │   └── placeholder.nix │   │   └── window_rules │   │   ├── top.nix │   │   └── placeholder.nix │   └── system │   ├── applications │   │   ├── file_management │   │   │   ├── top.nix │   │   │   └── placeholder.nix │   │   ├── gaming │   │   │   ├── top.nix │   │   │   └── placeholder.nix │   │   ├── office_productivity │   │   │   ├── top.nix │   │   │   └── placeholder.nix │   │   ├── media_playback_editing │   │   │   ├── top.nix │   │   │   └── placeholder.nix │   │   ├── terminal_shell │   │   │   ├── top.nix │   │   │   └── placeholder.nix │   │   └── accessibility │   │   ├── top.nix │   │   └── placeholder.nix │   ├── development │   │   ├── databases │   │   │   ├── top.nix │   │   │   └── placeholder.nix │   │   ├── devops_ci_cd │   │   │   ├── top.nix │   │   │   └── placeholder.nix │   │   ├── programming_languages │   │   │   ├── top.nix │   │   │   └── placeholder.nix │   │   ├── virtualization │   │   │   ├── top.nix │   │   │   └── placeholder.nix │   │   └── web_development │   │   ├── top.nix │   │   └── placeholder.nix │   └── system_management │   ├── backups │   │   ├── top.nix │   │   └── placeholder.nix │   ├── bluetooth │   │   ├── top.nix │   │   └── placeholder.nix │   ├── power_management │   │   ├── top.nix │   │   └── placeholder.nix │   ├── audio │   │   ├── top.nix │   │   └── placeholder.nix │   ├── hardware_sensors │   │   ├── top.nix │   │   └── placeholder.nix │   ├── logging_monitoring │   │   ├── top.nix │   │   └── placeholder.nix │   ├── login_manager │   │   ├── top.nix │   │   └── placeholder.nix │   ├── monitor_setup │   │   ├── top.nix │   │   └── placeholder.nix │   ├── networking │   │   ├── top.nix │   │   └── placeholder.nix │   ├── printers_scanners │   │   ├── top.nix │   │   └── placeholder.nix │   ├── disk_management │   │   ├── top.nix │   │   └── placeholder.nix │   ├── security │   │   ├── top.nix │   │   └── placeholder.nix │   └── system_updates │   ├── top.nix │   └── placeholder.nix ├── flake.nix ├── README.html └── README.org #+END_EXAMPLE ** 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 .#=. --- * The Assets Folder :assets: :PROPERTIES: :CUSTOM_ID: the-assets-folder :END: 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: :PROPERTIES: :CUSTOM_ID: the-actual-code :END: This section contains the Org blocks for tangling Nix code into the generated folders. ** =flake.nix= The Nix flake definition for Droidnix. #+BEGIN_SRC nix :tangle flake.nix :noweb tangle :mkdirp yes :eval never-html { description = "Droidnix: A dendritic NixOS + Home Manager configuration"; inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; home-manager = { url = "github:nix-community/home-manager"; inputs.nixpkgs.follows = "nixpkgs"; }; emacs-overlay = { url = "github:nix-community/emacs-overlay"; inputs.nixpkgs.follows = "nixpkgs"; }; catppuccin = { url = "github:catppuccin/nix"; inputs.nixpkgs.follows = "nixpkgs"; }; zen-browser = { url = "github:youwen5/zen-browser-flake"; inputs.nixpkgs.follows = "nixpkgs"; }; hyprland.url = "github:hyprwm/Hyprland"; }; outputs = inputs@{ nixpkgs, home-manager, emacs-overlay, catppuccin, zen-browser, hyprland, ... }: let lib = nixpkgs.lib; system = "x86_64-linux"; # Define the system explicitly user = import ./assets/flake/users/henrov.nix; machines = [ "traveldroid" "maindroid" ]; in { nixosConfigurations = lib.genAttrs machines ( machine: lib.nixosSystem { inherit system; modules = [ # Import machine-specific configurations ./assets/flake/machines/${machine}/top.nix # Home Manager and theme modules home-manager.nixosModules.home-manager { home-manager.useGlobalPkgs = true; home-manager.useUserPackages = true; home-manager.extraSpecialArgs = { inherit user inputs; }; } inputs.catppuccin.nixosModules.catppuccin ]; specialArgs = { inherit user inputs; }; } ); devShells.${system}.default = import ./assets/flake/terminal_shell/devshell.nix { inherit (nixpkgs) mkShell; }; }; } #+END_SRC * First the nix-files that flake really needs and that do not fit wel in the hierarchical structure ** =assets/flake/users/henrov.nix= This is the default user, just search and replace henrov another name if you want to change #+BEGIN_SRC nix :tangle assets/flake/users/henrov.nix :noweb tangle :mkdirp yes :eval never-html { username = "henrov"; hashedPassword = "$6$ISAmsPLyFi7idYXr$VmZsq.zMsyh1irSkyDNqtorNXG0oEHbbMVqTii1t8bymvrQ5ZQmbdi4OiBNeNYe/huHGrojXM.3TST2fTLz0T."; homeDirectory = "/home/henrov"; stateVersion = "25.11"; locale = "nl_NL.UTF-8"; } #+END_SRC ** =assets/flake/terminal_shell/devshell.nix= This code defines a Nix shell environment (also called a "devShell") that you can enter using the nix develop command. When you enter this shell, Nix will provide the tools and dependencies listed in buildInputs. #+BEGIN_SRC nix :tangle assets/flake/terminal_shell/devshell.nix :noweb tangle :mkdirp yes :eval never-html { mkShell }: mkShell { buildInputs = with import {}; [ nil nixfmt-rfc-style ]; } #+END_SRC ** =assets/flake/machines/traveldroid/top.nix= This code defines the machine to build. Just search and replace traveldroid to provision another machine. #+BEGIN_SRC nix :tangle assets/flake/machines/traveldroid/top.nix :noweb tangle :mkdirp yes :eval never-html { config, pkgs, lib, user, inputs, ... }: { imports = [ ./boot.nix ./hardware-configuration.nix ]; options = { wm = lib.mkOption { type = lib.types.str; default = "hyprland"; description = "Type of window manager to use"; }; }; config = { # Minimal settings that must be defined here networking.hostName = "traveldroid"; wm.type = "hyprland"; # User configuration users.users.${user.username} = { isNormalUser = true; extraGroups = [ "wheel" "networkmanager" ]; hashedPassword = user.hashedPassword; home = user.homeDirectory; }; # Optional: Enable auto-login for testing services.getty.autologinUser = user.username; }; } #+END_SRC ** =assets/flake/machines/traveldroid/boot.nix= This file has most of the settings the control how the computer boots up. #+BEGIN_SRC nix :tangle assets/flake/machines/traveldroid/boot.nix :noweb tangle :mkdirp yes :eval never-html { pkgs, ... } : { boot = { initrd = { verbose = false; # its a lot of logs. dont need it, unless we do. kernelModules = [ ]; # no kernel modules on boot }; extraModulePackages = [ ]; # no extra packages on boot either kernelPackages = pkgs.linuxPackages_latest; # latest greatest linux kernel kernelParams = [ "silent" ]; # quiet those logs consoleLogLevel = 0; # quiten more logs plymouth.enable = true; # graphical boot animation instead supportedFilesystems = [ "ntfs" ]; # should see the ntfs (windows) loader = { systemd-boot.enable = true; # systemd-boot systemd-boot.configurationLimit = 10; efi.canTouchEfiVariables = true; # allow editing efi to edit the boot loader timeout = 5; # grub timeout to make a selection }; }; } #+END_SRC * Now we reach the top of the hierarchy which will call all other imports ** =generated/top.nix= The ./generated/top.nix file acts as an anchor or entry point for the entire chain of imports in the pyramid structure. #+BEGIN_SRC nix :tangle generated/top.nix :noweb tangle :mkdirp yes :eval never-html { config, pkgs, lib, user, inputs, ... }: { imports = [ # First the stuff that we always want, regardless of windowmanager ./system/top.nix # Import window manager configurations based on the type defined in the machine file (if config.wm.type == "hyprland" then ./window_managers/hyprland/top.nix else if config.wm.type == "mangowc" then ./window_managers/mangowc/top.nix else assert false; "Unknown window manager type: ${config.wm.type}" ) ]; } #+END_SRC ** =generated/hyprland/top.nix= This is top file of this level which contains the bare necessities for this subject + an import statement for all the subfolder in this folder #+BEGIN_SRC nix :tangle generated/hyprland/top.nix :noweb tangle :mkdirp yes :eval never-html { config, pkgs, lib, user, inputs, ... }: { imports = [ ./animations_effects/top.nix ./decorations/top.nix ./keyboard_binds/top.nix ./notifications/top.nix ./statusbar_tray/top.nix ./task_launcher/top.nix ./task_window_workspace_switcher/top.nix ./window_rules/top.nix ]; # Nix settings to use Hyprland's cache for packages # This allows Nix to download pre-built packages from the Hyprland cache, # which can speed up the installation process and ensure compatibility. nix.settings = { substituters = [ "https://hyprland.cachix.org" ]; trusted-public-keys = [ "hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc=" ]; }; # Enable essential services for a Wayland session services.dbus.enable = true; # D-Bus is required for inter-process communication services.pipewire = { enable = true; alsa.enable = true; # Basic audio support using ALSA pulse.enable = true; # PulseAudio support for better audio management wireplumber.enable = true; # Audio device management and routing }; # XDG Desktop Portal settings for better application integration # The XDG Desktop Portal provides a way for applications to interact with the desktop environment. xdg.portal = { enable = true; config.common.default = [ "hyprland" "gtk" ]; # Use Hyprland and GTK as default portal implementations }; # Environment variables for a Wayland session with Hyprland # These variables help applications understand the desktop environment and session type. environment.sessionVariables = { XDG_SESSION_TYPE = "wayland"; # Use Wayland instead of X11 for the session XDG_CURRENT_DESKTOP = "Hyprland"; # Define the current desktop environment as Hyprland XCURSOR_SIZE = "24"; # Set the size of the mouse cursor to 24 pixels }; # Install Hyprland and enable it as the window manager # Here, we're only installing the Hyprland package itself for a minimal setup. environment.systemPackages = with pkgs; [ hyprland ]; # Configure Hyprland as the window manager # This section enables Hyprland as the window manager and sets basic configurations. programs.hyprland = { enable = true; # Start Hyprland as the window manager xwayland.enable = true; # Enable XWayland to run X11 applications within the Wayland session }; # Home-manager configuration for user-specific settings # Home-manager is used to manage user-specific configurations and packages. home-manager = { # Enable Hyprland as the Wayland window manager for the user session wayland.windowManager.hyprland = { enable = true; # Enable Hyprland as the window manager for the user settings = { # Minimal configuration, customize later as needed # This is where you would add custom keybinds, workspace settings, etc. }; }; # XDG portal settings for user sessions # These settings ensure that applications can interact properly with the Hyprland session. xdg.portal = { enable = true; extraPortals = with pkgs; [ xdg-desktop-portal-hyprland ]; # Hyprland-specific portal implementation config.hyprland = { "org.freedesktop.impl.portal.Screencast" = [ "hyprland" ]; # Enable screencasting support }; }; } } #+END_SRC ** =generated/mangowc/top.nix= This is top file of this level which contains the bare necessities for this subject + an import statement for all the subfolder in this folder #+BEGIN_SRC nix :tangle generated/mangowc/top.nix :noweb tangle :mkdirp yes :eval never-html { config, pkgs, lib, user, inputs, ... }: { imports = [ ./animations_effects/top.nix ./decorations/top.nix ./keyboard_binds/top.nix ./notifications/top.nix ./statusbar_tray/top.nix ./task_launcher/top.nix ./task_window_workspace_switcher/top.nix ./window_rules/top.nix ]; # .. put any code here } #+END_SRC ** =generated/system/top.nix= This is top file of this level which contains the bare necessities for this subject + an import statement for all the subfolder in this folder #+BEGIN_SRC nix :tangle generated/system/top.nix :noweb tangle :mkdirp yes :eval never-html { config, pkgs, lib, user, inputs, ... }: { imports = [ ./applications/top.nix ./development/top.nix ./system_management/top.nix ]; # .. put any code here } #+END_SRC ** =generated/system/applications/top.nix= This is top file of this level which contains the bare necessities for this subject + an import statement for all the subfolder in this folder #+BEGIN_SRC nix :tangle generated/system/applications/top.nix :noweb tangle :mkdirp yes :eval never-html { config, pkgs, lib, user, inputs, ... }: { imports = [ ./accessibility/top.nix ./file_management/top.nix ./gaming/top.nix ./media_playback_editing/top.nix ./office_productivity/top.nix ./terminal_shell/top.nix ]; # .. put any code here } #+END_SRC ** =generated/system/development/top.nix= This is top file of this level which contains the bare necessities for this subject + an import statement for all the subfolder in this folder #+BEGIN_SRC nix :tangle generated/system/development/top.nix :noweb tangle :mkdirp yes :eval never-html { config, pkgs, lib, user, inputs, ... }: { imports = [ ./databases/top.nix ./devops_ci_cd/top.nix ./programming_languages/top.nix ./virtualization/top.nix ./web_development/top.nix ]; # .. put any code here } #+END_SRC ** =generated/system/system_management/top.nix= This is top file of this level which contains the bare necessities for this subject + an import statement for all the subfolder in this folder #+BEGIN_SRC nix :tangle generated/system/system_management/top.nix :noweb tangle :mkdirp yes :eval never-html { config, pkgs, lib, user, inputs, ... }: { imports = [ ./audio/top.nix ./backups/top.nix ./bluetooth/top.nix ./disk_management/top.nix ./hardware_sensors/top.nix ./logging_monitoring/top.nix ./login_manager/top.nix ./monitor_setup/top.nix ./networking/top.nix ./power_management/top.nix ./printers_scanners/top.nix ./security/top.nix ./system_updates/top.nix ]; # .. put any code here } #+END_SRC ** =generated/hyprland/animations_effects/top.nix= This is top file of this level which contains the bare necessities for this subject + an import statement for all the subfolder in this folder #+BEGIN_SRC nix :tangle generated/hyprland/animations_effects/top.nix :noweb tangle :mkdirp yes :eval never-html { config, pkgs, lib, user, inputs, ... }: { imports = [ # No subfolders to import ]; # .. put any code here } #+END_SRC ** =generated/hyprland/decorations/top.nix= This is top file of this level which contains the bare necessities for this subject + an import statement for all the subfolder in this folder #+BEGIN_SRC nix :tangle generated/hyprland/decorations/top.nix :noweb tangle :mkdirp yes :eval never-html { config, pkgs, lib, user, inputs, ... }: { imports = [ # No subfolders to import ]; # .. put any code here } #+END_SRC ** =generated/hyprland/keyboard_binds/top.nix= This is top file of this level which contains the bare necessities for this subject + an import statement for all the subfolder in this folder #+BEGIN_SRC nix :tangle generated/hyprland/keyboard_binds/top.nix :noweb tangle :mkdirp yes :eval never-html { config, pkgs, lib, user, inputs, ... }: let # Read the contents of the bindings.conf file bindingsContent = builtins.readFile ./assets/hyprland/conf/bindings.conf; # Create a configuration file from the bindings content configFile = pkgs.writeText "hyprland.conf" bindingsContent; in { wayland.windowManager.hyprland = { enable = true; # Enable Hyprland as the window manager config = configFile; # Use the generated configuration file }; } #+END_SRC ** =generated/hyprland/notifications/top.nix= This is top file of this level which contains the bare necessities for this subject + an import statement for all the subfolder in this folder #+BEGIN_SRC nix :tangle generated/hyprland/notifications/top.nix :noweb tangle :mkdirp yes :eval never-html { config, pkgs, lib, user, inputs, ... }: { imports = [ # No subfolders to import ]; # .. put any code here } #+END_SRC ** =generated/hyprland/statusbar_tray/top.nix= This is top file of this level which contains the bare necessities for this subject + an import statement for all the subfolder in this folder #+BEGIN_SRC nix :tangle generated/hyprland/statusbar_tray/top.nix :noweb tangle :mkdirp yes :eval never-html { config, pkgs, lib, user, inputs, ... }: { imports = [ # No subfolders to import ]; # .. put any code here } #+END_SRC ** =generated/hyprland/task_launcher/top.nix= This is top file of this level which contains the bare necessities for this subject + an import statement for all the subfolder in this folder #+BEGIN_SRC nix :tangle generated/hyprland/task_launcher/top.nix :noweb tangle :mkdirp yes :eval never-html { config, pkgs, lib, user, inputs, ... }: { imports = [ # No subfolders to import ]; # .. put any code here } #+END_SRC ** =generated/hyprland/task_window_workspace_switcher/top.nix= This is top file of this level which contains the bare necessities for this subject + an import statement for all the subfolder in this folder #+BEGIN_SRC nix :tangle generated/hyprland/task_window_workspace_switcher/top.nix :noweb tangle :mkdirp yes :eval never-html { config, pkgs, lib, user, inputs, ... }: { imports = [ # No subfolders to import ]; # .. put any code here } #+END_SRC ** =generated/hyprland/window_rules/top.nix= This is top file of this level which contains the bare necessities for this subject + an import statement for all the subfolder in this folder #+BEGIN_SRC nix :tangle generated/hyprland/window_rules/top.nix :noweb tangle :mkdirp yes :eval never-html { config, pkgs, lib, user, inputs, ... }: { imports = [ # No subfolders to import ]; # .. put any code here } #+END_SRC ** =generated/mangowc/animations_effects/top.nix= This is top file of this level which contains the bare necessities for this subject + an import statement for all the subfolder in this folder #+BEGIN_SRC nix :tangle generated/mangowc/animations_effects/top.nix :noweb tangle :mkdirp yes :eval never-html { config, pkgs, lib, user, inputs, ... }: { imports = [ # No subfolders to import ]; # .. put any code here } #+END_SRC ** =generated/mangowc/decorations/top.nix= This is top file of this level which contains the bare necessities for this subject + an import statement for all the subfolder in this folder #+BEGIN_SRC nix :tangle generated/mangowc/decorations/top.nix :noweb tangle :mkdirp yes :eval never-html { config, pkgs, lib, user, inputs, ... }: { imports = [ # No subfolders to import ]; # .. put any code here } #+END_SRC ** =generated/mangowc/keyboard_binds/top.nix= This is top file of this level which contains the bare necessities for this subject + an import statement for all the subfolder in this folder #+BEGIN_SRC nix :tangle generated/mangowc/keyboard_binds/top.nix :noweb tangle :mkdirp yes :eval never-html { config, pkgs, lib, user, inputs, ... }: { imports = [ # No subfolders to import ]; # .. put any code here } #+END_SRC ** =generated/mangowc/notifications/top.nix= This is top file of this level which contains the bare necessities for this subject + an import statement for all the subfolder in this folder #+BEGIN_SRC nix :tangle generated/mangowc/notifications/top.nix :noweb tangle :mkdirp yes :eval never-html { config, pkgs, lib, user, inputs, ... }: { imports = [ # No subfolders to import ]; # .. put any code here } #+END_SRC ** =generated/mangowc/statusbar_tray/top.nix= This is top file of this level which contains the bare necessities for this subject + an import statement for all the subfolder in this folder #+BEGIN_SRC nix :tangle generated/mangowc/statusbar_tray/top.nix :noweb tangle :mkdirp yes :eval never-html { config, pkgs, lib, user, inputs, ... }: { imports = [ # No subfolders to import ]; # .. put any code here } #+END_SRC ** =generated/mangowc/task_launcher/top.nix= This is top file of this level which contains the bare necessities for this subject + an import statement for all the subfolder in this folder #+BEGIN_SRC nix :tangle generated/mangowc/task_launcher/top.nix :noweb tangle :mkdirp yes :eval never-html { config, pkgs, lib, user, inputs, ... }: { imports = [ # No subfolders to import ]; # .. put any code here } #+END_SRC ** =generated/mangowc/task_window_workspace_switcher/top.nix= This is top file of this level which contains the bare necessities for this subject + an import statement for all the subfolder in this folder #+BEGIN_SRC nix :tangle generated/mangowc/task_window_workspace_switcher/top.nix :noweb tangle :mkdirp yes :eval never-html { config, pkgs, lib, user, inputs, ... }: { imports = [ # No subfolders to import ]; # .. put any code here } #+END_SRC ** =generated/mangowc/window_rules/top.nix= This is top file of this level which contains the bare necessities for this subject + an import statement for all the subfolder in this folder #+BEGIN_SRC nix :tangle generated/mangowc/window_rules/top.nix :noweb tangle :mkdirp yes :eval never-html { config, pkgs, lib, user, inputs, ... }: { imports = [ # No subfolders to import ]; # .. put any code here } #+END_SRC ** =generated/system/applications/accessibility/top.nix= This is top file of this level which contains the bare necessities for this subject + an import statement for all the subfolder in this folder #+BEGIN_SRC nix :tangle generated/system/applications/accessibility/top.nix :noweb tangle :mkdirp yes :eval never-html { config, pkgs, lib, user, inputs, ... }: { imports = [ # No subfolders to import ]; # .. put any code here } #+END_SRC ** =generated/system/applications/file_management/top.nix= This is top file of this level which contains the bare necessities for this subject + an import statement for all the subfolder in this folder #+BEGIN_SRC nix :tangle generated/system/applications/file_management/top.nix :noweb tangle :mkdirp yes :eval never-html { config, pkgs, lib, user, inputs, ... }: { imports = [ # No subfolders to import ]; # .. put any code here } #+END_SRC ** =generated/system/applications/gaming/top.nix= This is top file of this level which contains the bare necessities for this subject + an import statement for all the subfolder in this folder #+BEGIN_SRC nix :tangle generated/system/applications/gaming/top.nix :noweb tangle :mkdirp yes :eval never-html { config, pkgs, lib, user, inputs, ... }: { imports = [ # No subfolders to import ]; # .. put any code here } #+END_SRC ** =generated/system/applications/media_playback_editing/top.nix= This is top file of this level which contains the bare necessities for this subject + an import statement for all the subfolder in this folder #+BEGIN_SRC nix :tangle generated/system/applications/media_playback_editing/top.nix :noweb tangle :mkdirp yes :eval never-html { config, pkgs, lib, user, inputs, ... }: { imports = [ # No subfolders to import ]; # .. put any code here } #+END_SRC ** =generated/system/applications/office_productivity/top.nix= This is top file of this level which contains the bare necessities for this subject + an import statement for all the subfolder in this folder #+BEGIN_SRC nix :tangle generated/system/applications/office_productivity/top.nix :noweb tangle :mkdirp yes :eval never-html { config, pkgs, lib, user, inputs, ... }: { imports = [ # No subfolders to import ]; # .. put any code here } #+END_SRC ** =generated/system/applications/terminal_shell/top.nix= This is top file of this level which contains the bare necessities for this subject + an import statement for all the subfolder in this folder #+BEGIN_SRC nix :tangle generated/system/applications/terminal_shell/top.nix :noweb tangle :mkdirp yes :eval never-html { config, pkgs, lib, user, inputs, ... }: { imports = [ # No subfolders to import ]; # .. put any code here } #+END_SRC ** =generated/system/development/databases/top.nix= This is top file of this level which contains the bare necessities for this subject + an import statement for all the subfolder in this folder #+BEGIN_SRC nix :tangle generated/system/development/databases/top.nix :noweb tangle :mkdirp yes :eval never-html { config, pkgs, lib, user, inputs, ... }: { imports = [ # No subfolders to import ]; # .. put any code here } #+END_SRC ** =generated/system/development/devops_ci_cd/top.nix= This is top file of this level which contains the bare necessities for this subject + an import statement for all the subfolder in this folder #+BEGIN_SRC nix :tangle generated/system/development/devops_ci_cd/top.nix :noweb tangle :mkdirp yes :eval never-html { config, pkgs, lib, user, inputs, ... }: { imports = [ # No subfolders to import ]; # .. put any code here } #+END_SRC ** =generated/system/development/programming_languages/top.nix= This is top file of this level which contains the bare necessities for this subject + an import statement for all the subfolder in this folder #+BEGIN_SRC nix :tangle generated/system/development/programming_languages/top.nix :noweb tangle :mkdirp yes :eval never-html { config, pkgs, lib, user, inputs, ... }: { imports = [ # No subfolders to import ]; # .. put any code here } #+END_SRC ** =generated/system/development/virtualization/top.nix= This is top file of this level which contains the bare necessities for this subject + an import statement for all the subfolder in this folder #+BEGIN_SRC nix :tangle generated/system/development/virtualization/top.nix :noweb tangle :mkdirp yes :eval never-html { config, pkgs, lib, user, inputs, ... }: { imports = [ # No subfolders to import ]; # .. put any code here } #+END_SRC ** =generated/system/development/web_development/top.nix= This is top file of this level which contains the bare necessities for this subject + an import statement for all the subfolder in this folder #+BEGIN_SRC nix :tangle generated/system/development/web_development/top.nix :noweb tangle :mkdirp yes :eval never-html { config, pkgs, lib, user, inputs, ... }: { imports = [ # No subfolders to import ]; # .. put any code here } #+END_SRC ** =generated/system/system_management/audio/top.nix= This is top file of this level which contains the bare necessities for this subject + an import statement for all the subfolder in this folder #+BEGIN_SRC nix :tangle generated/system/system_management/audio/top.nix :noweb tangle :mkdirp yes :eval never-html { config, pkgs, lib, user, inputs, ... }: { imports = [ # No subfolders to import ]; # .. put any code here } #+END_SRC ** =generated/system/system_management/backups/top.nix= This is top file of this level which contains the bare necessities for this subject + an import statement for all the subfolder in this folder #+BEGIN_SRC nix :tangle generated/system/system_management/backups/top.nix :noweb tangle :mkdirp yes :eval never-html { config, pkgs, lib, user, inputs, ... }: { imports = [ # No subfolders to import ]; # .. put any code here } #+END_SRC ** =generated/system/system_management/bluetooth/top.nix= This is top file of this level which contains the bare necessities for this subject + an import statement for all the subfolder in this folder #+BEGIN_SRC nix :tangle generated/system/system_management/bluetooth/top.nix :noweb tangle :mkdirp yes :eval never-html { config, pkgs, lib, user, inputs, ... }: { imports = [ # No subfolders to import ]; # .. put any code here } #+END_SRC ** =generated/system/system_management/disk_management/top.nix= This is top file of this level which contains the bare necessities for this subject + an import statement for all the subfolder in this folder #+BEGIN_SRC nix :tangle generated/system/system_management/disk_management/top.nix :noweb tangle :mkdirp yes :eval never-html { config, pkgs, lib, user, inputs, ... }: { imports = [ # No subfolders to import ]; # .. put any code here } #+END_SRC ** =generated/system/system_management/hardware_sensors/top.nix= This is top file of this level which contains the bare necessities for this subject + an import statement for all the subfolder in this folder #+BEGIN_SRC nix :tangle generated/system/system_management/hardware_sensors/top.nix :noweb tangle :mkdirp yes :eval never-html { config, pkgs, lib, user, inputs, ... }: { imports = [ # No subfolders to import ]; # .. put any code here } #+END_SRC ** =generated/system/system_management/logging_monitoring/top.nix= This is top file of this level which contains the bare necessities for this subject + an import statement for all the subfolder in this folder #+BEGIN_SRC nix :tangle generated/system/system_management/logging_monitoring/top.nix :noweb tangle :mkdirp yes :eval never-html { config, pkgs, lib, user, inputs, ... }: { imports = [ # No subfolders to import ]; # .. put any code here } #+END_SRC ** =generated/system/system_management/login_manager/top.nix= This is top file of this level which contains the bare necessities for this subject + an import statement for all the subfolder in this folder #+BEGIN_SRC nix :tangle generated/system/system_management/login_manager/top.nix :noweb tangle :mkdirp yes :eval never-html { config, pkgs, lib, user, inputs, ... }: { imports = [ # No subfolders to import ]; # .. put any code here } #+END_SRC ** =generated/system/system_management/monitor_setup/top.nix= This is top file of this level which contains the bare necessities for this subject + an import statement for all the subfolder in this folder #+BEGIN_SRC nix :tangle generated/system/system_management/monitor_setup/top.nix :noweb tangle :mkdirp yes :eval never-html { config, pkgs, lib, user, inputs, ... }: { imports = [ # No subfolders to import ]; # .. put any code here } #+END_SRC ** =generated/system/system_management/networking/top.nix= This is top file of this level which contains the bare necessities for this subject + an import statement for all the subfolder in this folder #+BEGIN_SRC nix :tangle generated/system/system_management/networking/top.nix :noweb tangle :mkdirp yes :eval never-html { config, pkgs, lib, user, inputs, ... }: { imports = [ # No subfolders to import ]; # .. put any code here } #+END_SRC ** =generated/system/system_management/power_management/top.nix= This is top file of this level which contains the bare necessities for this subject + an import statement for all the subfolder in this folder #+BEGIN_SRC nix :tangle generated/system/system_management/power_management/top.nix :noweb tangle :mkdirp yes :eval never-html { config, pkgs, lib, user, inputs, ... }: { imports = [ # No subfolders to import ]; # .. put any code here } #+END_SRC ** =generated/system/system_management/printers_scanners/top.nix= This is top file of this level which contains the bare necessities for this subject + an import statement for all the subfolder in this folder #+BEGIN_SRC nix :tangle generated/system/system_management/printers_scanners/top.nix :noweb tangle :mkdirp yes :eval never-html { config, pkgs, lib, user, inputs, ... }: { imports = [ # No subfolders to import ]; # .. put any code here } #+END_SRC ** =generated/system/system_management/security/top.nix= This is top file of this level which contains the bare necessities for this subject + an import statement for all the subfolder in this folder #+BEGIN_SRC nix :tangle generated/system/system_management/security/top.nix :noweb tangle :mkdirp yes :eval never-html { config, pkgs, lib, user, inputs, ... }: { imports = [ # No subfolders to import ]; # .. put any code here } #+END_SRC ** =generated/system/system_management/system_updates/top.nix= This is top file of this level which contains the bare necessities for this subject + an import statement for all the subfolder in this folder #+BEGIN_SRC nix :tangle generated/system/system_management/system_updates/top.nix :noweb tangle :mkdirp yes :eval never-html { config, pkgs, lib, user, inputs, ... }: { imports = [ # No subfolders to import ]; # .. put any code here } #+END_SRC