Files
nixos_stuff/Droidnix

Droidnix: A Dendritic NixOS + Home Manager Configuration NixOS Configuration Structure

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.

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.

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.
.
├── 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

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";
      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; flakeRoot = ./.;  };
            }
            inputs.catppuccin.nixosModules.catppuccin

            # Let's start importing the whole generated tree
            ./generated/top.nix
          ];
          specialArgs = { inherit user inputs; flakeRoot = ./.;  };
        }
      );

      devShells.${system}.default = import ./assets/flake/terminal_shell/devshell.nix {
        inherit (nixpkgs) mkShell;
      };
    };
}

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

{
  username = "henrov";
  hashedPassword = "$6$ISAmsPLyFi7idYXr$VmZsq.zMsyh1irSkyDNqtorNXG0oEHbbMVqTii1t8bymvrQ5ZQmbdi4OiBNeNYe/huHGrojXM.3TST2fTLz0T.";
  homeDirectory = "/home/henrov";
  stateVersion = "25.11";
  locale = "nl_NL.UTF-8";
}

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.

{ mkShell }:
mkShell {
  buildInputs = with import <nixpkgs> {}; [
    nil
    nixfmt-rfc-style
  ];
}

assets/flake/machines/traveldroid/top.nix

This code defines the machine to build. Just search and replace traveldroid to provision another machine.

{ config, pkgs, lib, user, inputs, flakeRoot,... }:

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

assets/flake/machines/traveldroid/boot.nix

This file has most of the settings the control how the computer boots up.

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

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.

{ config, pkgs, lib, ... }:
{
  imports = [
    ./system/top.nix
    ./hyprland/top.nix
    # ./mangowc/top.nix
  ];
}

generated/hyprland/top.nix

This is top file of this level which contains just an import statement for all relevant files and/or the subfolder in this folder

{ config, pkgs, lib, user, inputs, flakeRoot,... }:
{
  imports = [
    ./hyprland.nix
    ./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
  ];
}

generated/hyprland/hyprland.nix

The ./generated/top.nix file acts as an anchor or entry point for the entire chain of imports in the pyramid structure.

{
  config,
  pkgs,
  lib,
  user,
  flakeRoot,
  ...
}:
let
  hyprlandConfigDir = "${config.home-manager.users.${user.username}.xdg.configHome}/hypr";
  # Dynamically read all files in assets/hyprland/conf/
  hyprlandConfs =
    lib.genAttrs (builtins.attrNames (builtins.readDir "${flakeRoot}/assets/hyprland/conf"))
      (name: {
        text = builtins.readFile "${flakeRoot}/assets/hyprland/conf/${name}";
      });
in
{
  # NixOS: Enable Hyprland (optional)
  programs.hyprland = {
    enable = true;
  };

  # Home Manager: Hyprland-specific configurations
  home-manager.users.${user.username} = {
    # Use config.home-manager.users.${user.username} instead of userConfig
    home.stateVersion = config.home-manager.users.${user.username}.stateVersion or "23.11"; # Default fallback
    home.username = user.username; # Use the 'user' argument
    home.homeDirectory =
      config.home-manager.users.${user.username}.homeDirectory or "/home/${user.username}";

    wayland.windowManager.hyprland = {
      enable = true;
    };

    # Merge dynamic Hyprland configs with existing xdg.configFile
    xdg.configFile = {
      # Your existing manual configs (if any)
    }
    // hyprlandConfs;
  };
}

generated/mangowc/top.nix

This is top file of this level which contains just an import statement for all relevant files and/or the subfolder in this folder

{ config, pkgs, lib, user, inputs, flakeRoot,... }:
{
  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
}

generated/system/top.nix

This is top file of this level which contains just an import statement for all relevant files and/or the subfolder in this folder

{ config, pkgs, lib, user, inputs, flakeRoot,... }:
{
  imports = [
    ./applications/top.nix
    ./core/top.nix
    ./development/top.nix
    ./system_management/top.nix
  ];
  # .. put any code here
}

generated/system/applications/top.nix

This is top file of this level which contains just an import statement for all relevant files and/or the subfolder in this folder

{ config, pkgs, lib, user, inputs, flakeRoot,... }:
{
  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
}

