144 lines
3.7 KiB
Nix
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;
|
|
};
|
|
};
|
|
};
|
|
};
|
|
};
|
|
};
|
|
}
|