This commit is contained in:
Peritia 2025-08-29 12:29:00 +02:00
commit 2278bffff9
77 changed files with 1174 additions and 0 deletions

View file

@ -0,0 +1,20 @@
{ config, lib, pkgs, ... }:
let
cfg = config.nyx-module.system.bluetooth;
in
{
options.nyx-module.system.bluetooth = {
enable = lib.mkEnableOption "Enable bluetooth (system) module";
package = lib.mkOption {
type = lib.types.package;
default = pkgs.bluetooth;
description = "Package to install for bluetooth.";
};
};
config = lib.mkIf cfg.enable {
environment.systemPackages = [ cfg.package ];
};
}

View file

@ -0,0 +1,7 @@
{ config, lib, pkgs, ... }:
{
imports = [
./bluetooth.nix
];
}

View file

@ -0,0 +1,20 @@
{ config, lib, pkgs, ... }:
let
cfg = config.nyx-module.system.Custom-Kernel;
in
{
options.nyx-module.system.Custom-Kernel = {
enable = lib.mkEnableOption "Enable Custom-Kernel (system) module";
package = lib.mkOption {
type = lib.types.package;
default = pkgs.Custom-Kernel;
description = "Package to install for Custom-Kernel.";
};
};
config = lib.mkIf cfg.enable {
environment.systemPackages = [ cfg.package ];
};
}

View file

@ -0,0 +1,7 @@
{ config, lib, pkgs, ... }:
{
imports = [
./Custom-Kernel.nix
];
}

View file

@ -0,0 +1,8 @@
{ config, lib, pkgs, ... }:
{
imports = [
./Bluetooth
./Surface
];
}

View file

@ -0,0 +1,20 @@
{ config, lib, pkgs, ... }:
let
cfg = config.nyx-module.home.brave;
in
{
options.nyx-module.home.brave = {
enable = lib.mkEnableOption "Enable brave (home) module";
package = lib.mkOption {
type = lib.types.package;
default = pkgs.brave;
description = "Package to install for brave.";
};
};
config = lib.mkIf cfg.enable {
home.packages = [ cfg.package ];
};
}

View file

@ -0,0 +1,7 @@
{ config, lib, pkgs, ... }:
{
imports = [
./brave.nix
];
}

View file

@ -0,0 +1,8 @@
{ config, lib, pkgs, ... }:
{
imports = [
./signal-desktop.nix
./vesktop.nix
];
}

View file

@ -0,0 +1,20 @@
{ config, lib, pkgs, ... }:
let
cfg = config.nyx-module.home.signal-desktop;
in
{
options.nyx-module.home.signal-desktop = {
enable = lib.mkEnableOption "Enable signal-desktop (home) module";
package = lib.mkOption {
type = lib.types.package;
default = pkgs.signal-desktop;
description = "Package to install for signal-desktop.";
};
};
config = lib.mkIf cfg.enable {
home.packages = [ cfg.package ];
};
}

View file

@ -0,0 +1,20 @@
{ config, lib, pkgs, ... }:
let
cfg = config.nyx-module.home.vesktop;
in
{
options.nyx-module.home.vesktop = {
enable = lib.mkEnableOption "Enable vesktop (home) module";
package = lib.mkOption {
type = lib.types.package;
default = pkgs.vesktop;
description = "Package to install for vesktop.";
};
};
config = lib.mkIf cfg.enable {
home.packages = [ cfg.package ];
};
}

View file

@ -0,0 +1,7 @@
{ config, lib, pkgs, ... }:
{
imports = [
./rustdesk.nix
];
}

View file

@ -0,0 +1,20 @@
{ config, lib, pkgs, ... }:
let
cfg = config.nyx-module.home.rustdesk;
in
{
options.nyx-module.home.rustdesk = {
enable = lib.mkEnableOption "Enable rustdesk (home) module";
package = lib.mkOption {
type = lib.types.package;
default = pkgs.rustdesk;
description = "Package to install for rustdesk.";
};
};
config = lib.mkIf cfg.enable {
home.packages = [ cfg.package ];
};
}

