Main
This commit is contained in:
parent
fc0abdd4bb
commit
aca73cdd0f
73 changed files with 3873 additions and 381 deletions
|
|
@ -1,3 +1,20 @@
|
|||
# Brave Browser (Home Module)
|
||||
#
|
||||
# Provides:
|
||||
# - Brave browser package
|
||||
# - Optional standard and custom extension sets
|
||||
#
|
||||
# Options:
|
||||
# - enable → Enable Brave browser
|
||||
# - extensions.enable → Enable Brave extensions
|
||||
# - extensions.standard→ Enable default extension set of extensions
|
||||
# - extensions.extra → Extra extension IDs to install
|
||||
#
|
||||
# Notes:
|
||||
# - Default extensions include uBlock Origin, Proton Pass, Proton VPN
|
||||
# - Extra extensions must be specified by Chrome Web Store ID
|
||||
#
|
||||
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
let
|
||||
|
|
@ -5,16 +22,39 @@ let
|
|||
in
|
||||
{
|
||||
options.nyx-module.home.brave = {
|
||||
enable = lib.mkEnableOption "Enable brave (home) module";
|
||||
enable = lib.mkEnableOption "Enable Brave (home module)";
|
||||
|
||||
package = lib.mkOption {
|
||||
type = lib.types.package;
|
||||
default = pkgs.brave;
|
||||
description = "Package to install for brave.";
|
||||
extensions = {
|
||||
enable = lib.mkEnableOption "Enable Brave extensions support";
|
||||
standard = lib.mkEnableOption "Enable default set of extensions (uBlock, Proton Pass, Proton VPN)";
|
||||
extra = lib.mkOption {
|
||||
type = lib.types.listOf lib.types.str;
|
||||
default = [];
|
||||
example = [ "abcdefghijklmnop" "qrstuvwxyz123456" ];
|
||||
description = "List of additional Brave extension IDs to install.";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
home.packages = [ cfg.package ];
|
||||
programs.brave = {
|
||||
enable = true;
|
||||
package = pkgs.brave;
|
||||
|
||||
extensions = lib.optionals cfg.extensions.enable (
|
||||
(lib.optionals cfg.extensions.standard [
|
||||
{ id = "cjpalhdlnbpafiamejdnhcphjbkeiagm"; } # uBlock Origin
|
||||
{ id = "ghmbeldphafepmbegfdlkpapadhbakde"; } # Proton Pass
|
||||
{ id = "jplgfhpmjnbigmhklmmbgecoobifkmpa"; } # Proton VPN
|
||||
]) ++
|
||||
(map (id: { inherit id; }) cfg.extensions.extra)
|
||||
);
|
||||
|
||||
commandLineArgs = [
|
||||
"--disable-features=AutofillSavePaymentMethods"
|
||||
"--disable-features=PasswordManagerOnboarding"
|
||||
"--disable-features=AutofillEnableAccountWalletStorage"
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,3 +1,13 @@
|
|||
# Signal Desktop (Home Module)
|
||||
#
|
||||
# Provides:
|
||||
# - Signal Desktop secure messaging client
|
||||
#
|
||||
# Options:
|
||||
# - enable → Enable Signal Desktop
|
||||
# - package → Override package (default: pkgs.signal-desktop)
|
||||
#
|
||||
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
let
|
||||
|
|
|
|||
|
|
@ -1,3 +1,13 @@
|
|||
# Vesktop (Home Module)
|
||||
#
|
||||
# Provides:
|
||||
# - Vesktop package (Discord client, Electron wrapper)
|
||||
#
|
||||
# Options:
|
||||
# - enable → Enable Vesktop client
|
||||
# - package → Override package (default: pkgs.vesktop)
|
||||
#
|
||||
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
let
|
||||
|
|
|
|||
|
|
@ -0,0 +1,37 @@
|
|||
# RustDesk (Home Module)
|
||||
#
|
||||
# Provides:
|
||||
# - RustDesk remote desktop software (TeamViewer/AnyDesk alternative)
|
||||
#
|
||||
# Options:
|
||||
# - enable → Enable RustDesk
|
||||
# - package → Override package (default: pkgs.rustdesk)
|
||||
#
|
||||
# Notes:
|
||||
# - Estimated build time: ~? Long....
|
||||
#
|
||||
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
let
|
||||
cfg = config.nyx-module.home.rustdesk;
|
||||
in
|
||||
{
|
||||
options.nyx-module.home.rustdesk = {
|
||||
enable = lib.mkEnableOption "Enable rustdesk (home) module";
|
||||
|
||||
package = lib.mkOption {
|
||||
type = lib.types.package;
|
||||
default = pkgs.rustdesk;
|
||||
description = ''
|
||||
Package to install for RustDesk.
|
||||
You can override this if you want to pin a version or use a fork.
|
||||
'';
|
||||
example = "pkgs.rustdesk.overrideAttrs (old: { version = \"1.3.5\"; })";
|
||||
};
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
home.packages = [ cfg.package ];
|
||||
};
|
||||
}
|
||||
|
|
@ -1,20 +0,0 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
let
|
||||
cfg = config.nyx-module.home.rustdesk;
|
||||
in
|
||||
{
|
||||
options.nyx-module.home.rustdesk = {
|
||||
enable = lib.mkEnableOption "Enable rustdesk (home) module";
|
||||
|
||||
package = lib.mkOption {
|
||||
type = lib.types.package;
|
||||
default = pkgs.rustdesk;
|
||||
description = "Package to install for rustdesk.";
|
||||
};
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
home.packages = [ cfg.package ];
|
||||
};
|
||||
}
|
||||
|
|
@ -3,6 +3,6 @@
|
|||
{
|
||||
imports = [
|
||||
./Messaging
|
||||
./Remote
|
||||
./Remote-Support
|
||||
];
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,20 +1,58 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
# VSCodium (Home Module)
|
||||
#
|
||||
# Provides:
|
||||
# - VSCodium editor (open-source build of VS Code)
|
||||
# - Optional extension sets
|
||||
#
|
||||
# Options:
|
||||
# - enable → Enable VSCodium
|
||||
# - extensions.enable → Enable extensions
|
||||
# - extensions.standard→ Enable standard extensions
|
||||
# - extensions.extra → Extra extensions to install
|
||||
#
|
||||
# Notes:
|
||||
# - Some Microsoft extensions may be broken (e.g., ms-python.python)
|
||||
#
|
||||
|
||||
|
||||
{ config, pkgs, lib, ... }:
|
||||
|
||||
let
|
||||
cfg = config.nyx-module.home.vscodium;
|
||||
in
|
||||
{
|
||||
options.nyx-module.home.vscodium = {
|
||||
enable = lib.mkEnableOption "Enable vscodium (home) module";
|
||||
enable = lib.mkEnableOption "Enable VSCodium with extensions";
|
||||
|
||||
package = lib.mkOption {
|
||||
type = lib.types.package;
|
||||
default = pkgs.vscodium;
|
||||
description = "Package to install for vscodium.";
|
||||
extensions = {
|
||||
enable = lib.mkEnableOption "Enable VSCodium extensions";
|
||||
|
||||
standard = lib.mkEnableOption "Enable standard extensions";
|
||||
|
||||
extra = lib.mkOption {
|
||||
type = lib.types.listOf lib.types.package;
|
||||
default = [];
|
||||
example = [ pkgs.vscode-extensions.ms-python.python ];
|
||||
description = "List of extra VSCodium extensions to install.";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
home.packages = [ cfg.package ];
|
||||
programs.vscode = {
|
||||
enable = true;
|
||||
package = pkgs.vscodium;
|
||||
|
||||
profiles.default.extensions =
|
||||
lib.optionals cfg.extensions.enable (
|
||||
(lib.optionals cfg.extensions.standard (with pkgs.vscode-extensions; [
|
||||
catppuccin.catppuccin-vsc
|
||||
jnoortheen.nix-ide
|
||||
ms-azuretools.vscode-docker
|
||||
# ms-python.python # currently broken (pygls failure)
|
||||
]))
|
||||
++ cfg.extensions.extra
|
||||
);
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,3 +1,21 @@
|
|||
# Classic Game Collection (Home Module)
|
||||
#
|
||||
# Provides:
|
||||
# - Small set of lightweight, classic desktop games
|
||||
#
|
||||
# Included:
|
||||
# - KPat (Patience / Solitaire)
|
||||
# - KSudoku
|
||||
# - Space Cadet Pinball
|
||||
# - Palapeli (jigsaw puzzles)
|
||||
# - KMines (Minesweeper clone)
|
||||
# - KBlocks (Tetris clone)
|
||||
# - KMahjongg (Mahjong solitaire)
|
||||
#
|
||||
# Options:
|
||||
# - enable → Enable the Classic Game Collection
|
||||
#
|
||||
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
let
|
||||
|
|
@ -5,16 +23,18 @@ let
|
|||
in
|
||||
{
|
||||
options.nyx-module.home.classic-game-collection = {
|
||||
enable = lib.mkEnableOption "Enable classic-game-collection (home) module";
|
||||
|
||||
package = lib.mkOption {
|
||||
type = lib.types.package;
|
||||
default = pkgs.classic-game-collection;
|
||||
description = "Package to install for classic-game-collection.";
|
||||
};
|
||||
enable = lib.mkEnableOption "Enable the Classic Game Collection (home module)";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
home.packages = [ cfg.package ];
|
||||
home.packages = with pkgs; [
|
||||
kdePackages.kpat
|
||||
kdePackages.ksudoku
|
||||
space-cadet-pinball
|
||||
kdePackages.palapeli
|
||||
kdePackages.kmines
|
||||
kdePackages.kblocks
|
||||
kdePackages.libkmahjongg
|
||||
];
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,3 +1,20 @@
|
|||
# PrismLauncher (Home Module)
|
||||
#
|
||||
# Provides:
|
||||
# - PrismLauncher (Minecraft launcher)
|
||||
# - Optional inclusion of ffmpeg (some mods require it)
|
||||
# - Configurable list of JDKs (for modpacks that need specific versions)
|
||||
#
|
||||
# Options:
|
||||
# - enable → Enable PrismLauncher
|
||||
# - includeFfmpeg→ Include ffmpeg for mods
|
||||
# - jdks → List of Java runtimes for PrismLauncher
|
||||
#
|
||||
# Notes:
|
||||
# - Installed via home.packages
|
||||
# - JDKs are added to PATH so PrismLauncher can discover them
|
||||
#
|
||||
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
let
|
||||
|
|
@ -5,16 +22,22 @@ let
|
|||
in
|
||||
{
|
||||
options.nyx-module.home.prismlauncher = {
|
||||
enable = lib.mkEnableOption "Enable prismlauncher (home) module";
|
||||
enable = lib.mkEnableOption "Enable PrismLauncher (Minecraft launcher)";
|
||||
|
||||
package = lib.mkOption {
|
||||
type = lib.types.package;
|
||||
default = pkgs.prismlauncher;
|
||||
description = "Package to install for prismlauncher.";
|
||||
includeFfmpeg = lib.mkEnableOption "Include ffmpeg for mods that require it";
|
||||
|
||||
jdks = lib.mkOption {
|
||||
type = lib.types.listOf lib.types.package;
|
||||
default = [ pkgs.jdk17 ];
|
||||
example = [ pkgs.jdk8 pkgs.jdk17 pkgs.jdk21 ];
|
||||
description = "List of Java runtimes to make available for PrismLauncher.";
|
||||
};
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
home.packages = [ cfg.package ];
|
||||
home.packages =
|
||||
[ pkgs.prismlauncher ]
|
||||
++ lib.optionals cfg.includeFfmpeg [ pkgs.ffmpeg ]
|
||||
++ cfg.jdks;
|
||||
};
|
||||
}
|
||||
|
|
|
|||
85
Modules/Home/GUI-Apps/Multimedia/Audio/cava.nix
Normal file
85
Modules/Home/GUI-Apps/Multimedia/Audio/cava.nix
Normal file
|
|
@ -0,0 +1,85 @@
|
|||
# CAVA (Home Module)
|
||||
#
|
||||
# Provides:
|
||||
# - CAVA audio visualizer
|
||||
# - Declarative configuration via Nix
|
||||
# - Support for structured settings or raw config override
|
||||
#
|
||||
# Options:
|
||||
# - enable → Enable CAVA (home module)
|
||||
# - settings → Declarative structured configuration (default: ALSA, 60 FPS, basic colors)
|
||||
# - configText → Raw configuration text (overrides settings if set)
|
||||
#
|
||||
# Notes:
|
||||
# - Writes config to ~/.config/cava/config
|
||||
# - If configText is set, settings are ignored
|
||||
#
|
||||
# Example:
|
||||
# nyx-module.home.cava = {
|
||||
# enable = true;
|
||||
# settings.general.framerate = 120;
|
||||
# settings.input.method = "pulse";
|
||||
# };
|
||||
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
let
|
||||
cfg = config.nyx-module.home.cava;
|
||||
in
|
||||
{
|
||||
options.nyx-module.home.cava = {
|
||||
enable = lib.mkEnableOption "Enable CAVA (home) module";
|
||||
|
||||
settings = lib.mkOption {
|
||||
type = lib.types.attrs;
|
||||
default = {
|
||||
general.framerate = 60;
|
||||
input.method = "alsa";
|
||||
smoothing.noise_reduction = 88;
|
||||
color = {
|
||||
background = "#000000";
|
||||
foreground = "#FFFFFF";
|
||||
};
|
||||
};
|
||||
description = ''
|
||||
Declarative CAVA settings, written to `~/.config/cava/config`.
|
||||
Ignored if `configText` is set.
|
||||
'';
|
||||
example = {
|
||||
general.framerate = 30;
|
||||
input.method = "pulseaudio";
|
||||
color.foreground = "#00FF00";
|
||||
};
|
||||
};
|
||||
|
||||
configText = lib.mkOption {
|
||||
type = lib.types.nullOr lib.types.lines;
|
||||
default = null;
|
||||
description = ''
|
||||
Raw CAVA configuration file contents.
|
||||
If set, overrides `settings` and is written directly to `~/.config/cava/config`.
|
||||
'';
|
||||
example = ''
|
||||
[general]
|
||||
framerate = 120
|
||||
[input]
|
||||
method = pulse
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
programs.cava = {
|
||||
enable = true;
|
||||
package = pkgs.cava;
|
||||
|
||||
|
||||
settings = lib.mkIf (cfg.configText == null) cfg.settings;
|
||||
};
|
||||
|
||||
|
||||
xdg.configFile."cava/config" = lib.mkIf (cfg.configText != null) {
|
||||
text = cfg.configText;
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
{
|
||||
imports = [
|
||||
./cava.nix
|
||||
./spotify.nix
|
||||
];
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,3 +1,13 @@
|
|||
# Spotify (music streaming client)
|
||||
#
|
||||
# Provides:
|
||||
# - Spotify package (default)
|
||||
# - Optional override to install a different package
|
||||
#
|
||||
# Notes:
|
||||
# - Installs into home.packages
|
||||
#
|
||||
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
let
|
||||
|
|
@ -5,12 +15,17 @@ let
|
|||
in
|
||||
{
|
||||
options.nyx-module.home.spotify = {
|
||||
enable = lib.mkEnableOption "Enable spotify (home) module";
|
||||
enable = lib.mkEnableOption "Enable Spotify (home) module";
|
||||
|
||||
package = lib.mkOption {
|
||||
type = lib.types.package;
|
||||
default = pkgs.spotify;
|
||||
description = "Package to install for spotify.";
|
||||
example = pkgs.ncspot;
|
||||
description = ''
|
||||
Package to install for Spotify support.
|
||||
Defaults to the official `pkgs.spotify`, but you can override with
|
||||
`pkgs.ncspot`, `pkgs.spotifyd`, or similar alternatives.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -1,3 +1,13 @@
|
|||
# Camera GUI module
|
||||
#
|
||||
# Provides:
|
||||
# - Camera GUI package (default: snapshot)
|
||||
# - libcamera (always installed, required backend)
|
||||
#
|
||||
# Notes:
|
||||
# - You can override the GUI package with another (e.g., cheese, kamoso)
|
||||
#
|
||||
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
let
|
||||
|
|
@ -9,12 +19,16 @@ in
|
|||
|
||||
package = lib.mkOption {
|
||||
type = lib.types.package;
|
||||
default = pkgs.camera;
|
||||
description = "Package to install for camera.";
|
||||
default = pkgs.snapshot;
|
||||
example = pkgs.cheese;
|
||||
description = "Camera GUI package to install.";
|
||||
};
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
home.packages = [ cfg.package ];
|
||||
home.packages = [
|
||||
cfg.package
|
||||
pkgs.libcamera
|
||||
];
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
{
|
||||
imports = [
|
||||
./image-viewer.nix
|
||||
./krita.nix
|
||||
];
|
||||
}
|
||||
|
|
|
|||
30
Modules/Home/GUI-Apps/Multimedia/Graphics/image-viewer.nix
Normal file
30
Modules/Home/GUI-Apps/Multimedia/Graphics/image-viewer.nix
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
# Image Viewer
|
||||
#
|
||||
# Provides:
|
||||
# - Installs a chosen image viewer application
|
||||
#
|
||||
# Notes:
|
||||
# - Defaults to Gwenview
|
||||
#
|
||||
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
let
|
||||
cfg = config.nyx-module.home.image-viewer;
|
||||
in
|
||||
{
|
||||
options.nyx-module.home.image-viewer = {
|
||||
enable = lib.mkEnableOption "Enable image viewer (home module)";
|
||||
|
||||
package = lib.mkOption {
|
||||
type = lib.types.package;
|
||||
default = pkgs.gwenview;
|
||||
example = pkgs.feh;
|
||||
description = "Image viewer package to install (e.g. gwenview, feh, imv).";
|
||||
};
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
home.packages = [ cfg.package ];
|
||||
};
|
||||
}
|
||||
|
|
@ -1,3 +1,12 @@
|
|||
# Krita (Digital Painting Software)
|
||||
#
|
||||
# Provides:
|
||||
# - Krita package (open-source digital painting and illustration software)
|
||||
#
|
||||
# Notes:
|
||||
# - Installed via home.packages
|
||||
#
|
||||
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
let
|
||||
|
|
@ -5,16 +14,12 @@ let
|
|||
in
|
||||
{
|
||||
options.nyx-module.home.krita = {
|
||||
enable = lib.mkEnableOption "Enable krita (home) module";
|
||||
|
||||
package = lib.mkOption {
|
||||
type = lib.types.package;
|
||||
default = pkgs.krita;
|
||||
description = "Package to install for krita.";
|
||||
};
|
||||
enable = lib.mkEnableOption "Enable Krita (home) module";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
home.packages = [ cfg.package ];
|
||||
home.packages = with pkgs; [
|
||||
krita
|
||||
];
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@
|
|||
{
|
||||
imports = [
|
||||
./kdenlive.nix
|
||||
./video-player.nix
|
||||
./zoom.nix
|
||||
];
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,3 +1,15 @@
|
|||
# Kdenlive (video editor)
|
||||
#
|
||||
# Provides:
|
||||
# - Kdenlive video editor
|
||||
# - Installed via home.packages
|
||||
#
|
||||
# Notes:
|
||||
# - Package location depends on nixpkgs version:
|
||||
# * pkgs.kdePackages.kdenlive (preferred, modern KDE split)
|
||||
# * pkgs.libsForQt5.kdenlive (older releases, fallback)
|
||||
#
|
||||
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
let
|
||||
|
|
@ -5,16 +17,12 @@ let
|
|||
in
|
||||
{
|
||||
options.nyx-module.home.kdenlive = {
|
||||
enable = lib.mkEnableOption "Enable kdenlive (home) module";
|
||||
|
||||
package = lib.mkOption {
|
||||
type = lib.types.package;
|
||||
default = pkgs.kdenlive;
|
||||
description = "Package to install for kdenlive.";
|
||||
};
|
||||
enable = lib.mkEnableOption "Enable Kdenlive (home) module";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
home.packages = [ cfg.package ];
|
||||
home.packages = [
|
||||
(pkgs.kdePackages.kdenlive or pkgs.libsForQt5.kdenlive)
|
||||
];
|
||||
};
|
||||
}
|
||||
|
|
|
|||
39
Modules/Home/GUI-Apps/Multimedia/Video/video-player.nix
Normal file
39
Modules/Home/GUI-Apps/Multimedia/Video/video-player.nix
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
# Video Player(s)
|
||||
#
|
||||
# Provides:
|
||||
# - Installs one or more chosen video/media players
|
||||
#
|
||||
# Notes:
|
||||
# - Defaults to [ vlc ]
|
||||
#
|
||||
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
let
|
||||
cfg = config.nyx-module.home.video-player;
|
||||
in
|
||||
{
|
||||
options.nyx-module.home.video-player = {
|
||||
enable = lib.mkEnableOption "Enable video players (home module)";
|
||||
|
||||
packages = lib.mkOption {
|
||||
type = lib.types.listOf lib.types.package;
|
||||
default = [ pkgs.vlc ];
|
||||
example = [ pkgs.vlc pkgs.mpv pkgs.celluloid ];
|
||||
description = "List of video/media players to install (e.g. vlc, mpv, celluloid).";
|
||||
};
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
home.packages = cfg.packages;
|
||||
};
|
||||
}
|
||||
|
||||
##########
|
||||
# Example
|
||||
##########
|
||||
|
||||
# nyx-module.home.video-player = {
|
||||
# enable = true;
|
||||
# packages = [ pkgs.vlc pkgs.mpv ];
|
||||
# };
|
||||
|
|
@ -1,3 +1,15 @@
|
|||
# Zoom (video conferencing client)
|
||||
#
|
||||
# Provides:
|
||||
# - Zoom package (default: pkgs.zoom-us)
|
||||
#
|
||||
# Options:
|
||||
# - `package`: override the package (e.g. pkgs.zoom)
|
||||
#
|
||||
# Notes:
|
||||
# - Installed via home.packages
|
||||
#
|
||||
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
let
|
||||
|
|
@ -5,12 +17,12 @@ let
|
|||
in
|
||||
{
|
||||
options.nyx-module.home.zoom = {
|
||||
enable = lib.mkEnableOption "Enable zoom (home) module";
|
||||
enable = lib.mkEnableOption "Enable Zoom (home) module";
|
||||
|
||||
package = lib.mkOption {
|
||||
type = lib.types.package;
|
||||
default = pkgs.zoom;
|
||||
description = "Package to install for zoom.";
|
||||
default = pkgs.zoom-us;
|
||||
description = "Zoom package to install (e.g., pkgs.zoom-us).";
|
||||
};
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -1,3 +1,13 @@
|
|||
# Obsidian (note-taking / PKM app)
|
||||
#
|
||||
# Provides:
|
||||
# - Obsidian package via home.packages
|
||||
#
|
||||
# Notes:
|
||||
# - Consider adding theming support later
|
||||
# (e.g., https://github.com/jackiejude/obsidian-temple-os)
|
||||
#
|
||||
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
let
|
||||
|
|
@ -5,16 +15,10 @@ let
|
|||
in
|
||||
{
|
||||
options.nyx-module.home.obsidian = {
|
||||
enable = lib.mkEnableOption "Enable obsidian (home) module";
|
||||
|
||||
package = lib.mkOption {
|
||||
type = lib.types.package;
|
||||
default = pkgs.obsidian;
|
||||
description = "Package to install for obsidian.";
|
||||
};
|
||||
enable = lib.mkEnableOption "Enable Obsidian (home module)";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
home.packages = [ cfg.package ];
|
||||
home.packages = [ pkgs.obsidian ];
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,7 +2,9 @@
|
|||
|
||||
{
|
||||
imports = [
|
||||
./office-apps.nix
|
||||
./libreoffice.nix
|
||||
./pdf-reader.nix
|
||||
./printer-scan.nix
|
||||
./thunderbird.nix
|
||||
];
|
||||
}
|
||||
|
|
|
|||
23
Modules/Home/GUI-Apps/Office/Productivity/libreoffice.nix
Normal file
23
Modules/Home/GUI-Apps/Office/Productivity/libreoffice.nix
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
# LibreOffice (office suite)
|
||||
#
|
||||
# Provides:
|
||||
# - LibreOffice package via home.packages
|
||||
#
|
||||
# Notes:
|
||||
# - Simple module, just adds LibreOffice to the user environment
|
||||
#
|
||||
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
let
|
||||
cfg = config.nyx-module.home.libreoffice;
|
||||
in
|
||||
{
|
||||
options.nyx-module.home.libreoffice = {
|
||||
enable = lib.mkEnableOption "Enable LibreOffice (home module)";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
home.packages = [ pkgs.libreoffice ];
|
||||
};
|
||||
}
|
||||
|
|
@ -1,20 +0,0 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
let
|
||||
cfg = config.nyx-module.home.office-apps;
|
||||
in
|
||||
{
|
||||
options.nyx-module.home.office-apps = {
|
||||
enable = lib.mkEnableOption "Enable office-apps (home) module";
|
||||
|
||||
package = lib.mkOption {
|
||||
type = lib.types.package;
|
||||
default = pkgs.office-apps;
|
||||
description = "Package to install for office-apps.";
|
||||
};
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
home.packages = [ cfg.package ];
|
||||
};
|
||||
}
|
||||
30
Modules/Home/GUI-Apps/Office/Productivity/pdf-reader.nix
Normal file
30
Modules/Home/GUI-Apps/Office/Productivity/pdf-reader.nix
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
# PDF Viewer / Scanner
|
||||
#
|
||||
# Provides:
|
||||
# - Install a chosen PDF or scanning GUI application
|
||||
#
|
||||
# Notes:
|
||||
# - Defaults to Okular
|
||||
#
|
||||
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
let
|
||||
cfg = config.nyx-module.home.pdf-viewer;
|
||||
in
|
||||
{
|
||||
options.nyx-module.home.pdf-viewer = {
|
||||
enable = lib.mkEnableOption "Enable PDF (home module)";
|
||||
|
||||
package = lib.mkOption {
|
||||
type = lib.types.package;
|
||||
default = pkgs.kdeApplications.okular;
|
||||
example = pkgs.evince;
|
||||
description = "PDF or scanning GUI package to install (e.g. Okular, Evince, Xournal++).";
|
||||
};
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
home.packages = [ cfg.package ];
|
||||
};
|
||||
}
|
||||
|
|
@ -1,16 +1,27 @@
|
|||
# Printer GUI (scanning/printing tools)
|
||||
#
|
||||
# Provides:
|
||||
# - Configurable GUI package for printing/scanning via home.packages
|
||||
#
|
||||
# Notes:
|
||||
# - Default is `simple-scan` (GNOME Document Scanner)
|
||||
# - Can be overridden with another package such as `system-config-printer`
|
||||
#
|
||||
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
let
|
||||
cfg = config.nyx-module.home.printer-scan;
|
||||
cfg = config.nyx-module.home.printer;
|
||||
in
|
||||
{
|
||||
options.nyx-module.home.printer-scan = {
|
||||
enable = lib.mkEnableOption "Enable printer-scan (home) module";
|
||||
options.nyx-module.home.printer = {
|
||||
enable = lib.mkEnableOption "Enable printer GUI (home module)";
|
||||
|
||||
package = lib.mkOption {
|
||||
type = lib.types.package;
|
||||
default = pkgs.printer-scan;
|
||||
description = "Package to install for printer-scan.";
|
||||
default = pkgs.simple-scan;
|
||||
example = pkgs.system-config-printer;
|
||||
description = "Printer/scanner GUI package to install.";
|
||||
};
|
||||
};
|
||||
|
||||
|
|
|
|||
23
Modules/Home/GUI-Apps/Office/Productivity/thunderbird.nix
Normal file
23
Modules/Home/GUI-Apps/Office/Productivity/thunderbird.nix
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
# Thunderbird (email client)
|
||||
#
|
||||
# Provides:
|
||||
# - Thunderbird package via home.packages
|
||||
#
|
||||
# Notes:
|
||||
# - Simple module, just adds Thunderbird to the user environment
|
||||
#
|
||||
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
let
|
||||
cfg = config.nyx-module.home.thunderbird;
|
||||
in
|
||||
{
|
||||
options.nyx-module.home.thunderbird = {
|
||||
enable = lib.mkEnableOption "Enable Thunderbird (home module)";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
home.packages = [ pkgs.thunderbird ];
|
||||
};
|
||||
}
|
||||
|
|
@ -1,7 +0,0 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
{
|
||||
imports = [
|
||||
./standard-apps.nix
|
||||
];
|
||||
}
|
||||
|
|
@ -1,20 +0,0 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
let
|
||||
cfg = config.nyx-module.home.standard-apps;
|
||||
in
|
||||
{
|
||||
options.nyx-module.home.standard-apps = {
|
||||
enable = lib.mkEnableOption "Enable standard-apps (home) module";
|
||||
|
||||
package = lib.mkOption {
|
||||
type = lib.types.package;
|
||||
default = pkgs.standard-apps;
|
||||
description = "Package to install for standard-apps.";
|
||||
};
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
home.packages = [ cfg.package ];
|
||||
};
|
||||
}
|
||||
|
|
@ -1,3 +1,15 @@
|
|||
# ProtonVPN (Home Module)
|
||||
#
|
||||
# Provides:
|
||||
# - ProtonVPN GUI client
|
||||
#
|
||||
# Options:
|
||||
# - enable → Enable ProtonVPN client
|
||||
#
|
||||
# Notes:
|
||||
# - GUI only by default (CLI version available as pkgs.protonvpn-cli)
|
||||
|
||||
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
let
|
||||
|
|
@ -5,16 +17,12 @@ let
|
|||
in
|
||||
{
|
||||
options.nyx-module.home.protonvpn = {
|
||||
enable = lib.mkEnableOption "Enable protonvpn (home) module";
|
||||
|
||||
package = lib.mkOption {
|
||||
type = lib.types.package;
|
||||
default = pkgs.protonvpn;
|
||||
description = "Package to install for protonvpn.";
|
||||
};
|
||||
enable = lib.mkEnableOption "Enable ProtonVPN (home module)";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
home.packages = [ cfg.package ];
|
||||
home.packages = with pkgs; [
|
||||
protonvpn-gui
|
||||
];
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,7 +8,6 @@
|
|||
./Gaming
|
||||
./Multimedia
|
||||
./Office
|
||||
./System-Tools
|
||||
./VPN
|
||||
];
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,20 +1,40 @@
|
|||
# CLI Tools (Home Module)
|
||||
#
|
||||
# Provides:
|
||||
# - A curated set of command-line utilities in user’s environment
|
||||
# - Examples: fastfetch, hyfetch, bat, fzf, tree, lsd, tmux
|
||||
#
|
||||
# Options:
|
||||
# - enable → Enable CLI tools collection
|
||||
# - extra → List of extra packages to install
|
||||
|
||||
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
let
|
||||
cfg = config.nyx-module.home.tools;
|
||||
cfg = config.nyx-module.home.cli-tools;
|
||||
in
|
||||
{
|
||||
options.nyx-module.home.tools = {
|
||||
enable = lib.mkEnableOption "Enable tools (home) module";
|
||||
options.nyx-module.home.cli-tools = {
|
||||
enable = lib.mkEnableOption "Enable CLI tools (home module)";
|
||||
|
||||
package = lib.mkOption {
|
||||
type = lib.types.package;
|
||||
default = pkgs.tools;
|
||||
description = "Package to install for tools.";
|
||||
extra = lib.mkOption {
|
||||
type = lib.types.listOf lib.types.package;
|
||||
default = [];
|
||||
example = [ pkgs.ripgrep pkgs.htop ];
|
||||
description = "Extra CLI tools to install in addition to the defaults.";
|
||||
};
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
home.packages = [ cfg.package ];
|
||||
home.packages = with pkgs; [
|
||||
fastfetch
|
||||
hyfetch
|
||||
bat
|
||||
fzf
|
||||
tree
|
||||
lsd
|
||||
tmux
|
||||
] ++ cfg.extra;
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,3 +1,12 @@
|
|||
# Zsh (Home Module)
|
||||
#
|
||||
# Provides:
|
||||
# - Zsh shell in the user profile
|
||||
# - Zsh completion, autosuggestions, and syntax highlighting
|
||||
#
|
||||
# Options:
|
||||
# - enable → Enable Zsh in the user profile
|
||||
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
let
|
||||
|
|
@ -5,16 +14,44 @@ let
|
|||
in
|
||||
{
|
||||
options.nyx-module.home.zsh = {
|
||||
enable = lib.mkEnableOption "Enable zsh (home) module";
|
||||
|
||||
package = lib.mkOption {
|
||||
type = lib.types.package;
|
||||
default = pkgs.zsh;
|
||||
description = "Package to install for zsh.";
|
||||
};
|
||||
enable = lib.mkEnableOption "Enable Zsh (home module)";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
home.packages = [ cfg.package ];
|
||||
programs.zsh = {
|
||||
enable = true;
|
||||
enableCompletion = true;
|
||||
|
||||
plugins = [
|
||||
{
|
||||
name = "zsh-autosuggestions";
|
||||
src = pkgs.zsh-autosuggestions;
|
||||
}
|
||||
{
|
||||
name = "zsh-syntax-highlighting";
|
||||
src = pkgs.zsh-syntax-highlighting;
|
||||
}
|
||||
];
|
||||
|
||||
initExtra = ''
|
||||
hyfetch
|
||||
|
||||
alias ls='lsd'
|
||||
alias l='ls -l'
|
||||
alias la='ls -a'
|
||||
alias lla='ls -la'
|
||||
alias lt='ls --tree'
|
||||
|
||||
HISTFILE=~/.zsh_history
|
||||
HISTSIZE=10000
|
||||
SAVEHIST=10000
|
||||
setopt appendhistory
|
||||
'';
|
||||
};
|
||||
|
||||
home.packages = with pkgs; [
|
||||
zsh-autosuggestions
|
||||
zsh-syntax-highlighting
|
||||
];
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,3 +1,18 @@
|
|||
# Private Webapps
|
||||
#
|
||||
# Provides:
|
||||
# - Browser-based desktop entries for personal/private webapps
|
||||
# - Currently supported:
|
||||
# • WhatsApp
|
||||
#
|
||||
# Options:
|
||||
# - browser → Selects which browser package to use (default: chromium)
|
||||
# - whatsapp → Enable WhatsApp webapp launcher
|
||||
#
|
||||
# Notes:
|
||||
# - Uses --app mode to create minimal browser windows
|
||||
# - Additional services can be added following the same pattern
|
||||
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
let
|
||||
|
|
@ -5,16 +20,28 @@ let
|
|||
in
|
||||
{
|
||||
options.nyx-module.home.private-webapps = {
|
||||
enable = lib.mkEnableOption "Enable private-webapps (home) module";
|
||||
enable = lib.mkEnableOption "Enable private webapps (home module)";
|
||||
|
||||
package = lib.mkOption {
|
||||
browser = lib.mkOption {
|
||||
type = lib.types.package;
|
||||
default = pkgs.private-webapps;
|
||||
description = "Package to install for private-webapps.";
|
||||
default = pkgs.chromium;
|
||||
example = pkgs.firefox;
|
||||
description = "Browser package to use for private webapps.";
|
||||
};
|
||||
|
||||
whatsapp.enable = lib.mkEnableOption "Enable WhatsApp webapp entry";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
home.packages = [ cfg.package ];
|
||||
xdg.desktopEntries = lib.mkMerge [
|
||||
(lib.mkIf cfg.whatsapp.enable {
|
||||
whatsapp = {
|
||||
name = "WhatsApp";
|
||||
exec = "${cfg.browser}/bin/${cfg.browser.pname} --app=https://web.whatsapp.com/";
|
||||
icon = "WhatsApp";
|
||||
type = "Application";
|
||||
};
|
||||
})
|
||||
];
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,3 +1,24 @@
|
|||
# Work Webapps
|
||||
#
|
||||
# Provides:
|
||||
# - Browser-based desktop entries for work-related webapps
|
||||
# - Currently supported:
|
||||
# • Slack
|
||||
# • Microsoft Teams
|
||||
# • Outlook Web
|
||||
# • Microsoft Entra
|
||||
#
|
||||
# Options:
|
||||
# - browser → Selects which browser package to use (default: chromium)
|
||||
# - slack → Enable Slack webapp launcher
|
||||
# - teams → Enable Teams webapp launcher
|
||||
# - outlook → Enable Outlook webapp launcher
|
||||
# - entra → Enable Entra webapp launcher
|
||||
#
|
||||
# Notes:
|
||||
# - Uses --app mode for minimal windows (like PWAs)
|
||||
# - Outlook entry uses a custom profile directory for isolation
|
||||
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
let
|
||||
|
|
@ -5,16 +26,58 @@ let
|
|||
in
|
||||
{
|
||||
options.nyx-module.home.work-webapps = {
|
||||
enable = lib.mkEnableOption "Enable work-webapps (home) module";
|
||||
enable = lib.mkEnableOption "Enable work webapps (home module)";
|
||||
|
||||
package = lib.mkOption {
|
||||
browser = lib.mkOption {
|
||||
type = lib.types.package;
|
||||
default = pkgs.work-webapps;
|
||||
description = "Package to install for work-webapps.";
|
||||
default = pkgs.chromium;
|
||||
example = pkgs.firefox;
|
||||
description = "Browser package to use for private webapps.";
|
||||
};
|
||||
|
||||
slack.enable = lib.mkEnableOption "Enable Slack webapp entry";
|
||||
teams.enable = lib.mkEnableOption "Enable Microsoft Teams webapp entry";
|
||||
outlook.enable = lib.mkEnableOption "Enable Outlook webapp entry";
|
||||
entra.enable = lib.mkEnableOption "Enable Microsoft Entra webapp entry";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
home.packages = [ cfg.package ];
|
||||
xdg.desktopEntries = lib.mkMerge [
|
||||
(lib.mkIf cfg.slack.enable {
|
||||
slack = {
|
||||
name = "Slack";
|
||||
exec = "${cfg.browser}/bin/${cfg.browser.pname} --app=https://app.slack.com/client";
|
||||
icon = "slack";
|
||||
type = "Application";
|
||||
};
|
||||
})
|
||||
|
||||
(lib.mkIf cfg.teams.enable {
|
||||
teams = {
|
||||
name = "Microsoft Teams";
|
||||
exec = "${cfg.browser}/bin/${cfg.browser.pname} --app=https://teams.microsoft.com";
|
||||
icon = "teams";
|
||||
type = "Application";
|
||||
};
|
||||
})
|
||||
|
||||
(lib.mkIf cfg.outlook.enable {
|
||||
outlook = {
|
||||
name = "Outlook Web";
|
||||
exec = "${cfg.browser}/bin/${cfg.browser.pname} --user-data-dir=/home/${config.home.username}/.local/share/ice/profiles/Outlook4305 --profile-directory=Default --app-id=cifhbcnohmdccbgoicgdjpfamggdegmo";
|
||||
icon = "outlook";
|
||||
type = "Application";
|
||||
};
|
||||
})
|
||||
|
||||
(lib.mkIf cfg.entra.enable {
|
||||
entra = {
|
||||
name = "Microsoft Entra";
|
||||
exec = "${cfg.browser}/bin/${cfg.browser.pname} --app=https://entra.microsoft.com";
|
||||
icon = "microsoft";
|
||||
type = "Application";
|
||||
};
|
||||
})
|
||||
];
|
||||
};
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue