diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..d4557da --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +other/generated-examples \ No newline at end of file diff --git a/Readme.md b/Readme.md index 989b603..83e5db9 100644 --- a/Readme.md +++ b/Readme.md @@ -1 +1,200 @@ -Do NOT use this please this is just for me to test and learn +# Nyx-Modules + + +# Nyx-Modules + +Welcome to **Nyx-Modules**! + +This is my repo with all my modules, which makes it easier for me to import them into different configurations. Maybe it helps someone else too. + +`Modules` contains all the modules: + +```text +Modules +├── Hardware +├── Home +└── System +``` + +
+Full tree + +```bash +Modules +├── Hardware +│ ├── Bluetooth +│ │ ├── bluetooth.nix +│ │ └── default.nix +│ ├── default.nix +│ └── Surface +│ ├── custom-kernel-surfacepro-kbl.nix +│ ├── default.nix +│ └── thermal-conf.xml +├── Home +│ ├── default.nix +│ ├── GUI-Apps +│ │ ├── Browsers +│ │ │ ├── brave.nix +│ │ │ └── default.nix +│ │ ├── Communication +│ │ │ ├── default.nix +│ │ │ ├── Messaging +│ │ │ │ ├── default.nix +│ │ │ │ ├── signal-desktop.nix +│ │ │ │ └── vesktop.nix +│ │ │ └── Remote-Support +│ │ │ ├── default.nix +│ │ │ └── rustdesk.nix +│ │ ├── default.nix +│ │ ├── Development +│ │ │ ├── default.nix +│ │ │ └── vscodium.nix +│ │ ├── Gaming +│ │ │ ├── classic-game-collection.nix +│ │ │ ├── default.nix +│ │ │ └── prismlauncher.nix +│ │ ├── Multimedia +│ │ │ ├── Audio +│ │ │ │ ├── cava.nix +│ │ │ │ ├── default.nix +│ │ │ │ └── spotify.nix +│ │ │ ├── Capture +│ │ │ │ ├── camera.nix +│ │ │ │ └── default.nix +│ │ │ ├── default.nix +│ │ │ ├── Graphics +│ │ │ │ ├── default.nix +│ │ │ │ ├── image-viewer.nix +│ │ │ │ └── krita.nix +│ │ │ └── Video +│ │ │ ├── default.nix +│ │ │ ├── kdenlive.nix +│ │ │ ├── video-player.nix +│ │ │ └── zoom.nix +│ │ ├── Office +│ │ │ ├── default.nix +│ │ │ ├── Knowledge +│ │ │ │ ├── default.nix +│ │ │ │ └── obsidian.nix +│ │ │ └── Productivity +│ │ │ ├── default.nix +│ │ │ ├── libreoffice.nix +│ │ │ ├── pdf-reader.nix +│ │ │ ├── printer-scan.nix +│ │ │ └── thunderbird.nix +│ │ └── VPN +│ │ ├── default.nix +│ │ └── protonvpn.nix +│ ├── Shell +│ │ ├── cli-tools +│ │ │ ├── default.nix +│ │ │ └── tools.nix +│ │ ├── default.nix +│ │ └── zsh +│ │ ├── default.nix +│ │ └── zsh.nix +│ └── Webapps +│ ├── default.nix +│ ├── private-webapps.nix +│ └── work-webapps.nix +└── System + ├── Application + │ ├── cli + │ │ ├── default.nix + │ │ ├── docker.nix + │ │ ├── openssh.nix + │ │ ├── podman.nix + │ │ ├── vm.nix + │ │ └── zsh.nix + │ ├── default.nix + │ ├── Gaming + │ │ ├── default.nix + │ │ └── Steam + │ │ ├── default.nix + │ │ └── steam.nix + │ └── Special-Applications + │ ├── default.nix + │ ├── flatpak.nix + │ └── wireshark.nix + ├── default.nix + └── Programming-Tools + ├── c-compiler.nix + ├── default.nix + ├── go.nix + ├── lua.nix + ├── python.nix + └── rust.nix +``` + +Yeah… it is a lot. That is why I recommend using this mainly as a reference for your own modules. Rather than to Import it into your Config. + +
+ + +I’m not claiming this will be super helpful for everyone — it’s mostly a guideline for writing modules that are easy to sync across devices. + +--- + +## How to Use +_If you decide to adapt it in your config_ + +### Adding Nyx-Modules to your Flake + +```nix +{ + description = "Your Flake"; + + inputs = { + # Other inputs... + + # Nyx-Modules + nyx-modules.url = "github:Peritia-System/Nyx-Modules"; + nyx-modules.inputs.nixpkgs.follows = "nixpkgs"; + }; + + outputs = inputs @ { nyx-modules, ... }: { + nixosConfigurations.HOSTNAME = nixpkgs.lib.nixosSystem { + modules = [ + nyx-modules.nixosModules.default + ./configuration.nix + ]; + }; + }; +} +``` + +### Importing in `configuration.nix` + +```nix +imports = [ + # your other imports... + + # Nyx-Modules + inputs.nyx-modules.nixosModules.default + + # Hardware-specific modules + inputs.nyx-modules.nixosModules.hardware +]; +``` + +### Importing in `home.nix` + +```nix +imports = [ + inputs.nyx-modules.homeManagerModules.default + ./desktop.nix +]; +``` + +## What Options are there? + +Alot. +To get the full extend and use this repo fully you would best go through each file.... +But that is not really viable so check: `other/example` this is a shortend Version of what I use for one of my Systems. + +## Notes + +* Again this repository is intended as a guideline and reference for building modular Nix configurations. +* Feel free to adapt any modules to your own setup. +* Modules are organized by purpose (Hardware, Home, System) to make them easy to reuse across multiple machines. + diff --git a/other/autogen-basic-example.sh b/other/autogen-basic-example.sh index bb97a01..348cc9e 100755 --- a/other/autogen-basic-example.sh +++ b/other/autogen-basic-example.sh @@ -3,7 +3,7 @@ set -euo pipefail ROOT="${1:-../Modules}" # root dir (defaults to Modules) -OUT_DIR="examples" +OUT_DIR="generated-examples" mkdir -p "$OUT_DIR" OUT1="$OUT_DIR/example-with-headers-and-comments.nix" diff --git a/other/example/simple/configuration.nix b/other/example/simple/configuration.nix new file mode 100644 index 0000000..77233b2 --- /dev/null +++ b/other/example/simple/configuration.nix @@ -0,0 +1,113 @@ +{ config, pkgs, host, lib, inputs, userconf, ... }: + +{ + ################################################################ + # Module Imports + ################################################################ + imports = [ + # Host-specific hardware (autogenerated) + ./hardware-configuration.nix + + # Nyx-Modules + inputs.nyx-modules.nixosModules.default + + # Hardware-specific modules + inputs.nyx-modules.nixosModules.hardware + ]; + + + ################################################################ + # Nyx Modules + ################################################################ + nyx-module = { + ################################################################ + # Hardware Specific Configuration + ################################################################ + hardware = { + bluetooth.enable = true; + # this is exclusively for certain Microsoft Surface: + Custom-Kernel.SurfacePro-KabyLake = { + enable = false; + }; + }; + system = { + ################################################################ + # SSH Configuration + ################################################################ + openssh = { + enable = true; + passwordAuth = false; + permitRootLogin = "no"; + }; + + ################################################################ + # Containerization & Virtualization + ################################################################ + podman.enable = false; + docker.enable = false; + vm.enable = false; + + ################################################################ + # Flatpak + ################################################################ + flatpak.enable = false; + + ################################################################ + # Shell / Zsh Configuration + ################################################################ + zsh = { + enable = true; + ohMyZsh = true; + theme = "xiong-chiamiov-plus"; + plugins = [ "git" ]; + }; + + ################################################################ + # Gaming + ################################################################ + steam = { + enable = true; + openFirewall = { + remotePlay = true; + dedicatedServer = true; + localNetworkGameTransfers = true; + }; + }; + + ################################################################ + # Network Tools + ################################################################ + wireshark = { + enable = false; + username = username; + }; + + ################################################################ + # Developer Tools / Compilers + ################################################################ + c-compiler.enable = true; + go.enable = true; + lua.enable = true; + python.enable = true; + rust.enable = true; + + }; + }; + + + + ################################################################ + # Home Manager Configuration + ################################################################ + + home-manager = { + # your Homemanager config + }; + + + ################################################################ + # System Version + ################################################################ + + system.stateVersion = # your system Version; +} diff --git a/other/example/simple/home.nix b/other/example/simple/home.nix new file mode 100644 index 0000000..3aa5ed4 --- /dev/null +++ b/other/example/simple/home.nix @@ -0,0 +1,124 @@ +{ config, nixDirectory, pkgs, inputs, ... }: + +{ + ################################################################ + # Module Imports + ################################################################ + imports = [ + inputs.nyx-modules.homeManagerModules.default + ]; + + ################################################################ + # Nyx Modules + ################################################################ + nyx-module.home = { + + ################################################################ + # Web Browsers + ################################################################ + brave = { + enable = true; + extensions = { + enable = true; + standard = true; # uBlock, Proton Pass, Proton VPN + extra = []; # Additional extension IDs + }; + }; + + ################################################################ + # Messaging + ################################################################ + signal-desktop.enable = true; + vesktop.enable = true; + zoom.enable = false; + + ################################################################ + # Remote Support + ################################################################ + rustdesk.enable = false; + + ################################################################ + # Development + ################################################################ + vscodium = { + enable = true; + extensions = { + enable = true; + standard = true; + extra = []; + }; + }; + + ################################################################ + # Gaming + ################################################################ + classic-game-collection.enable = true; + prismlauncher.enable = true; + + ################################################################ + # Audio / Visual Utilities + ################################################################ + cava.enable = false; + spotify.enable = true; + camera.enable = true; + + image-viewer = { + enable = true; + package = pkgs.gwenview; + }; + + krita.enable = true; + kdenlive.enable = true; + + video-player = { + enable = true; + packages = [ pkgs.vlc pkgs.mpv ]; + }; + + ################################################################ + # Office + ################################################################ + obsidian.enable = true; + libreoffice.enable = true; + pdf-viewer.enable = true; + printer.enable = true; + thunderbird.enable = true; + + ################################################################ + # VPN + ################################################################ + protonvpn.enable = true; + + ################################################################ + # Shell / CLI Tools + ################################################################ + cli-tools = { + enable = true; + extra = [ pkgs.ripgrep pkgs.htop ]; + }; + + zsh.enable = true; + + ################################################################ + # Webapps + ################################################################ + private-webapps = { + enable = true; + browser = pkgs.chromium; + whatsapp.enable = true; + }; + + work-webapps = { + enable = true; + browser = pkgs.chromium; + slack.enable = false; + teams.enable = false; + outlook.enable = true; + entra.enable = false; + }; + }; +# note this is not all Nyx-Module can do. + +# other home.nix configurations + +} diff --git a/other/examples/example-with-comments.nix b/other/examples/example-with-comments.nix deleted file mode 100644 index 04e5d68..0000000 --- a/other/examples/example-with-comments.nix +++ /dev/null @@ -1,396 +0,0 @@ -{ 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"; - - }; - - }; - - }; -} diff --git a/other/examples/example-with-headers-and-comments.nix b/other/examples/example-with-headers-and-comments.nix deleted file mode 100644 index dbb822d..0000000 --- a/other/examples/example-with-headers-and-comments.nix +++ /dev/null @@ -1,845 +0,0 @@ -{ 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"; - - }; - - }; - - }; -} diff --git a/other/examples/example-with-headers.nix b/other/examples/example-with-headers.nix deleted file mode 100644 index 6a1613d..0000000 --- a/other/examples/example-with-headers.nix +++ /dev/null @@ -1,740 +0,0 @@ -{ 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"; - - }; - - }; - - }; -} diff --git a/other/examples/example.nix b/other/examples/example.nix deleted file mode 100644 index 4f17a04..0000000 --- a/other/examples/example.nix +++ /dev/null @@ -1,291 +0,0 @@ -{ 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"; - - }; - - }; - - }; -}