View file

@ -0,0 +1,8 @@
{ config, lib, pkgs, ... }:
{
imports = [
./Messaging
./Remote
];
}

View file

@ -0,0 +1,7 @@
{ config, lib, pkgs, ... }:
{
imports = [
./vscodium.nix
];
}

View file

@ -0,0 +1,20 @@
{ config, lib, pkgs, ... }:
let
cfg = config.nyx-module.home.vscodium;
in
{
options.nyx-module.home.vscodium = {
enable = lib.mkEnableOption "Enable vscodium (home) module";
package = lib.mkOption {
type = lib.types.package;
default = pkgs.vscodium;
description = "Package to install for vscodium.";
};
};
config = lib.mkIf cfg.enable {
home.packages = [ cfg.package ];
};
}

View file

@ -0,0 +1,20 @@
{ config, lib, pkgs, ... }:
let
cfg = config.nyx-module.home.classic-game-collection;
in
{
options.nyx-module.home.classic-game-collection = {
enable = lib.mkEnableOption "Enable classic-game-collection (home) module";
package = lib.mkOption {
type = lib.types.package;
default = pkgs.classic-game-collection;
description = "Package to install for classic-game-collection.";
};
};
config = lib.mkIf cfg.enable {
home.packages = [ cfg.package ];
};
}

View file

@ -0,0 +1,8 @@
{ config, lib, pkgs, ... }:
{
imports = [
./classic-game-collection.nix
./prismlauncher.nix
];
}

View file

@ -0,0 +1,20 @@
{ config, lib, pkgs, ... }:
let
cfg = config.nyx-module.home.prismlauncher;
in
{
options.nyx-module.home.prismlauncher = {
enable = lib.mkEnableOption "Enable prismlauncher (home) module";
package = lib.mkOption {
type = lib.types.package;
default = pkgs.prismlauncher;
description = "Package to install for prismlauncher.";
};
};
config = lib.mkIf cfg.enable {
home.packages = [ cfg.package ];
};
}

View file

@ -0,0 +1,7 @@
{ config, lib, pkgs, ... }:
{
imports = [
./spotify.nix
];
}

View file

@ -0,0 +1,20 @@
{ config, lib, pkgs, ... }:
let
cfg = config.nyx-module.home.spotify;
in
{
options.nyx-module.home.spotify = {
enable = lib.mkEnableOption "Enable spotify (home) module";
package = lib.mkOption {
type = lib.types.package;
default = pkgs.spotify;
description = "Package to install for spotify.";
};
};
config = lib.mkIf cfg.enable {
home.packages = [ cfg.package ];
};
}

View file

@ -0,0 +1,20 @@
{ config, lib, pkgs, ... }:
let
cfg = config.nyx-module.home.camera;
in
{
options.nyx-module.home.camera = {
enable = lib.mkEnableOption "Enable camera (home) module";
package = lib.mkOption {
type = lib.types.package;
default = pkgs.camera;
description = "Package to install for camera.";
};
};
config = lib.mkIf cfg.enable {
home.packages = [ cfg.package ];
};
}

View file

@ -0,0 +1,7 @@
{ config, lib, pkgs, ... }:
{
imports = [
./camera.nix
];
}

View file

@ -0,0 +1,7 @@
{ config, lib, pkgs, ... }:
{
imports = [
./krita.nix
];
}

View file

@ -0,0 +1,20 @@
{ config, lib, pkgs, ... }:
let
cfg = config.nyx-module.home.krita;
in
{
options.nyx-module.home.krita = {
enable = lib.mkEnableOption "Enable krita (home) module";
package = lib.mkOption {
type = lib.types.package;
default = pkgs.krita;
description = "Package to install for krita.";
};
};
config = lib.mkIf cfg.enable {
home.packages = [ cfg.package ];
};
}

