Main
This commit is contained in:
parent
fc0abdd4bb
commit
aca73cdd0f
73 changed files with 3873 additions and 381 deletions
|
|
@ -1,20 +1,22 @@
|
||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
let
|
let
|
||||||
cfg = config.nyx-module.system.bluetooth;
|
cfg = config.nyx-module.hardware.bluetooth;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options.nyx-module.system.bluetooth = {
|
options.nyx-module.hardware.bluetooth = {
|
||||||
enable = lib.mkEnableOption "Enable bluetooth (system) module";
|
enable = lib.mkEnableOption "Enable the system Bluetooth module";
|
||||||
|
|
||||||
package = lib.mkOption {
|
|
||||||
type = lib.types.package;
|
|
||||||
default = pkgs.bluetooth;
|
|
||||||
description = "Package to install for bluetooth.";
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
config = lib.mkIf cfg.enable {
|
||||||
environment.systemPackages = [ cfg.package ];
|
# Enable Bluetooth support
|
||||||
|
hardware.bluetooth = {
|
||||||
|
enable = true; # Enable Bluetooth service
|
||||||
|
powerOnBoot = true; # Power up the controller at boot
|
||||||
|
};
|
||||||
|
|
||||||
|
# Ensure firmware is available (needed for devices like Intel AX200)
|
||||||
|
hardware.enableAllFirmware = true;
|
||||||
|
hardware.firmware = [ pkgs.linux-firmware ];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,20 +0,0 @@
|
||||||
{ 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 ];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
87
Modules/Hardware/Surface/custom-kernel-surfacepro-kbl.nix
Normal file
87
Modules/Hardware/Surface/custom-kernel-surfacepro-kbl.nix
Normal file
|
|
@ -0,0 +1,87 @@
|
||||||
|
# Custom Kernel Module for Microsoft Surface Pro (Kaby Lake / i5-7300U)
|
||||||
|
#
|
||||||
|
# Requires:
|
||||||
|
# - inputs.nixos-hardware.nixosModules.microsoft-surface-pro-intel
|
||||||
|
#
|
||||||
|
# Notes:
|
||||||
|
# - Estimated kernel build time: ~4h30m
|
||||||
|
#
|
||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
cfg = config.nyx-module.hardware.Custom-Kernel.SurfacePro-KabyLake;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.nyx-module.hardware.Custom-Kernel.SurfacePro-KabyLake = {
|
||||||
|
enable = lib.mkEnableOption "Enable Custom Surface Pro (Kaby Lake) kernel module";
|
||||||
|
kernelVersion = lib.mkOption {
|
||||||
|
type = lib.types.enum [ "stable" "longtime" ];
|
||||||
|
default = "stable";
|
||||||
|
description = "Choose which kernel version nixos-hardware will build for Surface Pro.";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
# Ensure nixos-hardware Surface Pro module is imported
|
||||||
|
assertions = [
|
||||||
|
{
|
||||||
|
assertion = config ? hardware.microsoft-surface;
|
||||||
|
message = ''
|
||||||
|
The module `nyx-module.hardware.Custom-Kernel.SurfacePro-KabyLake` requires
|
||||||
|
`inputs.nixos-hardware.nixosModules.microsoft-surface-pro-intel`
|
||||||
|
to be imported into your configuration.
|
||||||
|
'';
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
# Pick kernel version for Surface hardware support
|
||||||
|
hardware.microsoft-surface.kernelVersion = cfg.kernelVersion;
|
||||||
|
# boot.kernelPackages = pkgs.linuxPackages_6_6; # normally set by nixos-hardware
|
||||||
|
|
||||||
|
# Extra kernel modules
|
||||||
|
boot.kernelModules = [ "hid-microsoft" ];
|
||||||
|
|
||||||
|
# Initrd modules — required for Surface hardware to function
|
||||||
|
boot.initrd.kernelModules = [
|
||||||
|
# Surface Aggregator Module (SAM): buttons, sensors, keyboard
|
||||||
|
"surface_aggregator"
|
||||||
|
"surface_aggregator_registry"
|
||||||
|
"surface_aggregator_hub"
|
||||||
|
"surface_hid_core"
|
||||||
|
"surface_hid"
|
||||||
|
|
||||||
|
# Intel Low Power Subsystem (keyboard, I2C, etc.)
|
||||||
|
"intel_lpss"
|
||||||
|
"intel_lpss_pci"
|
||||||
|
"8250_dw"
|
||||||
|
];
|
||||||
|
|
||||||
|
# IPTSd not required — touchscreen and pen work via HID
|
||||||
|
services.iptsd.enable = lib.mkForce false;
|
||||||
|
|
||||||
|
# Optional: reduce display flickering
|
||||||
|
# boot.kernelParams = [ "i915.enable_psr=0" ];
|
||||||
|
|
||||||
|
# Optional: blacklist problematic modules
|
||||||
|
# boot.blacklistedKernelModules = [ "surface_gpe" ];
|
||||||
|
|
||||||
|
# Thermald for thermal management
|
||||||
|
services.thermald = {
|
||||||
|
enable = true;
|
||||||
|
configFile = ./thermal-conf.xml;
|
||||||
|
# Example: extra options if needed
|
||||||
|
# extraOptions = [
|
||||||
|
# "--adaptive"
|
||||||
|
# "--max-temperature=65"
|
||||||
|
# ];
|
||||||
|
};
|
||||||
|
|
||||||
|
# Optional: CPU power management tuning
|
||||||
|
# powerManagement.cpuFreqGovernor = "powersave"; # or "ondemand", "performance"
|
||||||
|
|
||||||
|
# Optional: disable Intel Turbo Boost if overheating persists
|
||||||
|
# systemd.tmpfiles.rules = [
|
||||||
|
# "w /sys/devices/system/cpu/intel_pstate/no_turbo - - - - 1"
|
||||||
|
# ];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
@ -2,6 +2,6 @@
|
||||||
|
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./Custom-Kernel.nix
|
./custom-kernel-surfacepro-kbl.nix
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,39 @@
|
||||||
|
<?xml version="1.0"?>
|
||||||
|
<ThermalConfiguration>
|
||||||
|
<Platform>
|
||||||
|
<Name>Surface Pro 7 Thermal Workaround</Name>
|
||||||
|
<ProductName>*</ProductName>
|
||||||
|
<Preference>QUIET</Preference>
|
||||||
|
<ThermalZones>
|
||||||
|
<ThermalZone>
|
||||||
|
<Type>cpu</Type>
|
||||||
|
<TripPoints>
|
||||||
|
<TripPoint>
|
||||||
|
<SensorType>x86_pkg_temp</SensorType>
|
||||||
|
<Temperature>65000</Temperature>
|
||||||
|
<type>passive</type>
|
||||||
|
<ControlType>PARALLEL</ControlType>
|
||||||
|
<CoolingDevice>
|
||||||
|
<index>1</index>
|
||||||
|
<type>rapl_controller</type>
|
||||||
|
<influence>100</influence>
|
||||||
|
<SamplingPeriod>10</SamplingPeriod>
|
||||||
|
</CoolingDevice>
|
||||||
|
<CoolingDevice>
|
||||||
|
<index>2</index>
|
||||||
|
<type>intel_pstate</type>
|
||||||
|
<influence>90</influence>
|
||||||
|
<SamplingPeriod>10</SamplingPeriod>
|
||||||
|
</CoolingDevice>
|
||||||
|
<CoolingDevice>
|
||||||
|
<index>3</index>
|
||||||
|
<type>intel_powerclamp</type>
|
||||||
|
<influence>80</influence>
|
||||||
|
<SamplingPeriod>10</SamplingPeriod>
|
||||||
|
</CoolingDevice>
|
||||||
|
</TripPoint>
|
||||||
|
</TripPoints>
|
||||||
|
</ThermalZone>
|
||||||
|
</ThermalZones>
|
||||||
|
</Platform>
|
||||||
|
</ThermalConfiguration>
|
||||||
|
|
@ -1,3 +1,20 @@
|
||||||
|
# Brave Browser (Home Module)
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - Brave browser package
|
||||||
|
# - Optional standard and custom extension sets
|
||||||
|
#
|
||||||
|
# Options:
|
||||||
|
# - enable → Enable Brave browser
|
||||||
|
# - extensions.enable → Enable Brave extensions
|
||||||
|
# - extensions.standard→ Enable default extension set of extensions
|
||||||
|
# - extensions.extra → Extra extension IDs to install
|
||||||
|
#
|
||||||
|
# Notes:
|
||||||
|
# - Default extensions include uBlock Origin, Proton Pass, Proton VPN
|
||||||
|
# - Extra extensions must be specified by Chrome Web Store ID
|
||||||
|
#
|
||||||
|
|
||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
let
|
let
|
||||||
|
|
@ -5,16 +22,39 @@ let
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options.nyx-module.home.brave = {
|
options.nyx-module.home.brave = {
|
||||||
enable = lib.mkEnableOption "Enable brave (home) module";
|
enable = lib.mkEnableOption "Enable Brave (home module)";
|
||||||
|
|
||||||
package = lib.mkOption {
|
extensions = {
|
||||||
type = lib.types.package;
|
enable = lib.mkEnableOption "Enable Brave extensions support";
|
||||||
default = pkgs.brave;
|
standard = lib.mkEnableOption "Enable default set of extensions (uBlock, Proton Pass, Proton VPN)";
|
||||||
description = "Package to install for brave.";
|
extra = lib.mkOption {
|
||||||
|
type = lib.types.listOf lib.types.str;
|
||||||
|
default = [];
|
||||||
|
example = [ "abcdefghijklmnop" "qrstuvwxyz123456" ];
|
||||||
|
description = "List of additional Brave extension IDs to install.";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
config = lib.mkIf cfg.enable {
|
||||||
home.packages = [ cfg.package ];
|
programs.brave = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.brave;
|
||||||
|
|
||||||
|
extensions = lib.optionals cfg.extensions.enable (
|
||||||
|
(lib.optionals cfg.extensions.standard [
|
||||||
|
{ id = "cjpalhdlnbpafiamejdnhcphjbkeiagm"; } # uBlock Origin
|
||||||
|
{ id = "ghmbeldphafepmbegfdlkpapadhbakde"; } # Proton Pass
|
||||||
|
{ id = "jplgfhpmjnbigmhklmmbgecoobifkmpa"; } # Proton VPN
|
||||||
|
]) ++
|
||||||
|
(map (id: { inherit id; }) cfg.extensions.extra)
|
||||||
|
);
|
||||||
|
|
||||||
|
commandLineArgs = [
|
||||||
|
"--disable-features=AutofillSavePaymentMethods"
|
||||||
|
"--disable-features=PasswordManagerOnboarding"
|
||||||
|
"--disable-features=AutofillEnableAccountWalletStorage"
|
||||||
|
];
|
||||||
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,13 @@
|
||||||
|
# Signal Desktop (Home Module)
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - Signal Desktop secure messaging client
|
||||||
|
#
|
||||||
|
# Options:
|
||||||
|
# - enable → Enable Signal Desktop
|
||||||
|
# - package → Override package (default: pkgs.signal-desktop)
|
||||||
|
#
|
||||||
|
|
||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
let
|
let
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,13 @@
|
||||||
|
# Vesktop (Home Module)
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - Vesktop package (Discord client, Electron wrapper)
|
||||||
|
#
|
||||||
|
# Options:
|
||||||
|
# - enable → Enable Vesktop client
|
||||||
|
# - package → Override package (default: pkgs.vesktop)
|
||||||
|
#
|
||||||
|
|
||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
let
|
let
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,37 @@
|
||||||
|
# RustDesk (Home Module)
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - RustDesk remote desktop software (TeamViewer/AnyDesk alternative)
|
||||||
|
#
|
||||||
|
# Options:
|
||||||
|
# - enable → Enable RustDesk
|
||||||
|
# - package → Override package (default: pkgs.rustdesk)
|
||||||
|
#
|
||||||
|
# Notes:
|
||||||
|
# - Estimated build time: ~? Long....
|
||||||
|
#
|
||||||
|
|
||||||
|
{ 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.
|
||||||
|
You can override this if you want to pin a version or use a fork.
|
||||||
|
'';
|
||||||
|
example = "pkgs.rustdesk.overrideAttrs (old: { version = \"1.3.5\"; })";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
home.packages = [ cfg.package ];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
@ -1,20 +0,0 @@
|
||||||
{ 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 ];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -3,6 +3,6 @@
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./Messaging
|
./Messaging
|
||||||
./Remote
|
./Remote-Support
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,20 +1,58 @@
|
||||||
{ config, lib, pkgs, ... }:
|
# VSCodium (Home Module)
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - VSCodium editor (open-source build of VS Code)
|
||||||
|
# - Optional extension sets
|
||||||
|
#
|
||||||
|
# Options:
|
||||||
|
# - enable → Enable VSCodium
|
||||||
|
# - extensions.enable → Enable extensions
|
||||||
|
# - extensions.standard→ Enable standard extensions
|
||||||
|
# - extensions.extra → Extra extensions to install
|
||||||
|
#
|
||||||
|
# Notes:
|
||||||
|
# - Some Microsoft extensions may be broken (e.g., ms-python.python)
|
||||||
|
#
|
||||||
|
|
||||||
|
|
||||||
|
{ config, pkgs, lib, ... }:
|
||||||
|
|
||||||
let
|
let
|
||||||
cfg = config.nyx-module.home.vscodium;
|
cfg = config.nyx-module.home.vscodium;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options.nyx-module.home.vscodium = {
|
options.nyx-module.home.vscodium = {
|
||||||
enable = lib.mkEnableOption "Enable vscodium (home) module";
|
enable = lib.mkEnableOption "Enable VSCodium with extensions";
|
||||||
|
|
||||||
package = lib.mkOption {
|
extensions = {
|
||||||
type = lib.types.package;
|
enable = lib.mkEnableOption "Enable VSCodium extensions";
|
||||||
default = pkgs.vscodium;
|
|
||||||
description = "Package to install for vscodium.";
|
standard = lib.mkEnableOption "Enable standard extensions";
|
||||||
|
|
||||||
|
extra = lib.mkOption {
|
||||||
|
type = lib.types.listOf lib.types.package;
|
||||||
|
default = [];
|
||||||
|
example = [ pkgs.vscode-extensions.ms-python.python ];
|
||||||
|
description = "List of extra VSCodium extensions to install.";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
config = lib.mkIf cfg.enable {
|
||||||
home.packages = [ cfg.package ];
|
programs.vscode = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.vscodium;
|
||||||
|
|
||||||
|
profiles.default.extensions =
|
||||||
|
lib.optionals cfg.extensions.enable (
|
||||||
|
(lib.optionals cfg.extensions.standard (with pkgs.vscode-extensions; [
|
||||||
|
catppuccin.catppuccin-vsc
|
||||||
|
jnoortheen.nix-ide
|
||||||
|
ms-azuretools.vscode-docker
|
||||||
|
# ms-python.python # currently broken (pygls failure)
|
||||||
|
]))
|
||||||
|
++ cfg.extensions.extra
|
||||||
|
);
|
||||||
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,21 @@
|
||||||
|
# Classic Game Collection (Home Module)
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - Small set of lightweight, classic desktop games
|
||||||
|
#
|
||||||
|
# Included:
|
||||||
|
# - KPat (Patience / Solitaire)
|
||||||
|
# - KSudoku
|
||||||
|
# - Space Cadet Pinball
|
||||||
|
# - Palapeli (jigsaw puzzles)
|
||||||
|
# - KMines (Minesweeper clone)
|
||||||
|
# - KBlocks (Tetris clone)
|
||||||
|
# - KMahjongg (Mahjong solitaire)
|
||||||
|
#
|
||||||
|
# Options:
|
||||||
|
# - enable → Enable the Classic Game Collection
|
||||||
|
#
|
||||||
|
|
||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
let
|
let
|
||||||
|
|
@ -5,16 +23,18 @@ let
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options.nyx-module.home.classic-game-collection = {
|
options.nyx-module.home.classic-game-collection = {
|
||||||
enable = lib.mkEnableOption "Enable classic-game-collection (home) module";
|
enable = lib.mkEnableOption "Enable the 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 {
|
config = lib.mkIf cfg.enable {
|
||||||
home.packages = [ cfg.package ];
|
home.packages = with pkgs; [
|
||||||
|
kdePackages.kpat
|
||||||
|
kdePackages.ksudoku
|
||||||
|
space-cadet-pinball
|
||||||
|
kdePackages.palapeli
|
||||||
|
kdePackages.kmines
|
||||||
|
kdePackages.kblocks
|
||||||
|
kdePackages.libkmahjongg
|
||||||
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,20 @@
|
||||||
|
# PrismLauncher (Home Module)
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - PrismLauncher (Minecraft launcher)
|
||||||
|
# - Optional inclusion of ffmpeg (some mods require it)
|
||||||
|
# - Configurable list of JDKs (for modpacks that need specific versions)
|
||||||
|
#
|
||||||
|
# Options:
|
||||||
|
# - enable → Enable PrismLauncher
|
||||||
|
# - includeFfmpeg→ Include ffmpeg for mods
|
||||||
|
# - jdks → List of Java runtimes for PrismLauncher
|
||||||
|
#
|
||||||
|
# Notes:
|
||||||
|
# - Installed via home.packages
|
||||||
|
# - JDKs are added to PATH so PrismLauncher can discover them
|
||||||
|
#
|
||||||
|
|
||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
let
|
let
|
||||||
|
|
@ -5,16 +22,22 @@ let
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options.nyx-module.home.prismlauncher = {
|
options.nyx-module.home.prismlauncher = {
|
||||||
enable = lib.mkEnableOption "Enable prismlauncher (home) module";
|
enable = lib.mkEnableOption "Enable PrismLauncher (Minecraft launcher)";
|
||||||
|
|
||||||
package = lib.mkOption {
|
includeFfmpeg = lib.mkEnableOption "Include ffmpeg for mods that require it";
|
||||||
type = lib.types.package;
|
|
||||||
default = pkgs.prismlauncher;
|
jdks = lib.mkOption {
|
||||||
description = "Package to install for prismlauncher.";
|
type = lib.types.listOf lib.types.package;
|
||||||
|
default = [ pkgs.jdk17 ];
|
||||||
|
example = [ pkgs.jdk8 pkgs.jdk17 pkgs.jdk21 ];
|
||||||
|
description = "List of Java runtimes to make available for PrismLauncher.";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
config = lib.mkIf cfg.enable {
|
||||||
home.packages = [ cfg.package ];
|
home.packages =
|
||||||
|
[ pkgs.prismlauncher ]
|
||||||
|
++ lib.optionals cfg.includeFfmpeg [ pkgs.ffmpeg ]
|
||||||
|
++ cfg.jdks;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
85
Modules/Home/GUI-Apps/Multimedia/Audio/cava.nix
Normal file
85
Modules/Home/GUI-Apps/Multimedia/Audio/cava.nix
Normal file
|
|
@ -0,0 +1,85 @@
|
||||||
|
# CAVA (Home Module)
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - CAVA audio visualizer
|
||||||
|
# - Declarative configuration via Nix
|
||||||
|
# - Support for structured settings or raw config override
|
||||||
|
#
|
||||||
|
# Options:
|
||||||
|
# - enable → Enable CAVA (home module)
|
||||||
|
# - settings → Declarative structured configuration (default: ALSA, 60 FPS, basic colors)
|
||||||
|
# - configText → Raw configuration text (overrides settings if set)
|
||||||
|
#
|
||||||
|
# Notes:
|
||||||
|
# - Writes config to ~/.config/cava/config
|
||||||
|
# - If configText is set, settings are ignored
|
||||||
|
#
|
||||||
|
# Example:
|
||||||
|
# nyx-module.home.cava = {
|
||||||
|
# enable = true;
|
||||||
|
# settings.general.framerate = 120;
|
||||||
|
# settings.input.method = "pulse";
|
||||||
|
# };
|
||||||
|
|
||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
cfg = config.nyx-module.home.cava;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.nyx-module.home.cava = {
|
||||||
|
enable = lib.mkEnableOption "Enable CAVA (home) module";
|
||||||
|
|
||||||
|
settings = lib.mkOption {
|
||||||
|
type = lib.types.attrs;
|
||||||
|
default = {
|
||||||
|
general.framerate = 60;
|
||||||
|
input.method = "alsa";
|
||||||
|
smoothing.noise_reduction = 88;
|
||||||
|
color = {
|
||||||
|
background = "#000000";
|
||||||
|
foreground = "#FFFFFF";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
description = ''
|
||||||
|
Declarative CAVA settings, written to `~/.config/cava/config`.
|
||||||
|
Ignored if `configText` is set.
|
||||||
|
'';
|
||||||
|
example = {
|
||||||
|
general.framerate = 30;
|
||||||
|
input.method = "pulseaudio";
|
||||||
|
color.foreground = "#00FF00";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
configText = lib.mkOption {
|
||||||
|
type = lib.types.nullOr lib.types.lines;
|
||||||
|
default = null;
|
||||||
|
description = ''
|
||||||
|
Raw CAVA configuration file contents.
|
||||||
|
If set, overrides `settings` and is written directly to `~/.config/cava/config`.
|
||||||
|
'';
|
||||||
|
example = ''
|
||||||
|
[general]
|
||||||
|
framerate = 120
|
||||||
|
[input]
|
||||||
|
method = pulse
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
programs.cava = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.cava;
|
||||||
|
|
||||||
|
|
||||||
|
settings = lib.mkIf (cfg.configText == null) cfg.settings;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
xdg.configFile."cava/config" = lib.mkIf (cfg.configText != null) {
|
||||||
|
text = cfg.configText;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
@ -2,6 +2,7 @@
|
||||||
|
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
|
./cava.nix
|
||||||
./spotify.nix
|
./spotify.nix
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,13 @@
|
||||||
|
# Spotify (music streaming client)
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - Spotify package (default)
|
||||||
|
# - Optional override to install a different package
|
||||||
|
#
|
||||||
|
# Notes:
|
||||||
|
# - Installs into home.packages
|
||||||
|
#
|
||||||
|
|
||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
let
|
let
|
||||||
|
|
@ -5,12 +15,17 @@ let
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options.nyx-module.home.spotify = {
|
options.nyx-module.home.spotify = {
|
||||||
enable = lib.mkEnableOption "Enable spotify (home) module";
|
enable = lib.mkEnableOption "Enable Spotify (home) module";
|
||||||
|
|
||||||
package = lib.mkOption {
|
package = lib.mkOption {
|
||||||
type = lib.types.package;
|
type = lib.types.package;
|
||||||
default = pkgs.spotify;
|
default = pkgs.spotify;
|
||||||
description = "Package to install for spotify.";
|
example = pkgs.ncspot;
|
||||||
|
description = ''
|
||||||
|
Package to install for Spotify support.
|
||||||
|
Defaults to the official `pkgs.spotify`, but you can override with
|
||||||
|
`pkgs.ncspot`, `pkgs.spotifyd`, or similar alternatives.
|
||||||
|
'';
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,13 @@
|
||||||
|
# Camera GUI module
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - Camera GUI package (default: snapshot)
|
||||||
|
# - libcamera (always installed, required backend)
|
||||||
|
#
|
||||||
|
# Notes:
|
||||||
|
# - You can override the GUI package with another (e.g., cheese, kamoso)
|
||||||
|
#
|
||||||
|
|
||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
let
|
let
|
||||||
|
|
@ -9,12 +19,16 @@ in
|
||||||
|
|
||||||
package = lib.mkOption {
|
package = lib.mkOption {
|
||||||
type = lib.types.package;
|
type = lib.types.package;
|
||||||
default = pkgs.camera;
|
default = pkgs.snapshot;
|
||||||
description = "Package to install for camera.";
|
example = pkgs.cheese;
|
||||||
|
description = "Camera GUI package to install.";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
config = lib.mkIf cfg.enable {
|
||||||
home.packages = [ cfg.package ];
|
home.packages = [
|
||||||
|
cfg.package
|
||||||
|
pkgs.libcamera
|
||||||
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@
|
||||||
|
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
|
./image-viewer.nix
|
||||||
./krita.nix
|
./krita.nix
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
||||||
30
Modules/Home/GUI-Apps/Multimedia/Graphics/image-viewer.nix
Normal file
30
Modules/Home/GUI-Apps/Multimedia/Graphics/image-viewer.nix
Normal file
|
|
@ -0,0 +1,30 @@
|
||||||
|
# Image Viewer
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - Installs a chosen image viewer application
|
||||||
|
#
|
||||||
|
# Notes:
|
||||||
|
# - Defaults to Gwenview
|
||||||
|
#
|
||||||
|
|
||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
cfg = config.nyx-module.home.image-viewer;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.nyx-module.home.image-viewer = {
|
||||||
|
enable = lib.mkEnableOption "Enable image viewer (home module)";
|
||||||
|
|
||||||
|
package = lib.mkOption {
|
||||||
|
type = lib.types.package;
|
||||||
|
default = pkgs.gwenview;
|
||||||
|
example = pkgs.feh;
|
||||||
|
description = "Image viewer package to install (e.g. gwenview, feh, imv).";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
home.packages = [ cfg.package ];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
@ -1,3 +1,12 @@
|
||||||
|
# Krita (Digital Painting Software)
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - Krita package (open-source digital painting and illustration software)
|
||||||
|
#
|
||||||
|
# Notes:
|
||||||
|
# - Installed via home.packages
|
||||||
|
#
|
||||||
|
|
||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
let
|
let
|
||||||
|
|
@ -5,16 +14,12 @@ let
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options.nyx-module.home.krita = {
|
options.nyx-module.home.krita = {
|
||||||
enable = lib.mkEnableOption "Enable krita (home) module";
|
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 {
|
config = lib.mkIf cfg.enable {
|
||||||
home.packages = [ cfg.package ];
|
home.packages = with pkgs; [
|
||||||
|
krita
|
||||||
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./kdenlive.nix
|
./kdenlive.nix
|
||||||
|
./video-player.nix
|
||||||
./zoom.nix
|
./zoom.nix
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,15 @@
|
||||||
|
# Kdenlive (video editor)
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - Kdenlive video editor
|
||||||
|
# - Installed via home.packages
|
||||||
|
#
|
||||||
|
# Notes:
|
||||||
|
# - Package location depends on nixpkgs version:
|
||||||
|
# * pkgs.kdePackages.kdenlive (preferred, modern KDE split)
|
||||||
|
# * pkgs.libsForQt5.kdenlive (older releases, fallback)
|
||||||
|
#
|
||||||
|
|
||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
let
|
let
|
||||||
|
|
@ -5,16 +17,12 @@ let
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options.nyx-module.home.kdenlive = {
|
options.nyx-module.home.kdenlive = {
|
||||||
enable = lib.mkEnableOption "Enable kdenlive (home) module";
|
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 {
|
config = lib.mkIf cfg.enable {
|
||||||
home.packages = [ cfg.package ];
|
home.packages = [
|
||||||
|
(pkgs.kdePackages.kdenlive or pkgs.libsForQt5.kdenlive)
|
||||||
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
39
Modules/Home/GUI-Apps/Multimedia/Video/video-player.nix
Normal file
39
Modules/Home/GUI-Apps/Multimedia/Video/video-player.nix
Normal file
|
|
@ -0,0 +1,39 @@
|
||||||
|
# Video Player(s)
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - Installs one or more chosen video/media players
|
||||||
|
#
|
||||||
|
# Notes:
|
||||||
|
# - Defaults to [ vlc ]
|
||||||
|
#
|
||||||
|
|
||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
cfg = config.nyx-module.home.video-player;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.nyx-module.home.video-player = {
|
||||||
|
enable = lib.mkEnableOption "Enable video players (home module)";
|
||||||
|
|
||||||
|
packages = lib.mkOption {
|
||||||
|
type = lib.types.listOf lib.types.package;
|
||||||
|
default = [ pkgs.vlc ];
|
||||||
|
example = [ pkgs.vlc pkgs.mpv pkgs.celluloid ];
|
||||||
|
description = "List of video/media players to install (e.g. vlc, mpv, celluloid).";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
home.packages = cfg.packages;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
##########
|
||||||
|
# Example
|
||||||
|
##########
|
||||||
|
|
||||||
|
# nyx-module.home.video-player = {
|
||||||
|
# enable = true;
|
||||||
|
# packages = [ pkgs.vlc pkgs.mpv ];
|
||||||
|
# };
|
||||||
|
|
@ -1,3 +1,15 @@
|
||||||
|
# Zoom (video conferencing client)
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - Zoom package (default: pkgs.zoom-us)
|
||||||
|
#
|
||||||
|
# Options:
|
||||||
|
# - `package`: override the package (e.g. pkgs.zoom)
|
||||||
|
#
|
||||||
|
# Notes:
|
||||||
|
# - Installed via home.packages
|
||||||
|
#
|
||||||
|
|
||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
let
|
let
|
||||||
|
|
@ -5,12 +17,12 @@ let
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options.nyx-module.home.zoom = {
|
options.nyx-module.home.zoom = {
|
||||||
enable = lib.mkEnableOption "Enable zoom (home) module";
|
enable = lib.mkEnableOption "Enable Zoom (home) module";
|
||||||
|
|
||||||
package = lib.mkOption {
|
package = lib.mkOption {
|
||||||
type = lib.types.package;
|
type = lib.types.package;
|
||||||
default = pkgs.zoom;
|
default = pkgs.zoom-us;
|
||||||
description = "Package to install for zoom.";
|
description = "Zoom package to install (e.g., pkgs.zoom-us).";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,13 @@
|
||||||
|
# Obsidian (note-taking / PKM app)
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - Obsidian package via home.packages
|
||||||
|
#
|
||||||
|
# Notes:
|
||||||
|
# - Consider adding theming support later
|
||||||
|
# (e.g., https://github.com/jackiejude/obsidian-temple-os)
|
||||||
|
#
|
||||||
|
|
||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
let
|
let
|
||||||
|
|
@ -5,16 +15,10 @@ let
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options.nyx-module.home.obsidian = {
|
options.nyx-module.home.obsidian = {
|
||||||
enable = lib.mkEnableOption "Enable obsidian (home) module";
|
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 {
|
config = lib.mkIf cfg.enable {
|
||||||
home.packages = [ cfg.package ];
|
home.packages = [ pkgs.obsidian ];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,9 @@
|
||||||
|
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./office-apps.nix
|
./libreoffice.nix
|
||||||
|
./pdf-reader.nix
|
||||||
./printer-scan.nix
|
./printer-scan.nix
|
||||||
|
./thunderbird.nix
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
||||||
23
Modules/Home/GUI-Apps/Office/Productivity/libreoffice.nix
Normal file
23
Modules/Home/GUI-Apps/Office/Productivity/libreoffice.nix
Normal file
|
|
@ -0,0 +1,23 @@
|
||||||
|
# LibreOffice (office suite)
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - LibreOffice package via home.packages
|
||||||
|
#
|
||||||
|
# Notes:
|
||||||
|
# - Simple module, just adds LibreOffice to the user environment
|
||||||
|
#
|
||||||
|
|
||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
cfg = config.nyx-module.home.libreoffice;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.nyx-module.home.libreoffice = {
|
||||||
|
enable = lib.mkEnableOption "Enable LibreOffice (home module)";
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
home.packages = [ pkgs.libreoffice ];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
@ -1,20 +0,0 @@
|
||||||
{ 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 ];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
30
Modules/Home/GUI-Apps/Office/Productivity/pdf-reader.nix
Normal file
30
Modules/Home/GUI-Apps/Office/Productivity/pdf-reader.nix
Normal file
|
|
@ -0,0 +1,30 @@
|
||||||
|
# PDF Viewer / Scanner
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - Install a chosen PDF or scanning GUI application
|
||||||
|
#
|
||||||
|
# Notes:
|
||||||
|
# - Defaults to Okular
|
||||||
|
#
|
||||||
|
|
||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
cfg = config.nyx-module.home.pdf-viewer;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.nyx-module.home.pdf-viewer = {
|
||||||
|
enable = lib.mkEnableOption "Enable PDF (home module)";
|
||||||
|
|
||||||
|
package = lib.mkOption {
|
||||||
|
type = lib.types.package;
|
||||||
|
default = pkgs.kdeApplications.okular;
|
||||||
|
example = pkgs.evince;
|
||||||
|
description = "PDF or scanning GUI package to install (e.g. Okular, Evince, Xournal++).";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
home.packages = [ cfg.package ];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
@ -1,16 +1,27 @@
|
||||||
|
# Printer GUI (scanning/printing tools)
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - Configurable GUI package for printing/scanning via home.packages
|
||||||
|
#
|
||||||
|
# Notes:
|
||||||
|
# - Default is `simple-scan` (GNOME Document Scanner)
|
||||||
|
# - Can be overridden with another package such as `system-config-printer`
|
||||||
|
#
|
||||||
|
|
||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
let
|
let
|
||||||
cfg = config.nyx-module.home.printer-scan;
|
cfg = config.nyx-module.home.printer;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options.nyx-module.home.printer-scan = {
|
options.nyx-module.home.printer = {
|
||||||
enable = lib.mkEnableOption "Enable printer-scan (home) module";
|
enable = lib.mkEnableOption "Enable printer GUI (home module)";
|
||||||
|
|
||||||
package = lib.mkOption {
|
package = lib.mkOption {
|
||||||
type = lib.types.package;
|
type = lib.types.package;
|
||||||
default = pkgs.printer-scan;
|
default = pkgs.simple-scan;
|
||||||
description = "Package to install for printer-scan.";
|
example = pkgs.system-config-printer;
|
||||||
|
description = "Printer/scanner GUI package to install.";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
23
Modules/Home/GUI-Apps/Office/Productivity/thunderbird.nix
Normal file
23
Modules/Home/GUI-Apps/Office/Productivity/thunderbird.nix
Normal file
|
|
@ -0,0 +1,23 @@
|
||||||
|
# Thunderbird (email client)
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - Thunderbird package via home.packages
|
||||||
|
#
|
||||||
|
# Notes:
|
||||||
|
# - Simple module, just adds Thunderbird to the user environment
|
||||||
|
#
|
||||||
|
|
||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
cfg = config.nyx-module.home.thunderbird;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.nyx-module.home.thunderbird = {
|
||||||
|
enable = lib.mkEnableOption "Enable Thunderbird (home module)";
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
home.packages = [ pkgs.thunderbird ];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
@ -1,7 +0,0 @@
|
||||||
{ config, lib, pkgs, ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
imports = [
|
|
||||||
./standard-apps.nix
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
@ -1,20 +0,0 @@
|
||||||
{ 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 ];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,3 +1,15 @@
|
||||||
|
# ProtonVPN (Home Module)
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - ProtonVPN GUI client
|
||||||
|
#
|
||||||
|
# Options:
|
||||||
|
# - enable → Enable ProtonVPN client
|
||||||
|
#
|
||||||
|
# Notes:
|
||||||
|
# - GUI only by default (CLI version available as pkgs.protonvpn-cli)
|
||||||
|
|
||||||
|
|
||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
let
|
let
|
||||||
|
|
@ -5,16 +17,12 @@ let
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options.nyx-module.home.protonvpn = {
|
options.nyx-module.home.protonvpn = {
|
||||||
enable = lib.mkEnableOption "Enable protonvpn (home) module";
|
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 {
|
config = lib.mkIf cfg.enable {
|
||||||
home.packages = [ cfg.package ];
|
home.packages = with pkgs; [
|
||||||
|
protonvpn-gui
|
||||||
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,6 @@
|
||||||
./Gaming
|
./Gaming
|
||||||
./Multimedia
|
./Multimedia
|
||||||
./Office
|
./Office
|
||||||
./System-Tools
|
|
||||||
./VPN
|
./VPN
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,20 +1,40 @@
|
||||||
|
# CLI Tools (Home Module)
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - A curated set of command-line utilities in user’s environment
|
||||||
|
# - Examples: fastfetch, hyfetch, bat, fzf, tree, lsd, tmux
|
||||||
|
#
|
||||||
|
# Options:
|
||||||
|
# - enable → Enable CLI tools collection
|
||||||
|
# - extra → List of extra packages to install
|
||||||
|
|
||||||
|
|
||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
let
|
let
|
||||||
cfg = config.nyx-module.home.tools;
|
cfg = config.nyx-module.home.cli-tools;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options.nyx-module.home.tools = {
|
options.nyx-module.home.cli-tools = {
|
||||||
enable = lib.mkEnableOption "Enable tools (home) module";
|
enable = lib.mkEnableOption "Enable CLI tools (home module)";
|
||||||
|
|
||||||
package = lib.mkOption {
|
extra = lib.mkOption {
|
||||||
type = lib.types.package;
|
type = lib.types.listOf lib.types.package;
|
||||||
default = pkgs.tools;
|
default = [];
|
||||||
description = "Package to install for tools.";
|
example = [ pkgs.ripgrep pkgs.htop ];
|
||||||
|
description = "Extra CLI tools to install in addition to the defaults.";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
config = lib.mkIf cfg.enable {
|
||||||
home.packages = [ cfg.package ];
|
home.packages = with pkgs; [
|
||||||
|
fastfetch
|
||||||
|
hyfetch
|
||||||
|
bat
|
||||||
|
fzf
|
||||||
|
tree
|
||||||
|
lsd
|
||||||
|
tmux
|
||||||
|
] ++ cfg.extra;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,12 @@
|
||||||
|
# Zsh (Home Module)
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - Zsh shell in the user profile
|
||||||
|
# - Zsh completion, autosuggestions, and syntax highlighting
|
||||||
|
#
|
||||||
|
# Options:
|
||||||
|
# - enable → Enable Zsh in the user profile
|
||||||
|
|
||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
let
|
let
|
||||||
|
|
@ -5,16 +14,44 @@ let
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options.nyx-module.home.zsh = {
|
options.nyx-module.home.zsh = {
|
||||||
enable = lib.mkEnableOption "Enable zsh (home) module";
|
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 {
|
config = lib.mkIf cfg.enable {
|
||||||
home.packages = [ cfg.package ];
|
programs.zsh = {
|
||||||
|
enable = true;
|
||||||
|
enableCompletion = true;
|
||||||
|
|
||||||
|
plugins = [
|
||||||
|
{
|
||||||
|
name = "zsh-autosuggestions";
|
||||||
|
src = pkgs.zsh-autosuggestions;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "zsh-syntax-highlighting";
|
||||||
|
src = pkgs.zsh-syntax-highlighting;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
initExtra = ''
|
||||||
|
hyfetch
|
||||||
|
|
||||||
|
alias ls='lsd'
|
||||||
|
alias l='ls -l'
|
||||||
|
alias la='ls -a'
|
||||||
|
alias lla='ls -la'
|
||||||
|
alias lt='ls --tree'
|
||||||
|
|
||||||
|
HISTFILE=~/.zsh_history
|
||||||
|
HISTSIZE=10000
|
||||||
|
SAVEHIST=10000
|
||||||
|
setopt appendhistory
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
zsh-autosuggestions
|
||||||
|
zsh-syntax-highlighting
|
||||||
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,18 @@
|
||||||
|
# Private Webapps
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - Browser-based desktop entries for personal/private webapps
|
||||||
|
# - Currently supported:
|
||||||
|
# • WhatsApp
|
||||||
|
#
|
||||||
|
# Options:
|
||||||
|
# - browser → Selects which browser package to use (default: chromium)
|
||||||
|
# - whatsapp → Enable WhatsApp webapp launcher
|
||||||
|
#
|
||||||
|
# Notes:
|
||||||
|
# - Uses --app mode to create minimal browser windows
|
||||||
|
# - Additional services can be added following the same pattern
|
||||||
|
|
||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
let
|
let
|
||||||
|
|
@ -5,16 +20,28 @@ let
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options.nyx-module.home.private-webapps = {
|
options.nyx-module.home.private-webapps = {
|
||||||
enable = lib.mkEnableOption "Enable private-webapps (home) module";
|
enable = lib.mkEnableOption "Enable private webapps (home module)";
|
||||||
|
|
||||||
package = lib.mkOption {
|
browser = lib.mkOption {
|
||||||
type = lib.types.package;
|
type = lib.types.package;
|
||||||
default = pkgs.private-webapps;
|
default = pkgs.chromium;
|
||||||
description = "Package to install for private-webapps.";
|
example = pkgs.firefox;
|
||||||
|
description = "Browser package to use for private webapps.";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
whatsapp.enable = lib.mkEnableOption "Enable WhatsApp webapp entry";
|
||||||
};
|
};
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
config = lib.mkIf cfg.enable {
|
||||||
home.packages = [ cfg.package ];
|
xdg.desktopEntries = lib.mkMerge [
|
||||||
|
(lib.mkIf cfg.whatsapp.enable {
|
||||||
|
whatsapp = {
|
||||||
|
name = "WhatsApp";
|
||||||
|
exec = "${cfg.browser}/bin/${cfg.browser.pname} --app=https://web.whatsapp.com/";
|
||||||
|
icon = "WhatsApp";
|
||||||
|
type = "Application";
|
||||||
|
};
|
||||||
|
})
|
||||||
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,24 @@
|
||||||
|
# Work Webapps
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - Browser-based desktop entries for work-related webapps
|
||||||
|
# - Currently supported:
|
||||||
|
# • Slack
|
||||||
|
# • Microsoft Teams
|
||||||
|
# • Outlook Web
|
||||||
|
# • Microsoft Entra
|
||||||
|
#
|
||||||
|
# Options:
|
||||||
|
# - browser → Selects which browser package to use (default: chromium)
|
||||||
|
# - slack → Enable Slack webapp launcher
|
||||||
|
# - teams → Enable Teams webapp launcher
|
||||||
|
# - outlook → Enable Outlook webapp launcher
|
||||||
|
# - entra → Enable Entra webapp launcher
|
||||||
|
#
|
||||||
|
# Notes:
|
||||||
|
# - Uses --app mode for minimal windows (like PWAs)
|
||||||
|
# - Outlook entry uses a custom profile directory for isolation
|
||||||
|
|
||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
let
|
let
|
||||||
|
|
@ -5,16 +26,58 @@ let
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options.nyx-module.home.work-webapps = {
|
options.nyx-module.home.work-webapps = {
|
||||||
enable = lib.mkEnableOption "Enable work-webapps (home) module";
|
enable = lib.mkEnableOption "Enable work webapps (home module)";
|
||||||
|
|
||||||
package = lib.mkOption {
|
browser = lib.mkOption {
|
||||||
type = lib.types.package;
|
type = lib.types.package;
|
||||||
default = pkgs.work-webapps;
|
default = pkgs.chromium;
|
||||||
description = "Package to install for work-webapps.";
|
example = pkgs.firefox;
|
||||||
|
description = "Browser package to use for private webapps.";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
slack.enable = lib.mkEnableOption "Enable Slack webapp entry";
|
||||||
|
teams.enable = lib.mkEnableOption "Enable Microsoft Teams webapp entry";
|
||||||
|
outlook.enable = lib.mkEnableOption "Enable Outlook webapp entry";
|
||||||
|
entra.enable = lib.mkEnableOption "Enable Microsoft Entra webapp entry";
|
||||||
};
|
};
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
config = lib.mkIf cfg.enable {
|
||||||
home.packages = [ cfg.package ];
|
xdg.desktopEntries = lib.mkMerge [
|
||||||
|
(lib.mkIf cfg.slack.enable {
|
||||||
|
slack = {
|
||||||
|
name = "Slack";
|
||||||
|
exec = "${cfg.browser}/bin/${cfg.browser.pname} --app=https://app.slack.com/client";
|
||||||
|
icon = "slack";
|
||||||
|
type = "Application";
|
||||||
|
};
|
||||||
|
})
|
||||||
|
|
||||||
|
(lib.mkIf cfg.teams.enable {
|
||||||
|
teams = {
|
||||||
|
name = "Microsoft Teams";
|
||||||
|
exec = "${cfg.browser}/bin/${cfg.browser.pname} --app=https://teams.microsoft.com";
|
||||||
|
icon = "teams";
|
||||||
|
type = "Application";
|
||||||
|
};
|
||||||
|
})
|
||||||
|
|
||||||
|
(lib.mkIf cfg.outlook.enable {
|
||||||
|
outlook = {
|
||||||
|
name = "Outlook Web";
|
||||||
|
exec = "${cfg.browser}/bin/${cfg.browser.pname} --user-data-dir=/home/${config.home.username}/.local/share/ice/profiles/Outlook4305 --profile-directory=Default --app-id=cifhbcnohmdccbgoicgdjpfamggdegmo";
|
||||||
|
icon = "outlook";
|
||||||
|
type = "Application";
|
||||||
|
};
|
||||||
|
})
|
||||||
|
|
||||||
|
(lib.mkIf cfg.entra.enable {
|
||||||
|
entra = {
|
||||||
|
name = "Microsoft Entra";
|
||||||
|
exec = "${cfg.browser}/bin/${cfg.browser.pname} --app=https://entra.microsoft.com";
|
||||||
|
icon = "microsoft";
|
||||||
|
type = "Application";
|
||||||
|
};
|
||||||
|
})
|
||||||
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,20 @@
|
||||||
|
# Steam (System Module)
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - Steam client
|
||||||
|
# - Optional firewall openings for:
|
||||||
|
# * Remote Play
|
||||||
|
# * Source Dedicated Server
|
||||||
|
# * Local Network Game Transfers
|
||||||
|
# - ProtonUp tool for managing Proton versions
|
||||||
|
#
|
||||||
|
# Options:
|
||||||
|
# - enable → Enable Steam system module
|
||||||
|
# - openFirewall.remotePlay → Open firewall for Remote Play
|
||||||
|
# - openFirewall.dedicatedServer → Open firewall for Source Dedicated Server
|
||||||
|
# - openFirewall.localNetworkGameTransfers → Open firewall for LAN transfers
|
||||||
|
#
|
||||||
|
|
||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
let
|
let
|
||||||
|
|
@ -5,16 +22,25 @@ let
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options.nyx-module.system.steam = {
|
options.nyx-module.system.steam = {
|
||||||
enable = lib.mkEnableOption "Enable steam (system) module";
|
enable = lib.mkEnableOption "Enable Steam (system module)";
|
||||||
|
|
||||||
package = lib.mkOption {
|
openFirewall = {
|
||||||
type = lib.types.package;
|
remotePlay = lib.mkEnableOption "Open firewall for Steam Remote Play";
|
||||||
default = pkgs.steam;
|
dedicatedServer = lib.mkEnableOption "Open firewall for Source Dedicated Server";
|
||||||
description = "Package to install for steam.";
|
localNetworkGameTransfers = lib.mkEnableOption "Open firewall for Steam Local Network Game Transfers";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
config = lib.mkIf cfg.enable {
|
||||||
environment.systemPackages = [ cfg.package ];
|
programs.steam = {
|
||||||
|
enable = true;
|
||||||
|
remotePlay.openFirewall = cfg.openFirewall.remotePlay;
|
||||||
|
dedicatedServer.openFirewall = cfg.openFirewall.dedicatedServer;
|
||||||
|
localNetworkGameTransfers.openFirewall = cfg.openFirewall.localNetworkGameTransfers;
|
||||||
|
};
|
||||||
|
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
protonup
|
||||||
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,20 +0,0 @@
|
||||||
{ 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 ];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,8 +0,0 @@
|
||||||
{ config, lib, pkgs, ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
imports = [
|
|
||||||
./all-grub.nix
|
|
||||||
./minegrub.nix
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
@ -1,20 +0,0 @@
|
||||||
{ 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 ];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,3 +1,13 @@
|
||||||
|
# Flatpak (System Module)
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - Flatpak package manager
|
||||||
|
# - Flatpak service integration
|
||||||
|
# - XDG portals for sandboxed apps
|
||||||
|
#
|
||||||
|
# Options:
|
||||||
|
# - enable → Enable Flatpak system module
|
||||||
|
#
|
||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
let
|
let
|
||||||
|
|
@ -5,16 +15,22 @@ let
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options.nyx-module.system.flatpak = {
|
options.nyx-module.system.flatpak = {
|
||||||
enable = lib.mkEnableOption "Enable flatpak (system) module";
|
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 {
|
config = lib.mkIf cfg.enable {
|
||||||
environment.systemPackages = [ cfg.package ];
|
services.flatpak.enable = true;
|
||||||
|
|
||||||
|
# Flatpak apps need XDG portals for proper desktop integration
|
||||||
|
xdg.portal = {
|
||||||
|
enable = true;
|
||||||
|
extraPortals = with pkgs; [
|
||||||
|
xdg-desktop-portal-gtk # For GTK desktops
|
||||||
|
# xdg-desktop-portal-kde # Uncomment for KDE Plasma
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
# Optional explicit installation (not strictly needed)
|
||||||
|
environment.systemPackages = [ pkgs.flatpak ];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,15 @@
|
||||||
|
# Wireshark (System Module)
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - Wireshark installation
|
||||||
|
# - Proper dumpcap permissions
|
||||||
|
# - Adds user to `wireshark` group
|
||||||
|
#
|
||||||
|
# Options:
|
||||||
|
# - enable → Enable Wireshark system module
|
||||||
|
# - username → User to add to the wireshark group (required)
|
||||||
|
#
|
||||||
|
|
||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
let
|
let
|
||||||
|
|
@ -5,16 +17,31 @@ let
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options.nyx-module.system.wireshark = {
|
options.nyx-module.system.wireshark = {
|
||||||
enable = lib.mkEnableOption "Enable wireshark (system) module";
|
enable = lib.mkEnableOption "Enable Wireshark (system module)";
|
||||||
|
|
||||||
package = lib.mkOption {
|
username = lib.mkOption {
|
||||||
type = lib.types.package;
|
type = lib.types.str;
|
||||||
default = pkgs.wireshark;
|
example = "alice";
|
||||||
description = "Package to install for wireshark.";
|
description = "User to add to the wireshark group.";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
config = lib.mkIf cfg.enable {
|
||||||
environment.systemPackages = [ cfg.package ];
|
environment.systemPackages = [ pkgs.wireshark ];
|
||||||
|
|
||||||
|
programs.wireshark = {
|
||||||
|
enable = true; # Installs wireshark + sets dumpcap caps
|
||||||
|
package = pkgs.wireshark;
|
||||||
|
};
|
||||||
|
|
||||||
|
# Add user to wireshark group
|
||||||
|
users.users.${cfg.username}.extraGroups = [ "wireshark" ];
|
||||||
|
|
||||||
|
assertions = [
|
||||||
|
{
|
||||||
|
assertion = cfg.username != "";
|
||||||
|
message = "nyx-module.system.wireshark.username must be set to a valid user.";
|
||||||
|
}
|
||||||
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@
|
||||||
imports = [
|
imports = [
|
||||||
./docker.nix
|
./docker.nix
|
||||||
./openssh.nix
|
./openssh.nix
|
||||||
|
./podman.nix
|
||||||
./vm.nix
|
./vm.nix
|
||||||
./zsh.nix
|
./zsh.nix
|
||||||
];
|
];
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,21 @@
|
||||||
|
# Docker (System Module)
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - Docker runtime and CLI
|
||||||
|
# - Docker Compose
|
||||||
|
# - User access via `docker` group
|
||||||
|
# - Optional rootless mode and cgroup v2 support
|
||||||
|
#
|
||||||
|
# Options:
|
||||||
|
# - enable → Enable Docker system module
|
||||||
|
# - username → User to add to the docker group
|
||||||
|
# - enableOnBoot → Start Docker service on boot (default: true)
|
||||||
|
# - rootless → Enable Docker rootless mode (disabled by default)
|
||||||
|
#
|
||||||
|
# Notes:
|
||||||
|
# - Rootless mode is disabled by default
|
||||||
|
# - Uses cgroup v2 for better resource management on modern kernels
|
||||||
|
|
||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
let
|
let
|
||||||
|
|
@ -5,16 +23,46 @@ let
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options.nyx-module.system.docker = {
|
options.nyx-module.system.docker = {
|
||||||
enable = lib.mkEnableOption "Enable docker (system) module";
|
enable = lib.mkEnableOption "Enable Docker (system module)";
|
||||||
|
|
||||||
package = lib.mkOption {
|
username = lib.mkOption {
|
||||||
type = lib.types.package;
|
type = lib.types.str;
|
||||||
default = pkgs.docker;
|
example = "alice";
|
||||||
description = "Package to install for docker.";
|
description = "User to add to the docker group.";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enableOnBoot = lib.mkOption {
|
||||||
|
type = lib.types.bool;
|
||||||
|
default = true;
|
||||||
|
description = "Whether to enable Docker service on boot.";
|
||||||
|
};
|
||||||
|
|
||||||
|
rootless = lib.mkEnableOption "Enable rootless Docker mode";
|
||||||
};
|
};
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
config = lib.mkIf cfg.enable {
|
||||||
environment.systemPackages = [ cfg.package ];
|
virtualisation.docker = {
|
||||||
|
enable = true;
|
||||||
|
enableOnBoot = cfg.enableOnBoot;
|
||||||
|
rootless.enable = cfg.rootless;
|
||||||
|
};
|
||||||
|
|
||||||
|
users.users.${cfg.username}.extraGroups = [ "docker" ];
|
||||||
|
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
docker
|
||||||
|
docker-compose
|
||||||
|
];
|
||||||
|
|
||||||
|
# Optional: Docker cgroup v2 (usually enabled by default in modern NixOS)
|
||||||
|
boot.kernelParams = [ "cgroup_enable=memory" "cgroup_memory=1" ];
|
||||||
|
|
||||||
|
|
||||||
|
assertions = [
|
||||||
|
{
|
||||||
|
assertion = cfg.username != "";
|
||||||
|
message = "nyx-module.system.docker.username must be set to a valid user.";
|
||||||
|
}
|
||||||
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,17 @@
|
||||||
|
# OpenSSH (System Module)
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - OpenSSH server (sshd) service
|
||||||
|
#
|
||||||
|
# Options:
|
||||||
|
# - enable → Enable OpenSSH system module
|
||||||
|
# - passwordAuth → Allow password authentication (default: false)
|
||||||
|
# - permitRootLogin → Permit root login (default: "no")
|
||||||
|
#
|
||||||
|
# Notes:
|
||||||
|
# - By default, password authentication is disabled for better security
|
||||||
|
# - Root login is disabled unless explicitly enabled
|
||||||
|
|
||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
let
|
let
|
||||||
|
|
@ -5,16 +19,29 @@ let
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options.nyx-module.system.openssh = {
|
options.nyx-module.system.openssh = {
|
||||||
enable = lib.mkEnableOption "Enable openssh (system) module";
|
enable = lib.mkEnableOption "Enable OpenSSH (system module)";
|
||||||
|
|
||||||
package = lib.mkOption {
|
passwordAuth = lib.mkOption {
|
||||||
type = lib.types.package;
|
type = lib.types.bool;
|
||||||
default = pkgs.openssh;
|
default = false;
|
||||||
description = "Package to install for openssh.";
|
description = "Whether to allow password authentication.";
|
||||||
|
};
|
||||||
|
|
||||||
|
permitRootLogin = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
default = "no";
|
||||||
|
example = "prohibit-password";
|
||||||
|
description = "Whether to permit root login via SSH.";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
config = lib.mkIf cfg.enable {
|
||||||
environment.systemPackages = [ cfg.package ];
|
services.openssh = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
PasswordAuthentication = cfg.passwordAuth;
|
||||||
|
PermitRootLogin = cfg.permitRootLogin;
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
53
Modules/System/Application/cli/podman.nix
Normal file
53
Modules/System/Application/cli/podman.nix
Normal file
|
|
@ -0,0 +1,53 @@
|
||||||
|
# Podman (System Module)
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - Podman runtime and CLI
|
||||||
|
# - Podman Compose
|
||||||
|
# - User access via `podman` group
|
||||||
|
#
|
||||||
|
# Options:
|
||||||
|
# - enable → Enable Podman system module
|
||||||
|
# - username → User to add to the podman group
|
||||||
|
#
|
||||||
|
# Notes:
|
||||||
|
# - Adds podman + podman-compose to system packages
|
||||||
|
# - Enables D-Bus socket activation for Podman
|
||||||
|
#
|
||||||
|
|
||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
cfg = config.nyx-module.system.podman;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.nyx-module.system.podman = {
|
||||||
|
enable = lib.mkEnableOption "Enable Podman (system module)";
|
||||||
|
|
||||||
|
username = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
example = "alice";
|
||||||
|
description = "User to add to the podman group.";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
virtualisation.podman.enable = true;
|
||||||
|
|
||||||
|
users.users.${cfg.username}.extraGroups = [ "podman" ];
|
||||||
|
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
podman
|
||||||
|
podman-compose
|
||||||
|
];
|
||||||
|
|
||||||
|
# Optional: enable Podman socket activation
|
||||||
|
services.dbus.packages = [ pkgs.podman ];
|
||||||
|
|
||||||
|
assertions = [
|
||||||
|
{
|
||||||
|
assertion = cfg.username != "";
|
||||||
|
message = "nyx-module.system.podman.username must be set to a valid user.";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
@ -1,3 +1,21 @@
|
||||||
|
# VM (System Module)
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - QEMU/KVM virtualization via libvirt
|
||||||
|
# - virt-manager GUI
|
||||||
|
# - User access via libvirtd and kvm groups
|
||||||
|
# - Spice, dnsmasq, and bridge-utils for networking and display
|
||||||
|
#
|
||||||
|
# Options:
|
||||||
|
# - enable → Enable VM system module
|
||||||
|
# - username → User to add to virtualization groups (required)
|
||||||
|
#
|
||||||
|
# Notes:
|
||||||
|
# - QEMU runs as root by default (can be adjusted)
|
||||||
|
# - virt-manager GUI is enabled automatically
|
||||||
|
# - Only generic "kvm" kernel module is forced (host picks intel/amd)
|
||||||
|
#
|
||||||
|
|
||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
let
|
let
|
||||||
|
|
@ -5,16 +23,45 @@ let
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options.nyx-module.system.vm = {
|
options.nyx-module.system.vm = {
|
||||||
enable = lib.mkEnableOption "Enable vm (system) module";
|
enable = lib.mkEnableOption "Enable VM (system module)";
|
||||||
|
|
||||||
package = lib.mkOption {
|
username = lib.mkOption {
|
||||||
type = lib.types.package;
|
type = lib.types.str;
|
||||||
default = pkgs.vm;
|
example = "alice";
|
||||||
description = "Package to install for vm.";
|
description = "User to add to virtualization groups.";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
config = lib.mkIf cfg.enable {
|
||||||
environment.systemPackages = [ cfg.package ];
|
environment.systemPackages = with pkgs; [
|
||||||
|
virt-manager
|
||||||
|
spice-gtk
|
||||||
|
dnsmasq
|
||||||
|
bridge-utils
|
||||||
|
];
|
||||||
|
|
||||||
|
virtualisation.libvirtd = {
|
||||||
|
enable = true;
|
||||||
|
qemu = {
|
||||||
|
package = pkgs.qemu_full;
|
||||||
|
runAsRoot = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# Add user to groups
|
||||||
|
users.users.${cfg.username}.extraGroups = [ "libvirtd" "kvm" ];
|
||||||
|
|
||||||
|
# Enable kernel modules for virtualization
|
||||||
|
boot.kernelModules = [ "kvm" ];
|
||||||
|
|
||||||
|
# Enable GUI management tool
|
||||||
|
programs.virt-manager.enable = true;
|
||||||
|
|
||||||
|
assertions = [
|
||||||
|
{
|
||||||
|
assertion = cfg.username != "";
|
||||||
|
message = "nyx-module.system.vm.username must be set to a valid user.";
|
||||||
|
}
|
||||||
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,17 @@
|
||||||
|
# Zsh (System Module)
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - Zsh shell
|
||||||
|
# - oh-my-zsh integration
|
||||||
|
# - Theme + plugins support
|
||||||
|
#
|
||||||
|
# Options:
|
||||||
|
# - enable → Enable Zsh system module
|
||||||
|
# - ohMyZsh → Enable oh-my-zsh integration
|
||||||
|
# - theme → oh-my-zsh theme (default: "xiong-chiamiov-plus")
|
||||||
|
# - plugins → List of oh-my-zsh plugins (default: [ "git" ])
|
||||||
|
#
|
||||||
|
|
||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
let
|
let
|
||||||
|
|
@ -5,16 +19,34 @@ let
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options.nyx-module.system.zsh = {
|
options.nyx-module.system.zsh = {
|
||||||
enable = lib.mkEnableOption "Enable zsh (system) module";
|
enable = lib.mkEnableOption "Enable Zsh (system module)";
|
||||||
|
|
||||||
package = lib.mkOption {
|
ohMyZsh = lib.mkEnableOption "Enable oh-my-zsh integration";
|
||||||
type = lib.types.package;
|
|
||||||
default = pkgs.zsh;
|
theme = lib.mkOption {
|
||||||
description = "Package to install for zsh.";
|
type = lib.types.str;
|
||||||
|
default = "xiong-chiamiov-plus";
|
||||||
|
description = "oh-my-zsh theme to use.";
|
||||||
|
};
|
||||||
|
|
||||||
|
plugins = lib.mkOption {
|
||||||
|
type = lib.types.listOf lib.types.str;
|
||||||
|
default = [ "git" ];
|
||||||
|
description = "List of oh-my-zsh plugins to enable.";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
config = lib.mkIf cfg.enable {
|
||||||
environment.systemPackages = [ cfg.package ];
|
programs.zsh = {
|
||||||
|
enable = true;
|
||||||
|
ohMyZsh = lib.mkIf cfg.ohMyZsh {
|
||||||
|
enable = true;
|
||||||
|
theme = cfg.theme;
|
||||||
|
plugins = cfg.plugins;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# Add zsh to available shells
|
||||||
|
environment.shells = with pkgs; [ zsh ];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,6 @@
|
||||||
imports = [
|
imports = [
|
||||||
./cli
|
./cli
|
||||||
./Gaming
|
./Gaming
|
||||||
./Grub
|
|
||||||
./Special-Applications
|
./Special-Applications
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,7 +0,0 @@
|
||||||
{ config, lib, pkgs, ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
imports = [
|
|
||||||
./kde.nix
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
@ -1,20 +0,0 @@
|
||||||
{ 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 ];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,7 +0,0 @@
|
||||||
{ config, lib, pkgs, ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
imports = [
|
|
||||||
./KDE
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
@ -1,3 +1,14 @@
|
||||||
|
# C Compiler (System Module)
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - GCC (C/C++)
|
||||||
|
# - Clang (alternative C/C++)
|
||||||
|
# - Mono (C#)
|
||||||
|
#
|
||||||
|
# Options:
|
||||||
|
# - enable → Enable C compiler toolchain
|
||||||
|
#
|
||||||
|
|
||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
let
|
let
|
||||||
|
|
@ -5,16 +16,15 @@ let
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options.nyx-module.system.c-compiler = {
|
options.nyx-module.system.c-compiler = {
|
||||||
enable = lib.mkEnableOption "Enable c-compiler (system) module";
|
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 {
|
config = lib.mkIf cfg.enable {
|
||||||
environment.systemPackages = [ cfg.package ];
|
environment.systemPackages = with pkgs; [
|
||||||
|
gcc # C & C++
|
||||||
|
clang # alt C/C++
|
||||||
|
mono # C#
|
||||||
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,12 @@
|
||||||
|
# Go (System Module)
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - Go programming language toolchain
|
||||||
|
#
|
||||||
|
# Options:
|
||||||
|
# - enable → Enable Go system module
|
||||||
|
#
|
||||||
|
|
||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
let
|
let
|
||||||
|
|
@ -5,16 +14,12 @@ let
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options.nyx-module.system.go = {
|
options.nyx-module.system.go = {
|
||||||
enable = lib.mkEnableOption "Enable go (system) module";
|
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 {
|
config = lib.mkIf cfg.enable {
|
||||||
environment.systemPackages = [ cfg.package ];
|
environment.systemPackages = with pkgs; [
|
||||||
|
go
|
||||||
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,13 @@
|
||||||
|
# Lua (System Module)
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - Lua (standard interpreter)
|
||||||
|
# - LuaJIT (Just-In-Time compiler)
|
||||||
|
#
|
||||||
|
# Options:
|
||||||
|
# - enable → Enable Lua system module
|
||||||
|
#
|
||||||
|
|
||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
let
|
let
|
||||||
|
|
@ -5,16 +15,13 @@ let
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options.nyx-module.system.lua = {
|
options.nyx-module.system.lua = {
|
||||||
enable = lib.mkEnableOption "Enable lua (system) module";
|
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 {
|
config = lib.mkIf cfg.enable {
|
||||||
environment.systemPackages = [ cfg.package ];
|
environment.systemPackages = with pkgs; [
|
||||||
|
lua
|
||||||
|
luajit
|
||||||
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,13 @@
|
||||||
|
# Python (System Module)
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - Python 3 interpreter
|
||||||
|
# - Pip (package manager)
|
||||||
|
#
|
||||||
|
# Options:
|
||||||
|
# - enable → Enable Python system module
|
||||||
|
#
|
||||||
|
|
||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
let
|
let
|
||||||
|
|
@ -5,16 +15,13 @@ let
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options.nyx-module.system.python = {
|
options.nyx-module.system.python = {
|
||||||
enable = lib.mkEnableOption "Enable python (system) module";
|
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 {
|
config = lib.mkIf cfg.enable {
|
||||||
environment.systemPackages = [ cfg.package ];
|
environment.systemPackages = with pkgs; [
|
||||||
|
python3
|
||||||
|
python3Packages.pip
|
||||||
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,13 @@
|
||||||
|
# Rust (System Module)
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - Rust compiler (rustc)
|
||||||
|
# - Cargo (Rust package manager & build system)
|
||||||
|
#
|
||||||
|
# Options:
|
||||||
|
# - enable → Enable Rust system module
|
||||||
|
#
|
||||||
|
|
||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
let
|
let
|
||||||
|
|
@ -5,16 +15,13 @@ let
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options.nyx-module.system.rust = {
|
options.nyx-module.system.rust = {
|
||||||
enable = lib.mkEnableOption "Enable rust (system) module";
|
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 {
|
config = lib.mkIf cfg.enable {
|
||||||
environment.systemPackages = [ cfg.package ];
|
environment.systemPackages = with pkgs; [
|
||||||
|
rustc
|
||||||
|
cargo
|
||||||
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,6 @@
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./Application
|
./Application
|
||||||
./Desktops
|
|
||||||
./Programming-Tools
|
./Programming-Tools
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,9 +0,0 @@
|
||||||
{ config, lib, pkgs, ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
imports = [
|
|
||||||
./Hardware
|
|
||||||
./Home
|
|
||||||
./System
|
|
||||||
];
|
|
||||||
}
|
|
||||||
1
Readme.md
Normal file
1
Readme.md
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
Do NOT use this please this is just for me to test and learn
|
||||||
27
flake.nix
27
flake.nix
|
|
@ -3,15 +3,32 @@
|
||||||
|
|
||||||
inputs = {
|
inputs = {
|
||||||
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
||||||
|
|
||||||
home-manager = {
|
home-manager = {
|
||||||
url = "github:nix-community/home-manager";
|
url = "github:nix-community/home-manager";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs = { self, nixpkgs, home-manager,... }: {
|
outputs = { self, nixpkgs, home-manager, ... }:
|
||||||
nixosModules.default = import ./Modules { inherit home-manager; };
|
let
|
||||||
|
system = "x86_64-linux";
|
||||||
};
|
pkgs = import nixpkgs { inherit system; };
|
||||||
}
|
in
|
||||||
|
{
|
||||||
|
################################################################
|
||||||
|
# NixOS Modules
|
||||||
|
################################################################
|
||||||
|
nixosModules = {
|
||||||
|
default = import ./Modules/System;
|
||||||
|
hardware = import ./Modules/Hardware;
|
||||||
|
};
|
||||||
|
|
||||||
|
################################################################
|
||||||
|
# Home Manager Modules
|
||||||
|
################################################################
|
||||||
|
homeManagerModules = {
|
||||||
|
default = import ./Modules/Home;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
|
||||||
155
other/autogen-basic-example.sh
Executable file
155
other/autogen-basic-example.sh
Executable file
|
|
@ -0,0 +1,155 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
ROOT="${1:-../Modules}" # root dir (defaults to Modules)
|
||||||
|
|
||||||
|
OUT_DIR="examples"
|
||||||
|
mkdir -p "$OUT_DIR"
|
||||||
|
|
||||||
|
OUT1="$OUT_DIR/example-with-headers-and-comments.nix"
|
||||||
|
OUT2="$OUT_DIR/example-with-headers.nix"
|
||||||
|
OUT3="$OUT_DIR/example-with-comments.nix"
|
||||||
|
OUT4="$OUT_DIR/example.nix"
|
||||||
|
|
||||||
|
echo "Generating $OUT1, $OUT2, $OUT3, $OUT4 from modules under $ROOT ..."
|
||||||
|
|
||||||
|
# --- Extract top-of-file module description ---
|
||||||
|
extract_module_description() {
|
||||||
|
local file="$1"
|
||||||
|
awk '
|
||||||
|
/^ *#/ { gsub(/^ *# */, ""); print " # " $0 }
|
||||||
|
/^\{ *config,/ { exit }
|
||||||
|
' "$file"
|
||||||
|
}
|
||||||
|
|
||||||
|
# --- Extract options from a module ---
|
||||||
|
extract_options() {
|
||||||
|
local file="$1"
|
||||||
|
local with_comments="$2"
|
||||||
|
|
||||||
|
grep -nE "^[[:space:]]*[a-zA-Z0-9_-]+[[:space:]]*=" "$file" \
|
||||||
|
| grep -E "lib\.mkOption|lib\.mkEnableOption" \
|
||||||
|
| sed -E 's/^([0-9]+):[[:space:]]*([a-zA-Z0-9_-]+)[[:space:]]*=.*/\1 \2/' \
|
||||||
|
| while read -r line name; do
|
||||||
|
block="$(tail -n +$((line+1)) "$file" | awk '/};/ {exit} {print}')"
|
||||||
|
defline="$(sed -n "${line}p" "$file")"
|
||||||
|
|
||||||
|
kind="mkOption"
|
||||||
|
[[ "$defline" == *"mkEnableOption"* ]] && kind="mkEnableOption"
|
||||||
|
|
||||||
|
if [[ "$kind" == "mkEnableOption" ]]; then
|
||||||
|
[[ "$with_comments" == "yes" ]] && echo "# mkEnableOption (bool)"
|
||||||
|
echo "${name} = true;"
|
||||||
|
else
|
||||||
|
otype="$(echo "$block" | grep -E "type[[:space:]]*=" | head -n1 | sed -E 's/.*type[[:space:]]*=[[:space:]]*//; s/;//')"
|
||||||
|
value="…"
|
||||||
|
desc=""
|
||||||
|
|
||||||
|
if echo "$block" | grep -q "default[[:space:]]*="; then
|
||||||
|
value="$(echo "$block" | grep "default[[:space:]]*=" | head -n1 | sed -E 's/.*default[[:space:]]*=[[:space:]]*(.*);/\1/')"
|
||||||
|
elif echo "$block" | grep -q "example[[:space:]]*="; then
|
||||||
|
value="$(echo "$block" | grep "example[[:space:]]*=" | head -n1 | sed -E 's/.*example[[:space:]]*=[[:space:]]*(.*);/\1/')"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if echo "$block" | grep -q "description[[:space:]]*="; then
|
||||||
|
desc="$(echo "$block" | grep "description[[:space:]]*=" | head -n1 | sed -E 's/.*description[[:space:]]*=[[:space:]]*//; s/^"//; s/"$//')"
|
||||||
|
[[ -z "$value" || "$value" == "…" ]] && value="… # $desc"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ "$with_comments" == "yes" ]]; then
|
||||||
|
[[ -n "$otype" ]] && echo "# mkOption type=$otype" || echo "# mkOption"
|
||||||
|
[[ -n "$desc" ]] && echo "# $desc"
|
||||||
|
fi
|
||||||
|
echo "${name} = ${value};"
|
||||||
|
fi
|
||||||
|
echo
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
# --- Extract module header (optional) ---
|
||||||
|
extract_header() {
|
||||||
|
local file="$1"
|
||||||
|
awk '
|
||||||
|
/^ *\{ *config,/ { exit }
|
||||||
|
/^$/ { next }
|
||||||
|
{ print " " $0 }
|
||||||
|
' "$file"
|
||||||
|
}
|
||||||
|
|
||||||
|
# --- Write prolog ---
|
||||||
|
write_prolog() {
|
||||||
|
local file="$1"
|
||||||
|
{
|
||||||
|
echo "{ config, lib, pkgs, ... }:"
|
||||||
|
echo
|
||||||
|
echo "{"
|
||||||
|
echo " nyx-module = {"
|
||||||
|
} > "$file"
|
||||||
|
}
|
||||||
|
|
||||||
|
# --- Write epilog ---
|
||||||
|
write_epilog() {
|
||||||
|
local file="$1"
|
||||||
|
{
|
||||||
|
echo " };"
|
||||||
|
echo "}"
|
||||||
|
} >> "$file"
|
||||||
|
}
|
||||||
|
|
||||||
|
# --- Prepare all output files ---
|
||||||
|
for f in "$OUT1" "$OUT2" "$OUT3" "$OUT4"; do
|
||||||
|
write_prolog "$f"
|
||||||
|
done
|
||||||
|
|
||||||
|
# --- Append modules for a section ---
|
||||||
|
append_modules() {
|
||||||
|
local base="$1"
|
||||||
|
local with_headers="$2"
|
||||||
|
local with_comments="$3"
|
||||||
|
local subdir="$4"
|
||||||
|
|
||||||
|
find "$ROOT/$subdir" -type f -name "*.nix" ! -name "default.nix" | sort | while read -r f; do
|
||||||
|
module="$(basename "$f" .nix)"
|
||||||
|
{
|
||||||
|
# [[ "$with_headers" == "yes" ]] && extract_module_description "$f"
|
||||||
|
[[ "$with_headers" == "yes" ]] && extract_header "$f"
|
||||||
|
echo " ${module} = {"
|
||||||
|
extract_options "$f" "$with_comments" | sed 's/^/ /'
|
||||||
|
echo " };"
|
||||||
|
echo
|
||||||
|
} >> "$base"
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
# --- Process each section in order ---
|
||||||
|
for section in "system" "home" "hardware"; do
|
||||||
|
for f in "$OUT1" "$OUT2" "$OUT3" "$OUT4"; do
|
||||||
|
echo " ${section} = {" >> "$f"
|
||||||
|
done
|
||||||
|
|
||||||
|
append_modules "$OUT1" yes yes "${section^}"
|
||||||
|
append_modules "$OUT2" yes no "${section^}"
|
||||||
|
append_modules "$OUT3" no yes "${section^}"
|
||||||
|
append_modules "$OUT4" no no "${section^}"
|
||||||
|
|
||||||
|
for f in "$OUT1" "$OUT2" "$OUT3" "$OUT4"; do
|
||||||
|
echo " };" >> "$f"
|
||||||
|
echo >> "$f"
|
||||||
|
done
|
||||||
|
done
|
||||||
|
|
||||||
|
# --- Finish all files ---
|
||||||
|
for f in "$OUT1" "$OUT2" "$OUT3" "$OUT4"; do
|
||||||
|
write_epilog "$f"
|
||||||
|
done
|
||||||
|
|
||||||
|
echo "Wrote:"
|
||||||
|
echo " - $OUT1"
|
||||||
|
echo " - $OUT2"
|
||||||
|
echo " - $OUT3"
|
||||||
|
echo " - $OUT4"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# a
|
||||||
127
other/autogen-modules.sh
Executable file
127
other/autogen-modules.sh
Executable file
|
|
@ -0,0 +1,127 @@
|
||||||
|
#!/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)"
|
||||||
|
|
||||||
|
# skip if non-empty
|
||||||
|
if [[ -s "$file" ]]; then
|
||||||
|
echo "Skipping non-empty $file"
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
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 no local nix files, collect subdirs that contain default.nix
|
||||||
|
if (( ${#local_modules[@]} > 0 )); then
|
||||||
|
new_imports=("${local_modules[@]}")
|
||||||
|
else
|
||||||
|
local subdirs=()
|
||||||
|
for sub in "$dir"/*/; do
|
||||||
|
[[ -d "$sub" && -f "$sub/default.nix" ]] && subdirs+=("./$(basename "$sub")")
|
||||||
|
done
|
||||||
|
new_imports=("${subdirs[@]}")
|
||||||
|
fi
|
||||||
|
|
||||||
|
mkdir -p "$dir"
|
||||||
|
|
||||||
|
if [[ -f "$file" ]]; then
|
||||||
|
# Replace imports block in place
|
||||||
|
awk -v n="${#new_imports[@]}" -v imports="$(printf '%s\n' "${new_imports[@]}")" '
|
||||||
|
BEGIN {
|
||||||
|
split(imports, arr, "\n")
|
||||||
|
printing=1
|
||||||
|
}
|
||||||
|
/imports = \[/ {
|
||||||
|
print " imports = ["
|
||||||
|
for (i=1; i<=n; i++) {
|
||||||
|
print " " arr[i]
|
||||||
|
}
|
||||||
|
print " ];"
|
||||||
|
# skip until closing bracket
|
||||||
|
while (getline > 0) {
|
||||||
|
if ($0 ~ /\];/) break
|
||||||
|
}
|
||||||
|
next
|
||||||
|
}
|
||||||
|
{ print }
|
||||||
|
' "$file" > "$file.tmp" && mv "$file.tmp" "$file"
|
||||||
|
echo "Updated imports in $file"
|
||||||
|
else
|
||||||
|
# brand new default.nix
|
||||||
|
{
|
||||||
|
echo "{ config, lib, pkgs, ... }:"
|
||||||
|
echo
|
||||||
|
echo "{"
|
||||||
|
echo " imports = ["
|
||||||
|
for imp in "${new_imports[@]}"; do
|
||||||
|
echo " $imp"
|
||||||
|
done
|
||||||
|
echo " ];"
|
||||||
|
echo "}"
|
||||||
|
} > "$file"
|
||||||
|
echo "Created $file"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# 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."
|
||||||
396
other/examples/example-with-comments.nix
Normal file
396
other/examples/example-with-comments.nix
Normal file
|
|
@ -0,0 +1,396 @@
|
||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
nyx-module = {
|
||||||
|
system = {
|
||||||
|
docker = {
|
||||||
|
# mkEnableOption (bool)
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
# mkOption type=lib.types.str
|
||||||
|
# User to add to the docker group.";
|
||||||
|
username = "alice";
|
||||||
|
|
||||||
|
# mkOption type=lib.types.bool
|
||||||
|
# Whether to enable Docker service on boot.";
|
||||||
|
enableOnBoot = true;
|
||||||
|
|
||||||
|
# mkEnableOption (bool)
|
||||||
|
rootless = true;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
openssh = {
|
||||||
|
# mkEnableOption (bool)
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
# mkOption type=lib.types.bool
|
||||||
|
# Whether to allow password authentication.";
|
||||||
|
passwordAuth = false;
|
||||||
|
|
||||||
|
# mkOption type=lib.types.str
|
||||||
|
# Whether to permit root login via SSH.";
|
||||||
|
permitRootLogin = "no";
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
podman = {
|
||||||
|
# mkEnableOption (bool)
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
# mkOption type=lib.types.str
|
||||||
|
# User to add to the podman group.";
|
||||||
|
username = "alice";
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
vm = {
|
||||||
|
# mkEnableOption (bool)
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
# mkOption type=lib.types.str
|
||||||
|
# User to add to virtualization groups.";
|
||||||
|
username = "alice";
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
zsh = {
|
||||||
|
# mkEnableOption (bool)
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
# mkEnableOption (bool)
|
||||||
|
ohMyZsh = true;
|
||||||
|
|
||||||
|
# mkOption type=lib.types.str
|
||||||
|
# oh-my-zsh theme to use.";
|
||||||
|
theme = "xiong-chiamiov-plus";
|
||||||
|
|
||||||
|
# mkOption type=lib.types.listOf lib.types.str
|
||||||
|
# List of oh-my-zsh plugins to enable.";
|
||||||
|
plugins = [ "git" ];
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
steam = {
|
||||||
|
# mkEnableOption (bool)
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
# mkEnableOption (bool)
|
||||||
|
remotePlay = true;
|
||||||
|
|
||||||
|
# mkEnableOption (bool)
|
||||||
|
dedicatedServer = true;
|
||||||
|
|
||||||
|
# mkEnableOption (bool)
|
||||||
|
localNetworkGameTransfers = true;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
flatpak = {
|
||||||
|
# mkEnableOption (bool)
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
wireshark = {
|
||||||
|
# mkEnableOption (bool)
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
# mkOption type=lib.types.str
|
||||||
|
# User to add to the wireshark group.";
|
||||||
|
username = "alice";
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
c-compiler = {
|
||||||
|
# mkEnableOption (bool)
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
go = {
|
||||||
|
# mkEnableOption (bool)
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
lua = {
|
||||||
|
# mkEnableOption (bool)
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
python = {
|
||||||
|
# mkEnableOption (bool)
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
rust = {
|
||||||
|
# mkEnableOption (bool)
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
home = {
|
||||||
|
brave = {
|
||||||
|
# mkEnableOption (bool)
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
# mkEnableOption (bool)
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
# mkEnableOption (bool)
|
||||||
|
standard = true;
|
||||||
|
|
||||||
|
# mkOption type=lib.types.listOf lib.types.str
|
||||||
|
# List of additional Brave extension IDs to install.";
|
||||||
|
extra = [];
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
signal-desktop = {
|
||||||
|
# mkEnableOption (bool)
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
# mkOption type=lib.types.package
|
||||||
|
# Package to install for signal-desktop.";
|
||||||
|
package = pkgs.signal-desktop;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
vesktop = {
|
||||||
|
# mkEnableOption (bool)
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
# mkOption type=lib.types.package
|
||||||
|
# Package to install for vesktop.";
|
||||||
|
package = pkgs.vesktop;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
rustdesk = {
|
||||||
|
# mkEnableOption (bool)
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
# mkOption type=lib.types.package
|
||||||
|
# ''
|
||||||
|
package = pkgs.rustdesk;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
vscodium = {
|
||||||
|
# mkEnableOption (bool)
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
# mkEnableOption (bool)
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
# mkEnableOption (bool)
|
||||||
|
standard = true;
|
||||||
|
|
||||||
|
# mkOption type=lib.types.listOf lib.types.package
|
||||||
|
# List of extra VSCodium extensions to install.";
|
||||||
|
extra = [];
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
classic-game-collection = {
|
||||||
|
# mkEnableOption (bool)
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
prismlauncher = {
|
||||||
|
# mkEnableOption (bool)
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
# mkEnableOption (bool)
|
||||||
|
includeFfmpeg = true;
|
||||||
|
|
||||||
|
# mkOption type=lib.types.listOf lib.types.package
|
||||||
|
# List of Java runtimes to make available for PrismLauncher.";
|
||||||
|
jdks = [ pkgs.jdk17 ];
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
cava = {
|
||||||
|
# mkEnableOption (bool)
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
# mkOption type=lib.types.attrs
|
||||||
|
settings = default = {;
|
||||||
|
|
||||||
|
# mkOption type=lib.types.nullOr lib.types.lines
|
||||||
|
# ''
|
||||||
|
configText = null;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
spotify = {
|
||||||
|
# mkEnableOption (bool)
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
# mkOption type=lib.types.package
|
||||||
|
# ''
|
||||||
|
package = pkgs.spotify;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
camera = {
|
||||||
|
# mkEnableOption (bool)
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
# mkOption type=lib.types.package
|
||||||
|
# Camera GUI package to install.";
|
||||||
|
package = pkgs.snapshot;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
image-viewer = {
|
||||||
|
# mkEnableOption (bool)
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
# mkOption type=lib.types.package
|
||||||
|
# Image viewer package to install (e.g. gwenview, feh, imv).";
|
||||||
|
package = pkgs.gwenview;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
krita = {
|
||||||
|
# mkEnableOption (bool)
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
kdenlive = {
|
||||||
|
# mkEnableOption (bool)
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
video-player = {
|
||||||
|
# mkEnableOption (bool)
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
# mkOption type=lib.types.listOf lib.types.package
|
||||||
|
# List of video/media players to install (e.g. vlc, mpv, celluloid).";
|
||||||
|
packages = [ pkgs.vlc ];
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
zoom = {
|
||||||
|
# mkEnableOption (bool)
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
# mkOption type=lib.types.package
|
||||||
|
# Zoom package to install (e.g., pkgs.zoom-us).";
|
||||||
|
package = pkgs.zoom-us;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
obsidian = {
|
||||||
|
# mkEnableOption (bool)
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
libreoffice = {
|
||||||
|
# mkEnableOption (bool)
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
pdf-reader = {
|
||||||
|
# mkEnableOption (bool)
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
# mkOption type=lib.types.package
|
||||||
|
# PDF or scanning GUI package to install (e.g. Okular, Evince, Xournal++).";
|
||||||
|
package = pkgs.kdeApplications.okular;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
printer-scan = {
|
||||||
|
# mkEnableOption (bool)
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
# mkOption type=lib.types.package
|
||||||
|
# Printer/scanner GUI package to install.";
|
||||||
|
package = pkgs.simple-scan;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
thunderbird = {
|
||||||
|
# mkEnableOption (bool)
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
protonvpn = {
|
||||||
|
# mkEnableOption (bool)
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
tools = {
|
||||||
|
# mkEnableOption (bool)
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
# mkOption type=lib.types.listOf lib.types.package
|
||||||
|
# Extra CLI tools to install in addition to the defaults.";
|
||||||
|
extra = [];
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
zsh = {
|
||||||
|
# mkEnableOption (bool)
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
private-webapps = {
|
||||||
|
# mkEnableOption (bool)
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
# mkOption type=lib.types.package
|
||||||
|
# Browser package to use for private webapps.";
|
||||||
|
browser = pkgs.chromium;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
work-webapps = {
|
||||||
|
# mkEnableOption (bool)
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
# mkOption type=lib.types.package
|
||||||
|
# Browser package to use for private webapps.";
|
||||||
|
browser = pkgs.chromium;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
hardware = {
|
||||||
|
bluetooth = {
|
||||||
|
# mkEnableOption (bool)
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
custom-kernel-surfacepro-kbl = {
|
||||||
|
# mkEnableOption (bool)
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
# mkOption type=lib.types.enum [ "stable" "longtime" ]
|
||||||
|
# Choose which kernel version nixos-hardware will build for Surface Pro.";
|
||||||
|
kernelVersion = "stable";
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
||||||
|
}
|
||||||
845
other/examples/example-with-headers-and-comments.nix
Normal file
845
other/examples/example-with-headers-and-comments.nix
Normal file
|
|
@ -0,0 +1,845 @@
|
||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
nyx-module = {
|
||||||
|
system = {
|
||||||
|
# Docker (System Module)
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - Docker runtime and CLI
|
||||||
|
# - Docker Compose
|
||||||
|
# - User access via `docker` group
|
||||||
|
# - Optional rootless mode and cgroup v2 support
|
||||||
|
#
|
||||||
|
# Options:
|
||||||
|
# - enable → Enable Docker system module
|
||||||
|
# - username → User to add to the docker group
|
||||||
|
# - enableOnBoot → Start Docker service on boot (default: true)
|
||||||
|
# - rootless → Enable Docker rootless mode (disabled by default)
|
||||||
|
#
|
||||||
|
# Notes:
|
||||||
|
# - Rootless mode is disabled by default
|
||||||
|
# - Uses cgroup v2 for better resource management on modern kernels
|
||||||
|
docker = {
|
||||||
|
# mkEnableOption (bool)
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
# mkOption type=lib.types.str
|
||||||
|
# User to add to the docker group.";
|
||||||
|
username = "alice";
|
||||||
|
|
||||||
|
# mkOption type=lib.types.bool
|
||||||
|
# Whether to enable Docker service on boot.";
|
||||||
|
enableOnBoot = true;
|
||||||
|
|
||||||
|
# mkEnableOption (bool)
|
||||||
|
rootless = true;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
# OpenSSH (System Module)
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - OpenSSH server (sshd) service
|
||||||
|
#
|
||||||
|
# Options:
|
||||||
|
# - enable → Enable OpenSSH system module
|
||||||
|
# - passwordAuth → Allow password authentication (default: false)
|
||||||
|
# - permitRootLogin → Permit root login (default: "no")
|
||||||
|
#
|
||||||
|
# Notes:
|
||||||
|
# - By default, password authentication is disabled for better security
|
||||||
|
# - Root login is disabled unless explicitly enabled
|
||||||
|
openssh = {
|
||||||
|
# mkEnableOption (bool)
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
# mkOption type=lib.types.bool
|
||||||
|
# Whether to allow password authentication.";
|
||||||
|
passwordAuth = false;
|
||||||
|
|
||||||
|
# mkOption type=lib.types.str
|
||||||
|
# Whether to permit root login via SSH.";
|
||||||
|
permitRootLogin = "no";
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
# Podman (System Module)
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - Podman runtime and CLI
|
||||||
|
# - Podman Compose
|
||||||
|
# - User access via `podman` group
|
||||||
|
#
|
||||||
|
# Options:
|
||||||
|
# - enable → Enable Podman system module
|
||||||
|
# - username → User to add to the podman group
|
||||||
|
#
|
||||||
|
# Notes:
|
||||||
|
# - Adds podman + podman-compose to system packages
|
||||||
|
# - Enables D-Bus socket activation for Podman
|
||||||
|
#
|
||||||
|
podman = {
|
||||||
|
# mkEnableOption (bool)
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
# mkOption type=lib.types.str
|
||||||
|
# User to add to the podman group.";
|
||||||
|
username = "alice";
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
# VM (System Module)
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - QEMU/KVM virtualization via libvirt
|
||||||
|
# - virt-manager GUI
|
||||||
|
# - User access via libvirtd and kvm groups
|
||||||
|
# - Spice, dnsmasq, and bridge-utils for networking and display
|
||||||
|
#
|
||||||
|
# Options:
|
||||||
|
# - enable → Enable VM system module
|
||||||
|
# - username → User to add to virtualization groups (required)
|
||||||
|
#
|
||||||
|
# Notes:
|
||||||
|
# - QEMU runs as root by default (can be adjusted)
|
||||||
|
# - virt-manager GUI is enabled automatically
|
||||||
|
# - Only generic "kvm" kernel module is forced (host picks intel/amd)
|
||||||
|
#
|
||||||
|
vm = {
|
||||||
|
# mkEnableOption (bool)
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
# mkOption type=lib.types.str
|
||||||
|
# User to add to virtualization groups.";
|
||||||
|
username = "alice";
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
# Zsh (System Module)
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - Zsh shell
|
||||||
|
# - oh-my-zsh integration
|
||||||
|
# - Theme + plugins support
|
||||||
|
#
|
||||||
|
# Options:
|
||||||
|
# - enable → Enable Zsh system module
|
||||||
|
# - ohMyZsh → Enable oh-my-zsh integration
|
||||||
|
# - theme → oh-my-zsh theme (default: "xiong-chiamiov-plus")
|
||||||
|
# - plugins → List of oh-my-zsh plugins (default: [ "git" ])
|
||||||
|
#
|
||||||
|
zsh = {
|
||||||
|
# mkEnableOption (bool)
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
# mkEnableOption (bool)
|
||||||
|
ohMyZsh = true;
|
||||||
|
|
||||||
|
# mkOption type=lib.types.str
|
||||||
|
# oh-my-zsh theme to use.";
|
||||||
|
theme = "xiong-chiamiov-plus";
|
||||||
|
|
||||||
|
# mkOption type=lib.types.listOf lib.types.str
|
||||||
|
# List of oh-my-zsh plugins to enable.";
|
||||||
|
plugins = [ "git" ];
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
# Steam (System Module)
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - Steam client
|
||||||
|
# - Optional firewall openings for:
|
||||||
|
# * Remote Play
|
||||||
|
# * Source Dedicated Server
|
||||||
|
# * Local Network Game Transfers
|
||||||
|
# - ProtonUp tool for managing Proton versions
|
||||||
|
#
|
||||||
|
# Options:
|
||||||
|
# - enable → Enable Steam system module
|
||||||
|
# - openFirewall.remotePlay → Open firewall for Remote Play
|
||||||
|
# - openFirewall.dedicatedServer → Open firewall for Source Dedicated Server
|
||||||
|
# - openFirewall.localNetworkGameTransfers → Open firewall for LAN transfers
|
||||||
|
#
|
||||||
|
steam = {
|
||||||
|
# mkEnableOption (bool)
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
# mkEnableOption (bool)
|
||||||
|
remotePlay = true;
|
||||||
|
|
||||||
|
# mkEnableOption (bool)
|
||||||
|
dedicatedServer = true;
|
||||||
|
|
||||||
|
# mkEnableOption (bool)
|
||||||
|
localNetworkGameTransfers = true;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
# Flatpak (System Module)
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - Flatpak package manager
|
||||||
|
# - Flatpak service integration
|
||||||
|
# - XDG portals for sandboxed apps
|
||||||
|
#
|
||||||
|
# Options:
|
||||||
|
# - enable → Enable Flatpak system module
|
||||||
|
#
|
||||||
|
flatpak = {
|
||||||
|
# mkEnableOption (bool)
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
# Wireshark (System Module)
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - Wireshark installation
|
||||||
|
# - Proper dumpcap permissions
|
||||||
|
# - Adds user to `wireshark` group
|
||||||
|
#
|
||||||
|
# Options:
|
||||||
|
# - enable → Enable Wireshark system module
|
||||||
|
# - username → User to add to the wireshark group (required)
|
||||||
|
#
|
||||||
|
wireshark = {
|
||||||
|
# mkEnableOption (bool)
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
# mkOption type=lib.types.str
|
||||||
|
# User to add to the wireshark group.";
|
||||||
|
username = "alice";
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
# C Compiler (System Module)
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - GCC (C/C++)
|
||||||
|
# - Clang (alternative C/C++)
|
||||||
|
# - Mono (C#)
|
||||||
|
#
|
||||||
|
# Options:
|
||||||
|
# - enable → Enable C compiler toolchain
|
||||||
|
#
|
||||||
|
c-compiler = {
|
||||||
|
# mkEnableOption (bool)
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
# Go (System Module)
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - Go programming language toolchain
|
||||||
|
#
|
||||||
|
# Options:
|
||||||
|
# - enable → Enable Go system module
|
||||||
|
#
|
||||||
|
go = {
|
||||||
|
# mkEnableOption (bool)
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
# Lua (System Module)
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - Lua (standard interpreter)
|
||||||
|
# - LuaJIT (Just-In-Time compiler)
|
||||||
|
#
|
||||||
|
# Options:
|
||||||
|
# - enable → Enable Lua system module
|
||||||
|
#
|
||||||
|
lua = {
|
||||||
|
# mkEnableOption (bool)
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
# Python (System Module)
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - Python 3 interpreter
|
||||||
|
# - Pip (package manager)
|
||||||
|
#
|
||||||
|
# Options:
|
||||||
|
# - enable → Enable Python system module
|
||||||
|
#
|
||||||
|
python = {
|
||||||
|
# mkEnableOption (bool)
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
# Rust (System Module)
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - Rust compiler (rustc)
|
||||||
|
# - Cargo (Rust package manager & build system)
|
||||||
|
#
|
||||||
|
# Options:
|
||||||
|
# - enable → Enable Rust system module
|
||||||
|
#
|
||||||
|
rust = {
|
||||||
|
# mkEnableOption (bool)
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
home = {
|
||||||
|
# Brave Browser (Home Module)
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - Brave browser package
|
||||||
|
# - Optional standard and custom extension sets
|
||||||
|
#
|
||||||
|
# Options:
|
||||||
|
# - enable → Enable Brave browser
|
||||||
|
# - extensions.enable → Enable Brave extensions
|
||||||
|
# - extensions.standard→ Enable default extension set of extensions
|
||||||
|
# - extensions.extra → Extra extension IDs to install
|
||||||
|
#
|
||||||
|
# Notes:
|
||||||
|
# - Default extensions include uBlock Origin, Proton Pass, Proton VPN
|
||||||
|
# - Extra extensions must be specified by Chrome Web Store ID
|
||||||
|
#
|
||||||
|
brave = {
|
||||||
|
# mkEnableOption (bool)
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
# mkEnableOption (bool)
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
# mkEnableOption (bool)
|
||||||
|
standard = true;
|
||||||
|
|
||||||
|
# mkOption type=lib.types.listOf lib.types.str
|
||||||
|
# List of additional Brave extension IDs to install.";
|
||||||
|
extra = [];
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
# Signal Desktop (Home Module)
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - Signal Desktop secure messaging client
|
||||||
|
#
|
||||||
|
# Options:
|
||||||
|
# - enable → Enable Signal Desktop
|
||||||
|
# - package → Override package (default: pkgs.signal-desktop)
|
||||||
|
#
|
||||||
|
signal-desktop = {
|
||||||
|
# mkEnableOption (bool)
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
# mkOption type=lib.types.package
|
||||||
|
# Package to install for signal-desktop.";
|
||||||
|
package = pkgs.signal-desktop;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
# Vesktop (Home Module)
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - Vesktop package (Discord client, Electron wrapper)
|
||||||
|
#
|
||||||
|
# Options:
|
||||||
|
# - enable → Enable Vesktop client
|
||||||
|
# - package → Override package (default: pkgs.vesktop)
|
||||||
|
#
|
||||||
|
vesktop = {
|
||||||
|
# mkEnableOption (bool)
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
# mkOption type=lib.types.package
|
||||||
|
# Package to install for vesktop.";
|
||||||
|
package = pkgs.vesktop;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
# RustDesk (Home Module)
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - RustDesk remote desktop software (TeamViewer/AnyDesk alternative)
|
||||||
|
#
|
||||||
|
# Options:
|
||||||
|
# - enable → Enable RustDesk
|
||||||
|
# - package → Override package (default: pkgs.rustdesk)
|
||||||
|
#
|
||||||
|
# Notes:
|
||||||
|
# - Estimated build time: ~? Long....
|
||||||
|
#
|
||||||
|
rustdesk = {
|
||||||
|
# mkEnableOption (bool)
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
# mkOption type=lib.types.package
|
||||||
|
# ''
|
||||||
|
package = pkgs.rustdesk;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
# VSCodium (Home Module)
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - VSCodium editor (open-source build of VS Code)
|
||||||
|
# - Optional extension sets
|
||||||
|
#
|
||||||
|
# Options:
|
||||||
|
# - enable → Enable VSCodium
|
||||||
|
# - extensions.enable → Enable extensions
|
||||||
|
# - extensions.standard→ Enable standard extensions
|
||||||
|
# - extensions.extra → Extra extensions to install
|
||||||
|
#
|
||||||
|
# Notes:
|
||||||
|
# - Some Microsoft extensions may be broken (e.g., ms-python.python)
|
||||||
|
#
|
||||||
|
vscodium = {
|
||||||
|
# mkEnableOption (bool)
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
# mkEnableOption (bool)
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
# mkEnableOption (bool)
|
||||||
|
standard = true;
|
||||||
|
|
||||||
|
# mkOption type=lib.types.listOf lib.types.package
|
||||||
|
# List of extra VSCodium extensions to install.";
|
||||||
|
extra = [];
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
# Classic Game Collection (Home Module)
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - Small set of lightweight, classic desktop games
|
||||||
|
#
|
||||||
|
# Included:
|
||||||
|
# - KPat (Patience / Solitaire)
|
||||||
|
# - KSudoku
|
||||||
|
# - Space Cadet Pinball
|
||||||
|
# - Palapeli (jigsaw puzzles)
|
||||||
|
# - KMines (Minesweeper clone)
|
||||||
|
# - KBlocks (Tetris clone)
|
||||||
|
# - KMahjongg (Mahjong solitaire)
|
||||||
|
#
|
||||||
|
# Options:
|
||||||
|
# - enable → Enable the Classic Game Collection
|
||||||
|
#
|
||||||
|
classic-game-collection = {
|
||||||
|
# mkEnableOption (bool)
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
# PrismLauncher (Home Module)
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - PrismLauncher (Minecraft launcher)
|
||||||
|
# - Optional inclusion of ffmpeg (some mods require it)
|
||||||
|
# - Configurable list of JDKs (for modpacks that need specific versions)
|
||||||
|
#
|
||||||
|
# Options:
|
||||||
|
# - enable → Enable PrismLauncher
|
||||||
|
# - includeFfmpeg→ Include ffmpeg for mods
|
||||||
|
# - jdks → List of Java runtimes for PrismLauncher
|
||||||
|
#
|
||||||
|
# Notes:
|
||||||
|
# - Installed via home.packages
|
||||||
|
# - JDKs are added to PATH so PrismLauncher can discover them
|
||||||
|
#
|
||||||
|
prismlauncher = {
|
||||||
|
# mkEnableOption (bool)
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
# mkEnableOption (bool)
|
||||||
|
includeFfmpeg = true;
|
||||||
|
|
||||||
|
# mkOption type=lib.types.listOf lib.types.package
|
||||||
|
# List of Java runtimes to make available for PrismLauncher.";
|
||||||
|
jdks = [ pkgs.jdk17 ];
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
# CAVA (Home Module)
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - CAVA audio visualizer
|
||||||
|
# - Declarative configuration via Nix
|
||||||
|
# - Support for structured settings or raw config override
|
||||||
|
#
|
||||||
|
# Options:
|
||||||
|
# - enable → Enable CAVA (home module)
|
||||||
|
# - settings → Declarative structured configuration (default: ALSA, 60 FPS, basic colors)
|
||||||
|
# - configText → Raw configuration text (overrides settings if set)
|
||||||
|
#
|
||||||
|
# Notes:
|
||||||
|
# - Writes config to ~/.config/cava/config
|
||||||
|
# - If configText is set, settings are ignored
|
||||||
|
#
|
||||||
|
# Example:
|
||||||
|
# nyx-module.home.cava = {
|
||||||
|
# enable = true;
|
||||||
|
# settings.general.framerate = 120;
|
||||||
|
# settings.input.method = "pulse";
|
||||||
|
# };
|
||||||
|
cava = {
|
||||||
|
# mkEnableOption (bool)
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
# mkOption type=lib.types.attrs
|
||||||
|
settings = default = {;
|
||||||
|
|
||||||
|
# mkOption type=lib.types.nullOr lib.types.lines
|
||||||
|
# ''
|
||||||
|
configText = null;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
# Spotify (music streaming client)
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - Spotify package (default)
|
||||||
|
# - Optional override to install a different package
|
||||||
|
#
|
||||||
|
# Notes:
|
||||||
|
# - Installs into home.packages
|
||||||
|
#
|
||||||
|
spotify = {
|
||||||
|
# mkEnableOption (bool)
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
# mkOption type=lib.types.package
|
||||||
|
# ''
|
||||||
|
package = pkgs.spotify;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
# Camera GUI module
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - Camera GUI package (default: snapshot)
|
||||||
|
# - libcamera (always installed, required backend)
|
||||||
|
#
|
||||||
|
# Notes:
|
||||||
|
# - You can override the GUI package with another (e.g., cheese, kamoso)
|
||||||
|
#
|
||||||
|
camera = {
|
||||||
|
# mkEnableOption (bool)
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
# mkOption type=lib.types.package
|
||||||
|
# Camera GUI package to install.";
|
||||||
|
package = pkgs.snapshot;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
# Image Viewer
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - Installs a chosen image viewer application
|
||||||
|
#
|
||||||
|
# Notes:
|
||||||
|
# - Defaults to Gwenview
|
||||||
|
#
|
||||||
|
image-viewer = {
|
||||||
|
# mkEnableOption (bool)
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
# mkOption type=lib.types.package
|
||||||
|
# Image viewer package to install (e.g. gwenview, feh, imv).";
|
||||||
|
package = pkgs.gwenview;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
# Krita (Digital Painting Software)
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - Krita package (open-source digital painting and illustration software)
|
||||||
|
#
|
||||||
|
# Notes:
|
||||||
|
# - Installed via home.packages
|
||||||
|
#
|
||||||
|
krita = {
|
||||||
|
# mkEnableOption (bool)
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
# Kdenlive (video editor)
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - Kdenlive video editor
|
||||||
|
# - Installed via home.packages
|
||||||
|
#
|
||||||
|
# Notes:
|
||||||
|
# - Package location depends on nixpkgs version:
|
||||||
|
# * pkgs.kdePackages.kdenlive (preferred, modern KDE split)
|
||||||
|
# * pkgs.libsForQt5.kdenlive (older releases, fallback)
|
||||||
|
#
|
||||||
|
kdenlive = {
|
||||||
|
# mkEnableOption (bool)
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
# Video Player(s)
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - Installs one or more chosen video/media players
|
||||||
|
#
|
||||||
|
# Notes:
|
||||||
|
# - Defaults to [ vlc ]
|
||||||
|
#
|
||||||
|
video-player = {
|
||||||
|
# mkEnableOption (bool)
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
# mkOption type=lib.types.listOf lib.types.package
|
||||||
|
# List of video/media players to install (e.g. vlc, mpv, celluloid).";
|
||||||
|
packages = [ pkgs.vlc ];
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
# Zoom (video conferencing client)
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - Zoom package (default: pkgs.zoom-us)
|
||||||
|
#
|
||||||
|
# Options:
|
||||||
|
# - `package`: override the package (e.g. pkgs.zoom)
|
||||||
|
#
|
||||||
|
# Notes:
|
||||||
|
# - Installed via home.packages
|
||||||
|
#
|
||||||
|
zoom = {
|
||||||
|
# mkEnableOption (bool)
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
# mkOption type=lib.types.package
|
||||||
|
# Zoom package to install (e.g., pkgs.zoom-us).";
|
||||||
|
package = pkgs.zoom-us;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
# Obsidian (note-taking / PKM app)
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - Obsidian package via home.packages
|
||||||
|
#
|
||||||
|
# Notes:
|
||||||
|
# - Consider adding theming support later
|
||||||
|
# (e.g., https://github.com/jackiejude/obsidian-temple-os)
|
||||||
|
#
|
||||||
|
obsidian = {
|
||||||
|
# mkEnableOption (bool)
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
# LibreOffice (office suite)
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - LibreOffice package via home.packages
|
||||||
|
#
|
||||||
|
# Notes:
|
||||||
|
# - Simple module, just adds LibreOffice to the user environment
|
||||||
|
#
|
||||||
|
libreoffice = {
|
||||||
|
# mkEnableOption (bool)
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
# PDF Viewer / Scanner
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - Install a chosen PDF or scanning GUI application
|
||||||
|
#
|
||||||
|
# Notes:
|
||||||
|
# - Defaults to Okular
|
||||||
|
#
|
||||||
|
pdf-reader = {
|
||||||
|
# mkEnableOption (bool)
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
# mkOption type=lib.types.package
|
||||||
|
# PDF or scanning GUI package to install (e.g. Okular, Evince, Xournal++).";
|
||||||
|
package = pkgs.kdeApplications.okular;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
# Printer GUI (scanning/printing tools)
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - Configurable GUI package for printing/scanning via home.packages
|
||||||
|
#
|
||||||
|
# Notes:
|
||||||
|
# - Default is `simple-scan` (GNOME Document Scanner)
|
||||||
|
# - Can be overridden with another package such as `system-config-printer`
|
||||||
|
#
|
||||||
|
printer-scan = {
|
||||||
|
# mkEnableOption (bool)
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
# mkOption type=lib.types.package
|
||||||
|
# Printer/scanner GUI package to install.";
|
||||||
|
package = pkgs.simple-scan;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
# Thunderbird (email client)
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - Thunderbird package via home.packages
|
||||||
|
#
|
||||||
|
# Notes:
|
||||||
|
# - Simple module, just adds Thunderbird to the user environment
|
||||||
|
#
|
||||||
|
thunderbird = {
|
||||||
|
# mkEnableOption (bool)
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
# ProtonVPN (Home Module)
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - ProtonVPN GUI client
|
||||||
|
#
|
||||||
|
# Options:
|
||||||
|
# - enable → Enable ProtonVPN client
|
||||||
|
#
|
||||||
|
# Notes:
|
||||||
|
# - GUI only by default (CLI version available as pkgs.protonvpn-cli)
|
||||||
|
|
||||||
|
protonvpn = {
|
||||||
|
# mkEnableOption (bool)
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
# CLI Tools (Home Module)
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - A curated set of command-line utilities in user’s environment
|
||||||
|
# - Examples: fastfetch, hyfetch, bat, fzf, tree, lsd, tmux
|
||||||
|
#
|
||||||
|
# Options:
|
||||||
|
# - enable → Enable CLI tools collection
|
||||||
|
# - extra → List of extra packages to install
|
||||||
|
tools = {
|
||||||
|
# mkEnableOption (bool)
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
# mkOption type=lib.types.listOf lib.types.package
|
||||||
|
# Extra CLI tools to install in addition to the defaults.";
|
||||||
|
extra = [];
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
# Zsh (Home Module)
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - Zsh shell in the user profile
|
||||||
|
# - Zsh completion, autosuggestions, and syntax highlighting
|
||||||
|
#
|
||||||
|
# Options:
|
||||||
|
# - enable → Enable Zsh in the user profile
|
||||||
|
zsh = {
|
||||||
|
# mkEnableOption (bool)
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
# Private Webapps
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - Browser-based desktop entries for personal/private webapps
|
||||||
|
# - Currently supported:
|
||||||
|
# • WhatsApp
|
||||||
|
#
|
||||||
|
# Options:
|
||||||
|
# - browser → Selects which browser package to use (default: chromium)
|
||||||
|
# - whatsapp → Enable WhatsApp webapp launcher
|
||||||
|
#
|
||||||
|
# Notes:
|
||||||
|
# - Uses --app mode to create minimal browser windows
|
||||||
|
# - Additional services can be added following the same pattern
|
||||||
|
private-webapps = {
|
||||||
|
# mkEnableOption (bool)
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
# mkOption type=lib.types.package
|
||||||
|
# Browser package to use for private webapps.";
|
||||||
|
browser = pkgs.chromium;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
# Work Webapps
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - Browser-based desktop entries for work-related webapps
|
||||||
|
# - Currently supported:
|
||||||
|
# • Slack
|
||||||
|
# • Microsoft Teams
|
||||||
|
# • Outlook Web
|
||||||
|
# • Microsoft Entra
|
||||||
|
#
|
||||||
|
# Options:
|
||||||
|
# - browser → Selects which browser package to use (default: chromium)
|
||||||
|
# - slack → Enable Slack webapp launcher
|
||||||
|
# - teams → Enable Teams webapp launcher
|
||||||
|
# - outlook → Enable Outlook webapp launcher
|
||||||
|
# - entra → Enable Entra webapp launcher
|
||||||
|
#
|
||||||
|
# Notes:
|
||||||
|
# - Uses --app mode for minimal windows (like PWAs)
|
||||||
|
# - Outlook entry uses a custom profile directory for isolation
|
||||||
|
work-webapps = {
|
||||||
|
# mkEnableOption (bool)
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
# mkOption type=lib.types.package
|
||||||
|
# Browser package to use for private webapps.";
|
||||||
|
browser = pkgs.chromium;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
hardware = {
|
||||||
|
bluetooth = {
|
||||||
|
# mkEnableOption (bool)
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
# Custom Kernel Module for Microsoft Surface Pro (Kaby Lake / i5-7300U)
|
||||||
|
#
|
||||||
|
# Requires:
|
||||||
|
# - inputs.nixos-hardware.nixosModules.microsoft-surface-pro-intel
|
||||||
|
#
|
||||||
|
# Notes:
|
||||||
|
# - Estimated kernel build time: ~4h30m
|
||||||
|
#
|
||||||
|
custom-kernel-surfacepro-kbl = {
|
||||||
|
# mkEnableOption (bool)
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
# mkOption type=lib.types.enum [ "stable" "longtime" ]
|
||||||
|
# Choose which kernel version nixos-hardware will build for Surface Pro.";
|
||||||
|
kernelVersion = "stable";
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
||||||
|
}
|
||||||
740
other/examples/example-with-headers.nix
Normal file
740
other/examples/example-with-headers.nix
Normal file
|
|
@ -0,0 +1,740 @@
|
||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
nyx-module = {
|
||||||
|
system = {
|
||||||
|
# Docker (System Module)
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - Docker runtime and CLI
|
||||||
|
# - Docker Compose
|
||||||
|
# - User access via `docker` group
|
||||||
|
# - Optional rootless mode and cgroup v2 support
|
||||||
|
#
|
||||||
|
# Options:
|
||||||
|
# - enable → Enable Docker system module
|
||||||
|
# - username → User to add to the docker group
|
||||||
|
# - enableOnBoot → Start Docker service on boot (default: true)
|
||||||
|
# - rootless → Enable Docker rootless mode (disabled by default)
|
||||||
|
#
|
||||||
|
# Notes:
|
||||||
|
# - Rootless mode is disabled by default
|
||||||
|
# - Uses cgroup v2 for better resource management on modern kernels
|
||||||
|
docker = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
username = "alice";
|
||||||
|
|
||||||
|
enableOnBoot = true;
|
||||||
|
|
||||||
|
rootless = true;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
# OpenSSH (System Module)
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - OpenSSH server (sshd) service
|
||||||
|
#
|
||||||
|
# Options:
|
||||||
|
# - enable → Enable OpenSSH system module
|
||||||
|
# - passwordAuth → Allow password authentication (default: false)
|
||||||
|
# - permitRootLogin → Permit root login (default: "no")
|
||||||
|
#
|
||||||
|
# Notes:
|
||||||
|
# - By default, password authentication is disabled for better security
|
||||||
|
# - Root login is disabled unless explicitly enabled
|
||||||
|
openssh = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
passwordAuth = false;
|
||||||
|
|
||||||
|
permitRootLogin = "no";
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
# Podman (System Module)
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - Podman runtime and CLI
|
||||||
|
# - Podman Compose
|
||||||
|
# - User access via `podman` group
|
||||||
|
#
|
||||||
|
# Options:
|
||||||
|
# - enable → Enable Podman system module
|
||||||
|
# - username → User to add to the podman group
|
||||||
|
#
|
||||||
|
# Notes:
|
||||||
|
# - Adds podman + podman-compose to system packages
|
||||||
|
# - Enables D-Bus socket activation for Podman
|
||||||
|
#
|
||||||
|
podman = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
username = "alice";
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
# VM (System Module)
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - QEMU/KVM virtualization via libvirt
|
||||||
|
# - virt-manager GUI
|
||||||
|
# - User access via libvirtd and kvm groups
|
||||||
|
# - Spice, dnsmasq, and bridge-utils for networking and display
|
||||||
|
#
|
||||||
|
# Options:
|
||||||
|
# - enable → Enable VM system module
|
||||||
|
# - username → User to add to virtualization groups (required)
|
||||||
|
#
|
||||||
|
# Notes:
|
||||||
|
# - QEMU runs as root by default (can be adjusted)
|
||||||
|
# - virt-manager GUI is enabled automatically
|
||||||
|
# - Only generic "kvm" kernel module is forced (host picks intel/amd)
|
||||||
|
#
|
||||||
|
vm = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
username = "alice";
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
# Zsh (System Module)
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - Zsh shell
|
||||||
|
# - oh-my-zsh integration
|
||||||
|
# - Theme + plugins support
|
||||||
|
#
|
||||||
|
# Options:
|
||||||
|
# - enable → Enable Zsh system module
|
||||||
|
# - ohMyZsh → Enable oh-my-zsh integration
|
||||||
|
# - theme → oh-my-zsh theme (default: "xiong-chiamiov-plus")
|
||||||
|
# - plugins → List of oh-my-zsh plugins (default: [ "git" ])
|
||||||
|
#
|
||||||
|
zsh = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
ohMyZsh = true;
|
||||||
|
|
||||||
|
theme = "xiong-chiamiov-plus";
|
||||||
|
|
||||||
|
plugins = [ "git" ];
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
# Steam (System Module)
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - Steam client
|
||||||
|
# - Optional firewall openings for:
|
||||||
|
# * Remote Play
|
||||||
|
# * Source Dedicated Server
|
||||||
|
# * Local Network Game Transfers
|
||||||
|
# - ProtonUp tool for managing Proton versions
|
||||||
|
#
|
||||||
|
# Options:
|
||||||
|
# - enable → Enable Steam system module
|
||||||
|
# - openFirewall.remotePlay → Open firewall for Remote Play
|
||||||
|
# - openFirewall.dedicatedServer → Open firewall for Source Dedicated Server
|
||||||
|
# - openFirewall.localNetworkGameTransfers → Open firewall for LAN transfers
|
||||||
|
#
|
||||||
|
steam = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
remotePlay = true;
|
||||||
|
|
||||||
|
dedicatedServer = true;
|
||||||
|
|
||||||
|
localNetworkGameTransfers = true;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
# Flatpak (System Module)
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - Flatpak package manager
|
||||||
|
# - Flatpak service integration
|
||||||
|
# - XDG portals for sandboxed apps
|
||||||
|
#
|
||||||
|
# Options:
|
||||||
|
# - enable → Enable Flatpak system module
|
||||||
|
#
|
||||||
|
flatpak = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
# Wireshark (System Module)
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - Wireshark installation
|
||||||
|
# - Proper dumpcap permissions
|
||||||
|
# - Adds user to `wireshark` group
|
||||||
|
#
|
||||||
|
# Options:
|
||||||
|
# - enable → Enable Wireshark system module
|
||||||
|
# - username → User to add to the wireshark group (required)
|
||||||
|
#
|
||||||
|
wireshark = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
username = "alice";
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
# C Compiler (System Module)
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - GCC (C/C++)
|
||||||
|
# - Clang (alternative C/C++)
|
||||||
|
# - Mono (C#)
|
||||||
|
#
|
||||||
|
# Options:
|
||||||
|
# - enable → Enable C compiler toolchain
|
||||||
|
#
|
||||||
|
c-compiler = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
# Go (System Module)
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - Go programming language toolchain
|
||||||
|
#
|
||||||
|
# Options:
|
||||||
|
# - enable → Enable Go system module
|
||||||
|
#
|
||||||
|
go = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
# Lua (System Module)
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - Lua (standard interpreter)
|
||||||
|
# - LuaJIT (Just-In-Time compiler)
|
||||||
|
#
|
||||||
|
# Options:
|
||||||
|
# - enable → Enable Lua system module
|
||||||
|
#
|
||||||
|
lua = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
# Python (System Module)
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - Python 3 interpreter
|
||||||
|
# - Pip (package manager)
|
||||||
|
#
|
||||||
|
# Options:
|
||||||
|
# - enable → Enable Python system module
|
||||||
|
#
|
||||||
|
python = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
# Rust (System Module)
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - Rust compiler (rustc)
|
||||||
|
# - Cargo (Rust package manager & build system)
|
||||||
|
#
|
||||||
|
# Options:
|
||||||
|
# - enable → Enable Rust system module
|
||||||
|
#
|
||||||
|
rust = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
home = {
|
||||||
|
# Brave Browser (Home Module)
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - Brave browser package
|
||||||
|
# - Optional standard and custom extension sets
|
||||||
|
#
|
||||||
|
# Options:
|
||||||
|
# - enable → Enable Brave browser
|
||||||
|
# - extensions.enable → Enable Brave extensions
|
||||||
|
# - extensions.standard→ Enable default extension set of extensions
|
||||||
|
# - extensions.extra → Extra extension IDs to install
|
||||||
|
#
|
||||||
|
# Notes:
|
||||||
|
# - Default extensions include uBlock Origin, Proton Pass, Proton VPN
|
||||||
|
# - Extra extensions must be specified by Chrome Web Store ID
|
||||||
|
#
|
||||||
|
brave = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
standard = true;
|
||||||
|
|
||||||
|
extra = [];
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
# Signal Desktop (Home Module)
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - Signal Desktop secure messaging client
|
||||||
|
#
|
||||||
|
# Options:
|
||||||
|
# - enable → Enable Signal Desktop
|
||||||
|
# - package → Override package (default: pkgs.signal-desktop)
|
||||||
|
#
|
||||||
|
signal-desktop = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
package = pkgs.signal-desktop;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
# Vesktop (Home Module)
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - Vesktop package (Discord client, Electron wrapper)
|
||||||
|
#
|
||||||
|
# Options:
|
||||||
|
# - enable → Enable Vesktop client
|
||||||
|
# - package → Override package (default: pkgs.vesktop)
|
||||||
|
#
|
||||||
|
vesktop = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
package = pkgs.vesktop;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
# RustDesk (Home Module)
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - RustDesk remote desktop software (TeamViewer/AnyDesk alternative)
|
||||||
|
#
|
||||||
|
# Options:
|
||||||
|
# - enable → Enable RustDesk
|
||||||
|
# - package → Override package (default: pkgs.rustdesk)
|
||||||
|
#
|
||||||
|
# Notes:
|
||||||
|
# - Estimated build time: ~? Long....
|
||||||
|
#
|
||||||
|
rustdesk = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
package = pkgs.rustdesk;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
# VSCodium (Home Module)
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - VSCodium editor (open-source build of VS Code)
|
||||||
|
# - Optional extension sets
|
||||||
|
#
|
||||||
|
# Options:
|
||||||
|
# - enable → Enable VSCodium
|
||||||
|
# - extensions.enable → Enable extensions
|
||||||
|
# - extensions.standard→ Enable standard extensions
|
||||||
|
# - extensions.extra → Extra extensions to install
|
||||||
|
#
|
||||||
|
# Notes:
|
||||||
|
# - Some Microsoft extensions may be broken (e.g., ms-python.python)
|
||||||
|
#
|
||||||
|
vscodium = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
standard = true;
|
||||||
|
|
||||||
|
extra = [];
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
# Classic Game Collection (Home Module)
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - Small set of lightweight, classic desktop games
|
||||||
|
#
|
||||||
|
# Included:
|
||||||
|
# - KPat (Patience / Solitaire)
|
||||||
|
# - KSudoku
|
||||||
|
# - Space Cadet Pinball
|
||||||
|
# - Palapeli (jigsaw puzzles)
|
||||||
|
# - KMines (Minesweeper clone)
|
||||||
|
# - KBlocks (Tetris clone)
|
||||||
|
# - KMahjongg (Mahjong solitaire)
|
||||||
|
#
|
||||||
|
# Options:
|
||||||
|
# - enable → Enable the Classic Game Collection
|
||||||
|
#
|
||||||
|
classic-game-collection = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
# PrismLauncher (Home Module)
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - PrismLauncher (Minecraft launcher)
|
||||||
|
# - Optional inclusion of ffmpeg (some mods require it)
|
||||||
|
# - Configurable list of JDKs (for modpacks that need specific versions)
|
||||||
|
#
|
||||||
|
# Options:
|
||||||
|
# - enable → Enable PrismLauncher
|
||||||
|
# - includeFfmpeg→ Include ffmpeg for mods
|
||||||
|
# - jdks → List of Java runtimes for PrismLauncher
|
||||||
|
#
|
||||||
|
# Notes:
|
||||||
|
# - Installed via home.packages
|
||||||
|
# - JDKs are added to PATH so PrismLauncher can discover them
|
||||||
|
#
|
||||||
|
prismlauncher = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
includeFfmpeg = true;
|
||||||
|
|
||||||
|
jdks = [ pkgs.jdk17 ];
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
# CAVA (Home Module)
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - CAVA audio visualizer
|
||||||
|
# - Declarative configuration via Nix
|
||||||
|
# - Support for structured settings or raw config override
|
||||||
|
#
|
||||||
|
# Options:
|
||||||
|
# - enable → Enable CAVA (home module)
|
||||||
|
# - settings → Declarative structured configuration (default: ALSA, 60 FPS, basic colors)
|
||||||
|
# - configText → Raw configuration text (overrides settings if set)
|
||||||
|
#
|
||||||
|
# Notes:
|
||||||
|
# - Writes config to ~/.config/cava/config
|
||||||
|
# - If configText is set, settings are ignored
|
||||||
|
#
|
||||||
|
# Example:
|
||||||
|
# nyx-module.home.cava = {
|
||||||
|
# enable = true;
|
||||||
|
# settings.general.framerate = 120;
|
||||||
|
# settings.input.method = "pulse";
|
||||||
|
# };
|
||||||
|
cava = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
settings = default = {;
|
||||||
|
|
||||||
|
configText = null;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
# Spotify (music streaming client)
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - Spotify package (default)
|
||||||
|
# - Optional override to install a different package
|
||||||
|
#
|
||||||
|
# Notes:
|
||||||
|
# - Installs into home.packages
|
||||||
|
#
|
||||||
|
spotify = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
package = pkgs.spotify;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
# Camera GUI module
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - Camera GUI package (default: snapshot)
|
||||||
|
# - libcamera (always installed, required backend)
|
||||||
|
#
|
||||||
|
# Notes:
|
||||||
|
# - You can override the GUI package with another (e.g., cheese, kamoso)
|
||||||
|
#
|
||||||
|
camera = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
package = pkgs.snapshot;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
# Image Viewer
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - Installs a chosen image viewer application
|
||||||
|
#
|
||||||
|
# Notes:
|
||||||
|
# - Defaults to Gwenview
|
||||||
|
#
|
||||||
|
image-viewer = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
package = pkgs.gwenview;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
# Krita (Digital Painting Software)
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - Krita package (open-source digital painting and illustration software)
|
||||||
|
#
|
||||||
|
# Notes:
|
||||||
|
# - Installed via home.packages
|
||||||
|
#
|
||||||
|
krita = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
# Kdenlive (video editor)
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - Kdenlive video editor
|
||||||
|
# - Installed via home.packages
|
||||||
|
#
|
||||||
|
# Notes:
|
||||||
|
# - Package location depends on nixpkgs version:
|
||||||
|
# * pkgs.kdePackages.kdenlive (preferred, modern KDE split)
|
||||||
|
# * pkgs.libsForQt5.kdenlive (older releases, fallback)
|
||||||
|
#
|
||||||
|
kdenlive = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
# Video Player(s)
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - Installs one or more chosen video/media players
|
||||||
|
#
|
||||||
|
# Notes:
|
||||||
|
# - Defaults to [ vlc ]
|
||||||
|
#
|
||||||
|
video-player = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
packages = [ pkgs.vlc ];
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
# Zoom (video conferencing client)
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - Zoom package (default: pkgs.zoom-us)
|
||||||
|
#
|
||||||
|
# Options:
|
||||||
|
# - `package`: override the package (e.g. pkgs.zoom)
|
||||||
|
#
|
||||||
|
# Notes:
|
||||||
|
# - Installed via home.packages
|
||||||
|
#
|
||||||
|
zoom = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
package = pkgs.zoom-us;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
# Obsidian (note-taking / PKM app)
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - Obsidian package via home.packages
|
||||||
|
#
|
||||||
|
# Notes:
|
||||||
|
# - Consider adding theming support later
|
||||||
|
# (e.g., https://github.com/jackiejude/obsidian-temple-os)
|
||||||
|
#
|
||||||
|
obsidian = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
# LibreOffice (office suite)
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - LibreOffice package via home.packages
|
||||||
|
#
|
||||||
|
# Notes:
|
||||||
|
# - Simple module, just adds LibreOffice to the user environment
|
||||||
|
#
|
||||||
|
libreoffice = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
# PDF Viewer / Scanner
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - Install a chosen PDF or scanning GUI application
|
||||||
|
#
|
||||||
|
# Notes:
|
||||||
|
# - Defaults to Okular
|
||||||
|
#
|
||||||
|
pdf-reader = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
package = pkgs.kdeApplications.okular;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
# Printer GUI (scanning/printing tools)
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - Configurable GUI package for printing/scanning via home.packages
|
||||||
|
#
|
||||||
|
# Notes:
|
||||||
|
# - Default is `simple-scan` (GNOME Document Scanner)
|
||||||
|
# - Can be overridden with another package such as `system-config-printer`
|
||||||
|
#
|
||||||
|
printer-scan = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
package = pkgs.simple-scan;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
# Thunderbird (email client)
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - Thunderbird package via home.packages
|
||||||
|
#
|
||||||
|
# Notes:
|
||||||
|
# - Simple module, just adds Thunderbird to the user environment
|
||||||
|
#
|
||||||
|
thunderbird = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
# ProtonVPN (Home Module)
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - ProtonVPN GUI client
|
||||||
|
#
|
||||||
|
# Options:
|
||||||
|
# - enable → Enable ProtonVPN client
|
||||||
|
#
|
||||||
|
# Notes:
|
||||||
|
# - GUI only by default (CLI version available as pkgs.protonvpn-cli)
|
||||||
|
|
||||||
|
protonvpn = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
# CLI Tools (Home Module)
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - A curated set of command-line utilities in user’s environment
|
||||||
|
# - Examples: fastfetch, hyfetch, bat, fzf, tree, lsd, tmux
|
||||||
|
#
|
||||||
|
# Options:
|
||||||
|
# - enable → Enable CLI tools collection
|
||||||
|
# - extra → List of extra packages to install
|
||||||
|
tools = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
extra = [];
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
# Zsh (Home Module)
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - Zsh shell in the user profile
|
||||||
|
# - Zsh completion, autosuggestions, and syntax highlighting
|
||||||
|
#
|
||||||
|
# Options:
|
||||||
|
# - enable → Enable Zsh in the user profile
|
||||||
|
zsh = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
# Private Webapps
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - Browser-based desktop entries for personal/private webapps
|
||||||
|
# - Currently supported:
|
||||||
|
# • WhatsApp
|
||||||
|
#
|
||||||
|
# Options:
|
||||||
|
# - browser → Selects which browser package to use (default: chromium)
|
||||||
|
# - whatsapp → Enable WhatsApp webapp launcher
|
||||||
|
#
|
||||||
|
# Notes:
|
||||||
|
# - Uses --app mode to create minimal browser windows
|
||||||
|
# - Additional services can be added following the same pattern
|
||||||
|
private-webapps = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
browser = pkgs.chromium;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
# Work Webapps
|
||||||
|
#
|
||||||
|
# Provides:
|
||||||
|
# - Browser-based desktop entries for work-related webapps
|
||||||
|
# - Currently supported:
|
||||||
|
# • Slack
|
||||||
|
# • Microsoft Teams
|
||||||
|
# • Outlook Web
|
||||||
|
# • Microsoft Entra
|
||||||
|
#
|
||||||
|
# Options:
|
||||||
|
# - browser → Selects which browser package to use (default: chromium)
|
||||||
|
# - slack → Enable Slack webapp launcher
|
||||||
|
# - teams → Enable Teams webapp launcher
|
||||||
|
# - outlook → Enable Outlook webapp launcher
|
||||||
|
# - entra → Enable Entra webapp launcher
|
||||||
|
#
|
||||||
|
# Notes:
|
||||||
|
# - Uses --app mode for minimal windows (like PWAs)
|
||||||
|
# - Outlook entry uses a custom profile directory for isolation
|
||||||
|
work-webapps = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
browser = pkgs.chromium;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
hardware = {
|
||||||
|
bluetooth = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
# Custom Kernel Module for Microsoft Surface Pro (Kaby Lake / i5-7300U)
|
||||||
|
#
|
||||||
|
# Requires:
|
||||||
|
# - inputs.nixos-hardware.nixosModules.microsoft-surface-pro-intel
|
||||||
|
#
|
||||||
|
# Notes:
|
||||||
|
# - Estimated kernel build time: ~4h30m
|
||||||
|
#
|
||||||
|
custom-kernel-surfacepro-kbl = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
kernelVersion = "stable";
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
||||||
|
}
|
||||||
291
other/examples/example.nix
Normal file
291
other/examples/example.nix
Normal file
|
|
@ -0,0 +1,291 @@
|
||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
nyx-module = {
|
||||||
|
system = {
|
||||||
|
docker = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
username = "alice";
|
||||||
|
|
||||||
|
enableOnBoot = true;
|
||||||
|
|
||||||
|
rootless = true;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
openssh = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
passwordAuth = false;
|
||||||
|
|
||||||
|
permitRootLogin = "no";
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
podman = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
username = "alice";
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
vm = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
username = "alice";
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
zsh = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
ohMyZsh = true;
|
||||||
|
|
||||||
|
theme = "xiong-chiamiov-plus";
|
||||||
|
|
||||||
|
plugins = [ "git" ];
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
steam = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
remotePlay = true;
|
||||||
|
|
||||||
|
dedicatedServer = true;
|
||||||
|
|
||||||
|
localNetworkGameTransfers = true;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
flatpak = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
wireshark = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
username = "alice";
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
c-compiler = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
go = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
lua = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
python = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
rust = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
home = {
|
||||||
|
brave = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
standard = true;
|
||||||
|
|
||||||
|
extra = [];
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
signal-desktop = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
package = pkgs.signal-desktop;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
vesktop = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
package = pkgs.vesktop;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
rustdesk = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
package = pkgs.rustdesk;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
vscodium = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
standard = true;
|
||||||
|
|
||||||
|
extra = [];
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
classic-game-collection = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
prismlauncher = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
includeFfmpeg = true;
|
||||||
|
|
||||||
|
jdks = [ pkgs.jdk17 ];
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
cava = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
settings = default = {;
|
||||||
|
|
||||||
|
configText = null;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
spotify = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
package = pkgs.spotify;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
camera = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
package = pkgs.snapshot;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
image-viewer = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
package = pkgs.gwenview;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
krita = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
kdenlive = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
video-player = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
packages = [ pkgs.vlc ];
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
zoom = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
package = pkgs.zoom-us;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
obsidian = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
libreoffice = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
pdf-reader = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
package = pkgs.kdeApplications.okular;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
printer-scan = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
package = pkgs.simple-scan;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
thunderbird = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
protonvpn = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
tools = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
extra = [];
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
zsh = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
private-webapps = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
browser = pkgs.chromium;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
work-webapps = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
browser = pkgs.chromium;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
hardware = {
|
||||||
|
bluetooth = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
custom-kernel-surfacepro-kbl = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
kernelVersion = "stable";
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
||||||
|
}
|
||||||
23
other/missing-header.nix
Normal file
23
other/missing-header.nix
Normal file
|
|
@ -0,0 +1,23 @@
|
||||||
|
############################################################
|
||||||
|
# System Modules
|
||||||
|
############################################################
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
############################################################
|
||||||
|
# Home Modules
|
||||||
|
############################################################
|
||||||
Loading…
Add table
Add a link
Reference in a new issue