#+title: Droidnix: A Dendritic NixOS + Home Manager Configuration #+author: Henro Veijer #+options: toc:t num:nil htmlize:nil #+language: en #+html_head: #+HTML_HEAD: #+HTML_HEAD: * Shortcuts [[#introduction][Introduction]] [[#the-assets-folder][The Assets Folder]] [[#the-actual-code][The Actual Code]] --- * Introduction :intro: :PROPERTIES: :CUSTOM_ID: introduction :END: ** What is Droidnix Droidnix is a modular, declarative NixOS + Home Manager configuration system. It allows users to choose between =Hyprland= and =Mangowc= as their window manager, with shared and WM-specific configurations managed via Emacs Org and Nix Flakes. The project is designed for reproducibility, maintainability, and cross-machine compatibility. *** Installed components: **** Core **** Hyprland **** Mangowc *** Goals, project Structure, import hierarchy This project uses a **modular NixOS configuration** with **Hyprland** and **MangoWC** support, designed for **literate programming** and **cross-device reusability**. The Droidnix repository is organized into two main parts: 1. =.assets/=: Static, non-generated files (e.g., configs, scripts, themes). 2. Generated folders (=system=, =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 │   ├── system │   │   ├── 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/system/conf/base.conf= to choose your window manager (=wm = "hyprland"= or =wm = "mangowc"=). 4. Tangle this Org file to generate Nix configurations: =C-c C-v t= in Emacs or use this: =emacs README.org --batch -f org-babel-tangle && emacs --batch --eval "(setq org-html-htmlize-output-type nil)" README.org -f org-html-export-to-html= 5. Build and switch: =sudo nixos-rebuild switch --flake .#=. --- * The Assets Folder :assets: :PROPERTIES: :CUSTOM_ID: the-assets-folder :END: The =.assets/= folder contains all static files, such as configs, scripts, and themes. These files are not generated and can be edited directly. ** =.assets/system/= This folder contains files shared across both window managers, such as wallpapers, shell configs, and system 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@{ self, 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.legacyPackages.${system}) mkShell; }; }; } #+END_SRC * First the nix-files that flake really needs and that do not fit wel in the hierarchical structure ** =assets/flake/users/henrov.nix= This is the default user, just search and replace henrov another name if you want to change #+BEGIN_SRC nix :tangle assets/flake/users/henrov.nix :noweb tangle :mkdirp yes :eval never-html { username = "henrov"; hashedPassword = "$6$ISAmsPLyFi7idYXr$VmZsq.zMsyh1irSkyDNqtorNXG0oEHbbMVqTii1t8bymvrQ5ZQmbdi4OiBNeNYe/huHGrojXM.3TST2fTLz0T."; homeDirectory = "/home/henrov"; stateVersion = "25.11"; locale = "nl_NL.UTF-8"; } #+END_SRC ** =assets/flake/terminal_shell/devshell.nix= This code defines a Nix shell environment (also called a "devShell") that you can enter using the nix develop command. When you enter this shell, Nix will provide the tools and dependencies listed in buildInputs. #+BEGIN_SRC nix :tangle assets/flake/terminal_shell/devshell.nix :noweb tangle :mkdirp yes :eval never-html { mkShell, ... }: mkShell { buildInputs = with import {}; [ nil nixfmt-rfc-style ]; } #+END_SRC ** =assets/flake/machines/traveldroid/top.nix= This code defines the machine to build. Just search and replace traveldroid to provision another machine. #+BEGIN_SRC nix :tangle assets/flake/machines/traveldroid/top.nix :noweb tangle :mkdirp yes :eval never-html { config, pkgs, lib, user, inputs, 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; }; } #+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, 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 ]; } #+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, 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; }; } #+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, 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 } #+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, flakeRoot,... }: { 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, flakeRoot,... }: { imports = [ ./packages.nix ./flatpaks.nix ./accessibility/top.nix ./file_management/top.nix ./gaming/top.nix ./media_playback_editing/top.nix ./office_productivity/top.nix ./terminal_shell/top.nix ]; nixpkgs.config.allowUnfree = true; } #+END_SRC ** =generated/system/applications/packages.nix= This will import all packages listed in ./assets/system/apps/packlages.conf #+BEGIN_SRC nix :tangle generated/system/applications/packages.nix :noweb tangle :mkdirp yes :eval never-html { config, lib, pkgs, flakeRoot, inputs, ... }: let packagesConfPath = "${flakeRoot}/assets/system/apps/packages.conf"; raw = builtins.readFile packagesConfPath; # IMPORTANT: explicit "\n" so we never accidentally split into characters rawLines = lib.splitString "\n" raw; # Guard: if we accidentally split into characters, rawLines length ~= stringLength raw _guard = assert !( builtins.stringLength raw > 1 && builtins.length rawLines == builtins.stringLength raw ); true; cleanLine = l: let noCR = lib.replaceStrings [ "\r" ] [ "" ] l; noInlineComment = lib.head (lib.splitString "#" noCR); in lib.strings.trim noInlineComment; entries = builtins.filter (l: l != "") (map cleanLine rawLines); resolvePkg = name: let parts = lib.splitString "." name; found = lib.attrByPath parts null pkgs; in if found == null then throw '' packages.nix: package not found in pkgs Token : ${builtins.toJSON name} packages.conf : ${toString packagesConfPath} Hint : check the attribute name on search.nixos.org/packages '' else found; packages = builtins.seq _guard (map resolvePkg entries); zenBrowser = inputs.zen-browser.packages.${pkgs.stdenv.hostPlatform.system}.default; in { environment.systemPackages = packages ++ [ zenBrowser ]; } #+END_SRC ** =generated/system/applications/flatpaks.nix= This will import all packages listed in ./assets/system/apps/flatpaks.conf #+BEGIN_SRC nix :tangle generated/system/applications/flatpaks.nix :noweb tangle :mkdirp yes :eval never-html { config, pkgs, lib, flakeRoot, ... }: let moduleName = "install-flatpaks"; flatpakConfPath = "${flakeRoot}/assets/system/apps/flatpaks.conf"; raw = builtins.readFile flatpakConfPath; # Explicit "\n" so we never accidentally split into characters rawLines = lib.splitString "\n" raw; # Guard: if we accidentally split into characters, rawLines length ~= stringLength raw _guard = assert !(builtins.stringLength raw > 1 && builtins.length rawLines == builtins.stringLength raw); true; cleanLine = l: let noCR = lib.replaceStrings [ "\r" ] [ "" ] l; noInlineComment = lib.head (lib.splitString "#" noCR); in lib.strings.trim noInlineComment; entries = builtins.filter (l: l != "") (map cleanLine rawLines); # Flatpak app IDs are reverse-DNS style like org.example.App (at least 2 dots). # We'll validate and fail early with a clear message. dotCount = s: builtins.length (lib.splitString "." s) - 1; isValidId = s: (dotCount s) >= 2; # matches the error you're seeing: "at least 2 periods" _validate = builtins.seq _guard ( builtins.map ( id: if isValidId id then true else throw '' ${moduleName}: invalid Flatpak ID in flatpaks.conf (needs reverse-DNS with at least 2 dots) Token : ${builtins.toJSON id} flatpaks.conf : ${toString flatpakConfPath} Fix: remove stray tokens/headers, or comment them out with '#'. '' ) entries ); # Use validated entries flatpakApps = builtins.seq _validate entries; syncFlatpaks = pkgs.writeShellScript "sync-flatpaks" '' set -euo pipefail # Use the deployed config path (matches environment.etc below) CONF="/etc/flatpak/flatpaks.conf" if [[ -f "$CONF" ]]; then echo "flatpak-sync: using $CONF" else echo "flatpak-sync: WARNING: $CONF not found, using embedded list" fi if ! flatpak remotes --system --columns=name | grep -qx flathub; then flatpak remote-add --system --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo fi desired_apps=( ${lib.concatStringsSep "\n" (map (a: ''"${a}"'') flatpakApps)} ) for app in "''${desired_apps[@]}"; do if ! flatpak info --system "$app" >/dev/null 2>&1; then flatpak install --system -y --noninteractive flathub "$app" fi done ''; in { services.flatpak.enable = true; xdg.portal = { enable = true; }; # Deploy the config file for runtime visibility/debugging environment.etc."flatpak/flatpaks.conf".source = lib.mkForce flatpakConfPath; systemd.services.flatpak-sync = { description = "Install Flatpak apps listed in flatpaks.conf"; wantedBy = [ "multi-user.target" ]; wants = [ "network-online.target" ]; after = [ "network-online.target" ]; serviceConfig = { Type = "oneshot"; ExecStart = syncFlatpaks; }; restartTriggers = [ flatpakConfPath ]; path = [ pkgs.flatpak pkgs.coreutils pkgs.gnugrep pkgs.gnused ]; }; } #+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, flakeRoot,... }: { imports = [ ./wayland.nix ./login-tuigreeter.nix # ./login-lightdm.nix ]; # .. put any code here } #+END_SRC ** =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 #+BEGIN_SRC nix :tangle generated/system/core/login-tuigreeter.nix :noweb tangle :mkdirp yes :eval never-html { 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'"; }; }; }; } #+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.system.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, 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 } #+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, 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 } #+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, flakeRoot,... }: { 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, flakeRoot, ... }: let bindingsContent = builtins.readFile (flakeRoot + "/assets/hyprland/conf/bindings.conf"); in { home-manager.users.${user.username} = { wayland.windowManager.hyprland = { enable = true; extraConfig = bindingsContent; }; }; } #+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, flakeRoot,... }: { 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, flakeRoot,... }: { 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, flakeRoot,... }: { imports = [ ./wofi.nix ]; # .. put any code here } #+END_SRC ** =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 #+BEGIN_SRC nix :tangle generated/hyprland/task_launcher/wofi.nix :noweb tangle :mkdirp yes :eval never-html { 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 */ }; } #+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, flakeRoot,... }: { 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, flakeRoot,... }: { 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, flakeRoot,... }: { 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, flakeRoot,... }: { 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, 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; }; }; } #+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, flakeRoot,... }: { 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, flakeRoot,... }: { 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, flakeRoot,... }: { imports = [ # No subfolders to import ]; # .. put any code here } #+END_SRC ** =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 #+BEGIN_SRC nix :tangle generated/mangowc/task_launcher/wofi.nix :noweb tangle :mkdirp yes :eval never-html { config, pkgs, lib, user, inputs, flakeRoot,... }: { # .. 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, flakeRoot,... }: { 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, flakeRoot,... }: { 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, flakeRoot,... }: { 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, flakeRoot,... }: { 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, flakeRoot,... }: { 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, flakeRoot,... }: { 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, flakeRoot,... }: { 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, flakeRoot,... }: { imports = [ ./kitty.nix ./starship.nix ./zsh.nix ]; # .. put any code here } #+END_SRC ** =generated/system/applications/terminal_shell/kitty.nix= This file sets up Kitty terminal #+BEGIN_SRC nix :tangle generated/system/applications/terminal_shell/kitty.nix :noweb tangle :mkdirp yes :eval never-html { config, pkgs, lib, user, flakeRoot, ... }: let kittyConfigDir = "${config.home-manager.users.${user.username}.xdg.configHome}/kitty"; in { home-manager.users.${user.username} = { programs.kitty = { enable = true; }; # Copy the actual kitty.conf (not a symlink) xdg.configFile."kitty/kitty.conf".text = lib.concatStringsSep "\n" [ (builtins.readFile "${flakeRoot}/assets/system/conf/kitty/kitty.conf") ]; # Copy the theme file xdg.configFile."kitty/Catppuccin-Mocha.conf".source = "${flakeRoot}/assets/system/conf/kitty/Catppuccin-Mocha.conf"; }; } #+END_SRC ** =generated/system/applications/terminal_shell/starship.nix= This file sets up starship prompt #+BEGIN_SRC nix :tangle generated/system/applications/terminal_shell/starship.nix :noweb tangle :mkdirp yes :eval never-html { config, pkgs, lib, user, flakeRoot, ... }: { home-manager.users.${user.username} = { programs.starship = { enable = true; settings = { configFile = "${flakeRoot}/assets/system/conf/starship.toml"; }; }; }; } #+END_SRC ** =generated/system/applications/terminal_shell/zsh.nix= This sets up the zsh terminal #+BEGIN_SRC nix :tangle generated/system/applications/terminal_shell/zsh.nix :noweb tangle :mkdirp yes :eval never-html { lib, config, pkgs, ... }: { # --- NixOS Configuration --- environment.systemPackages = with pkgs; [ zsh git docker ]; # --- Home Manager Configuration --- home-manager.users.henrov = { programs.zsh = { enable = true; enableCompletion = true; # Use oh-my-zsh only for themes (optional) oh-my-zsh = { enable = true; theme = "agnoster"; # Fallback customThemes = { catppuccin-mocha = '' # Catppuccin Mocha colors local mocha_base="#1E1E2E" local mocha_surface0="#313244" local mocha_text="#CDD6F4" local mocha_lavender="#B4BEFE" local mocha_blue="#89B4FA" local mocha_sapphire="#74C7EC" local mocha_teal="#94E2D5" local mocha_green="#A6E3A1" local mocha_yellow="#F9E2AF" local mocha_peach="#FAB387" local mocha_maroon="#EBA0AC" local mocha_red="#F38BA8" local mocha_mauve="#CBA6F7" local mocha_pink="#F5C2E7" local mocha_flamingo="#F2CDCD" local mocha_rosewater="#F5E0DC" # Prompt PROMPT='%{$fg[$mocha_blue]%}%n%{$reset_color%}@%{$fg[$mocha_peach]%}%m%{$reset_color%} %{$fg[$mocha_lavender]%}%~%{$reset_color%} %{$fg[$mocha_red]%}$%{$reset_color%} ' RPROMPT='%{$fg[$mocha_green]%}%T%{$reset_color%}' # Git prompt ZSH_THEME_GIT_PROMPT_PREFIX="%{$fg[$mocha_yellow]%}(%{$reset_color%}" ZSH_THEME_GIT_PROMPT_SUFFIX="%{$fg[$mocha_yellow]%})%{$reset_color%}" ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg[$mocha_red]%}✗%{$reset_color%}" ZSH_THEME_GIT_PROMPT_CLEAN="%{$fg[$mocha_green]%}✓%{$reset_color%}" ZSH_THEME_GIT_PROMPT_AHEAD="%{$fg[$mocha_blue]%}⇡%{$reset_color%}" ZSH_THEME_GIT_PROMPT_BEHIND="%{$fg[$mocha_blue]%}⇣%{$reset_color%}" ZSH_THEME_GIT_PROMPT_UNTRACKED="%{$fg[$mocha_pink]%}?%{$reset_color%}" ZSH_THEME_GIT_PROMPT_STAGED="%{$fg[$mocha_sapphire]%}+%{$reset_color%}" ZSH_THEME_GIT_PROMPT_UNSTAGED="%{$fg[$mocha_red]%}!%{$reset_color%}" # Virtualenv/pyenv ZSH_THEME_VIRTUAL_ENV_PREFIX="(%{$fg[$mocha_teal]%}" ZSH_THEME_VIRTUAL_ENV_SUFFIX="%{$reset_color%})" # Right prompt with Git status RPROMPT='$(git_prompt_info) %{$fg[$mocha_green]%}%T%{$reset_color%}' ''; }; }; # Declare all plugins via Nixpkgs for reproducibility plugins = with pkgs.zshPlugins; [ zsh-autosuggestions zsh-syntax-highlighting zsh-completions zsh-history-substring-search zsh-you-should-use # Optional: Suggests aliases ]; # Source plugins that need explicit activation initExtra = '' source ${pkgs.zsh-autosuggestions}/share/zsh-autosuggestions/zsh-autosuggestions.zsh source ${pkgs.zsh-syntax-highlighting}/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh source ${pkgs.zsh-history-substring-search}/share/zsh-history-substring-search/zsh-history-substring-search.zsh ZSH_THEME="catppuccin-mocha" ''; }; # Home Manager packages (optional, if not already in systemPackages) home.packages = with pkgs; [ direnv git-extras ]; }; } #+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, flakeRoot,... }: { 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, flakeRoot,... }: { 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, flakeRoot,... }: { 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, flakeRoot,... }: { 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, flakeRoot,... }: { 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, flakeRoot,... }: { 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, flakeRoot,... }: { 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, flakeRoot,... }: { 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, flakeRoot,... }: { 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, flakeRoot,... }: { 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, flakeRoot,... }: { 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, flakeRoot,... }: { 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, flakeRoot,... }: { 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, flakeRoot,... }: { 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, flakeRoot,... }: { 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, flakeRoot,... }: { 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, flakeRoot,... }: { 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, flakeRoot,... }: { imports = [ # No subfolders to import ]; # .. put any code here } #+END_SRC