View file

@ -0,0 +1,8 @@
{ config, lib, pkgs, ... }:
{
imports = [
./kdenlive.nix
./zoom.nix
];
}

View file

@ -0,0 +1,20 @@
{ config, lib, pkgs, ... }:
let
cfg = config.nyx-module.home.kdenlive;
in
{
options.nyx-module.home.kdenlive = {
enable = lib.mkEnableOption "Enable kdenlive (home) module";
package = lib.mkOption {
type = lib.types.package;
default = pkgs.kdenlive;
description = "Package to install for kdenlive.";
};
};
config = lib.mkIf cfg.enable {
home.packages = [ cfg.package ];
};
}

View file

@ -0,0 +1,20 @@
{ config, lib, pkgs, ... }:
let
cfg = config.nyx-module.home.zoom;
in
{
options.nyx-module.home.zoom = {
enable = lib.mkEnableOption "Enable zoom (home) module";
package = lib.mkOption {
type = lib.types.package;
default = pkgs.zoom;
description = "Package to install for zoom.";
};
};
config = lib.mkIf cfg.enable {
home.packages = [ cfg.package ];
};
}

View file

@ -0,0 +1,10 @@
{ config, lib, pkgs, ... }:
{
imports = [
./Audio
./Capture
./Graphics
./Video
];
}

View file

@ -0,0 +1,7 @@
{ config, lib, pkgs, ... }:
{
imports = [
./obsidian.nix
];
}

View file

@ -0,0 +1,20 @@
{ config, lib, pkgs, ... }:
let
cfg = config.nyx-module.home.obsidian;
in
{
options.nyx-module.home.obsidian = {
enable = lib.mkEnableOption "Enable obsidian (home) module";
package = lib.mkOption {
type = lib.types.package;
default = pkgs.obsidian;
description = "Package to install for obsidian.";
};
};
config = lib.mkIf cfg.enable {
home.packages = [ cfg.package ];
};
}

View file

@ -0,0 +1,8 @@
{ config, lib, pkgs, ... }:
{
imports = [
./office-apps.nix
./printer-scan.nix
];
}

View file

@ -0,0 +1,20 @@
{ config, lib, pkgs, ... }:
let
cfg = config.nyx-module.home.office-apps;
in
{
options.nyx-module.home.office-apps = {
enable = lib.mkEnableOption "Enable office-apps (home) module";
package = lib.mkOption {
type = lib.types.package;
default = pkgs.office-apps;
description = "Package to install for office-apps.";
};
};
config = lib.mkIf cfg.enable {
home.packages = [ cfg.package ];
};
}

View file

@ -0,0 +1,20 @@
{ config, lib, pkgs, ... }:
let
cfg = config.nyx-module.home.printer-scan;
in
{
options.nyx-module.home.printer-scan = {
enable = lib.mkEnableOption "Enable printer-scan (home) module";
package = lib.mkOption {
type = lib.types.package;
default = pkgs.printer-scan;
description = "Package to install for printer-scan.";
};
};
config = lib.mkIf cfg.enable {
home.packages = [ cfg.package ];
};
}

View file

@ -0,0 +1,8 @@
{ config, lib, pkgs, ... }:
{
imports = [
./Knowledge
./Productivity
];
}

View file

@ -0,0 +1,7 @@
{ config, lib, pkgs, ... }:
{
imports = [
./standard-apps.nix
];
}

View file

@ -0,0 +1,20 @@
{ config, lib, pkgs, ... }:
let
cfg = config.nyx-module.home.standard-apps;
in
{
options.nyx-module.home.standard-apps = {
enable = lib.mkEnableOption "Enable standard-apps (home) module";
package = lib.mkOption {
type = lib.types.package;
default = pkgs.standard-apps;
description = "Package to install for standard-apps.";
};
};
config = lib.mkIf cfg.enable {
home.packages = [ cfg.package ];
};
}