generated/system/core/top.nix

This is top file of this level which contains just an import statement for all relevant files and/or the subfolder in this folder

{ config, pkgs, lib, user, inputs, flakeRoot,... }:
{
  imports = [
    ./wayland.nix
    ./login-tuigreeter.nix
    # ./login-lightdm.nix
  ];
  # .. put any code here
}

generated/system/core/login-tuigreeter.nix

This is top file of this level which contains just an import statement for all relevant files and/or the subfolder in this folder

{ pkgs, user, ... } :
{
environment.systemPackages = with pkgs; [
tuigreet
];
services.greetd = {
enable = true;
settings = {
  default_session = {
  command = pkgs.lib.mkForce "${pkgs.tuigreet}/bin/tuigreet --remember --time --time-format '%I:%M %p | %a • %h | %F'";
  };
};
};
}

generated/system/core/wayland.nix

This is top file of this level which contains just an import statement for all relevant files and/or the subfolder in this folder

{ config, pkgs, lib, user, ... }:
{
  # Enable essential services for a Wayland session
  services.dbus.enable = true;
  services.pipewire = {
    enable = true;
    alsa.enable = true;
    pulse.enable = true;
    wireplumber.enable = true;
  };

  # XDG Desktop Portal settings for better application integration
  xdg.portal = {
    enable = true;
    config.common.default = [ "hyprland" "gtk" ];
  };

  # Environment variables for a Wayland session
  environment.sessionVariables = {
    XDG_SESSION_TYPE = "wayland";
    XDG_CURRENT_DESKTOP = "Hyprland";
    XCURSOR_SIZE = "24";
  };

  # Home Manager Wayland configurations
  home-manager.users.${user.username} = {
    xdg.portal = {
      enable = true;
      extraPortals = with pkgs; [ xdg-desktop-portal-hyprland ];
      config.hyprland = {
        "org.freedesktop.impl.portal.Screencast" = [ "hyprland" ];
      };
    };
  };
}

generated/system/development/top.nix

This is top file of this level which contains just an import statement for all relevant files and/or the subfolder in this folder

{ config, pkgs, lib, user, inputs, flakeRoot,... }:
{
  imports = [
    ./databases/top.nix
    ./devops_ci_cd/top.nix
    ./programming_languages/top.nix
    ./virtualization/top.nix
    ./web_development/top.nix
  ];
  # .. put any code here
}

generated/system/system_management/top.nix

This is top file of this level which contains just an import statement for all relevant files and/or the subfolder in this folder

{ config, pkgs, lib, user, inputs, flakeRoot,... }:
{
  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
}

generated/hyprland/animations_effects/top.nix

This is top file of this level which contains just an import statement for all relevant files and/or the subfolder in this folder

{ config, pkgs, lib, user, inputs, flakeRoot,... }:
{
  imports = [
    # No subfolders to import
  ];
  # .. put any code here
}

generated/hyprland/decorations/top.nix

This is top file of this level which contains just an import statement for all relevant files and/or the subfolder in this folder

{ config, pkgs, lib, user, inputs, flakeRoot,... }:
{
  imports = [
    # No subfolders to import
  ];
  # .. put any code here
}

generated/hyprland/keyboard_binds/top.nix

This is top file of this level which contains just an import statement for all relevant files and/or the subfolder in this folder

{
  config,
  pkgs,
  lib,
  user,
  inputs,
  flakeRoot,
  ...
}:
let
  bindingsContent = builtins.readFile (flakeRoot + "/assets/hyprland/conf/bindings.conf");
in
{
  home-manager.users.${user.username} = {
    wayland.windowManager.hyprland = {
      enable = true;
      extraConfig = bindingsContent;
    };
  };
}

generated/hyprland/notifications/top.nix

This is top file of this level which contains just an import statement for all relevant files and/or the subfolder in this folder

{ config, pkgs, lib, user, inputs, flakeRoot,... }:
{
  imports = [
    # No subfolders to import
  ];
  # .. put any code here
}

generated/hyprland/statusbar_tray/top.nix

This is top file of this level which contains just an import statement for all relevant files and/or the subfolder in this folder

{ config, pkgs, lib, user, inputs, flakeRoot,... }:
{
  imports = [
    # No subfolders to import
  ];
  # .. put any code here
}

