Files
nixos/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 = lib.system.system;
    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;
    };
  };
}

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

{ system, ... }:
{
  username = "henrov";
  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, ... }:
{
  # Import all other configurations
  imports = [
    ./hardware-configuration.nix
  ];
    # Minimal settings that must be defined here
    networking.hostName = "traveldroid";
    wm.type = "hyprland";  # Define the window manager type here, mangowc will be made possible in the nerar future.
    # In generated/top.nix the chpice fopr a window manager will be effectuated
}

Now we reach the top of the hierarchiy 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, 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}"
    )
  ];
}

Hyprland

generated/hyprland/animations_effects/top.nix

{ lib, config, pkgs, ... }:
{
  imports = [ ./placeholder.nix ];
}

generated/hyprland/animations_effects/placeholder.nix

{ pkgs, user, ... }:
{
  # Your configurations here
}

generated/hyprland/decorations/top.nix

{ lib, config, pkgs, ... }:
{
  imports = [ ./placeholder.nix ];
}

generated/hyprland/decorations/placeholder.nix

{ pkgs, user, ... }:
{
  # Your configurations here
}

generated/hyprland/keyboard_binds/top.nix

{ lib, config, pkgs, ... }:
{
  imports = [ ./placeholder.nix ];
}

generated/hyprland/keyboard_binds/placeholder.nix

{ pkgs, user, ... }:
{
  # Your configurations here
}

generated/hyprland/notifications/top.nix

{ lib, config, pkgs, ... }:
{
  imports = [ ./placeholder.nix ];
}

generated/hyprland/notifications/placeholder.nix

{ pkgs, user, ... }:
{
  # Your configurations here
}

generated/hyprland/statusbar_tray/top.nix

{ lib, config, pkgs, ... }:
{
  imports = [ ./placeholder.nix ];
}

generated/hyprland/statusbar_tray/placeholder.nix

{ pkgs, user, ... }:
{
  # Your configurations here
}

generated/hyprland/task_launcher/top.nix

{ lib, config, pkgs, ... }:
{
  imports = [ ./placeholder.nix ];
}

generated/hyprland/task_launcher/placeholder.nix

{ pkgs, user, ... }:
{
  # Your configurations here
}

generated/hyprland/task_window_workspace_switcher/top.nix

{ lib, config, pkgs, ... }:
{
  imports = [ ./placeholder.nix ];
}

generated/hyprland/task_window_workspace_switcher/placeholder.nix

{ pkgs, user, ... }:
{
  # Your configurations here
}

generated/hyprland/window_rules/top.nix

{ lib, config, pkgs, ... }:
{
  imports = [ ./placeholder.nix ];
}

generated/hyprland/window_rules/placeholder.nix

{ pkgs, user, ... }:
{
  # Your configurations here
}

Mangowc

generated/mangowc/animations_effects/top.nix

{ lib, config, pkgs, ... }:
{
  imports = [ ./placeholder.nix ];
}

generated/mangowc/animations_effects/placeholder.nix

{ pkgs, user, ... }:
{
  # Your configurations here
}

generated/mangowc/decorations/top.nix

{ lib, config, pkgs, ... }:
{
  imports = [ ./placeholder.nix ];
}

generated/mangowc/decorations/placeholder.nix

{ pkgs, user, ... }:
{
  # Your configurations here
}

generated/mangowc/keyboard_binds/top.nix

{ lib, config, pkgs, ... }:
{
  imports = [ ./placeholder.nix ];
}

generated/mangowc/keyboard_binds/placeholder.nix

{ pkgs, user, ... }:
{
  # Your configurations here
}

generated/mangowc/notifications/top.nix

{ lib, config, pkgs, ... }:
{
  imports = [ ./placeholder.nix ];
}

generated/mangowc/notifications/placeholder.nix

{ pkgs, user, ... }:
{
  # Your configurations here
}

generated/mangowc/statusbar_tray/top.nix

{ lib, config, pkgs, ... }:
{
  imports = [ ./placeholder.nix ];
}

generated/mangowc/statusbar_tray/placeholder.nix

{ pkgs, user, ... }:
{
  # Your configurations here
}

generated/mangowc/task_launcher/top.nix

{ lib, config, pkgs, ... }:
{
  imports = [ ./placeholder.nix ];
}

generated/mangowc/task_launcher/placeholder.nix

{ pkgs, user, ... }:
{
  # Your configurations here
}

generated/mangowc/task_window_workspace_switcher/top.nix

{ lib, config, pkgs, ... }:
{
  imports = [ ./placeholder.nix ];
}

generated/mangowc/task_window_workspace_switcher/placeholder.nix

{ pkgs, user, ... }:
{
  # Your configurations here
}

generated/mangowc/window_rules/top.nix

{ lib, config, pkgs, ... }:
{
  imports = [ ./placeholder.nix ];
}

generated/mangowc/window_rules/placeholder.nix

{ pkgs, user, ... }:
{
  # Your configurations here
}

System

generated/system/applications/file_management/top.nix

{ lib, config, pkgs, ... }:
{
  imports = [ ./placeholder.nix ];
}

generated/system/applications/file_management/placeholder.nix

{ pkgs, user, ... }:
{
  # Your configurations here
}

generated/system/applications/gaming/top.nix

{ lib, config, pkgs, ... }:
{
  imports = [ ./placeholder.nix ];
}

generated/system/applications/gaming/placeholder.nix

{ pkgs, user, ... }:
{
  # Your configurations here
}

generated/system/applications/office_productivity/top.nix

{ lib, config, pkgs, ... }:
{
  imports = [ ./placeholder.nix ];
}

generated/system/applications/office_productivity/placeholder.nix

