options to settings
This commit is contained in:
49
modules/settings/accounts/default.nix
Normal file
49
modules/settings/accounts/default.nix
Normal file
@@ -0,0 +1,49 @@
|
||||
{
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}: let
|
||||
inherit (lib) mkOption types;
|
||||
|
||||
sshKeys = {
|
||||
bunk = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIXCjkKouZrsMoswMIeueO8X/c3kuY3Gb0E9emvkqwUv cnst@cnixpad";
|
||||
sobotka = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICiNcNex+/hrEQJYJJTj89uPXocSfChU38E5TujWdxaM cnstlab@cnixlab";
|
||||
kima = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEUub8vbzUn2f39ILhAJ2QeH8xxLSjiyUuo8xvHGx/VB adam@cnst.dev";
|
||||
toothpc = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGu5vZbb5ExampleKeyHereGfDF9c5 toothpick@toothpc";
|
||||
};
|
||||
|
||||
keyName = config.settings.accounts.sshUser or null;
|
||||
|
||||
selectedKey =
|
||||
if keyName != null
|
||||
then
|
||||
lib.attrByPath [keyName] (
|
||||
builtins.abort "No SSH key defined for hostname/key '${toString keyName}'"
|
||||
)
|
||||
sshKeys
|
||||
else builtins.abort "No accounts.sshUser provided, cannot select SSH key.";
|
||||
in {
|
||||
options.settings.accounts = {
|
||||
username = mkOption {
|
||||
type = types.str;
|
||||
default = "cnst";
|
||||
description = "Set the desired username";
|
||||
};
|
||||
mail = mkOption {
|
||||
type = types.str;
|
||||
default = "adam@cnst.dev";
|
||||
description = "Set the desired email";
|
||||
};
|
||||
sshKey = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = selectedKey;
|
||||
description = "Host-specific SSH key";
|
||||
readOnly = true;
|
||||
};
|
||||
sshUser = lib.mkOption {
|
||||
type = lib.types.nullOr lib.types.str;
|
||||
default = null;
|
||||
description = "Optional override for selecting an SSH key by name";
|
||||
};
|
||||
};
|
||||
}
|
||||
55
modules/settings/monitors/default.nix
Normal file
55
modules/settings/monitors/default.nix
Normal file
@@ -0,0 +1,55 @@
|
||||
# Yanked from Misterio77
|
||||
{lib, ...}: let
|
||||
inherit (lib) mkOption types;
|
||||
in {
|
||||
options.settings.monitors = mkOption {
|
||||
type = types.listOf (
|
||||
types.submodule {
|
||||
options = {
|
||||
name = mkOption {
|
||||
type = types.str;
|
||||
example = "DP-1";
|
||||
};
|
||||
width = mkOption {
|
||||
type = types.int;
|
||||
example = 1920;
|
||||
};
|
||||
height = mkOption {
|
||||
type = types.int;
|
||||
example = 1080;
|
||||
};
|
||||
refreshRate = mkOption {
|
||||
type = types.int;
|
||||
default = 60;
|
||||
};
|
||||
transform = mkOption {
|
||||
type = types.int;
|
||||
default = 0;
|
||||
};
|
||||
bitDepth = mkOption {
|
||||
type = types.nullOr types.int;
|
||||
default = null;
|
||||
example = 10;
|
||||
};
|
||||
position = mkOption {
|
||||
type = types.str;
|
||||
default = "auto";
|
||||
};
|
||||
scale = mkOption {
|
||||
type = types.str;
|
||||
default = "1";
|
||||
};
|
||||
enabled = mkOption {
|
||||
type = types.bool;
|
||||
default = true;
|
||||
};
|
||||
workspace = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
default = null;
|
||||
};
|
||||
};
|
||||
}
|
||||
);
|
||||
default = [];
|
||||
};
|
||||
}
|
||||
24
modules/settings/theme/default.nix
Normal file
24
modules/settings/theme/default.nix
Normal file
@@ -0,0 +1,24 @@
|
||||
{lib, ...}: let
|
||||
inherit (lib) mkOption types;
|
||||
bgs = {
|
||||
wallpaper_1 = "~/media/images/bg_1.jpg";
|
||||
wallpaper_2 = "~/media/images/bg_2.jpg";
|
||||
wallpaper_3 = "~/media/images/bg_3.jpg";
|
||||
};
|
||||
bgList = builtins.attrNames bgs;
|
||||
in {
|
||||
options.settings.theme = {
|
||||
background = {
|
||||
lockscreen = mkOption {
|
||||
type = types.enum bgList;
|
||||
apply = name: bgs.${name};
|
||||
example = "wallpaper_2";
|
||||
};
|
||||
desktop = mkOption {
|
||||
type = types.enum bgList;
|
||||
apply = name: bgs.${name};
|
||||
example = "wallpaper_1";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user