diff --git a/Droidnix/README.html b/Droidnix/README.html deleted file mode 100644 index 82d869c18..000000000 --- a/Droidnix/README.html +++ /dev/null @@ -1,2784 +0,0 @@ - - - - - - - -Droidnix: A Dendritic NixOS + Home Manager Configuration NixOS Configuration Structure - - - - - - - - -
-

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

-
-

Table of Contents

-
- -
-
-
-

Shortcuts

- -
-
-

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. -
  3. Generated folders (system, hyprland, mangowc): NixOS and Home Manager configurations, generated from Org files.
  4. -
-
-
-
-
-
-

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

First Setup

-
-
    -
  1. Clone this repository.
  2. -
  3. Run the setup script: ./setup_droidnix.sh.
  4. -
  5. Edit .assets/system/conf/base.conf to choose your window manager (wm = "hyprland" or wm = "mangowc").
  6. -
  7. 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
  8. -
  9. Build and switch: sudo nixos-rebuild switch --flake .#<hostname>.
  10. -
- -

-— -

-
-
-
-
-

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/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

-
-

-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@{
-      self,
-      nixpkgs,
-      home-manager,
-      emacs-overlay,
-      catppuccin,
-      zen-browser,
-      hyprland,
-      ...
-    }:
-    let
-      lib = nixpkgs.lib;
-      system = "x86_64-linux";
-      user = import ./assets/flake/users/henrov.nix;
-      machines = [
-        "traveldroid"
-        "maindroid"
-      ];
-      flakeRoot = ./.; # Define flakeRoot here
-    in
-    {
-      nixosConfigurations = lib.genAttrs machines (
-        machine:
-        lib.nixosSystem {
-          inherit system;
-          modules = [
-            # Import machine-specific configurations
-            ./assets/flake/machines/traveldroid/top.nix
-
-            # Catppuccin theme module
-            inputs.catppuccin.nixosModules.catppuccin
-
-            # Anchoring all the other nixes
-            ./generated/top.nix
-
-            # Home Manager module
-            inputs.home-manager.nixosModules.home-manager
-            {
-              home-manager.useGlobalPkgs = true;
-              home-manager.useUserPackages = true;
-              home-manager.extraSpecialArgs = { inherit user inputs flakeRoot; };
-            }
-          ];
-          specialArgs = { inherit user inputs flakeRoot; };
-        }
-      );
-
-      homeConfigurations = lib.genAttrs (map (machine: "${user.username}@${machine}") machines) (
-        userMachine:
-        home-manager.lib.homeManagerConfiguration {
-          inherit system;
-          configuration = import ./user.nix { inherit inputs user flakeRoot; };
-          extraSpecialArgs = { inherit user inputs flakeRoot; };
-        }
-      );
-
-      devShells.${system}.default = import ./assets/flake/terminal_shell/devshell.nix {
-        inherit (nixpkgs.legacyPackages.${system}) mkShell;
-      };
-    };
-}
-
-
-
-
-
-
-

First the nix-files that flake really needs and that do not fit wel in the hierarchical structure

-
-
-
-

assets/flake/users/top.nix

-
-

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

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

assets/flake/users/user.nix

-
-

-This is the default user, just search and replace henrov another name if you want to change -