{ pkgs, user, ... }:
{
  # Your configurations here
}

generated/system/applications/media_playback_editing/top.nix

{ lib, config, pkgs, ... }:
{
  imports = [ ./placeholder.nix ];
}

generated/system/applications/media_playback_editing/placeholder.nix

{ pkgs, user, ... }:
{
  # Your configurations here
}

generated/system/applications/terminal_shell/top.nix

{ lib, config, pkgs, ... }:
{
  imports = [ ./placeholder.nix ];
}

generated/system/applications/terminal_shell/placeholder.nix

{ pkgs, user, ... }:
{
  # Your configurations here
}

generated/system/applications/accessibility/top.nix

{ lib, config, pkgs, ... }:
{
  imports = [ ./placeholder.nix ];
}

generated/system/applications/accessibility/placeholder.nix

{ pkgs, user, ... }:
{
  # Your configurations here
}

generated/system/development/databases/top.nix

{ lib, config, pkgs, ... }:
{
  imports = [ ./placeholder.nix ];
}

generated/system/development/databases/placeholder.nix

{ pkgs, user, ... }:
{
  # Your configurations here
}

generated/system/development/devops_ci_cd/top.nix

{ lib, config, pkgs, ... }:
{
  imports = [ ./placeholder.nix ];
}

generated/system/development/devops_ci_cd/placeholder.nix

{ pkgs, user, ... }:
{
  # Your configurations here
}

generated/system/development/programming_languages/top.nix

{ lib, config, pkgs, ... }:
{
  imports = [ ./placeholder.nix ];
}

generated/system/development/programming_languages/placeholder.nix

{ pkgs, user, ... }:
{
  # Your configurations here
}

generated/system/development/virtualization/top.nix

{ lib, config, pkgs, ... }:
{
  imports = [ ./placeholder.nix ];
}

generated/system/development/virtualization/placeholder.nix

{ pkgs, user, ... }:
{
  # Your configurations here
}

generated/system/development/web_development/top.nix

{ lib, config, pkgs, ... }:
{
  imports = [ ./placeholder.nix ];
}

generated/system/development/web_development/placeholder.nix

{ pkgs, user, ... }:
{
  # Your configurations here
}

generated/system/system_management/backups/top.nix

{ lib, config, pkgs, ... }:
{
  imports = [ ./placeholder.nix ];
}

generated/system/system_management/backups/placeholder.nix

{ pkgs, user, ... }:
{
  # Your configurations here
}

generated/system/system_management/bluetooth/top.nix

{ lib, config, pkgs, ... }:
{
  imports = [ ./placeholder.nix ];
}

generated/system/system_management/bluetooth/placeholder.nix

{ pkgs, user, ... }:
{
  # Your configurations here
}

generated/system/system_management/power_management/top.nix

{ lib, config, pkgs, ... }:
{
  imports = [ ./placeholder.nix ];
}

generated/system/system_management/power_management/placeholder.nix

{ pkgs, user, ... }:
{
  # Your configurations here
}

generated/system/system_management/audio/top.nix

{ lib, config, pkgs, ... }:
{
  imports = [ ./placeholder.nix ];
}

generated/system/system_management/audio/placeholder.nix

{ pkgs, user, ... }:
{
  # Your configurations here
}

generated/system/system_management/hardware_sensors/top.nix

{ lib, config, pkgs, ... }:
{
  imports = [ ./placeholder.nix ];
}

generated/system/system_management/hardware_sensors/placeholder.nix

{ pkgs, user, ... }:
{
  # Your configurations here
}

generated/system/system_management/logging_monitoring/top.nix

{ lib, config, pkgs, ... }:
{
  imports = [ ./placeholder.nix ];
}

generated/system/system_management/logging_monitoring/placeholder.nix

{ pkgs, user, ... }:
{
  # Your configurations here
}

generated/system/system_management/login_manager/top.nix

{ lib, config, pkgs, ... }:
{
  imports = [ ./placeholder.nix ];
}

generated/system/system_management/login_manager/placeholder.nix

{ pkgs, user, ... }:
{
  # Your configurations here
}

generated/system/system_management/monitor_setup/top.nix

{ lib, config, pkgs, ... }:
{
  imports = [ ./placeholder.nix ];
}

generated/system/system_management/monitor_setup/placeholder.nix

{ pkgs, user, ... }:
{
  # Your configurations here
}

generated/system/system_management/networking/top.nix

{ lib, config, pkgs, ... }:
{
  imports = [ ./placeholder.nix ];
}

generated/system/system_management/networking/placeholder.nix

{ pkgs, user, ... }:
{
  # Your configurations here
}

generated/system/system_management/printers_scanners/top.nix

{ lib, config, pkgs, ... }:
{
  imports = [ ./placeholder.nix ];
}

generated/system/system_management/printers_scanners/placeholder.nix

{ pkgs, user, ... }:
{
  # Your configurations here
}

generated/system/system_management/disk_management/top.nix

{ lib, config, pkgs, ... }:
{
  imports = [ ./placeholder.nix ];
}

generated/system/system_management/disk_management/placeholder.nix

{ pkgs, user, ... }:
{
  # Your configurations here
}

generated/system/system_management/security/top.nix

{ lib, config, pkgs, ... }:
{
  imports = [ ./placeholder.nix ];
}

generated/system/system_management/security/placeholder.nix

{ pkgs, user, ... }:
{
  # Your configurations here
}

generated/system/system_management/system_updates/top.nix

{ lib, config, pkgs, ... }:
{
  imports = [ ./placeholder.nix ];
}

generated/system/system_management/system_updates/placeholder.nix

{ pkgs, user, ... }:
{
  # Your configurations here
}