Main
This commit is contained in:
parent
fc0abdd4bb
commit
aca73cdd0f
73 changed files with 3873 additions and 381 deletions
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