generated/hyprland/task_launcher/top.nix

This is top file of this level which contains just an import statement for all relevant files and/or the subfolder in this folder

{ config, pkgs, lib, user, inputs, flakeRoot,... }:
{
  imports = [
    ./wofi.nix
  ];
  # .. put any code here
}

generated/hyprland/task_launcher/wofi.nix

This is top file of this level which contains just an import statement for all relevant files and/or the subfolder in this folder

{ config, pkgs, lib, user, flakeRoot, ... }:
let
  xdgDataHome = config.home-manager.users.${user.username}.xdg.dataHome;
in
{
  # NixOS: Install Wofi system-wide (optional)
  environment.systemPackages = with pkgs; [ wofi ];

  # Home Manager: User-specific Wofi config
  home-manager.users.${user.username} = {
    # Install Wofi for the user
    home.packages = with pkgs; [ wofi ];

    # Wofi configuration
    xdg.configFile."wofi/config".text = ''
      dark
      width=500
      height=800
      lines=10
      columns=1
      cache_dir=${xdgDataHome}/wofi
      allow_images=true
      allow_markup=true
      show_drun=true
    '';
    /*
    # Catppuccin Mocha theme for Wofi
    xdg.configFile."wofi/style.css".source = pkgs.fetchFromGitHub {
      owner = "catppuccin";
      repo = "wofi";
      rev = "d4c8c0a6b57e2e97a0d7b87e186322e933a8d9e0"; # Example commit hash (replace with a valid one)
      sha256 = "sha256-0Rn9CKPm0v3rXlx7nyXD3QJ5Xq3XZvBwgqXzWmOyZkA="; # Replace with the correct hash
    } + "/mocha.css"; # Correct file name
    */
  };
}

generated/hyprland/task_window_workspace_switcher/top.nix

This is top file of this level which contains just an import statement for all relevant files and/or the subfolder in this folder

{ config, pkgs, lib, user, inputs, flakeRoot,... }:
{
  imports = [
    # No subfolders to import
  ];
  # .. put any code here
}

generated/hyprland/window_rules/top.nix

This is top file of this level which contains just an import statement for all relevant files and/or the subfolder in this folder

{ config, pkgs, lib, user, inputs, flakeRoot,... }:
{
  imports = [
    # No subfolders to import
  ];
  # .. put any code here
}

generated/mangowc/animations_effects/top.nix

This is top file of this level which contains just an import statement for all relevant files and/or the subfolder in this folder

{ config, pkgs, lib, user, inputs, flakeRoot,... }:
{
  imports = [
    # No subfolders to import
  ];
  # .. put any code here
}

generated/mangowc/decorations/top.nix

This is top file of this level which contains just an import statement for all relevant files and/or the subfolder in this folder

{ config, pkgs, lib, user, inputs, flakeRoot,... }:
{
  imports = [
    # No subfolders to import
  ];
  # .. put any code here
}

generated/mangowc/keyboard_binds/top.nix

This is top file of this level which contains just an import statement for all relevant files and/or the subfolder in this folder

{
  config,
  pkgs,
  lib,
  user,
  inputs,
  flakeRoot,
  ...
}:
let
  bindingsContent = builtins.readFile (flakeRoot + "/assets/hyprland/conf/bindings.conf");
  userConfig = import (flakeRoot + "/assets/flake/users/henrov.nix");
in
{
  home-manager.users.${user.username} = {
    home.stateVersion = userConfig.stateVersion;
    home.username = userConfig.username;
    home.homeDirectory = userConfig.homeDirectory;
    wayland.windowManager.hyprland = {
      enable = true;
      extraConfig = bindingsContent;
    };
  };
}

generated/mangowc/notifications/top.nix

This is top file of this level which contains just an import statement for all relevant files and/or the subfolder in this folder

{ config, pkgs, lib, user, inputs, flakeRoot,... }:
{
  imports = [
    # No subfolders to import
  ];
  # .. put any code here
}

generated/mangowc/statusbar_tray/top.nix

This is top file of this level which contains just an import statement for all relevant files and/or the subfolder in this folder

{ config, pkgs, lib, user, inputs, flakeRoot,... }:
{
  imports = [
    # No subfolders to import
  ];
  # .. put any code here
}

