universe/modules/universe.nix
2025-03-14 16:40:36 +00:00

144 lines
3.7 KiB
Nix

{
lib,
boot,
...
}:
with lib; let
nixpkgsOverlayType = lib.mkOptionType {
name = "nixpkgs-overlay";
description = "nixpkgs overlay";
check = lib.isFunction;
merge = lib.mergeOneOption;
};
in {
options.universe = {
programs = {
amnezia-vpn.enable = mkEnableOption "Enable AmneziaVPN app";
android-tools.enable = mkEnableOption "Enable android tools (adb, fastboot, ...)";
};
system = {
tmpUseTmpfs = mkEnableOption "Use tmpfs for /tmp";
emulatedSystems = mkOption {
description = "Systems to emulate";
type = with types; listOf enum builtins.attrNames boot.binfmt.magics;
default = [];
};
arch = mkOption {
description = "System architecture";
type = with types; uniq str;
};
hostname = mkOption {
description = "System hostname";
type = with types; uniq str;
};
username = mkOption {
description = "Username";
type = with types; uniq str;
};
};
nixpkgs = {
allowUnfree = mkEnableOption "Enable non-free software";
overlays = mkOption {
description = "List of nixpkgs overlays";
type = with types; listOf nixpkgsOverlayType;
default = [];
};
};
locale = {
timeZone = mkOption {
description = "System time zone";
type = with types; uniq str;
default = "Asia/Yekaterinburg";
};
lang = mkOption {
description = "System locale";
type = with types; uniq str;
default = "en_US.UTF-8";
};
};
services = {
command-not-found.enable = mkEnableOption "Enable command-not-found";
libvirtd.enable = mkEnableOption "Enable libvirtd";
podman.enable = mkEnableOption "Enable libvirtd";
openssh = {
enable = mkEnableOption "Enable openssh server";
ports = mkOption {
description = "Listen ports";
type = with types; uniq (listOf port);
default = [22];
};
authorizedKeys = mkOption {
description = "Authorized public ssh keys";
type = with types; uniq (listOf str);
default = [];
};
};
amneziawg = {
enable = mkEnableOption "Enable amneziawg vpn service";
secret-config = mkOption {
description = "Configuration SOPS secret";
type = with types; nullOr path;
default = null;
};
IfName = mkOption {
description = "Interface name";
type = with types; uniq str;
};
};
};
de = {
hyprland = {
enable = mkEnableOption "Enable Hyprland";
};
waybar = {
enable = mkEnableOption "Enable waybar";
settings = {
radiuses = {
outer = mkOption {
type = types.int;
default = 100;
};
inner = mkOption {
type = types.int;
default = 40;
};
bar = mkOption {
type = types.int;
default = 25;
};
};
gapps = {
outer = mkOption {
type = types.int;
default = 6;
};
inner = mkOption {
type = types.int;
default = 8;
};
chips = mkOption {
type = types.int;
default = 4;
};
};
sizes = {
icons = mkOption {
type = types.int;
default = 20;
};
text = mkOption {
type = types.int;
default = 15;
};
};
};
};
};
};
}