View file

@ -0,0 +1,7 @@
{ config, lib, pkgs, ... }:
{
imports = [
./protonvpn.nix
];
}

View file

@ -0,0 +1,20 @@
{ config, lib, pkgs, ... }:
let
cfg = config.nyx-module.home.protonvpn;
in
{
options.nyx-module.home.protonvpn = {
enable = lib.mkEnableOption "Enable protonvpn (home) module";
package = lib.mkOption {
type = lib.types.package;
default = pkgs.protonvpn;
description = "Package to install for protonvpn.";
};
};
config = lib.mkIf cfg.enable {
home.packages = [ cfg.package ];
};
}

View file

@ -0,0 +1,14 @@
{ config, lib, pkgs, ... }:
{
imports = [
./Browsers
./Communication
./Development
./Gaming
./Multimedia
./Office
./System-Tools
./VPN
];
}

View file

@ -0,0 +1,7 @@
{ config, lib, pkgs, ... }:
{
imports = [
./tools.nix
];
}

View file

@ -0,0 +1,20 @@
{ config, lib, pkgs, ... }:
let
cfg = config.nyx-module.home.tools;
in
{
options.nyx-module.home.tools = {
enable = lib.mkEnableOption "Enable tools (home) module";
package = lib.mkOption {
type = lib.types.package;
default = pkgs.tools;
description = "Package to install for tools.";
};
};
config = lib.mkIf cfg.enable {
home.packages = [ cfg.package ];
};
}

View file

@ -0,0 +1,8 @@
{ config, lib, pkgs, ... }:
{
imports = [
./cli-tools
./zsh
];
}

View file

@ -0,0 +1,7 @@
{ config, lib, pkgs, ... }:
{
imports = [
./zsh.nix
];
}

View file

@ -0,0 +1,20 @@
{ config, lib, pkgs, ... }:
let
cfg = config.nyx-module.home.zsh;
in
{
options.nyx-module.home.zsh = {
enable = lib.mkEnableOption "Enable zsh (home) module";
package = lib.mkOption {
type = lib.types.package;
default = pkgs.zsh;
description = "Package to install for zsh.";
};
};
config = lib.mkIf cfg.enable {
home.packages = [ cfg.package ];
};
}

View file

@ -0,0 +1,8 @@
{ config, lib, pkgs, ... }:
{
imports = [
./private-webapps.nix
./work-webapps.nix
];
}

View file

@ -0,0 +1,20 @@
{ config, lib, pkgs, ... }:
let
cfg = config.nyx-module.home.private-webapps;
in
{
options.nyx-module.home.private-webapps = {
enable = lib.mkEnableOption "Enable private-webapps (home) module";
package = lib.mkOption {
type = lib.types.package;
default = pkgs.private-webapps;
description = "Package to install for private-webapps.";
};
};
config = lib.mkIf cfg.enable {
home.packages = [ cfg.package ];
};
}

View file

@ -0,0 +1,20 @@
{ config, lib, pkgs, ... }:
let
cfg = config.nyx-module.home.work-webapps;
in
{
options.nyx-module.home.work-webapps = {
enable = lib.mkEnableOption "Enable work-webapps (home) module";
package = lib.mkOption {
type = lib.types.package;
default = pkgs.work-webapps;
description = "Package to install for work-webapps.";
};
};
config = lib.mkIf cfg.enable {
home.packages = [ cfg.package ];
};
}

9
Modules/Home/default.nix Normal file
View file

@ -0,0 +1,9 @@
{ config, lib, pkgs, ... }:
{
imports = [
./GUI-Apps
./Shell
./Webapps
];
}

View file

@ -0,0 +1,7 @@
{ config, lib, pkgs, ... }:
{
imports = [
./steam.nix
];
}

View file