generated/mangowc/task_launcher/top.nix

This is top file of this level which contains just an import statement for all relevant files and/or the subfolder in this folder

{ config, pkgs, lib, user, inputs, flakeRoot,... }:
{
  imports = [
    # No subfolders to import
  ];
  # .. put any code here
}

generated/mangowc/task_launcher/wofi.nix

This is top file of this level which contains just an import statement for all relevant files and/or the subfolder in this folder

{ config, pkgs, lib, user, inputs, flakeRoot,... }:
{
  # .. put any code here
}

generated/mangowc/task_window_workspace_switcher/top.nix

This is top file of this level which contains just an import statement for all relevant files and/or the subfolder in this folder

{ config, pkgs, lib, user, inputs, flakeRoot,... }:
{
  imports = [
    # No subfolders to import
  ];
  # .. put any code here
}

generated/mangowc/window_rules/top.nix

This is top file of this level which contains just an import statement for all relevant files and/or the subfolder in this folder

{ config, pkgs, lib, user, inputs, flakeRoot,... }:
{
  imports = [
    # No subfolders to import
  ];
  # .. put any code here
}

generated/system/applications/accessibility/top.nix

This is top file of this level which contains just an import statement for all relevant files and/or the subfolder in this folder

{ config, pkgs, lib, user, inputs, flakeRoot,... }:
{
  imports = [
    # No subfolders to import
  ];
  # .. put any code here
}

generated/system/applications/file_management/top.nix

This is top file of this level which contains just an import statement for all relevant files and/or the subfolder in this folder

{ config, pkgs, lib, user, inputs, flakeRoot,... }:
{
  imports = [
    # No subfolders to import
  ];
  # .. put any code here
}

generated/system/applications/gaming/top.nix

This is top file of this level which contains just an import statement for all relevant files and/or the subfolder in this folder

{ config, pkgs, lib, user, inputs, flakeRoot,... }:
{
  imports = [
    # No subfolders to import
  ];
  # .. put any code here
}

generated/system/applications/media_playback_editing/top.nix

This is top file of this level which contains just an import statement for all relevant files and/or the subfolder in this folder

{ config, pkgs, lib, user, inputs, flakeRoot,... }:
{
  imports = [
    # No subfolders to import
  ];
  # .. put any code here
}

generated/system/applications/office_productivity/top.nix

This is top file of this level which contains just an import statement for all relevant files and/or the subfolder in this folder

{ config, pkgs, lib, user, inputs, flakeRoot,... }:
{
  imports = [
    # No subfolders to import
  ];
  # .. put any code here
}

generated/system/applications/terminal_shell/top.nix

This is top file of this level which contains just an import statement for all relevant files and/or the subfolder in this folder

{ config, pkgs, lib, user, inputs, flakeRoot,... }:
{
  imports = [
    ./kitty.nix
    ./starship.nix
    ./zsh.nix
  ];
  # .. put any code here
}

generated/system/applications/terminal_shell/kitty.nix

This is top file of this level which contains just an import statement for all relevant files and/or the subfolder in this folder

{ config, pkgs, lib, user, ... }:
let
  kittyConfigDir = "${config.home-manager.users.${user.username}.xdg.configHome}/kitty";
in
{
  home-manager.users.${user.username} = {
    programs.kitty = {
      enable = true;
      settings = {
        font_family = "JetBrainsMono Nerd Font";
        font_size = 12.0;
        cursor = "Beam";
        cursor_blink_interval = -1;
        shell = "${pkgs.zsh}/bin/zsh";
      };
    };

    # Catppuccin Mocha theme for Kitty (embedded)
    xdg.configFile."kitty/kitty.conf".text = lib.concatStringsSep "\n" [
      "# Catppuccin Mocha theme"
      "background #1e1e2e"
      "foreground #cdd6f4"
      "selection_background #f5e0dc"
      "selection_foreground #1e1e2e"
      "url_color #f5e0dc"
      "cursor #f5e0dc"
      "cursor_text_color #1e1e2e"

      "color0 #45475a"
      "color8 #585b70"

      "color1 #f38ba8"
      "color9 #f38ba8"

      "color2 #a6e3a1"
      "color10 #a6e3a1"

      "color3 #f9e2af"
      "color11 #f9e2af"

      "color4 #89b4fa"
      "color12 #89b4fa"

      "color5 #f5c2e7"
      "color13 #f5c2e7"

      "color6 #94e2d5"
      "color14 #94e2d5"

      "color7 #bac2de"
      "color15 #bac2de"

      "# Window settings"
      "background_opacity 0.9"
      "font_size 12.0"
      "cursor_shape Beam"
    ];
  };
}