-
-
{
-  config,
-  pkgs,
-  lib,
-  inputs,
-  ...
-}:
-
-let
-  user = import ./henrov.nix;
-in
-{
-  home-manager.users.${user.username} = {
-    home.stateVersion = "25.11";
-    home.username = user.username;
-    home.homeDirectory = user.homeDirectory;
-    home.packages = with pkgs; [
-      direnv
-      git-extras
-    ];
-  };
-
-  # Ensure the user is in the necessary groups
-  users.users.${config.users.users.${user.username}.username} = {
-    extraGroups = [ "networkmanager" ];
-}
-
-
-
-
-
-

assets/flake/users/henrov.nix

-
-

-This is the default user, just search and replace henrov another name if you want to change -

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

assets/flake/terminal_shell/devshell.nix

-
-

-This code defines a Nix shell environment (also called a "devShell") that you can enter using the nix develop command. When you enter this shell, Nix will provide the tools and dependencies listed in buildInputs. -

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

assets/flake/machines/traveldroid/top.nix

-
-

-This is the top of the machine hierarchy -

-
-
{
-  config,
-  pkgs,
-  lib,
-  user,
-  inputs,
-  flakeRoot,
-  ...
-}:
-
-{
-  imports = [
-    ./boot.nix
-    ./hardware-configuration.nix
-    ./machine.nix
-    ./dbus.nix
-    ./audio.nix
-    ./xdg.nix
-    ./session.nix
-    ./networking.nix
-    inputs.home-manager.nixosModules.home-manager
-  ];
-}
-
-
-
-
-
-

assets/flake/machines/traveldroid/boot.nix

-
-

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

-
-
{ pkgs, ... } :
-{
-  boot = {
-  initrd = {
-  verbose = false;   # its a lot of logs. dont need it, unless we do.
-  kernelModules = [ ]; # no kernel modules on boot
-  };
-
-  extraModulePackages = [ ];       # no extra packages on boot either
-  kernelPackages = pkgs.linuxPackages_latest;  # latest greatest linux kernel
-  kernelParams = [ "silent" ];       # quiet those logs
-
-  consoleLogLevel = 0;         # quiten more logs
-  plymouth.enable = true;        # graphical boot animation instead
-
-  supportedFilesystems = [ "ntfs" ];     # should see the ntfs (windows)
-
-  loader = {
-  systemd-boot.enable = true;      # systemd-boot
-  systemd-boot.configurationLimit = 10;
-  efi.canTouchEfiVariables = true;     # allow editing efi to edit the boot loader
-  timeout = 5;           # grub timeout to make a selection
-  };
-  };
-}
-
-
-
-
-
-

assets/flake/machines/traveldroid/machine.nix

-
-

-This is the top if the machine hierarchy -

-
-
{
-  config,
-  pkgs,
-  lib,
-  user,
-  inputs,
-  flakeRoot,
-  ...
-}:
-
-{
-  options = {
-    wm = lib.mkOption {
-      type = lib.types.str;
-      default = "hyprland";
-      description = "Type of window manager to use";
-    };
-  };
-
-  config = {
-    # Minimal settings that must be defined here
-    networking.hostName = "traveldroid";
-    wm.type = "hyprland";
-
-    # User configuration
-    users.users.${user.username} = {
-      isNormalUser = true;
-      extraGroups = [
-        "wheel"
-        "networkmanager"
-      ];
-      hashedPassword = user.hashedPassword;
-      home = user.homeDirectory;
-    };
-    # Optional: Enable auto-login for testing
-    services.getty.autologinUser = user.username;
-  };
-}
-
-
-
-
-
-

assets/flake/machines/traveldroid/dbus.nix

-
-

-This sets the dbus implementation -

-
-
{ config, pkgs, lib, ... }:
-{
-  services.dbus = lib.mkForce {
-    enable = true; # Force this to be true
-  };
-
-  # Configure dbus-broker via its configuration file
-  environment.etc."dbus-broker/launch.conf".text = ''
-    [General]
-    LogLevel=warning
-    MaxConnectionsPerUser=2048
-  '';
-}
-
-
-
-
-
-

assets/flake/machines/traveldroid/networking.nix

-
-

-This sets the dbus implementation -

-
-
{
-  config,
-  pkgs,
-  lib,
-  ...
-}:
-
-{
-  networking = {
-    useDHCP = lib.mkDefault true;
-    networkmanager.enable = true;
-    networkmanager.wifi.backend = "iwd";
-    wireless.iwd.enable = true;
-    wireless.userControlled.enable = true;
-    firewall = {
-      enable = true;
-      # KDE Connect: discovery + encrypted connections
-      allowedTCPPortRanges = [
-        {
-          from = 1714;
-          to = 1764;
-        }
-      ];
-      allowedUDPPortRanges = [
-        {
-          from = 1714;
-          to = 1764;
-        }
-      ];
-    };
-  };
-
-  # Install NetworkManager and wofi
-  environment.systemPackages = with pkgs; [
-    networkmanager
-    wofi
-  ];
-}
-
-
-
-
-
-

assets/flake/machines/traveldroid/session.nix

-
-

-This sets the session variables -

-
-
{ config, pkgs, user, ... }:
-{
-  environment.sessionVariables = {
-    XDG_SESSION_TYPE = "wayland";    # Session type
-    XDG_CURRENT_DESKTOP = "Hyprland"; # Desktop environment
-    XCURSOR_SIZE = "24";             # Cursor size
-    # Add other session-wide variables here (e.g., QT_QPA_PLATFORM, SDL_VIDEODRIVER)
-  };
-}
-
-
-
-
-
-

assets/flake/machines/traveldroid/bluetooth.nix

-
-

-This sets the bluetooth implementation -

-
-
{ config, pkgs, ... }:
-{
-  # Enable Bluetooth hardware and daemon
-  hardware.bluetooth = {
-    enable = true;
-    powerOnBoot = true;
-    packages = with pkgs; [ bluez ];
-  };
-
-  # Enable Bluetooth audio support in PipeWire
-  services.pipewire = {
-    config.pulse = {
-      bluez5.enable = true;
-    };
-  };
-
-  # Optional: Additional Bluetooth settings
-  hardware.bluetooth.extraConfig = ''
-    AutoEnable=true
-    DiscoverableTimeout=0
-    PairableTimeout=0
-  '';
-
-  # Install a graphical Bluetooth manager (optional)
-  environment.systemPackages = with pkgs; [
-    blueman
-  ];
-}
-
-
-
-
-
-

assets/flake/machines/traveldroid/audio.nix

-
-

-This sets audiosystem for this machine -

-
-
{ config, pkgs, ... }:
-{
-  services.pipewire = {
-    enable = true;
-    alsa.enable = true;    # ALSA compatibility
-    pulse.enable = true;   # PulseAudio compatibility
-    wireplumber.enable = true; # Session manager for PipeWire
-  };
-
-  # Realtime privileges for pro audio (optional)
-  security.rtkit.enable = true;
-}
-
-
-
-
-
-

assets/flake/machines/traveldroid/xdg.nix

-
-

-This sets the XDG implementation -

-
-
{ config, pkgs, ... }:
-{
-  xdg.portal = {
-    enable = true;
-    config.system.default = [ "hyprland" "gtk" ];
-  };
-}
-
-
-
-
-
-
-
-

Now we reach the top of the hierarchy which will call all other imports

-
-
-
-

generated/top.nix

-
-

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

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

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

-
-
{ config, pkgs, lib, user, inputs, flakeRoot,... }:
-{
-  imports = [
-    ./hyprland.nix
-    ./animations_effects/top.nix
-    ./decorations/top.nix
-    ./keyboard_binds/top.nix
-    ./notifications/top.nix
-    ./statusbar_tray/top.nix
-    ./task_launcher/top.nix
-    ./task_window_workspace_switcher/top.nix
-    ./window_rules/top.nix
-  ];
-}
-
-
-
-
-
-

generated/hyprland/hyprland.nix

-
-

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

-
-
{
-  config,
-  pkgs,
-  lib,
-  user,
-  flakeRoot,
-  ...
-}:
-
-let
-  hyprlandConfigDir = "${config.home-manager.users.${user.username}.xdg.configHome}/hypr";
-  # Dynamically read all files in assets/hyprland/conf/hypr
-  hyprlandConfs =
-    lib.genAttrs (builtins.attrNames (builtins.readDir "${flakeRoot}/assets/hyprland/conf/hypr"))
-      (name: {
-        text = builtins.readFile "${flakeRoot}/assets/hyprland/conf/hypr/${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;
-    };
-
-    # Ensure the Hyprland config directory exists
-    xdg.configFile = {
-      "hypr/.keep" = {
-        text = "";
-      };
-    } // hyprlandConfs;
-  };
-}
-
-
-
-
-
-