@ -0,0 +1,20 @@
{ config, lib, pkgs, ... }:
let
cfg = config.nyx-module.system.steam;
in
{
options.nyx-module.system.steam = {
enable = lib.mkEnableOption "Enable steam (system) module";
package = lib.mkOption {
type = lib.types.package;
default = pkgs.steam;
description = "Package to install for steam.";
};
};
config = lib.mkIf cfg.enable {
environment.systemPackages = [ cfg.package ];
};
}

View file

@ -0,0 +1,7 @@
{ config, lib, pkgs, ... }:
{
imports = [
./Steam
];
}

View file

@ -0,0 +1,20 @@
{ config, lib, pkgs, ... }:
let
cfg = config.nyx-module.system.all-grub;
in
{
options.nyx-module.system.all-grub = {
enable = lib.mkEnableOption "Enable all-grub (system) module";
package = lib.mkOption {
type = lib.types.package;
default = pkgs.all-grub;
description = "Package to install for all-grub.";
};
};
config = lib.mkIf cfg.enable {
environment.systemPackages = [ cfg.package ];
};
}

View file

@ -0,0 +1,8 @@
{ config, lib, pkgs, ... }:
{
imports = [
./all-grub.nix
./minegrub.nix
];
}

View file

@ -0,0 +1,20 @@
{ config, lib, pkgs, ... }:
let
cfg = config.nyx-module.system.minegrub;
in
{
options.nyx-module.system.minegrub = {
enable = lib.mkEnableOption "Enable minegrub (system) module";
package = lib.mkOption {
type = lib.types.package;
default = pkgs.minegrub;
description = "Package to install for minegrub.";
};
};
config = lib.mkIf cfg.enable {
environment.systemPackages = [ cfg.package ];
};
}

View file

@ -0,0 +1,8 @@
{ config, lib, pkgs, ... }:
{
imports = [
./flatpak.nix
./wireshark.nix
];
}

View file

@ -0,0 +1,20 @@
{ config, lib, pkgs, ... }:
let
cfg = config.nyx-module.system.flatpak;
in
{
options.nyx-module.system.flatpak = {
enable = lib.mkEnableOption "Enable flatpak (system) module";
package = lib.mkOption {
type = lib.types.package;
default = pkgs.flatpak;
description = "Package to install for flatpak.";
};
};
config = lib.mkIf cfg.enable {
environment.systemPackages = [ cfg.package ];
};
}

View file

@ -0,0 +1,20 @@
{ config, lib, pkgs, ... }:
let
cfg = config.nyx-module.system.wireshark;
in
{
options.nyx-module.system.wireshark = {
enable = lib.mkEnableOption "Enable wireshark (system) module";
package = lib.mkOption {
type = lib.types.package;
default = pkgs.wireshark;
description = "Package to install for wireshark.";
};
};
config = lib.mkIf cfg.enable {
environment.systemPackages = [ cfg.package ];
};
}

View file

@ -0,0 +1,10 @@
{ config, lib, pkgs, ... }:
{
imports = [
./docker.nix
./openssh.nix
./vm.nix
./zsh.nix
];
}

View file

@ -0,0 +1,20 @@
{ config, lib, pkgs, ... }:
let
cfg = config.nyx-module.system.docker;
in
{
options.nyx-module.system.docker = {
enable = lib.mkEnableOption "Enable docker (system) module";
package = lib.mkOption {
type = lib.types.package;
default = pkgs.docker;
description = "Package to install for docker.";
};
};
config = lib.mkIf cfg.enable {
environment.systemPackages = [ cfg.package ];
};
}

View file

@ -0,0 +1,20 @@
{ config, lib, pkgs, ... }:
let
cfg = config.nyx-module.system.openssh;
in
{
options.nyx-module.system.openssh = {
enable = lib.mkEnableOption "Enable openssh (system) module";
package = lib.mkOption {
type = lib.types.package;
default = pkgs.openssh;
description = "Package to install for openssh.";
};
};
config = lib.mkIf cfg.enable {
environment.systemPackages = [ cfg.package ];
};
}