generated/system/applications/terminal_shell/starship.nix

This is top file of this level which contains just an import statement for all relevant files and/or the subfolder in this folder

{ config, pkgs, lib, user, ... }:
{
  home-manager.users.${user.username} = {
    programs.starship = {
      enable = true;
    };

    # Catppuccin Mocha theme for Starship
    xdg.configFile."starship.toml".text = ''
      format = "$all"

      [character]
      success_symbol = "[❯](bold green)"
      error_symbol = "[❯](bold red)"

      [directory]
      style = "bold lavender"

      [git_branch]
      symbol = " "
      style = "bold maroon"

      [package]
      disabled = true
    '';
  };
}

generated/system/applications/terminal_shell/zsh.nix

This is top file of this level which contains just an import statement for all relevant files and/or the subfolder in this folder

{ config, pkgs, lib, user, ... }:
let
  zshConfigDir = "${config.home-manager.users.${user.username}.xdg.configHome}/zsh";
in
{
  home-manager.users.${user.username} = {
    programs.zsh = {
      enable = true;
      enableCompletion = true;
      autosuggestion.enable = true;
      syntaxHighlighting.enable = true;
      oh-my-zsh = {
        enable = true;
        theme = "agnoster";
        plugins = [
          "git"
          "zsh-autosuggestions"
          "zsh-syntax-highlighting"
          "docker"
          "kubectl"
          "history"
          "command-not-found"
          "extract"
        ];
      };
      shellAliases = {
        ls = "exa --icons -a --group-directories-first";
        ll = "exa --icons -la --group-directories-first";
      };
    };

    # Consolidated .zshrc
    xdg.configFile."zsh/.zshrc".text = lib.concatStringsSep "\n" [
      "# Oh-My-Zsh"
      "export ZSH=\"${zshConfigDir}\""
      "source \"${pkgs.zsh}/share/zsh/functions/Newuser/zsh-newuser-install\""
      "source \"${zshConfigDir}/oh-my-zsh.sh\""
      ""
      "# Zsh options"
      "setopt AUTO_CD"
      "setopt CORRECT"
      "setopt INTERACTIVE_COMMENTS"
      ""
      "# Starship"
      "eval \"$(starship init zsh)\""
      ""
      "# fzf"
      "source \"${pkgs.fzf}/shell/key-bindings.zsh\""
      "source \"${pkgs.fzf}/shell/completion.zsh\""
      ""
      "# User customizations"
      "source \"${zshConfigDir}/custom.zsh\" 2>/dev/null"
    ];

    # User customizations
    xdg.configFile."zsh/custom.zsh".text = ''
      export EDITOR="nvim"
      export PATH="$HOME/.local/bin:$PATH"
    '';
  };
}

generated/system/development/databases/top.nix

This is top file of this level which contains just an import statement for all relevant files and/or the subfolder in this folder

{ config, pkgs, lib, user, inputs, flakeRoot,... }:
{
  imports = [
    # No subfolders to import
  ];
  # .. put any code here
}

generated/system/development/devops_ci_cd/top.nix

This is top file of this level which contains just an import statement for all relevant files and/or the subfolder in this folder

{ config, pkgs, lib, user, inputs, flakeRoot,... }:
{
  imports = [
    # No subfolders to import
  ];
  # .. put any code here
}

generated/system/development/programming_languages/top.nix

This is top file of this level which contains just an import statement for all relevant files and/or the subfolder in this folder

{ config, pkgs, lib, user, inputs, flakeRoot,... }:
{
  imports = [
    # No subfolders to import
  ];
  # .. put any code here
}

generated/system/development/virtualization/top.nix

This is top file of this level which contains just an import statement for all relevant files and/or the subfolder in this folder