generated/mangowc/top.nix

-
-

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

-
-
{ config, pkgs, lib, user, inputs, flakeRoot,... }:
-{
-  imports = [
-    ./animations_effects/top.nix
-    ./decorations/top.nix
-    ./keyboard_binds/top.nix
-    ./notifications/top.nix
-    ./statusbar_tray/top.nix
-    ./task_launcher/top.nix
-    ./task_window_workspace_switcher/top.nix
-    ./window_rules/top.nix
-  ];
-  # .. put any code here
-}
-
-
-
-
-
-

generated/system/top.nix

-
-

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

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

generated/system/applications/top.nix

-
-

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

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

generated/system/applications/packages.nix

-
-

-This will import all packages listed in ./assets/system/apps/packlages.conf -

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

generated/system/applications/flatpaks.nix

-
-

-This will import all packages listed in ./assets/system/apps/flatpaks.conf -

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

generated/system/core/top.nix

-
-

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

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

generated/system/core/fonts.nix

-
-

-This file installs and configures eww -

-
-
{ config, pkgs, ... }:
-{
-  environment.systemPackages = with pkgs; [
-    (nerdfonts.override { fonts = [ "FiraCode" ]; })
-  ];
-}
-
-
-
-
-
-

generated/system/core/eww.nix

-
-