View file

@ -0,0 +1,20 @@
{ config, lib, pkgs, ... }:
let
cfg = config.nyx-module.system.vm;
in
{
options.nyx-module.system.vm = {
enable = lib.mkEnableOption "Enable vm (system) module";
package = lib.mkOption {
type = lib.types.package;
default = pkgs.vm;
description = "Package to install for vm.";
};
};
config = lib.mkIf cfg.enable {
environment.systemPackages = [ cfg.package ];
};
}

View file

@ -0,0 +1,20 @@
{ config, lib, pkgs, ... }:
let
cfg = config.nyx-module.system.zsh;
in
{
options.nyx-module.system.zsh = {
enable = lib.mkEnableOption "Enable zsh (system) module";
package = lib.mkOption {
type = lib.types.package;
default = pkgs.zsh;
description = "Package to install for zsh.";
};
};
config = lib.mkIf cfg.enable {
environment.systemPackages = [ cfg.package ];
};
}

View file

@ -0,0 +1,10 @@
{ config, lib, pkgs, ... }:
{
imports = [
./cli
./Gaming
./Grub
./Special-Applications
];
}

View file

@ -0,0 +1,7 @@
{ config, lib, pkgs, ... }:
{
imports = [
./kde.nix
];
}

View file

@ -0,0 +1,20 @@
{ config, lib, pkgs, ... }:
let
cfg = config.nyx-module.system.kde;
in
{
options.nyx-module.system.kde = {
enable = lib.mkEnableOption "Enable kde (system) module";
package = lib.mkOption {
type = lib.types.package;
default = pkgs.kde;
description = "Package to install for kde.";
};
};
config = lib.mkIf cfg.enable {
environment.systemPackages = [ cfg.package ];
};
}

View file

@ -0,0 +1,7 @@
{ config, lib, pkgs, ... }:
{
imports = [
./KDE
];
}

View file

@ -0,0 +1,20 @@
{ config, lib, pkgs, ... }:
let
cfg = config.nyx-module.system.c-compiler;
in
{
options.nyx-module.system.c-compiler = {
enable = lib.mkEnableOption "Enable c-compiler (system) module";
package = lib.mkOption {
type = lib.types.package;
default = pkgs.c-compiler;
description = "Package to install for c-compiler.";
};
};
config = lib.mkIf cfg.enable {
environment.systemPackages = [ cfg.package ];
};
}

View file

@ -0,0 +1,11 @@
{ config, lib, pkgs, ... }:
{
imports = [
./c-compiler.nix
./go.nix
./lua.nix
./python.nix
./rust.nix
];
}

View file

@ -0,0 +1,20 @@
{ config, lib, pkgs, ... }:
let
cfg = config.nyx-module.system.go;
in
{
options.nyx-module.system.go = {
enable = lib.mkEnableOption "Enable go (system) module";
package = lib.mkOption {
type = lib.types.package;
default = pkgs.go;
description = "Package to install for go.";
};
};
config = lib.mkIf cfg.enable {
environment.systemPackages = [ cfg.package ];
};
}

View file

@ -0,0 +1,20 @@
{ config, lib, pkgs, ... }:
let
cfg = config.nyx-module.system.lua;
in
{
options.nyx-module.system.lua = {
enable = lib.mkEnableOption "Enable lua (system) module";
package = lib.mkOption {
type = lib.types.package;
default = pkgs.lua;
description = "Package to install for lua.";
};
};
config = lib.mkIf cfg.enable {
environment.systemPackages = [ cfg.package ];
};
}

View file

@ -0,0 +1,20 @@
{ config, lib, pkgs, ... }:
let
cfg = config.nyx-module.system.python;
in
{
options.nyx-module.system.python = {
enable = lib.mkEnableOption "Enable python (system) module";
package = lib.mkOption {
type = lib.types.package;
default = pkgs.python;
description = "Package to install for python.";
};
};
config = lib.mkIf cfg.enable {
environment.systemPackages = [ cfg.package ];
};
}

