Files
nixos/Droidnix/README.org
T

1202 lines
43 KiB
Org Mode
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#+title: Droidnix: A Dendritic NixOS + Home Manager Configuration
#+author: Henro Veijer
#+options: toc:t num:nil htmlize:nil
#+language: en
#+html_head: <style>pre.src { background-color: #1e1e2e; color: #cdd6f4; padding: 1em; border-radius: 4px; }</style>
#+HTML_HEAD: <script src="https://cdn.jsdelivr.net/npm/tree.js@1.0.0/dist/tree.min.js"></script>
#+HTML_HEAD: <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/tree.js@1.0.0/dist/tree.min.css">
* 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 .#<hostname>=.
---
* 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
# Let's start importing the whole generated tree
./generated/top.nix
];
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 <nixpkgs> {}; [
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, ... }:
{
imports = [
./system/top.nix
./hyprland/top.nix
# ./mangowc/top.nix
];
}
#+END_SRC
** =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
#+BEGIN_SRC nix :tangle generated/hyprland/top.nix :noweb tangle :mkdirp yes :eval never-html
{ config, pkgs, lib, user, inputs, ... }:
{
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
];
}
#+END_SRC
** =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.
#+BEGIN_SRC nix :tangle generated/hyprland/hyprland.nix :noweb tangle :mkdirp yes :eval never-html
{ config, pkgs, lib, user, inputs, ... }:
{
# Nix settings to use Hyprland's cache for packages
nix.settings = {
substituters = [ "https://hyprland.cachix.org" ];
trusted-public-keys = [ "hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc=" ];
};
# Install Hyprland and enable it as the window manager
environment.systemPackages = with pkgs; [ hyprland ];
programs.hyprland = {
enable = true;
xwayland.enable = true;
};
# Hyprland-specific Home Manager configurations
home-manager.users.${user.username} = {
wayland.windowManager.hyprland = {
enable = true;
settings = { };
};
};
}
#+END_SRC
** =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
#+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 just an import statement for all relevant files and/or 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
./core/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 just an import statement for all relevant files and/or 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/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
#+BEGIN_SRC nix :tangle generated/system/core/top.nix :noweb tangle :mkdirp yes :eval never-html
{ config, pkgs, lib, user, inputs, ... }:
{
imports = [
./wayland.nix
];
# .. put any code here
}
#+END_SRC
** =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
#+BEGIN_SRC nix :tangle generated/system/core/wayland.nix :noweb tangle :mkdirp yes :eval never-html
{ 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" ];
};
};
};
}
#+END_SRC
** =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
#+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 just an import statement for all relevant files and/or 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 just an import statement for all relevant files and/or 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 just an import statement for all relevant files and/or 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, __flakeRoot,... }:
{
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 just an import statement for all relevant files and/or 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 (__flakeRoot + "/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 just an import statement for all relevant files and/or 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 just an import statement for all relevant files and/or 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 just an import statement for all relevant files and/or 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 just an import statement for all relevant files and/or 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 just an import statement for all relevant files and/or 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 just an import statement for all relevant files and/or 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 just an import statement for all relevant files and/or 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 just an import statement for all relevant files and/or 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 just an import statement for all relevant files and/or 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 just an import statement for all relevant files and/or 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 just an import statement for all relevant files and/or 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 just an import statement for all relevant files and/or 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 just an import statement for all relevant files and/or 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 just an import statement for all relevant files and/or 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 just an import statement for all relevant files and/or 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 just an import statement for all relevant files and/or 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 just an import statement for all relevant files and/or 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 just an import statement for all relevant files and/or 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 just an import statement for all relevant files and/or 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 just an import statement for all relevant files and/or 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 just an import statement for all relevant files and/or 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 just an import statement for all relevant files and/or 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 just an import statement for all relevant files and/or 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 just an import statement for all relevant files and/or 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 just an import statement for all relevant files and/or 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 just an import statement for all relevant files and/or 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 just an import statement for all relevant files and/or 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 just an import statement for all relevant files and/or 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 just an import statement for all relevant files and/or 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 just an import statement for all relevant files and/or 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 just an import statement for all relevant files and/or 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 just an import statement for all relevant files and/or 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 just an import statement for all relevant files and/or 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 just an import statement for all relevant files and/or 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 just an import statement for all relevant files and/or 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 just an import statement for all relevant files and/or 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 just an import statement for all relevant files and/or 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