{ config, pkgs, lib, user, inputs, flakeRoot,... }:
{
  imports = [
    # No subfolders to import
  ];
  # .. put any code here
}

generated/system/development/web_development/top.nix

This is top file of this level which contains just an import statement for all relevant files and/or the subfolder in this folder

{ config, pkgs, lib, user, inputs, flakeRoot,... }:
{
  imports = [
    # No subfolders to import
  ];
  # .. put any code here
}

generated/system/system_management/audio/top.nix

This is top file of this level which contains just an import statement for all relevant files and/or the subfolder in this folder

{ config, pkgs, lib, user, inputs, flakeRoot,... }:
{
  imports = [
    # No subfolders to import
  ];
  # .. put any code here
}

generated/system/system_management/backups/top.nix

This is top file of this level which contains just an import statement for all relevant files and/or the subfolder in this folder

{ config, pkgs, lib, user, inputs, flakeRoot,... }:
{
  imports = [
    # No subfolders to import
  ];
  # .. put any code here
}

generated/system/system_management/bluetooth/top.nix

This is top file of this level which contains just an import statement for all relevant files and/or the subfolder in this folder

{ config, pkgs, lib, user, inputs, flakeRoot,... }:
{
  imports = [
    # No subfolders to import
  ];
  # .. put any code here
}

generated/system/system_management/disk_management/top.nix

This is top file of this level which contains just an import statement for all relevant files and/or the subfolder in this folder

{ config, pkgs, lib, user, inputs, flakeRoot,... }:
{
  imports = [
    # No subfolders to import
  ];
  # .. put any code here
}

generated/system/system_management/hardware_sensors/top.nix

This is top file of this level which contains just an import statement for all relevant files and/or the subfolder in this folder

{ config, pkgs, lib, user, inputs, flakeRoot,... }:
{
  imports = [
    # No subfolders to import
  ];
  # .. put any code here
}

generated/system/system_management/logging_monitoring/top.nix

This is top file of this level which contains just an import statement for all relevant files and/or the subfolder in this folder

{ config, pkgs, lib, user, inputs, flakeRoot,... }:
{
  imports = [
    # No subfolders to import
  ];
  # .. put any code here
}

generated/system/system_management/login_manager/top.nix

This is top file of this level which contains just an import statement for all relevant files and/or the subfolder in this folder

{ config, pkgs, lib, user, inputs, flakeRoot,... }:
{
  imports = [
    # No subfolders to import
  ];
  # .. put any code here
}

generated/system/system_management/monitor_setup/top.nix

This is top file of this level which contains just an import statement for all relevant files and/or the subfolder in this folder

{ config, pkgs, lib, user, inputs, flakeRoot,... }:
{
  imports = [
    # No subfolders to import
  ];
  # .. put any code here
}

generated/system/system_management/networking/top.nix

This is top file of this level which contains just an import statement for all relevant files and/or the subfolder in this folder

{ config, pkgs, lib, user, inputs, flakeRoot,... }:
{
  imports = [
    # No subfolders to import
  ];
  # .. put any code here
}

generated/system/system_management/power_management/top.nix

This is top file of this level which contains just an import statement for all relevant files and/or the subfolder in this folder

{ config, pkgs, lib, user, inputs, flakeRoot,... }:
{
  imports = [
    # No subfolders to import
  ];
  # .. put any code here
}

generated/system/system_management/printers_scanners/top.nix

This is top file of this level which contains just an import statement for all relevant files and/or the subfolder in this folder

{ config, pkgs, lib, user, inputs, flakeRoot,... }:
{
  imports = [
    # No subfolders to import
  ];
  # .. put any code here
}

generated/system/system_management/security/top.nix

This is top file of this level which contains just an import statement for all relevant files and/or the subfolder in this folder

{ config, pkgs, lib, user, inputs, flakeRoot,... }:
{
  imports = [
    # No subfolders to import
  ];
  # .. put any code here
}

generated/system/system_management/system_updates/top.nix

This is top file of this level which contains just an import statement for all relevant files and/or the subfolder in this folder

{ config, pkgs, lib, user, inputs, flakeRoot,... }:
{
  imports = [
    # No subfolders to import
  ];
  # .. put any code here
}