-This file installs and configures eww -

-
-
{ lib, config, pkgs, flakeRoot, user, ... }:
-let
-  ewwConfigDir = "${config.home-manager.users.${user.username}.xdg.configHome}/eww";
-  # Dynamically read all files in assets/system/conf/eww/
-  ewwConfs = lib.genAttrs (builtins.attrNames (builtins.readDir "${flakeRoot}/assets/system/conf/eww")) (name: {
-    text = builtins.readFile "${flakeRoot}/assets/system/conf/eww/${name}";
-  });
-in
-{
-  environment.systemPackages = with pkgs; [ eww ];
-
-  home-manager.users.${user.username} = {
-    home.file = {
-      "${ewwConfigDir}" = {
-        source = "${flakeRoot}/assets/system/conf/eww";
-        recursive = true;
-      };
-    };
-
-    home.sessionVariables = {
-      EWW_BIN = "${pkgs.eww}/bin/eww";
-    };
-
-    # Start eww with Hyprland/MangoWC
-    wayland.windowManager.hyprland.settings = lib.mkForce {
-      exec-once = [ "eww daemon" ];
-      exec = [ "eww open-many ${ewwConfigDir}/widgets" ]; # Adjust as needed
-    };
-    # For MangoWC, use:
-    # wayland.windowManager.mangowc.config = {
-    #   exec = [ "eww daemon" ];
-    #   exec-once = [ "eww open-many ${ewwConfigDir}/widgets" ];
-    # };
-  };
-}
-
-
-
-
-
-

generated/system/core/waybar.nix

-
-

-This file installs and configures waybar -