View file

@ -0,0 +1,20 @@
{ config, lib, pkgs, ... }:
let
cfg = config.nyx-module.system.rust;
in
{
options.nyx-module.system.rust = {
enable = lib.mkEnableOption "Enable rust (system) module";
package = lib.mkOption {
type = lib.types.package;
default = pkgs.rust;
description = "Package to install for rust.";
};
};
config = lib.mkIf cfg.enable {
environment.systemPackages = [ cfg.package ];
};
}

View file

@ -0,0 +1,9 @@
{ config, lib, pkgs, ... }:
{
imports = [
./Application
./Desktops
./Programming-Tools
];
}

9
Modules/default.nix Normal file
View file

@ -0,0 +1,9 @@
{ config, lib, pkgs, ... }:
{
imports = [
./Hardware
./Home
./System
];
}

108
autogen-modules.sh Executable file
View file

@ -0,0 +1,108 @@
#!/usr/bin/env bash
set -euo pipefail
ROOT="${1:-Modules}" # pass root dir, defaults to Modules
# Generate module boilerplate for each .nix (excluding default.nix)
gen_module_boilerplate() {
local file="$1"
local module
module="$(basename "$file" .nix)"
local ns target
if [[ "$file" == *"/Home/"* ]]; then
ns="home"
target="home.packages"
else
ns="system"
target="environment.systemPackages"
fi
cat > "$file" <<EOF
{ config, lib, pkgs, ... }:
let
cfg = config.nyx-module.${ns}.${module};
in
{
options.nyx-module.${ns}.${module} = {
enable = lib.mkEnableOption "Enable ${module} (${ns}) module";
package = lib.mkOption {
type = lib.types.package;
default = pkgs.${module};
description = "Package to install for ${module}.";
};
};
config = lib.mkIf cfg.enable {
${target} = [ cfg.package ];
};
}
EOF
echo "Wrote boilerplate for $file"
}
gen_default_for_dir() {
local dir="$1"
local file="${dir}/default.nix"
# collect non-default nix files in this directory
local local_modules=()
for f in "$dir"/*.nix; do
[[ -f "$f" && "$(basename "$f")" != "default.nix" ]] && local_modules+=("./$(basename "$f")")
done
# if there are non-default nix files, import them
if (( ${#local_modules[@]} > 0 )); then
{
echo "{ config, lib, pkgs, ... }:"
echo
echo "{"
echo " imports = ["
for m in "${local_modules[@]}"; do
echo " $m"
done
echo " ];"
echo "}"
} > "$file"
# otherwise, import all subdirs (not their default.nix directly)
else
local subdirs=()
for sub in "$dir"/*/; do
[[ -d "$sub" && -f "$sub/default.nix" ]] && subdirs+=("./$(basename "$sub")")
done
{
echo "{ config, lib, pkgs, ... }:"
echo
echo "{"
echo " imports = ["
for s in "${subdirs[@]}"; do
echo " $s"
done
echo " ];"
echo "}"
} > "$file"
fi
echo "Wrote default.nix in $dir"
}
# Walk the tree
echo "Generating nix module boilerplates under $ROOT ..."
# 1. Generate boilerplate for all non-default modules
find "$ROOT" -type f -name "*.nix" ! -name "default.nix" | while read -r f; do
gen_module_boilerplate "$f"
done
# 2. Generate default.nix in every directory
find "$ROOT" -type d | while read -r d; do
gen_default_for_dir "$d"
done
echo "Done! All modules + defaults generated."

17
flake.nix Normal file
View file

@ -0,0 +1,17 @@
{
description = "Nyx-Modules";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
home-manager = {
url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs = { self, nixpkgs, home-manager,... }: {
nixosModules.default = import ./Modules { inherit home-manager; };
};
}