commit 2278bffff9b9ee4fa7d6308efdad5fcffbd28dbf Author: Peritia Date: Fri Aug 29 12:29:00 2025 +0200 init diff --git a/Modules/Hardware/Bluetooth/bluetooth.nix b/Modules/Hardware/Bluetooth/bluetooth.nix new file mode 100644 index 0000000..0fe0686 --- /dev/null +++ b/Modules/Hardware/Bluetooth/bluetooth.nix @@ -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 ]; + }; +} diff --git a/Modules/Hardware/Bluetooth/default.nix b/Modules/Hardware/Bluetooth/default.nix new file mode 100644 index 0000000..18489a5 --- /dev/null +++ b/Modules/Hardware/Bluetooth/default.nix @@ -0,0 +1,7 @@ +{ config, lib, pkgs, ... }: + +{ + imports = [ + ./bluetooth.nix + ]; +} diff --git a/Modules/Hardware/Surface/Custom-Kernel.nix b/Modules/Hardware/Surface/Custom-Kernel.nix new file mode 100644 index 0000000..8b2dc3c --- /dev/null +++ b/Modules/Hardware/Surface/Custom-Kernel.nix @@ -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 ]; + }; +} diff --git a/Modules/Hardware/Surface/default.nix b/Modules/Hardware/Surface/default.nix new file mode 100644 index 0000000..aca0494 --- /dev/null +++ b/Modules/Hardware/Surface/default.nix @@ -0,0 +1,7 @@ +{ config, lib, pkgs, ... }: + +{ + imports = [ + ./Custom-Kernel.nix + ]; +} diff --git a/Modules/Hardware/Surface/thermal-conf.xml b/Modules/Hardware/Surface/thermal-conf.xml new file mode 100644 index 0000000..e69de29 diff --git a/Modules/Hardware/default.nix b/Modules/Hardware/default.nix new file mode 100644 index 0000000..fc5a5b6 --- /dev/null +++ b/Modules/Hardware/default.nix @@ -0,0 +1,8 @@ +{ config, lib, pkgs, ... }: + +{ + imports = [ + ./Bluetooth + ./Surface + ]; +} diff --git a/Modules/Home/GUI-Apps/Browsers/brave.nix b/Modules/Home/GUI-Apps/Browsers/brave.nix new file mode 100644 index 0000000..31fea48 --- /dev/null +++ b/Modules/Home/GUI-Apps/Browsers/brave.nix @@ -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 ]; + }; +} diff --git a/Modules/Home/GUI-Apps/Browsers/default.nix b/Modules/Home/GUI-Apps/Browsers/default.nix new file mode 100644 index 0000000..10e340e --- /dev/null +++ b/Modules/Home/GUI-Apps/Browsers/default.nix @@ -0,0 +1,7 @@ +{ config, lib, pkgs, ... }: + +{ + imports = [ + ./brave.nix + ]; +} diff --git a/Modules/Home/GUI-Apps/Communication/Messaging/default.nix b/Modules/Home/GUI-Apps/Communication/Messaging/default.nix new file mode 100644 index 0000000..4a7ea6b --- /dev/null +++ b/Modules/Home/GUI-Apps/Communication/Messaging/default.nix @@ -0,0 +1,8 @@ +{ config, lib, pkgs, ... }: + +{ + imports = [ + ./signal-desktop.nix + ./vesktop.nix + ]; +} diff --git a/Modules/Home/GUI-Apps/Communication/Messaging/signal-desktop.nix b/Modules/Home/GUI-Apps/Communication/Messaging/signal-desktop.nix new file mode 100644 index 0000000..3cf875a --- /dev/null +++ b/Modules/Home/GUI-Apps/Communication/Messaging/signal-desktop.nix @@ -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 ]; + }; +} diff --git a/Modules/Home/GUI-Apps/Communication/Messaging/vesktop.nix b/Modules/Home/GUI-Apps/Communication/Messaging/vesktop.nix new file mode 100644 index 0000000..bcb68d8 --- /dev/null +++ b/Modules/Home/GUI-Apps/Communication/Messaging/vesktop.nix @@ -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 ]; + }; +} diff --git a/Modules/Home/GUI-Apps/Communication/Remote/default.nix b/Modules/Home/GUI-Apps/Communication/Remote/default.nix new file mode 100644 index 0000000..d431b76 --- /dev/null +++ b/Modules/Home/GUI-Apps/Communication/Remote/default.nix @@ -0,0 +1,7 @@ +{ config, lib, pkgs, ... }: + +{ + imports = [ + ./rustdesk.nix + ]; +} diff --git a/Modules/Home/GUI-Apps/Communication/Remote/rustdesk.nix b/Modules/Home/GUI-Apps/Communication/Remote/rustdesk.nix new file mode 100644 index 0000000..634662c --- /dev/null +++ b/Modules/Home/GUI-Apps/Communication/Remote/rustdesk.nix @@ -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 ]; + }; +} diff --git a/Modules/Home/GUI-Apps/Communication/default.nix b/Modules/Home/GUI-Apps/Communication/default.nix new file mode 100644 index 0000000..898975b --- /dev/null +++ b/Modules/Home/GUI-Apps/Communication/default.nix @@ -0,0 +1,8 @@ +{ config, lib, pkgs, ... }: + +{ + imports = [ + ./Messaging + ./Remote + ]; +} diff --git a/Modules/Home/GUI-Apps/Development/default.nix b/Modules/Home/GUI-Apps/Development/default.nix new file mode 100644 index 0000000..eaa8ce3 --- /dev/null +++ b/Modules/Home/GUI-Apps/Development/default.nix @@ -0,0 +1,7 @@ +{ config, lib, pkgs, ... }: + +{ + imports = [ + ./vscodium.nix + ]; +} diff --git a/Modules/Home/GUI-Apps/Development/vscodium.nix b/Modules/Home/GUI-Apps/Development/vscodium.nix new file mode 100644 index 0000000..b0db61e --- /dev/null +++ b/Modules/Home/GUI-Apps/Development/vscodium.nix @@ -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 ]; + }; +} diff --git a/Modules/Home/GUI-Apps/Gaming/classic-game-collection.nix b/Modules/Home/GUI-Apps/Gaming/classic-game-collection.nix new file mode 100644 index 0000000..69f63e0 --- /dev/null +++ b/Modules/Home/GUI-Apps/Gaming/classic-game-collection.nix @@ -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 ]; + }; +} diff --git a/Modules/Home/GUI-Apps/Gaming/default.nix b/Modules/Home/GUI-Apps/Gaming/default.nix new file mode 100644 index 0000000..7b13130 --- /dev/null +++ b/Modules/Home/GUI-Apps/Gaming/default.nix @@ -0,0 +1,8 @@ +{ config, lib, pkgs, ... }: + +{ + imports = [ + ./classic-game-collection.nix + ./prismlauncher.nix + ]; +} diff --git a/Modules/Home/GUI-Apps/Gaming/prismlauncher.nix b/Modules/Home/GUI-Apps/Gaming/prismlauncher.nix new file mode 100644 index 0000000..a321b58 --- /dev/null +++ b/Modules/Home/GUI-Apps/Gaming/prismlauncher.nix @@ -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 ]; + }; +} diff --git a/Modules/Home/GUI-Apps/Multimedia/Audio/default.nix b/Modules/Home/GUI-Apps/Multimedia/Audio/default.nix new file mode 100644 index 0000000..9fc74ed --- /dev/null +++ b/Modules/Home/GUI-Apps/Multimedia/Audio/default.nix @@ -0,0 +1,7 @@ +{ config, lib, pkgs, ... }: + +{ + imports = [ + ./spotify.nix + ]; +} diff --git a/Modules/Home/GUI-Apps/Multimedia/Audio/spotify.nix b/Modules/Home/GUI-Apps/Multimedia/Audio/spotify.nix new file mode 100644 index 0000000..a858c67 --- /dev/null +++ b/Modules/Home/GUI-Apps/Multimedia/Audio/spotify.nix @@ -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 ]; + }; +} diff --git a/Modules/Home/GUI-Apps/Multimedia/Capture/camera.nix b/Modules/Home/GUI-Apps/Multimedia/Capture/camera.nix new file mode 100644 index 0000000..4250036 --- /dev/null +++ b/Modules/Home/GUI-Apps/Multimedia/Capture/camera.nix @@ -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 ]; + }; +} diff --git a/Modules/Home/GUI-Apps/Multimedia/Capture/default.nix b/Modules/Home/GUI-Apps/Multimedia/Capture/default.nix new file mode 100644 index 0000000..e05ea34 --- /dev/null +++ b/Modules/Home/GUI-Apps/Multimedia/Capture/default.nix @@ -0,0 +1,7 @@ +{ config, lib, pkgs, ... }: + +{ + imports = [ + ./camera.nix + ]; +} diff --git a/Modules/Home/GUI-Apps/Multimedia/Graphics/default.nix b/Modules/Home/GUI-Apps/Multimedia/Graphics/default.nix new file mode 100644 index 0000000..3eb753c --- /dev/null +++ b/Modules/Home/GUI-Apps/Multimedia/Graphics/default.nix @@ -0,0 +1,7 @@ +{ config, lib, pkgs, ... }: + +{ + imports = [ + ./krita.nix + ]; +} diff --git a/Modules/Home/GUI-Apps/Multimedia/Graphics/krita.nix b/Modules/Home/GUI-Apps/Multimedia/Graphics/krita.nix new file mode 100644 index 0000000..b24da93 --- /dev/null +++ b/Modules/Home/GUI-Apps/Multimedia/Graphics/krita.nix @@ -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 ]; + }; +} diff --git a/Modules/Home/GUI-Apps/Multimedia/Video/default.nix b/Modules/Home/GUI-Apps/Multimedia/Video/default.nix new file mode 100644 index 0000000..3e455af --- /dev/null +++ b/Modules/Home/GUI-Apps/Multimedia/Video/default.nix @@ -0,0 +1,8 @@ +{ config, lib, pkgs, ... }: + +{ + imports = [ + ./kdenlive.nix + ./zoom.nix + ]; +} diff --git a/Modules/Home/GUI-Apps/Multimedia/Video/kdenlive.nix b/Modules/Home/GUI-Apps/Multimedia/Video/kdenlive.nix new file mode 100644 index 0000000..96ece8b --- /dev/null +++ b/Modules/Home/GUI-Apps/Multimedia/Video/kdenlive.nix @@ -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 ]; + }; +} diff --git a/Modules/Home/GUI-Apps/Multimedia/Video/zoom.nix b/Modules/Home/GUI-Apps/Multimedia/Video/zoom.nix new file mode 100644 index 0000000..ddf6c20 --- /dev/null +++ b/Modules/Home/GUI-Apps/Multimedia/Video/zoom.nix @@ -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 ]; + }; +} diff --git a/Modules/Home/GUI-Apps/Multimedia/default.nix b/Modules/Home/GUI-Apps/Multimedia/default.nix new file mode 100644 index 0000000..fb5d596 --- /dev/null +++ b/Modules/Home/GUI-Apps/Multimedia/default.nix @@ -0,0 +1,10 @@ +{ config, lib, pkgs, ... }: + +{ + imports = [ + ./Audio + ./Capture + ./Graphics + ./Video + ]; +} diff --git a/Modules/Home/GUI-Apps/Office/Knowledge/default.nix b/Modules/Home/GUI-Apps/Office/Knowledge/default.nix new file mode 100644 index 0000000..299bc0e --- /dev/null +++ b/Modules/Home/GUI-Apps/Office/Knowledge/default.nix @@ -0,0 +1,7 @@ +{ config, lib, pkgs, ... }: + +{ + imports = [ + ./obsidian.nix + ]; +} diff --git a/Modules/Home/GUI-Apps/Office/Knowledge/obsidian.nix b/Modules/Home/GUI-Apps/Office/Knowledge/obsidian.nix new file mode 100644 index 0000000..184b0f0 --- /dev/null +++ b/Modules/Home/GUI-Apps/Office/Knowledge/obsidian.nix @@ -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 ]; + }; +} diff --git a/Modules/Home/GUI-Apps/Office/Productivity/default.nix b/Modules/Home/GUI-Apps/Office/Productivity/default.nix new file mode 100644 index 0000000..70b8322 --- /dev/null +++ b/Modules/Home/GUI-Apps/Office/Productivity/default.nix @@ -0,0 +1,8 @@ +{ config, lib, pkgs, ... }: + +{ + imports = [ + ./office-apps.nix + ./printer-scan.nix + ]; +} diff --git a/Modules/Home/GUI-Apps/Office/Productivity/office-apps.nix b/Modules/Home/GUI-Apps/Office/Productivity/office-apps.nix new file mode 100644 index 0000000..7be802b --- /dev/null +++ b/Modules/Home/GUI-Apps/Office/Productivity/office-apps.nix @@ -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 ]; + }; +} diff --git a/Modules/Home/GUI-Apps/Office/Productivity/printer-scan.nix b/Modules/Home/GUI-Apps/Office/Productivity/printer-scan.nix new file mode 100644 index 0000000..235a1ac --- /dev/null +++ b/Modules/Home/GUI-Apps/Office/Productivity/printer-scan.nix @@ -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 ]; + }; +} diff --git a/Modules/Home/GUI-Apps/Office/default.nix b/Modules/Home/GUI-Apps/Office/default.nix new file mode 100644 index 0000000..6f5d9f8 --- /dev/null +++ b/Modules/Home/GUI-Apps/Office/default.nix @@ -0,0 +1,8 @@ +{ config, lib, pkgs, ... }: + +{ + imports = [ + ./Knowledge + ./Productivity + ]; +} diff --git a/Modules/Home/GUI-Apps/System-Tools/default.nix b/Modules/Home/GUI-Apps/System-Tools/default.nix new file mode 100644 index 0000000..a825af3 --- /dev/null +++ b/Modules/Home/GUI-Apps/System-Tools/default.nix @@ -0,0 +1,7 @@ +{ config, lib, pkgs, ... }: + +{ + imports = [ + ./standard-apps.nix + ]; +} diff --git a/Modules/Home/GUI-Apps/System-Tools/standard-apps.nix b/Modules/Home/GUI-Apps/System-Tools/standard-apps.nix new file mode 100644 index 0000000..5d8bb7e --- /dev/null +++ b/Modules/Home/GUI-Apps/System-Tools/standard-apps.nix @@ -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 ]; + }; +} diff --git a/Modules/Home/GUI-Apps/VPN/default.nix b/Modules/Home/GUI-Apps/VPN/default.nix new file mode 100644 index 0000000..f8d5c4c --- /dev/null +++ b/Modules/Home/GUI-Apps/VPN/default.nix @@ -0,0 +1,7 @@ +{ config, lib, pkgs, ... }: + +{ + imports = [ + ./protonvpn.nix + ]; +} diff --git a/Modules/Home/GUI-Apps/VPN/protonvpn.nix b/Modules/Home/GUI-Apps/VPN/protonvpn.nix new file mode 100644 index 0000000..ef9df08 --- /dev/null +++ b/Modules/Home/GUI-Apps/VPN/protonvpn.nix @@ -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 ]; + }; +} diff --git a/Modules/Home/GUI-Apps/default.nix b/Modules/Home/GUI-Apps/default.nix new file mode 100644 index 0000000..2d750be --- /dev/null +++ b/Modules/Home/GUI-Apps/default.nix @@ -0,0 +1,14 @@ +{ config, lib, pkgs, ... }: + +{ + imports = [ + ./Browsers + ./Communication + ./Development + ./Gaming + ./Multimedia + ./Office + ./System-Tools + ./VPN + ]; +} diff --git a/Modules/Home/Shell/cli-tools/default.nix b/Modules/Home/Shell/cli-tools/default.nix new file mode 100644 index 0000000..0680e32 --- /dev/null +++ b/Modules/Home/Shell/cli-tools/default.nix @@ -0,0 +1,7 @@ +{ config, lib, pkgs, ... }: + +{ + imports = [ + ./tools.nix + ]; +} diff --git a/Modules/Home/Shell/cli-tools/tools.nix b/Modules/Home/Shell/cli-tools/tools.nix new file mode 100644 index 0000000..496181b --- /dev/null +++ b/Modules/Home/Shell/cli-tools/tools.nix @@ -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 ]; + }; +} diff --git a/Modules/Home/Shell/default.nix b/Modules/Home/Shell/default.nix new file mode 100644 index 0000000..5b9f980 --- /dev/null +++ b/Modules/Home/Shell/default.nix @@ -0,0 +1,8 @@ +{ config, lib, pkgs, ... }: + +{ + imports = [ + ./cli-tools + ./zsh + ]; +} diff --git a/Modules/Home/Shell/zsh/default.nix b/Modules/Home/Shell/zsh/default.nix new file mode 100644 index 0000000..adc82e4 --- /dev/null +++ b/Modules/Home/Shell/zsh/default.nix @@ -0,0 +1,7 @@ +{ config, lib, pkgs, ... }: + +{ + imports = [ + ./zsh.nix + ]; +} diff --git a/Modules/Home/Shell/zsh/zsh.nix b/Modules/Home/Shell/zsh/zsh.nix new file mode 100644 index 0000000..f929d79 --- /dev/null +++ b/Modules/Home/Shell/zsh/zsh.nix @@ -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 ]; + }; +} diff --git a/Modules/Home/Webapps/default.nix b/Modules/Home/Webapps/default.nix new file mode 100644 index 0000000..85d37b0 --- /dev/null +++ b/Modules/Home/Webapps/default.nix @@ -0,0 +1,8 @@ +{ config, lib, pkgs, ... }: + +{ + imports = [ + ./private-webapps.nix + ./work-webapps.nix + ]; +} diff --git a/Modules/Home/Webapps/private-webapps.nix b/Modules/Home/Webapps/private-webapps.nix new file mode 100644 index 0000000..485bac8 --- /dev/null +++ b/Modules/Home/Webapps/private-webapps.nix @@ -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 ]; + }; +} diff --git a/Modules/Home/Webapps/work-webapps.nix b/Modules/Home/Webapps/work-webapps.nix new file mode 100644 index 0000000..93e7b5c --- /dev/null +++ b/Modules/Home/Webapps/work-webapps.nix @@ -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 ]; + }; +} diff --git a/Modules/Home/default.nix b/Modules/Home/default.nix new file mode 100644 index 0000000..39b9867 --- /dev/null +++ b/Modules/Home/default.nix @@ -0,0 +1,9 @@ +{ config, lib, pkgs, ... }: + +{ + imports = [ + ./GUI-Apps + ./Shell + ./Webapps + ]; +} diff --git a/Modules/System/Application/Gaming/Steam/default.nix b/Modules/System/Application/Gaming/Steam/default.nix new file mode 100644 index 0000000..3977769 --- /dev/null +++ b/Modules/System/Application/Gaming/Steam/default.nix @@ -0,0 +1,7 @@ +{ config, lib, pkgs, ... }: + +{ + imports = [ + ./steam.nix + ]; +} diff --git a/Modules/System/Application/Gaming/Steam/steam.nix b/Modules/System/Application/Gaming/Steam/steam.nix new file mode 100644 index 0000000..7c5700c --- /dev/null +++ b/Modules/System/Application/Gaming/Steam/steam.nix @@ -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 ]; + }; +} diff --git a/Modules/System/Application/Gaming/default.nix b/Modules/System/Application/Gaming/default.nix new file mode 100644 index 0000000..500a2bf --- /dev/null +++ b/Modules/System/Application/Gaming/default.nix @@ -0,0 +1,7 @@ +{ config, lib, pkgs, ... }: + +{ + imports = [ + ./Steam + ]; +} diff --git a/Modules/System/Application/Grub/all-grub.nix b/Modules/System/Application/Grub/all-grub.nix new file mode 100644 index 0000000..38a589e --- /dev/null +++ b/Modules/System/Application/Grub/all-grub.nix @@ -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 ]; + }; +} diff --git a/Modules/System/Application/Grub/default.nix b/Modules/System/Application/Grub/default.nix new file mode 100644 index 0000000..4852f25 --- /dev/null +++ b/Modules/System/Application/Grub/default.nix @@ -0,0 +1,8 @@ +{ config, lib, pkgs, ... }: + +{ + imports = [ + ./all-grub.nix + ./minegrub.nix + ]; +} diff --git a/Modules/System/Application/Grub/minegrub.nix b/Modules/System/Application/Grub/minegrub.nix new file mode 100644 index 0000000..efcad44 --- /dev/null +++ b/Modules/System/Application/Grub/minegrub.nix @@ -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 ]; + }; +} diff --git a/Modules/System/Application/Special-Applications/default.nix b/Modules/System/Application/Special-Applications/default.nix new file mode 100644 index 0000000..633b39d --- /dev/null +++ b/Modules/System/Application/Special-Applications/default.nix @@ -0,0 +1,8 @@ +{ config, lib, pkgs, ... }: + +{ + imports = [ + ./flatpak.nix + ./wireshark.nix + ]; +} diff --git a/Modules/System/Application/Special-Applications/flatpak.nix b/Modules/System/Application/Special-Applications/flatpak.nix new file mode 100644 index 0000000..9dd54bd --- /dev/null +++ b/Modules/System/Application/Special-Applications/flatpak.nix @@ -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 ]; + }; +} diff --git a/Modules/System/Application/Special-Applications/wireshark.nix b/Modules/System/Application/Special-Applications/wireshark.nix new file mode 100644 index 0000000..0d797cf --- /dev/null +++ b/Modules/System/Application/Special-Applications/wireshark.nix @@ -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 ]; + }; +} diff --git a/Modules/System/Application/cli/default.nix b/Modules/System/Application/cli/default.nix new file mode 100644 index 0000000..8bc7e25 --- /dev/null +++ b/Modules/System/Application/cli/default.nix @@ -0,0 +1,10 @@ +{ config, lib, pkgs, ... }: + +{ + imports = [ + ./docker.nix + ./openssh.nix + ./vm.nix + ./zsh.nix + ]; +} diff --git a/Modules/System/Application/cli/docker.nix b/Modules/System/Application/cli/docker.nix new file mode 100644 index 0000000..410f9f2 --- /dev/null +++ b/Modules/System/Application/cli/docker.nix @@ -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 ]; + }; +} diff --git a/Modules/System/Application/cli/openssh.nix b/Modules/System/Application/cli/openssh.nix new file mode 100644 index 0000000..d4c062e --- /dev/null +++ b/Modules/System/Application/cli/openssh.nix @@ -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 ]; + }; +} diff --git a/Modules/System/Application/cli/vm.nix b/Modules/System/Application/cli/vm.nix new file mode 100644 index 0000000..ff924ef --- /dev/null +++ b/Modules/System/Application/cli/vm.nix @@ -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 ]; + }; +} diff --git a/Modules/System/Application/cli/zsh.nix b/Modules/System/Application/cli/zsh.nix new file mode 100644 index 0000000..0102361 --- /dev/null +++ b/Modules/System/Application/cli/zsh.nix @@ -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 ]; + }; +} diff --git a/Modules/System/Application/default.nix b/Modules/System/Application/default.nix new file mode 100644 index 0000000..765ed33 --- /dev/null +++ b/Modules/System/Application/default.nix @@ -0,0 +1,10 @@ +{ config, lib, pkgs, ... }: + +{ + imports = [ + ./cli + ./Gaming + ./Grub + ./Special-Applications + ]; +} diff --git a/Modules/System/Desktops/KDE/default.nix b/Modules/System/Desktops/KDE/default.nix new file mode 100644 index 0000000..63f1649 --- /dev/null +++ b/Modules/System/Desktops/KDE/default.nix @@ -0,0 +1,7 @@ +{ config, lib, pkgs, ... }: + +{ + imports = [ + ./kde.nix + ]; +} diff --git a/Modules/System/Desktops/KDE/kde.nix b/Modules/System/Desktops/KDE/kde.nix new file mode 100644 index 0000000..92361a5 --- /dev/null +++ b/Modules/System/Desktops/KDE/kde.nix @@ -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 ]; + }; +} diff --git a/Modules/System/Desktops/default.nix b/Modules/System/Desktops/default.nix new file mode 100644 index 0000000..3422bd5 --- /dev/null +++ b/Modules/System/Desktops/default.nix @@ -0,0 +1,7 @@ +{ config, lib, pkgs, ... }: + +{ + imports = [ + ./KDE + ]; +} diff --git a/Modules/System/Programming-Tools/c-compiler.nix b/Modules/System/Programming-Tools/c-compiler.nix new file mode 100644 index 0000000..70c6439 --- /dev/null +++ b/Modules/System/Programming-Tools/c-compiler.nix @@ -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 ]; + }; +} diff --git a/Modules/System/Programming-Tools/default.nix b/Modules/System/Programming-Tools/default.nix new file mode 100644 index 0000000..2960749 --- /dev/null +++ b/Modules/System/Programming-Tools/default.nix @@ -0,0 +1,11 @@ +{ config, lib, pkgs, ... }: + +{ + imports = [ + ./c-compiler.nix + ./go.nix + ./lua.nix + ./python.nix + ./rust.nix + ]; +} diff --git a/Modules/System/Programming-Tools/go.nix b/Modules/System/Programming-Tools/go.nix new file mode 100644 index 0000000..c9d636b --- /dev/null +++ b/Modules/System/Programming-Tools/go.nix @@ -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 ]; + }; +} diff --git a/Modules/System/Programming-Tools/lua.nix b/Modules/System/Programming-Tools/lua.nix new file mode 100644 index 0000000..585b880 --- /dev/null +++ b/Modules/System/Programming-Tools/lua.nix @@ -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 ]; + }; +} diff --git a/Modules/System/Programming-Tools/python.nix b/Modules/System/Programming-Tools/python.nix new file mode 100644 index 0000000..cb4936f --- /dev/null +++ b/Modules/System/Programming-Tools/python.nix @@ -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 ]; + }; +} diff --git a/Modules/System/Programming-Tools/rust.nix b/Modules/System/Programming-Tools/rust.nix new file mode 100644 index 0000000..31a08b4 --- /dev/null +++ b/Modules/System/Programming-Tools/rust.nix @@ -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 ]; + }; +} diff --git a/Modules/System/default.nix b/Modules/System/default.nix new file mode 100644 index 0000000..5e885f6 --- /dev/null +++ b/Modules/System/default.nix @@ -0,0 +1,9 @@ +{ config, lib, pkgs, ... }: + +{ + imports = [ + ./Application + ./Desktops + ./Programming-Tools + ]; +} diff --git a/Modules/default.nix b/Modules/default.nix new file mode 100644 index 0000000..1f0c0eb --- /dev/null +++ b/Modules/default.nix @@ -0,0 +1,9 @@ +{ config, lib, pkgs, ... }: + +{ + imports = [ + ./Hardware + ./Home + ./System + ]; +} diff --git a/autogen-modules.sh b/autogen-modules.sh new file mode 100755 index 0000000..46d63d2 --- /dev/null +++ b/autogen-modules.sh @@ -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" < 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." diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..6d4e85c --- /dev/null +++ b/flake.nix @@ -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; }; + + }; +} +