-
-
{ lib, pkgs, config, flakeRoot, ... }:
-let
-  username = "henrov";  # Replace with your actual username
-  waybar-config = pkgs.writeText "waybar-config" (builtins.readFile (flakeRoot + "/assets/system/conf/waybar/config"));
-  waybar-style = pkgs.writeText "waybar-style" (builtins.readFile (flakeRoot + "/assets/system/conf/waybar/style.css"));
-in
-{
-  programs.waybar = {
-    enable = true;
-    package = pkgs.waybar;
-  };
-
-  systemd.user.services.waybar = {
-    description = "Waybar (status bar for Wayland)";
-    wantedBy = [ "graphical-session.target" ];
-    after = [ "graphical-session.target" ];
-    serviceConfig = {
-      ExecStart = "${config.programs.waybar.package}/bin/waybar -c ${waybar-config} -s ${waybar-style}";
-      Restart = "on-failure";
-      RestartSec = "5s";
-    };
-  };
-
-  # Create symlinks for config and style
-  system.activationScripts.waybarSetup = lib.mkAfter ''
-    mkdir -p /home/${username}/.config/waybar
-    ln -sf ${waybar-config} /home/${username}/.config/waybar/config
-    ln -sf ${waybar-style} /home/${username}/.config/waybar/style.css
-    chown -R ${username}:users /home/${username}/.config/waybar
-  '';
-}
-
-
-
-
-
-

generated/system/core/login-tuigreeter.nix

-
-

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

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

generated/system/core/wayland.nix

-
-

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

-
-
{ config, pkgs, lib, user, ... }:
-{
-  home-manager.users.${user.username} = {
-    xdg.portal = {
-      enable = true;
-      extraPortals = with pkgs; [ xdg-desktop-portal-hyprland ];
-      config.hyprland = {
-        "org.freedesktop.impl.portal.Screencast" = [ "hyprland" ];
-      };
-    };
-  };
-}
-
-
-
-
-
-

generated/system/development/top.nix

-
-

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

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

generated/system/system_management/top.nix

-
-

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

-
-
{ config, pkgs, lib, user, inputs, flakeRoot,... }:
-{
-  imports = [
-    ./audio/top.nix
-    ./backups/top.nix
-    ./bluetooth/top.nix
-    ./disk_management/top.nix
-    ./hardware_sensors/top.nix
-    ./logging_monitoring/top.nix
-    ./login_manager/top.nix
-    ./monitor_setup/top.nix
-    ./networking/top.nix
-    ./power_management/top.nix
-    ./printers_scanners/top.nix
-    ./security/top.nix
-    ./system_updates/top.nix
-  ];
-  # .. put any code here
-}
-
-
-
-
-
-

generated/hyprland/animations_effects/top.nix

-
-

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

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

generated/hyprland/decorations/top.nix

-
-

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

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

generated/hyprland/keyboard_binds/top.nix

-
-

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

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

generated/hyprland/notifications/top.nix

-
-

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

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

generated/hyprland/statusbar_tray/top.nix

-
-

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

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

generated/hyprland/task_launcher/top.nix

-
-

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

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

generated/system/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 -

-
-
{
-  lib,
-  config,
-  pkgs,
-  flakeRoot,
-  user,
-  ...
-}:
-
-let
-  wofiConfigDir = "${config.home-manager.users.${user.username}.xdg.configHome}/wofi";
-  # Dynamically read all files in assets/hyprland/conf/wofi/
-  wofiConfs =
-    lib.genAttrs (builtins.attrNames (builtins.readDir "${flakeRoot}/assets/system/conf/wofi"))
-      (name: {
-        text = builtins.readFile "${flakeRoot}/assets/system/conf/wofi/${name}";
-      });
-in
-{
-  environment.systemPackages = with pkgs; [
-    wofi
-  ];
-
-  home-manager.users.${user.username} = {
-    home.file = {
-      # Map the files to their target paths in ~/.config/wofi/
-      "${wofiConfigDir}/config" = wofiConfs."wofi.conf"; # Use the actual filename
-      "${wofiConfigDir}/style.css" = wofiConfs."theming.css"; # Use the actual filename
-    };
-
-    home.sessionVariables = {
-      WOFI_CONFIG = "${wofiConfigDir}/config";
-      WOFI_STYLE = "${wofiConfigDir}/style.css";
-    };
-  };
-}
-
-
-
-
-
-

generated/hyprland/task_window_workspace_switcher/top.nix

-
-

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

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

generated/hyprland/window_rules/top.nix

-
-

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

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

generated/mangowc/animations_effects/top.nix

-
-

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

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

generated/mangowc/decorations/top.nix

-
-

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

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

generated/mangowc/keyboard_binds/top.nix

-
-

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

-
-
# Your code here...
-
-
-
-
-
-

generated/mangowc/notifications/top.nix

-
-

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

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

generated/mangowc/statusbar_tray/top.nix

-
-

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

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

generated/mangowc/task_launcher/top.nix

-
-

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

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

generated/mangowc/task_window_workspace_switcher/top.nix

-
-

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

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

generated/mangowc/window_rules/top.nix

-
-

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

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

generated/system/applications/accessibility/top.nix

-
-

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

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

generated/system/applications/file_management/top.nix

-
-

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

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

generated/system/applications/gaming/top.nix

-
-

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

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

generated/system/applications/media_playback_editing/top.nix

-
-

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

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

generated/system/applications/office_productivity/top.nix

-
-

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

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

generated/system/applications/terminal_shell/top.nix

-
-

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

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

generated/system/applications/terminal_shell/kitty.nix

-
-

-This file sets up Kitty terminal -

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

generated/system/applications/terminal_shell/starship.nix

-
-

-This file sets up starship prompt -

-
-
{
-  lib,
-  config,
-  pkgs,
-  flakeRoot,
-  ...
-}:
-let
-  starshipConfig = lib.importTOML (flakeRoot + "/assets/system/conf/starship.toml");
-in
-{
-  programs.starship = {
-    enable = true;
-    settings = starshipConfig;
-  };
-}
-
-
-
-
-
-

generated/system/applications/terminal_shell/zsh.nix

-
-

-This sets up the zsh terminal -

-
-
{
-  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;
-
-      # Enable oh-my-zsh and use its plugins
-      oh-my-zsh = {
-        enable = true;
-        plugins = [
-          "git"
-          "docker"
-          "direnv"
-          "zsh-autosuggestions"
-          "zsh-syntax-highlighting"
-          "zsh-completions"
-          "zsh-history-substring-search"
-        ];
-        theme = "agnoster"; # Fallback, overridden below
-      };
-
-      # Source Nixpkgs-provided plugins explicitly
-      initContent = ''
-        # Source plugins installed by Nix
-        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
-
-        # Catppuccin Mocha theme for oh-my-zsh
-        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%}'
-
-        # Set the custom theme
-        ZSH_THEME="catppuccin-mocha"
-      '';
-    };
-
-    # Home Manager packages (optional)
-    home.packages = with pkgs; [
-      direnv
-      git-extras
-    ];
-  };
-}
-
-
-
-
-
-
-

generated/system/development/databases/top.nix

-
-

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

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

generated/system/development/devops_ci_cd/top.nix

-
-

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

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

generated/system/development/programming_languages/top.nix

-
-

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

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

generated/system/development/virtualization/top.nix

-
-

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

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

generated/system/development/web_development/top.nix

-
-

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

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

generated/system/system_management/audio/top.nix

-
-

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

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

generated/system/system_management/backups/top.nix

-
-

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

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

generated/system/system_management/bluetooth/top.nix

-
-

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

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

generated/system/system_management/disk_management/top.nix

-
-

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

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

generated/system/system_management/hardware_sensors/top.nix

-
-

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

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

generated/system/system_management/logging_monitoring/top.nix

-
-

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

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

generated/system/system_management/login_manager/top.nix

-
-

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

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

generated/system/system_management/monitor_setup/top.nix

-
-

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

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

generated/system/system_management/networking/top.nix

-
-

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

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

generated/system/system_management/power_management/top.nix

-
-

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

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

generated/system/system_management/printers_scanners/top.nix

-
-

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

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

generated/system/system_management/security/top.nix

-
-

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

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

generated/system/system_management/system_updates/top.nix

-
-

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

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

Author: Henro Veijer

-

Created: 2026-03-14 za 12:29

-

Validate

-
- - diff --git a/Droidnix/README.org b/Droidnix/README.org index 7ea5059c3..bb90a4d53 100644 --- a/Droidnix/README.org +++ b/Droidnix/README.org @@ -905,12 +905,11 @@ This is top file of this level which contains just an import statement for all r #./login-lightdm.nix ./gtk.nix ]; - # .. put any code here } #+END_SRC ** =generated/system/core/fonts.nix= -This file installs and configures eww +This file installs and configures fonts #+BEGIN_SRC nix :tangle generated/system/core/fonts.nix :noweb tangle :mkdirp yes :eval never-html { config, pkgs, ... }: { @@ -951,11 +950,6 @@ in exec-once = [ "eww daemon" ]; exec = [ "eww open-many ${ewwConfigDir}/widgets" ]; # Adjust as needed }; - # For MangoWC, use: - # wayland.windowManager.mangowc.config = { - # exec = [ "eww daemon" ]; - # exec-once = [ "eww open-many ${ewwConfigDir}/widgets" ]; - # }; }; } #+END_SRC diff --git a/Droidnix/iwlwifi-QuZ-a0-hr-b0-77.ucode b/Droidnix/assets/system/firmware/iwlwifi-QuZ-a0-hr-b0-77.ucode similarity index 100% rename from Droidnix/iwlwifi-QuZ-a0-hr-b0-77.ucode rename to Droidnix/assets/system/firmware/iwlwifi-QuZ-a0-hr-b0-77.ucode diff --git a/Droidnix/generated/hyprland/hyprland.nix b/Droidnix/generated/hyprland/hyprland.nix index dc903d116..f4740b01f 100644 --- a/Droidnix/generated/hyprland/hyprland.nix +++ b/Droidnix/generated/hyprland/hyprland.nix @@ -9,6 +9,8 @@ let hyprlandFiles = builtins.attrNames (builtins.readDir "${flakeRoot}/assets/hyprland/conf/hypr"); + # Filter out hyprland.conf from the list of files to copy directly + otherHyprlandFiles = lib.filter (name: name != "hyprland.conf") hyprlandFiles; in { programs.hyprland = { @@ -25,12 +27,18 @@ in enable = true; }; - # Create all files using home.file - home.file = lib.genAttrs hyprlandFiles (name: { + # Copy all files except hyprland.conf + home.file = lib.genAttrs otherHyprlandFiles (name: { target = "/.config/hypr/${name}"; source = "${flakeRoot}/assets/hyprland/conf/hypr/${name}"; }); + # Append the base config to hyprland.conf, preserving manual changes + xdg.configFile."hypr/hyprland.conf".text = '' + ${builtins.readFile "${flakeRoot}/assets/hyprland/conf/hypr/hyprland.conf"} + # Your manual settings will go below this line and will not be overwritten + ''; + # Create the directory structure xdg.configFile = { "hypr/.keep" = { diff --git a/Droidnix/generated/system/core/eww.nix b/Droidnix/generated/system/core/eww.nix index cb436fbb0..2e645b262 100644 --- a/Droidnix/generated/system/core/eww.nix +++ b/Droidnix/generated/system/core/eww.nix @@ -26,10 +26,5 @@ in exec-once = [ "eww daemon" ]; exec = [ "eww open-many ${ewwConfigDir}/widgets" ]; # Adjust as needed }; - # For MangoWC, use: - # wayland.windowManager.mangowc.config = { - # exec = [ "eww daemon" ]; - # exec-once = [ "eww open-many ${ewwConfigDir}/widgets" ]; - # }; }; } diff --git a/Droidnix/generated/system/core/top.nix b/Droidnix/generated/system/core/top.nix index 4507cab74..ab389da31 100644 --- a/Droidnix/generated/system/core/top.nix +++ b/Droidnix/generated/system/core/top.nix @@ -8,5 +8,4 @@ #./login-lightdm.nix ./gtk.nix ]; - # .. put any code here }