mirror of
https://gitlab.com/upRootNutrition/dotfiles.git
synced 2025-06-16 01:55:13 -05:00
feat: init
This commit is contained in:
commit
96c6f790fc
804 changed files with 33411 additions and 0 deletions
178
modules/config/default.nix
Executable file
178
modules/config/default.nix
Executable file
|
@ -0,0 +1,178 @@
|
|||
{ lib, ... }:
|
||||
let
|
||||
stringType = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
};
|
||||
intType = lib.mkOption {
|
||||
type = lib.types.int;
|
||||
};
|
||||
listType = lib.mkOption {
|
||||
type = lib.types.listOf lib.types.str;
|
||||
};
|
||||
attrList = lib.mkOption {
|
||||
type = lib.types.attrsOf lib.types.str;
|
||||
};
|
||||
|
||||
numOptions = 20;
|
||||
|
||||
genOptions =
|
||||
config: prefix:
|
||||
builtins.listToAttrs (
|
||||
map (i: {
|
||||
name = "${prefix}${toString i}";
|
||||
value = config;
|
||||
}) (builtins.genList (i: i) numOptions)
|
||||
);
|
||||
|
||||
mkOptionsFromDir =
|
||||
path:
|
||||
builtins.listToAttrs (
|
||||
map
|
||||
(name: {
|
||||
name = builtins.substring 0 (builtins.stringLength name - 4) name;
|
||||
value = stringType;
|
||||
})
|
||||
(
|
||||
builtins.filter (name: builtins.match ".*\\.nix$" name != null) (
|
||||
builtins.attrNames (builtins.readDir path)
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
userSubmodule = lib.types.submodule {
|
||||
options = {
|
||||
name = stringType;
|
||||
label = stringType;
|
||||
sshKeys = listType;
|
||||
group = stringType;
|
||||
aliases = genOptions stringType "name";
|
||||
email = genOptions stringType "address";
|
||||
paths = genOptions stringType "path";
|
||||
};
|
||||
};
|
||||
|
||||
instanceSubmodule = lib.types.submodule {
|
||||
options = {
|
||||
subdomain = stringType;
|
||||
label = stringType;
|
||||
name = stringType;
|
||||
hostname = stringType;
|
||||
domains = genOptions stringType "url";
|
||||
dns = genOptions stringType "provider";
|
||||
localhost = genOptions stringType "address";
|
||||
email = genOptions stringType "address";
|
||||
sops = genOptions stringType "path";
|
||||
paths = genOptions stringType "path";
|
||||
ports = genOptions intType "port";
|
||||
ssl = {
|
||||
cert = stringType;
|
||||
key = stringType;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
deviceSubmodule = lib.types.submodule {
|
||||
options =
|
||||
let
|
||||
mountConfig = {
|
||||
mount = stringType;
|
||||
device = stringType;
|
||||
options = listType;
|
||||
};
|
||||
in
|
||||
{
|
||||
boot = mountConfig;
|
||||
ip = genOptions stringType "address";
|
||||
label = stringType;
|
||||
name = stringType;
|
||||
sync = genOptions stringType "address";
|
||||
}
|
||||
// genOptions mountConfig "folder"
|
||||
// genOptions mountConfig "samba"
|
||||
// genOptions mountConfig "storage";
|
||||
};
|
||||
|
||||
themesSubmodule = lib.types.submodule {
|
||||
options = {
|
||||
currentTheme = genOptions stringType "theme";
|
||||
fonts = {
|
||||
names = genOptions stringType "name";
|
||||
sizes = {
|
||||
applications = genOptions intType "size";
|
||||
desktop = genOptions intType "size";
|
||||
popups = genOptions intType "size";
|
||||
terminal = genOptions intType "size";
|
||||
};
|
||||
};
|
||||
cursor = {
|
||||
name = stringType;
|
||||
size = intType;
|
||||
};
|
||||
palettes = lib.mkOption {
|
||||
type = lib.types.attrsOf (
|
||||
lib.types.submodule {
|
||||
options = {
|
||||
colours = attrList;
|
||||
font = stringType;
|
||||
};
|
||||
}
|
||||
);
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
in
|
||||
{
|
||||
options = {
|
||||
services = lib.mkOption {
|
||||
type = lib.types.submodule {
|
||||
options = mkOptionsFromDir ./instances/config // {
|
||||
instances = lib.mkOption {
|
||||
type = lib.types.attrsOf instanceSubmodule;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
machines = lib.mkOption {
|
||||
type = lib.types.submodule {
|
||||
options =
|
||||
let
|
||||
devicesPath = ./devices/config;
|
||||
printerPath = devicesPath + /printers;
|
||||
in
|
||||
mkOptionsFromDir devicesPath
|
||||
// mkOptionsFromDir printerPath
|
||||
// {
|
||||
devices = lib.mkOption {
|
||||
type = lib.types.attrsOf deviceSubmodule;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
people = lib.mkOption {
|
||||
type = lib.types.submodule {
|
||||
options = mkOptionsFromDir ./users/config // {
|
||||
users = lib.mkOption {
|
||||
type = lib.types.attrsOf userSubmodule;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
aesthetics = lib.mkOption {
|
||||
type = lib.types.submodule {
|
||||
options = mkOptionsFromDir ./themes // {
|
||||
themes = lib.mkOption {
|
||||
type = themesSubmodule;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
config = {
|
||||
people = import ./users;
|
||||
services = import ./instances;
|
||||
machines = import ./devices;
|
||||
aesthetics = import ./themes;
|
||||
};
|
||||
}
|
36
modules/config/devices/config/ceres.nix
Executable file
36
modules/config/devices/config/ceres.nix
Executable file
|
@ -0,0 +1,36 @@
|
|||
{ devicesFunctions }:
|
||||
let
|
||||
inherit (devicesFunctions)
|
||||
fileModeAndDirMode
|
||||
ownerExclusiveReadWriteMask
|
||||
readWritePermissions
|
||||
sambaPermissions
|
||||
userIdForUser0
|
||||
ceresIP
|
||||
;
|
||||
ceresName = "ceres";
|
||||
ceresStorageDriveName = "NAS1";
|
||||
in
|
||||
{
|
||||
label = "Ceres";
|
||||
name = ceresName;
|
||||
sync = {
|
||||
address0 = "";
|
||||
};
|
||||
ip = {
|
||||
address0 = ceresIP;
|
||||
};
|
||||
boot = {
|
||||
options = ownerExclusiveReadWriteMask;
|
||||
};
|
||||
storage0 = {
|
||||
mount = "/mnt/media/${ceresStorageDriveName}";
|
||||
device = "/dev/disk/by-label/${ceresStorageDriveName}";
|
||||
options = readWritePermissions;
|
||||
};
|
||||
samba0 = {
|
||||
mount = "/mnt/media/${ceresName}";
|
||||
device = "//${ceresIP}";
|
||||
options = sambaPermissions ++ fileModeAndDirMode ++ userIdForUser0;
|
||||
};
|
||||
}
|
20
modules/config/devices/config/charon.nix
Executable file
20
modules/config/devices/config/charon.nix
Executable file
|
@ -0,0 +1,20 @@
|
|||
{ devicesFunctions }:
|
||||
let
|
||||
inherit (devicesFunctions)
|
||||
ownerExclusiveReadWriteMask
|
||||
charonIP
|
||||
;
|
||||
in
|
||||
{
|
||||
label = "Charon";
|
||||
name = "charon";
|
||||
sync = {
|
||||
address0 = "";
|
||||
};
|
||||
ip = {
|
||||
address0 = charonIP;
|
||||
};
|
||||
boot = {
|
||||
options = ownerExclusiveReadWriteMask;
|
||||
};
|
||||
}
|
20
modules/config/devices/config/deimos.nix
Executable file
20
modules/config/devices/config/deimos.nix
Executable file
|
@ -0,0 +1,20 @@
|
|||
{ devicesFunctions }:
|
||||
let
|
||||
inherit (devicesFunctions)
|
||||
ownerWriteOthersReadMask
|
||||
deimosIP
|
||||
;
|
||||
in
|
||||
{
|
||||
label = "Deimos";
|
||||
name = "deimos";
|
||||
sync = {
|
||||
address0 = deimosIP;
|
||||
};
|
||||
ip = {
|
||||
address0 = deimosIP;
|
||||
};
|
||||
boot = {
|
||||
options = ownerWriteOthersReadMask;
|
||||
};
|
||||
}
|
31
modules/config/devices/config/mars.nix
Executable file
31
modules/config/devices/config/mars.nix
Executable file
|
@ -0,0 +1,31 @@
|
|||
{ devicesFunctions }:
|
||||
let
|
||||
inherit (devicesFunctions)
|
||||
ownerWriteOthersReadMask
|
||||
readWritePermissions
|
||||
marsIP
|
||||
;
|
||||
in
|
||||
{
|
||||
label = "Mars";
|
||||
name = "mars";
|
||||
sync = {
|
||||
address0 = "";
|
||||
};
|
||||
ip = {
|
||||
address0 = marsIP;
|
||||
};
|
||||
boot = {
|
||||
options = ownerWriteOthersReadMask;
|
||||
};
|
||||
storage0 = {
|
||||
mount = "/mnt/media/games";
|
||||
device = "/dev/disk/by-label/Games";
|
||||
options = readWritePermissions;
|
||||
};
|
||||
storage1 = {
|
||||
mount = "/mnt/media/storage";
|
||||
device = "/dev/disk/by-label/Storage";
|
||||
options = readWritePermissions;
|
||||
};
|
||||
}
|
18
modules/config/devices/config/phone.nix
Executable file
18
modules/config/devices/config/phone.nix
Executable file
|
@ -0,0 +1,18 @@
|
|||
{ devicesFunctions }:
|
||||
let
|
||||
inherit (devicesFunctions)
|
||||
phoneIP
|
||||
dummy
|
||||
;
|
||||
in
|
||||
{
|
||||
name = "pixel";
|
||||
label = dummy;
|
||||
sync = {
|
||||
address0 = "RMDKNJY-BTX6FYF-G6SR332-WS6HARI-PF74SC6-VPBSGRQ-MKVQZEQ-KSIB6QV"; # User0
|
||||
address1 = "RUKSHY4-UCBYRVG-CVYFCMU-M3NLA3Q-JINRF5V-YPR5W32-TEIBJN6-DNQRCAR"; # User2
|
||||
};
|
||||
ip = {
|
||||
address0 = phoneIP;
|
||||
};
|
||||
}
|
13
modules/config/devices/config/printers/printer0.nix
Executable file
13
modules/config/devices/config/printers/printer0.nix
Executable file
|
@ -0,0 +1,13 @@
|
|||
{ devicesFunctions }:
|
||||
let
|
||||
inherit (devicesFunctions)
|
||||
dummy
|
||||
;
|
||||
in
|
||||
{
|
||||
name = dummy;
|
||||
label = "Canon-TR7620a";
|
||||
ip = {
|
||||
address0 = "";
|
||||
};
|
||||
}
|
14
modules/config/devices/config/printers/printer1.nix
Executable file
14
modules/config/devices/config/printers/printer1.nix
Executable file
|
@ -0,0 +1,14 @@
|
|||
{ devicesFunctions }:
|
||||
let
|
||||
inherit (devicesFunctions)
|
||||
brotherIP
|
||||
dummy
|
||||
;
|
||||
in
|
||||
{
|
||||
name = dummy;
|
||||
label = "Brother-HL-2170W";
|
||||
ip = {
|
||||
address0 = brotherIP;
|
||||
};
|
||||
}
|
53
modules/config/devices/config/synology.nix
Executable file
53
modules/config/devices/config/synology.nix
Executable file
|
@ -0,0 +1,53 @@
|
|||
{ devicesFunctions }:
|
||||
let
|
||||
inherit (devicesFunctions)
|
||||
sambaPermissions
|
||||
userIdForUser0
|
||||
userIdForUser1
|
||||
userIdForUser3
|
||||
synologyIP
|
||||
;
|
||||
|
||||
user0 = "nick";
|
||||
user1 = "garnet";
|
||||
user3 = "streaming";
|
||||
user0Name = "Nick";
|
||||
user1Name = "Garnet";
|
||||
user3Name = "Streaming";
|
||||
synologyName = "synology";
|
||||
in
|
||||
{
|
||||
label = "Synology";
|
||||
sync = {
|
||||
address0 = "MWRGX2V-F5XKE5E-REP6ECT-OOPFBMF-22NHSMW-YFBU6MB-PLFUN63-R3MW2QX"; # User0
|
||||
address1 = ""; # User2
|
||||
};
|
||||
name = synologyName;
|
||||
ip = {
|
||||
address0 = synologyIP;
|
||||
};
|
||||
# Nick Home Folder
|
||||
folder0 = {
|
||||
mount = "/mnt/media/${synologyName}/${user0}";
|
||||
device = "//${synologyIP}/homes/${user0Name}";
|
||||
options = sambaPermissions ++ userIdForUser0;
|
||||
};
|
||||
# Garnet Home Folder
|
||||
folder1 = {
|
||||
mount = "/mnt/media/${synologyName}/${user1}";
|
||||
device = "//${synologyIP}/homes/${user1Name}";
|
||||
options = sambaPermissions ++ userIdForUser1;
|
||||
};
|
||||
# Minecraft Worlds
|
||||
folder2 = {
|
||||
mount = "/home/${user1}/.local/share/PrismLauncher/instances/1.21/.minecraft/saves";
|
||||
device = "//${synologyIP}/homes/${user1Name}/Minecraft";
|
||||
options = sambaPermissions ++ userIdForUser1;
|
||||
};
|
||||
# Streaming Folder
|
||||
folder3 = {
|
||||
mount = "/mnt/media/${synologyName}/${user3}";
|
||||
device = "//${synologyIP}/homes/${user0Name}";
|
||||
options = sambaPermissions ++ userIdForUser3;
|
||||
};
|
||||
}
|
33
modules/config/devices/config/venus.nix
Executable file
33
modules/config/devices/config/venus.nix
Executable file
|
@ -0,0 +1,33 @@
|
|||
{ devicesFunctions }:
|
||||
let
|
||||
inherit (devicesFunctions)
|
||||
readWritePermissions
|
||||
venusIP
|
||||
;
|
||||
drivePath = "/run/media";
|
||||
byLabel = "/dev/disk/by-label";
|
||||
|
||||
in
|
||||
{
|
||||
label = "Venus";
|
||||
name = "venus";
|
||||
ip = {
|
||||
address0 = venusIP;
|
||||
};
|
||||
boot = {
|
||||
options = [
|
||||
"fmask=0022"
|
||||
"dmask=0022"
|
||||
];
|
||||
};
|
||||
storage0 = {
|
||||
mount = "${drivePath}/games";
|
||||
device = "${byLabel}/Games";
|
||||
options = readWritePermissions;
|
||||
};
|
||||
storage1 = {
|
||||
mount = "${drivePath}/entertainment";
|
||||
device = "${byLabel}/Entertainment";
|
||||
options = readWritePermissions;
|
||||
};
|
||||
}
|
87
modules/config/devices/default.nix
Executable file
87
modules/config/devices/default.nix
Executable file
|
@ -0,0 +1,87 @@
|
|||
let
|
||||
configPath = ./config;
|
||||
printerPath = configPath + /printers;
|
||||
|
||||
devicesFunctions = {
|
||||
ownerWriteOthersReadMask = [
|
||||
"fmask=0022"
|
||||
"dmask=0022"
|
||||
];
|
||||
ownerExclusiveReadWriteMask = [
|
||||
"fmask=0077"
|
||||
"dmask=0077"
|
||||
];
|
||||
readWritePermissions = [
|
||||
"rw"
|
||||
];
|
||||
sambaPermissions = [
|
||||
"rw"
|
||||
"gid=100"
|
||||
"vers=3.0"
|
||||
"x-systemd.automount"
|
||||
"x-systemd.requires=network-online.target"
|
||||
];
|
||||
fileModeAndDirMode = [
|
||||
"file_mode=0644"
|
||||
"dir_mode=0755"
|
||||
];
|
||||
userIdForUser0 = [
|
||||
"uid=1000"
|
||||
];
|
||||
userIdForUser1 = [
|
||||
"uid=1001"
|
||||
];
|
||||
userIdForUser3 = [
|
||||
"uid=1002"
|
||||
];
|
||||
dummy = [
|
||||
];
|
||||
ceresIP = "192.168.50.140";
|
||||
charonIP = "192.168.50.42";
|
||||
deimosIP = "192.168.50.142";
|
||||
marsIP = "192.168.50.196";
|
||||
phoneIP = "192.168.50.243";
|
||||
synologyIP = "192.168.50.209";
|
||||
venusIP = "192.168.58.104";
|
||||
brotherIP = "192.168.50.195";
|
||||
};
|
||||
|
||||
deviceswithFunctions = builtins.listToAttrs (
|
||||
map
|
||||
(name: {
|
||||
name = builtins.substring 0 (builtins.stringLength name - 4) name;
|
||||
value = import (configPath + "/${name}") {
|
||||
inherit
|
||||
devicesFunctions
|
||||
;
|
||||
};
|
||||
})
|
||||
(
|
||||
builtins.filter (name: builtins.match ".*\\.nix$" name != null) (
|
||||
builtins.attrNames (builtins.readDir configPath)
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
devicesPrinters = builtins.listToAttrs (
|
||||
map
|
||||
(name: {
|
||||
name = builtins.substring 0 (builtins.stringLength name - 4) name;
|
||||
value = import (printerPath + "/${name}") {
|
||||
inherit
|
||||
devicesFunctions
|
||||
;
|
||||
};
|
||||
})
|
||||
(
|
||||
builtins.filter (name: builtins.match ".*\\.nix$" name != null) (
|
||||
builtins.attrNames (builtins.readDir printerPath)
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
devices = deviceswithFunctions // devicesPrinters;
|
||||
in
|
||||
{
|
||||
devices = devices;
|
||||
}
|
20
modules/config/instances/config/acme.nix
Executable file
20
modules/config/instances/config/acme.nix
Executable file
|
@ -0,0 +1,20 @@
|
|||
{ instancesFunctions }:
|
||||
let
|
||||
inherit (instancesFunctions)
|
||||
sslPath
|
||||
sopsPath
|
||||
;
|
||||
|
||||
acmeLabel = "Acme";
|
||||
acmeName = "acme";
|
||||
in
|
||||
{
|
||||
label = acmeLabel;
|
||||
name = acmeName;
|
||||
paths = {
|
||||
path0 = sslPath;
|
||||
};
|
||||
sops = {
|
||||
path0 = "${sopsPath}/${acmeName}";
|
||||
};
|
||||
}
|
30
modules/config/instances/config/audiobookshelf.nix
Executable file
30
modules/config/instances/config/audiobookshelf.nix
Executable file
|
@ -0,0 +1,30 @@
|
|||
{ instancesFunctions }:
|
||||
let
|
||||
inherit (instancesFunctions)
|
||||
audiobookshelfLabel
|
||||
audiobookshelfName
|
||||
domain0
|
||||
servicePath
|
||||
sslPath
|
||||
sopsPath
|
||||
;
|
||||
audiobookshelfSubdomain = "books";
|
||||
in
|
||||
{
|
||||
label = audiobookshelfLabel;
|
||||
name = audiobookshelfName;
|
||||
sops = {
|
||||
path0 = "${sopsPath}/${audiobookshelfName}";
|
||||
};
|
||||
subdomain = audiobookshelfSubdomain;
|
||||
paths = {
|
||||
path0 = "${servicePath}/${audiobookshelfLabel}";
|
||||
};
|
||||
ports = {
|
||||
port0 = 8000;
|
||||
};
|
||||
ssl = {
|
||||
cert = "${sslPath}/${audiobookshelfSubdomain}.${domain0}/fullchain.pem";
|
||||
key = "${sslPath}/${audiobookshelfSubdomain}.${domain0}/key.pem";
|
||||
};
|
||||
}
|
20
modules/config/instances/config/caddy.nix
Executable file
20
modules/config/instances/config/caddy.nix
Executable file
|
@ -0,0 +1,20 @@
|
|||
{ instancesFunctions }:
|
||||
let
|
||||
inherit (instancesFunctions)
|
||||
sopsPath
|
||||
;
|
||||
|
||||
caddyLabel = "Caddy";
|
||||
caddyName = "caddy";
|
||||
in
|
||||
{
|
||||
label = caddyLabel;
|
||||
name = caddyName;
|
||||
sops = {
|
||||
path0 = "${sopsPath}/${caddyName}";
|
||||
};
|
||||
ports = {
|
||||
port0 = 80;
|
||||
port1 = 443;
|
||||
};
|
||||
}
|
34
modules/config/instances/config/forgejo.nix
Executable file
34
modules/config/instances/config/forgejo.nix
Executable file
|
@ -0,0 +1,34 @@
|
|||
{ instancesFunctions }:
|
||||
let
|
||||
inherit (instancesFunctions)
|
||||
domain3
|
||||
servicePath
|
||||
sslPath
|
||||
sopsPath
|
||||
;
|
||||
|
||||
forgejoLabel = "Forgejo";
|
||||
forgejoName = "forgejo";
|
||||
forgejoSubdomain = "source";
|
||||
in
|
||||
{
|
||||
label = forgejoLabel;
|
||||
name = forgejoName;
|
||||
email = {
|
||||
address0 = "noreply@${domain3}";
|
||||
};
|
||||
sops = {
|
||||
path0 = "${sopsPath}/${forgejoName}";
|
||||
};
|
||||
subdomain = forgejoSubdomain;
|
||||
paths = {
|
||||
path0 = "${servicePath}/${forgejoLabel}";
|
||||
};
|
||||
ports = {
|
||||
port0 = 3033;
|
||||
};
|
||||
ssl = {
|
||||
cert = "${sslPath}/${forgejoSubdomain}.${domain3}/fullchain.pem";
|
||||
key = "${sslPath}/${forgejoSubdomain}.${domain3}/key.pem";
|
||||
};
|
||||
}
|
31
modules/config/instances/config/jellyfin.nix
Executable file
31
modules/config/instances/config/jellyfin.nix
Executable file
|
@ -0,0 +1,31 @@
|
|||
{ instancesFunctions }:
|
||||
let
|
||||
inherit (instancesFunctions)
|
||||
domain0
|
||||
jellyfinLabel
|
||||
jellyfinName
|
||||
servicePath
|
||||
sslPath
|
||||
sopsPath
|
||||
;
|
||||
in
|
||||
{
|
||||
label = jellyfinLabel;
|
||||
name = jellyfinName;
|
||||
sops = {
|
||||
path0 = "${sopsPath}/${jellyfinName}";
|
||||
};
|
||||
subdomain = jellyfinName;
|
||||
paths = {
|
||||
path0 = "${servicePath}/${jellyfinLabel}";
|
||||
};
|
||||
ports = {
|
||||
port0 = 5055; # Jellyseer
|
||||
port1 = 8096; # Jellyfin HTTP
|
||||
port2 = 8920; # Jellyfin HTTPS
|
||||
};
|
||||
ssl = {
|
||||
cert = "${sslPath}/${jellyfinName}.${domain0}/fullchain.pem";
|
||||
key = "${sslPath}/${jellyfinName}.${domain0}/key.pem";
|
||||
};
|
||||
}
|
33
modules/config/instances/config/mastodon.nix
Executable file
33
modules/config/instances/config/mastodon.nix
Executable file
|
@ -0,0 +1,33 @@
|
|||
{ instancesFunctions }:
|
||||
let
|
||||
inherit (instancesFunctions)
|
||||
domain3
|
||||
servicePath
|
||||
sslPath
|
||||
sopsPath
|
||||
;
|
||||
|
||||
mastodonLabel = "Mastodon";
|
||||
mastodonName = "mastodon";
|
||||
mastodonSubdomain = "social";
|
||||
in
|
||||
{
|
||||
label = mastodonLabel;
|
||||
name = mastodonName;
|
||||
email = {
|
||||
address0 = "noreply@${domain3}";
|
||||
};
|
||||
subdomain = mastodonSubdomain;
|
||||
sops = {
|
||||
path0 = "${sopsPath}/${mastodonName}";
|
||||
};
|
||||
paths = {
|
||||
path0 = "${servicePath}/${mastodonLabel}";
|
||||
path1 = "";
|
||||
path2 = "";
|
||||
};
|
||||
ssl = {
|
||||
cert = "${sslPath}/${mastodonSubdomain}.${domain3}/fullchain.pem";
|
||||
key = "${sslPath}/${mastodonSubdomain}.${domain3}/key.pem";
|
||||
};
|
||||
}
|
23
modules/config/instances/config/matrix.nix
Executable file
23
modules/config/instances/config/matrix.nix
Executable file
|
@ -0,0 +1,23 @@
|
|||
{ instancesFunctions }:
|
||||
let
|
||||
inherit (instancesFunctions)
|
||||
servicePath
|
||||
sopsPath
|
||||
;
|
||||
|
||||
matrixLabel = "Matrix";
|
||||
matrixName = "matrix";
|
||||
in
|
||||
{
|
||||
label = matrixLabel;
|
||||
name = matrixName;
|
||||
sops = {
|
||||
path0 = "${sopsPath}/${matrixName}";
|
||||
};
|
||||
subdomain = matrixName;
|
||||
paths = {
|
||||
path0 = "${servicePath}/${matrixLabel}";
|
||||
path1 = "";
|
||||
path2 = "";
|
||||
};
|
||||
}
|
30
modules/config/instances/config/minecraft.nix
Executable file
30
modules/config/instances/config/minecraft.nix
Executable file
|
@ -0,0 +1,30 @@
|
|||
{ instancesFunctions }:
|
||||
let
|
||||
inherit (instancesFunctions)
|
||||
domain0
|
||||
servicePath
|
||||
sslPath
|
||||
sopsPath
|
||||
;
|
||||
|
||||
minecraftLabel = "Minecraft";
|
||||
minecraftName = "minecraft";
|
||||
in
|
||||
{
|
||||
label = minecraftLabel;
|
||||
name = minecraftName;
|
||||
sops = {
|
||||
path0 = "${sopsPath}/${minecraftName}";
|
||||
};
|
||||
subdomain = minecraftName;
|
||||
paths = {
|
||||
path0 = "${servicePath}/${minecraftLabel}";
|
||||
};
|
||||
ports = {
|
||||
port0 = 43000; # Minecraft (Brix on Nix)
|
||||
};
|
||||
ssl = {
|
||||
cert = "${sslPath}/${minecraftName}.${domain0}/fullchain.pem";
|
||||
key = "${sslPath}/${minecraftName}.${domain0}/key.pem";
|
||||
};
|
||||
}
|
30
modules/config/instances/config/nextcloud.nix
Executable file
30
modules/config/instances/config/nextcloud.nix
Executable file
|
@ -0,0 +1,30 @@
|
|||
{ instancesFunctions }:
|
||||
let
|
||||
inherit (instancesFunctions)
|
||||
domain1
|
||||
servicePath
|
||||
sslPath
|
||||
sopsPath
|
||||
;
|
||||
|
||||
nextcloudLabel = "Nextcloud";
|
||||
nextcloudName = "nextcloud";
|
||||
in
|
||||
{
|
||||
label = nextcloudLabel;
|
||||
name = nextcloudName;
|
||||
sops = {
|
||||
path0 = "${sopsPath}/${nextcloudName}";
|
||||
};
|
||||
subdomain = nextcloudName;
|
||||
paths = {
|
||||
path0 = "${servicePath}/${nextcloudLabel}";
|
||||
};
|
||||
ports = {
|
||||
port0 = 8354; # Nextcloud
|
||||
};
|
||||
ssl = {
|
||||
cert = "${sslPath}/${nextcloudName}.${domain1}/fullchain.pem";
|
||||
key = "${sslPath}/${nextcloudName}.${domain1}/key.pem";
|
||||
};
|
||||
}
|
32
modules/config/instances/config/ollama.nix
Executable file
32
modules/config/instances/config/ollama.nix
Executable file
|
@ -0,0 +1,32 @@
|
|||
{ instancesFunctions }:
|
||||
let
|
||||
inherit (instancesFunctions)
|
||||
domain0
|
||||
servicePath
|
||||
sslPath
|
||||
sopsPath
|
||||
;
|
||||
|
||||
ollamaLabel = "Ollama";
|
||||
ollamaName = "ollama";
|
||||
in
|
||||
{
|
||||
label = ollamaLabel;
|
||||
name = ollamaName;
|
||||
sops = {
|
||||
path0 = "${sopsPath}/${ollamaName}";
|
||||
};
|
||||
subdomain = ollamaName;
|
||||
paths = {
|
||||
path0 = "${servicePath}/${ollamaLabel}";
|
||||
path1 = "/mnt/media/storage/${ollamaName}";
|
||||
};
|
||||
ports = {
|
||||
port0 = 8088; # Open-WebUI (Ollama Front End)
|
||||
port1 = 11434; # Ollama API
|
||||
};
|
||||
ssl = {
|
||||
cert = "${sslPath}/${ollamaName}.${domain0}/fullchain.pem";
|
||||
key = "${sslPath}/${ollamaName}.${domain0}/key.pem";
|
||||
};
|
||||
}
|
33
modules/config/instances/config/owncast.nix
Executable file
33
modules/config/instances/config/owncast.nix
Executable file
|
@ -0,0 +1,33 @@
|
|||
{ instancesFunctions }:
|
||||
let
|
||||
inherit (instancesFunctions)
|
||||
domain1
|
||||
servicePath
|
||||
sslPath
|
||||
sopsPath
|
||||
;
|
||||
|
||||
owncastLabel = "Owncast";
|
||||
owncastName = "owncast";
|
||||
owncastSubdomain = "stream";
|
||||
in
|
||||
{
|
||||
label = owncastLabel;
|
||||
name = owncastName;
|
||||
sops = {
|
||||
path0 = "${sopsPath}/${owncastName}";
|
||||
};
|
||||
subdomain = owncastSubdomain;
|
||||
paths = {
|
||||
path0 = "${servicePath}/${owncastLabel}";
|
||||
path1 = "/mnt/media/storage/${owncastName}";
|
||||
};
|
||||
ports = {
|
||||
port0 = 9454;
|
||||
port1 = 1935;
|
||||
};
|
||||
ssl = {
|
||||
cert = "${sslPath}/${owncastSubdomain}.${domain1}/fullchain.pem";
|
||||
key = "${sslPath}/${owncastSubdomain}.${domain1}/key.pem";
|
||||
};
|
||||
}
|
38
modules/config/instances/config/peertube.nix
Executable file
38
modules/config/instances/config/peertube.nix
Executable file
|
@ -0,0 +1,38 @@
|
|||
{ instancesFunctions }:
|
||||
let
|
||||
inherit (instancesFunctions)
|
||||
domain3
|
||||
servicePath
|
||||
sslPath
|
||||
sopsPath
|
||||
;
|
||||
|
||||
peertubeLabel = "PeerTube";
|
||||
peertubeName = "peertube";
|
||||
peertubeSubdomain = "video";
|
||||
in
|
||||
{
|
||||
label = peertubeLabel;
|
||||
name = peertubeName;
|
||||
email = {
|
||||
address0 = "noreply@${domain3}";
|
||||
};
|
||||
sops = {
|
||||
path0 = "${sopsPath}/${peertubeName}";
|
||||
};
|
||||
subdomain = peertubeSubdomain;
|
||||
paths = {
|
||||
path0 = "${servicePath}/${peertubeLabel}";
|
||||
};
|
||||
ports = {
|
||||
port0 = 9000; # HTTP
|
||||
port1 = 1935;
|
||||
port2 = 1936;
|
||||
port3 = 5432;
|
||||
port4 = 52800;
|
||||
};
|
||||
ssl = {
|
||||
cert = "${sslPath}/${peertubeSubdomain}.${domain3}/fullchain.pem";
|
||||
key = "${sslPath}/${peertubeSubdomain}.${domain3}/key.pem";
|
||||
};
|
||||
}
|
27
modules/config/instances/config/postfix.nix
Executable file
27
modules/config/instances/config/postfix.nix
Executable file
|
@ -0,0 +1,27 @@
|
|||
{ instancesFunctions }:
|
||||
let
|
||||
inherit (instancesFunctions)
|
||||
domain3
|
||||
servicePath
|
||||
sslPath
|
||||
sopsPath
|
||||
;
|
||||
|
||||
postfixLabel = "Postfix";
|
||||
postfixName = "postfix";
|
||||
in
|
||||
{
|
||||
label = postfixLabel;
|
||||
name = postfixName;
|
||||
sops = {
|
||||
path0 = "${sopsPath}/${postfixName}";
|
||||
};
|
||||
subdomain = postfixName;
|
||||
paths = {
|
||||
path0 = "${servicePath}/${postfixLabel}";
|
||||
};
|
||||
ssl = {
|
||||
cert = "${sslPath}/${domain3}/fullchain.pem";
|
||||
key = "${sslPath}/${domain3}/key.pem";
|
||||
};
|
||||
}
|
23
modules/config/instances/config/postgresql.nix
Executable file
23
modules/config/instances/config/postgresql.nix
Executable file
|
@ -0,0 +1,23 @@
|
|||
{ instancesFunctions }:
|
||||
let
|
||||
inherit (instancesFunctions)
|
||||
servicePath
|
||||
sopsPath
|
||||
;
|
||||
|
||||
postgresLabel = "PostgreSQL";
|
||||
postgresName = "postgres";
|
||||
in
|
||||
{
|
||||
label = postgresLabel;
|
||||
name = postgresName;
|
||||
sops = {
|
||||
path0 = "${sopsPath}/${postgresName}";
|
||||
};
|
||||
paths = {
|
||||
path0 = "${servicePath}/${postgresLabel}";
|
||||
};
|
||||
ports = {
|
||||
port0 = 5432;
|
||||
};
|
||||
}
|
21
modules/config/instances/config/samba.nix
Executable file
21
modules/config/instances/config/samba.nix
Executable file
|
@ -0,0 +1,21 @@
|
|||
{ instancesFunctions }:
|
||||
let
|
||||
inherit (instancesFunctions)
|
||||
sopsPath
|
||||
;
|
||||
|
||||
sambaLabel = "Samba";
|
||||
sambaName = "samba";
|
||||
in
|
||||
{
|
||||
label = sambaLabel;
|
||||
name = sambaName;
|
||||
sops = {
|
||||
path0 = "${sopsPath}/${sambaName}";
|
||||
};
|
||||
paths = {
|
||||
};
|
||||
ports = {
|
||||
port0 = 445; # Samba
|
||||
};
|
||||
}
|
34
modules/config/instances/config/searx.nix
Executable file
34
modules/config/instances/config/searx.nix
Executable file
|
@ -0,0 +1,34 @@
|
|||
{ instancesFunctions }:
|
||||
let
|
||||
inherit (instancesFunctions)
|
||||
domain0
|
||||
servicePath
|
||||
sslPath
|
||||
sopsPath
|
||||
;
|
||||
|
||||
searxLabel = "SearXNG";
|
||||
searxName = "searx";
|
||||
searxSubdomain = "search";
|
||||
in
|
||||
{
|
||||
label = searxLabel;
|
||||
name = searxName;
|
||||
email = {
|
||||
address0 = "noreply@${domain0}";
|
||||
};
|
||||
sops = {
|
||||
path0 = "${sopsPath}/${searxName}";
|
||||
};
|
||||
subdomain = searxSubdomain;
|
||||
paths = {
|
||||
path0 = "${servicePath}/${searxLabel}";
|
||||
};
|
||||
ports = {
|
||||
port0 = 8888;
|
||||
};
|
||||
ssl = {
|
||||
cert = "${sslPath}/${searxSubdomain}.${domain0}/fullchain.pem";
|
||||
key = "${sslPath}/${searxSubdomain}.${domain0}/key.pem";
|
||||
};
|
||||
}
|
13
modules/config/instances/config/smtp.nix
Executable file
13
modules/config/instances/config/smtp.nix
Executable file
|
@ -0,0 +1,13 @@
|
|||
{ instancesFunctions }:
|
||||
let
|
||||
inherit (instancesFunctions)
|
||||
dummy
|
||||
;
|
||||
in
|
||||
{
|
||||
hostname = "mail.smtp2go.com";
|
||||
name = dummy;
|
||||
ports = {
|
||||
port0 = 2525;
|
||||
};
|
||||
}
|
28
modules/config/instances/config/syncthing.nix
Executable file
28
modules/config/instances/config/syncthing.nix
Executable file
|
@ -0,0 +1,28 @@
|
|||
{ instancesFunctions }:
|
||||
let
|
||||
inherit (instancesFunctions)
|
||||
domain0
|
||||
sslPath
|
||||
sopsPath
|
||||
;
|
||||
|
||||
syncthingLabel = "Syncthing";
|
||||
syncthingName = "syncthing";
|
||||
in
|
||||
{
|
||||
label = syncthingLabel;
|
||||
name = syncthingName;
|
||||
sops = {
|
||||
path0 = "${sopsPath}/${syncthingName}";
|
||||
};
|
||||
subdomain = syncthingName;
|
||||
ports = {
|
||||
port0 = 8388; # Syncthing (WebUI)
|
||||
port1 = 21027; # Syncthing (Discovery)
|
||||
port2 = 22000; # Syncthing (Transfer)
|
||||
};
|
||||
ssl = {
|
||||
cert = "${sslPath}/${syncthingName}.${domain0}/fullchain.pem";
|
||||
key = "${sslPath}/${syncthingName}.${domain0}/key.pem";
|
||||
};
|
||||
}
|
19
modules/config/instances/config/synology.nix
Executable file
19
modules/config/instances/config/synology.nix
Executable file
|
@ -0,0 +1,19 @@
|
|||
{ instancesFunctions }:
|
||||
let
|
||||
inherit (instancesFunctions)
|
||||
sopsPath
|
||||
;
|
||||
|
||||
synologyLabel = "Synology";
|
||||
synologyName = "synology";
|
||||
in
|
||||
{
|
||||
label = synologyLabel;
|
||||
name = synologyName;
|
||||
sops = {
|
||||
path0 = "${sopsPath}/${synologyName}";
|
||||
};
|
||||
ports = {
|
||||
port0 = 5001; # Synology HTTPS
|
||||
};
|
||||
}
|
33
modules/config/instances/config/upRootNutrition.nix
Executable file
33
modules/config/instances/config/upRootNutrition.nix
Executable file
|
@ -0,0 +1,33 @@
|
|||
{ instancesFunctions }:
|
||||
let
|
||||
inherit (instancesFunctions)
|
||||
domain3
|
||||
sslPath
|
||||
sopsPath
|
||||
;
|
||||
|
||||
upRootNutritionLabel = "upRootNutrition";
|
||||
upRootNutritionName = "uprootnutrition";
|
||||
in
|
||||
{
|
||||
label = upRootNutritionLabel;
|
||||
name = upRootNutritionName;
|
||||
email = {
|
||||
address0 = "nick@${domain3}";
|
||||
};
|
||||
sops = {
|
||||
path0 = "${sopsPath}/${upRootNutritionName}";
|
||||
};
|
||||
paths = {
|
||||
path0 = "/var/lib/website/dist";
|
||||
path1 = "";
|
||||
path2 = "";
|
||||
};
|
||||
ports = {
|
||||
port0 = 1234;
|
||||
};
|
||||
ssl = {
|
||||
cert = "${sslPath}/${domain3}/fullchain.pem";
|
||||
key = "${sslPath}/${domain3}/key.pem";
|
||||
};
|
||||
}
|
33
modules/config/instances/config/vaultwarden.nix
Executable file
33
modules/config/instances/config/vaultwarden.nix
Executable file
|
@ -0,0 +1,33 @@
|
|||
{ instancesFunctions }:
|
||||
let
|
||||
inherit (instancesFunctions)
|
||||
domain0
|
||||
servicePath
|
||||
sslPath
|
||||
sopsPath
|
||||
;
|
||||
|
||||
vaultwardenLabel = "Vaultwarden";
|
||||
vaultwardenName = "vaultwarden";
|
||||
in
|
||||
{
|
||||
label = vaultwardenLabel;
|
||||
name = vaultwardenName;
|
||||
email = {
|
||||
address0 = "noreply@${vaultwardenName}.${domain0}";
|
||||
};
|
||||
sops = {
|
||||
path0 = "${sopsPath}/${vaultwardenName}";
|
||||
};
|
||||
subdomain = vaultwardenName;
|
||||
paths = {
|
||||
path0 = "${servicePath}/${vaultwardenLabel}/BackupDir";
|
||||
};
|
||||
ports = {
|
||||
port0 = 8085; # Vaultwarden WebUI
|
||||
};
|
||||
ssl = {
|
||||
cert = "${sslPath}/${vaultwardenName}.${domain0}/fullchain.pem";
|
||||
key = "${sslPath}/${vaultwardenName}.${domain0}/key.pem";
|
||||
};
|
||||
}
|
26
modules/config/instances/config/web.nix
Executable file
26
modules/config/instances/config/web.nix
Executable file
|
@ -0,0 +1,26 @@
|
|||
{ instancesFunctions }:
|
||||
let
|
||||
inherit (instancesFunctions)
|
||||
domain0
|
||||
domain1
|
||||
domain2
|
||||
domain3
|
||||
;
|
||||
in
|
||||
{
|
||||
domains = {
|
||||
url0 = domain0;
|
||||
url1 = domain1;
|
||||
url2 = domain2;
|
||||
url3 = domain3;
|
||||
};
|
||||
dns = {
|
||||
provider0 = "namecheap";
|
||||
};
|
||||
localhost = {
|
||||
address0 = "127.0.0.1"; # Local
|
||||
address1 = "0.0.0.0"; # All
|
||||
address2 = "192.168.50.1"; # Router
|
||||
address3 = "192.168.50.0"; # Router
|
||||
};
|
||||
}
|
39
modules/config/instances/default.nix
Executable file
39
modules/config/instances/default.nix
Executable file
|
@ -0,0 +1,39 @@
|
|||
let
|
||||
configPath = ./config;
|
||||
|
||||
instancesFunctions = {
|
||||
jellyfinLabel = "Jellyfin";
|
||||
jellyfinName = "jellyfin";
|
||||
audiobookshelfLabel = "Audiobookshelf";
|
||||
audiobookshelfName = "audiobookshelf";
|
||||
domain0 = "cloudbert.fun";
|
||||
domain1 = "the-nutrivore.social";
|
||||
domain2 = "the-nutrivore.com";
|
||||
domain3 = "uprootnutrition.com";
|
||||
servicePath = "/mnt/media/NAS1";
|
||||
sopsPath = "/var/lib/secrets";
|
||||
sslPath = "/var/lib/acme";
|
||||
varLib = "/var/lib";
|
||||
dummy = "";
|
||||
};
|
||||
|
||||
instances = builtins.listToAttrs (
|
||||
map
|
||||
(name: {
|
||||
name = builtins.substring 0 (builtins.stringLength name - 4) name;
|
||||
value = import (configPath + "/${name}") {
|
||||
inherit
|
||||
instancesFunctions
|
||||
;
|
||||
};
|
||||
})
|
||||
(
|
||||
builtins.filter (name: builtins.match ".*\\.nix$" name != null) (
|
||||
builtins.attrNames (builtins.readDir configPath)
|
||||
)
|
||||
)
|
||||
);
|
||||
in
|
||||
{
|
||||
instances = instances;
|
||||
}
|
92
modules/config/themes/default.nix
Executable file
92
modules/config/themes/default.nix
Executable file
|
@ -0,0 +1,92 @@
|
|||
let
|
||||
currentTheme0 = catppuccin-mocha; # User0 Theme
|
||||
currentTheme1 = catppuccin-mocha; # User1 Theme
|
||||
currentTheme2 = catppuccin-mocha; # User2 Theme
|
||||
|
||||
brogrammer = "brogrammer";
|
||||
catppuccin-frappe = "catppuccin-frappe";
|
||||
catppuccin-latte = "catppuccin-latte";
|
||||
catppuccin-macchiato = "catppuccin-macchiato";
|
||||
catppuccin-mocha = "catppuccin-mocha";
|
||||
chalk = "chalk";
|
||||
deep-oceanic-next = "deep-oceanic-next";
|
||||
dracula = "dracula";
|
||||
espresso = "espresso";
|
||||
flat = "flat";
|
||||
framer = "framer";
|
||||
github = "github";
|
||||
hardcore = "hardcore";
|
||||
one-black = "one-black";
|
||||
one-dark = "one-dark";
|
||||
one-light = "one light";
|
||||
sparky = "sparky";
|
||||
|
||||
in
|
||||
{
|
||||
themes = {
|
||||
currentTheme = {
|
||||
theme0 = currentTheme0; # User0 Theme
|
||||
theme1 = currentTheme1; # User1 Theme
|
||||
theme2 = currentTheme2; # User2 Theme
|
||||
};
|
||||
cursor = {
|
||||
name = "";
|
||||
size = 18;
|
||||
};
|
||||
fonts = {
|
||||
names = {
|
||||
name0 = "MonaspiceNe Nerd Font"; # User0 Font
|
||||
name1 = ""; # User1 Font
|
||||
name2 = ""; # User2 Font
|
||||
};
|
||||
sizes = {
|
||||
applications = {
|
||||
size0 = 14; # User0 Size
|
||||
size1 = 14; # User1 Size
|
||||
size2 = 14; # User2 Size
|
||||
};
|
||||
desktop = {
|
||||
size0 = 12; # User0 Size
|
||||
size1 = 12; # User1 Size
|
||||
size2 = 12; # User2 Size
|
||||
};
|
||||
popups = {
|
||||
size0 = 10; # User0 Size
|
||||
size1 = 10; # User1 Size
|
||||
size2 = 10; # User2 Size
|
||||
};
|
||||
terminal = {
|
||||
size0 = 10; # User0 Size
|
||||
size1 = 10; # User1 Size
|
||||
size2 = 10; # User2 Size
|
||||
};
|
||||
};
|
||||
};
|
||||
palettes =
|
||||
let
|
||||
palettePath = ./palettes;
|
||||
catppuccinPath = /catppuccin;
|
||||
onePath = /one;
|
||||
in
|
||||
{
|
||||
${brogrammer} = import (palettePath + /brogrammer);
|
||||
${catppuccin-frappe} = import (palettePath + catppuccinPath + /frappe);
|
||||
${catppuccin-latte} = import (palettePath + catppuccinPath + /latte);
|
||||
${catppuccin-macchiato} = import (palettePath + catppuccinPath + /macchiato);
|
||||
${catppuccin-mocha} = import (palettePath + catppuccinPath + /mocha);
|
||||
${chalk} = import (palettePath + /chalk);
|
||||
${deep-oceanic-next} = import (palettePath + /deep-oceanic-next);
|
||||
${dracula} = import (palettePath + /dracula);
|
||||
${espresso} = import (palettePath + /espresso);
|
||||
${flat} = import (palettePath + /flat);
|
||||
${framer} = import (palettePath + /framer);
|
||||
${github} = import (palettePath + /github);
|
||||
${hardcore} = import (palettePath + /hardcore);
|
||||
${one-black} = import (palettePath + onePath + /black);
|
||||
${one-dark} = import (palettePath + onePath + /dark);
|
||||
${one-light} = import (palettePath + onePath + /light);
|
||||
${sparky} = import (palettePath + /sparky);
|
||||
|
||||
};
|
||||
};
|
||||
}
|
29
modules/config/themes/palettes/brogrammer/default.nix
Executable file
29
modules/config/themes/palettes/brogrammer/default.nix
Executable file
|
@ -0,0 +1,29 @@
|
|||
{
|
||||
font = "";
|
||||
colours = {
|
||||
base00 = "131313";
|
||||
base01 = "1f1f1f";
|
||||
base02 = "2a3141";
|
||||
base03 = "343d50";
|
||||
base04 = "d6dae4";
|
||||
base05 = "c1c8d7";
|
||||
base06 = "e3e6ed";
|
||||
base07 = "ffffff";
|
||||
base08 = "f71118";
|
||||
base09 = "ecb90f";
|
||||
base0A = "0f80d5";
|
||||
base0B = "2cc55d";
|
||||
base0C = "0f80d5";
|
||||
base0D = "2a84d2";
|
||||
base0E = "4e59b7";
|
||||
base0F = "7b080c";
|
||||
base10 = "0a0a0a";
|
||||
base11 = "020202";
|
||||
base12 = "de342e";
|
||||
base13 = "f2bd09";
|
||||
base14 = "1dd260";
|
||||
base15 = "289af0";
|
||||
base16 = "509bdc";
|
||||
base17 = "524fb9";
|
||||
};
|
||||
}
|
29
modules/config/themes/palettes/catppuccin/frappe/default.nix
Executable file
29
modules/config/themes/palettes/catppuccin/frappe/default.nix
Executable file
|
@ -0,0 +1,29 @@
|
|||
{
|
||||
font = "";
|
||||
colours = {
|
||||
base00 = "303446"; # base
|
||||
base01 = "292c3c"; # mantle
|
||||
base02 = "414559"; # surface0
|
||||
base03 = "51576d"; # surface1
|
||||
base04 = "626880"; # surface2
|
||||
base05 = "c6d0f5"; # text
|
||||
base06 = "f2d5cf"; # rosewater label
|
||||
base07 = "babbf1"; # lavender
|
||||
base08 = "e78284"; # red
|
||||
base09 = "ef9f76"; # peach
|
||||
base0A = "e5c890"; # yellow
|
||||
base0B = "a6d189"; # green
|
||||
base0C = "81c8be"; # teal character
|
||||
base0D = "8caaee"; # blue function
|
||||
base0E = "ca9ee6"; # mauve
|
||||
base0F = "eebebe"; # flamingo
|
||||
base10 = "292c3c"; # mantle - darker background
|
||||
base11 = "232634"; # crust - darkest background
|
||||
base12 = "ea999c"; # maroon - bright red parameter
|
||||
base13 = "f2d5cf"; # rosewater - bright yellow
|
||||
base14 = "a6d189"; # green - bright green
|
||||
base15 = "99d1db"; # sky - bright cyan operator
|
||||
base16 = "85c1dc"; # sapphire - bright blue constructor
|
||||
base17 = "f4b8e4"; # pink - bright purple
|
||||
};
|
||||
}
|
29
modules/config/themes/palettes/catppuccin/latte/default.nix
Executable file
29
modules/config/themes/palettes/catppuccin/latte/default.nix
Executable file
|
@ -0,0 +1,29 @@
|
|||
{
|
||||
font = "";
|
||||
colours = {
|
||||
base00 = "eff1f5"; # base
|
||||
base01 = "e6e9ef"; # mantle
|
||||
base02 = "ccd0da"; # surface0
|
||||
base03 = "bcc0cc"; # surface1
|
||||
base04 = "acb0be"; # surface2
|
||||
base05 = "4c4f69"; # text
|
||||
base06 = "dc8a78"; # rosewater
|
||||
base07 = "7287fd"; # lavender
|
||||
base08 = "d20f39"; # red
|
||||
base09 = "fe640b"; # peach
|
||||
base0A = "df8e1d"; # yellow
|
||||
base0B = "40a02b"; # green
|
||||
base0C = "179299"; # teal
|
||||
base0D = "1e66f5"; # blue
|
||||
base0E = "8839ef"; # mauve
|
||||
base0F = "dd7878"; # flamingo
|
||||
base10 = "e6e9ef"; # mantle - darker background
|
||||
base11 = "dce0e8"; # crust - darkest background
|
||||
base12 = "e64553"; # maroon - bright red
|
||||
base13 = "dc8a78"; # rosewater - bright yellow
|
||||
base14 = "40a02b"; # green - bright green
|
||||
base15 = "04a5e5"; # sky - bright cyan
|
||||
base16 = "209fb5"; # sapphire - bright blue
|
||||
base17 = "ea76cb"; # pink - bright purple
|
||||
};
|
||||
}
|
29
modules/config/themes/palettes/catppuccin/macchiato/default.nix
Executable file
29
modules/config/themes/palettes/catppuccin/macchiato/default.nix
Executable file
|
@ -0,0 +1,29 @@
|
|||
{
|
||||
font = "";
|
||||
colours = {
|
||||
base00 = "24273a"; # base
|
||||
base01 = "1e2030"; # mantle
|
||||
base02 = "363a4f"; # surface0
|
||||
base03 = "494d64"; # surface1
|
||||
base04 = "5b6078"; # surface2
|
||||
base05 = "cad3f5"; # text
|
||||
base06 = "f4dbd6"; # rosewater
|
||||
base07 = "b7bdf8"; # lavender
|
||||
base08 = "ed8796"; # red
|
||||
base09 = "f5a97f"; # peach
|
||||
base0A = "eed49f"; # yellow
|
||||
base0B = "a6da95"; # green
|
||||
base0C = "8bd5ca"; # teal
|
||||
base0D = "8aadf4"; # blue
|
||||
base0E = "c6a0f6"; # mauve
|
||||
base0F = "f0c6c6"; # flamingo
|
||||
base10 = "1e2030"; # mantle - darker background
|
||||
base11 = "181926"; # crust - darkest background
|
||||
base12 = "ee99a0"; # maroon - bright red
|
||||
base13 = "f4dbd6"; # rosewater - bright yellow
|
||||
base14 = "a6da95"; # green - bright green
|
||||
base15 = "91d7e3"; # sky - bright cyan
|
||||
base16 = "7dc4e4"; # sapphire - bright blue
|
||||
base17 = "f5bde6"; # pink - bright purple
|
||||
};
|
||||
}
|
29
modules/config/themes/palettes/catppuccin/mocha/default.nix
Executable file
29
modules/config/themes/palettes/catppuccin/mocha/default.nix
Executable file
|
@ -0,0 +1,29 @@
|
|||
{
|
||||
font = "";
|
||||
colours = {
|
||||
base00 = "1e1e2e"; # base
|
||||
base01 = "181825"; # mantle
|
||||
base02 = "313244"; # surface0
|
||||
base03 = "45475a"; # surface1
|
||||
base04 = "585b70"; # surface2
|
||||
base05 = "cdd6f4"; # text
|
||||
base06 = "f5e0dc"; # rosewater
|
||||
base07 = "b4befe"; # lavender
|
||||
base08 = "f38ba8"; # red
|
||||
base09 = "fab387"; # peach
|
||||
base0A = "f9e2af"; # yellow
|
||||
base0B = "a6e3a1"; # green
|
||||
base0C = "94e2d5"; # teal
|
||||
base0D = "89b4fa"; # blue
|
||||
base0E = "cba6f7"; # mauve
|
||||
base0F = "f2cdcd"; # flamingo
|
||||
base10 = "181825"; # mantle - darker background
|
||||
base11 = "11111b"; # crust - darkest background
|
||||
base12 = "eba0ac"; # maroon - bright red
|
||||
base13 = "f5e0dc"; # rosewater - bright yellow
|
||||
base14 = "a6e3a1"; # green - bright green
|
||||
base15 = "89dceb"; # sky - bright cyan
|
||||
base16 = "74c7ec"; # sapphire - bright blue
|
||||
base17 = "f5c2e7"; # pink - bright purple
|
||||
};
|
||||
}
|
29
modules/config/themes/palettes/chalk/default.nix
Executable file
29
modules/config/themes/palettes/chalk/default.nix
Executable file
|
@ -0,0 +1,29 @@
|
|||
{
|
||||
font = "";
|
||||
colours = {
|
||||
base00 = "151515";
|
||||
base01 = "202020";
|
||||
base02 = "303030";
|
||||
base03 = "505050";
|
||||
base04 = "b0b0b0";
|
||||
base05 = "d0d0d0";
|
||||
base06 = "e0e0e0";
|
||||
base07 = "f5f5f5";
|
||||
base08 = "fa859c";
|
||||
base09 = "ea9971";
|
||||
base0A = "ddb26f";
|
||||
base0B = "a1bb54";
|
||||
base0C = "10bcad";
|
||||
base0D = "5ab9ed";
|
||||
base0E = "db8fea";
|
||||
base0F = "deaf8f";
|
||||
base10 = "0b0b0b";
|
||||
base11 = "060606";
|
||||
base12 = "fb9fb1";
|
||||
base13 = "eda987";
|
||||
base14 = "acc267";
|
||||
base15 = "12cfc0";
|
||||
base16 = "6fc2ef";
|
||||
base17 = "e1a3ee";
|
||||
};
|
||||
}
|
29
modules/config/themes/palettes/deep-oceanic-next/default.nix
Executable file
29
modules/config/themes/palettes/deep-oceanic-next/default.nix
Executable file
|
@ -0,0 +1,29 @@
|
|||
{
|
||||
font = "";
|
||||
colours = {
|
||||
base00 = "001c1f";
|
||||
base01 = "002931";
|
||||
base02 = "003640";
|
||||
base03 = "004852";
|
||||
base04 = "0093a3";
|
||||
base05 = "d4e1e8";
|
||||
base06 = "e0e9ef";
|
||||
base07 = "f2f7f9";
|
||||
base08 = "d3464d";
|
||||
base09 = "e37552";
|
||||
base0A = "f3b863";
|
||||
base0B = "63b784";
|
||||
base0C = "4fb7ae";
|
||||
base0D = "568ccf";
|
||||
base0E = "8b66d6";
|
||||
base0F = "d0658e";
|
||||
base10 = "1f2628";
|
||||
base11 = "2a2f30";
|
||||
base12 = "ff6670";
|
||||
base13 = "ffe08a";
|
||||
base14 = "72e1a6";
|
||||
base15 = "4de3e3";
|
||||
base16 = "5caeff";
|
||||
base17 = "b788ff";
|
||||
};
|
||||
}
|
29
modules/config/themes/palettes/dracula/default.nix
Executable file
29
modules/config/themes/palettes/dracula/default.nix
Executable file
|
@ -0,0 +1,29 @@
|
|||
{
|
||||
font = "";
|
||||
colours = {
|
||||
base00 = "282a36";
|
||||
base01 = "363447";
|
||||
base02 = "44475a";
|
||||
base03 = "6272a4";
|
||||
base04 = "9ea8c7";
|
||||
base05 = "f8f8f2";
|
||||
base06 = "f0f1f4";
|
||||
base07 = "ffffff";
|
||||
base08 = "ff5555";
|
||||
base09 = "ffb86c";
|
||||
base0A = "f1fa8c";
|
||||
base0B = "50fa7b";
|
||||
base0C = "8be9fd";
|
||||
base0D = "80bfff";
|
||||
base0E = "ff79c6";
|
||||
base0F = "bd93f9";
|
||||
base10 = "1e2029";
|
||||
base11 = "16171d";
|
||||
base12 = "f28c8c";
|
||||
base13 = "eef5a3";
|
||||
base14 = "a3f5b8";
|
||||
base15 = "baedf7";
|
||||
base16 = "a3ccf5";
|
||||
base17 = "f5a3d2";
|
||||
};
|
||||
}
|
29
modules/config/themes/palettes/espresso/default.nix
Executable file
29
modules/config/themes/palettes/espresso/default.nix
Executable file
|
@ -0,0 +1,29 @@
|
|||
{
|
||||
font = "";
|
||||
colours = {
|
||||
base00 = "262626";
|
||||
base01 = "343434";
|
||||
base02 = "535353";
|
||||
base03 = "797979";
|
||||
base04 = "a0a09f";
|
||||
base05 = "c7c7c5";
|
||||
base06 = "eeeeec";
|
||||
base07 = "ffffff";
|
||||
base08 = "d25151";
|
||||
base09 = "ffc66d";
|
||||
base0A = "8ab7d9";
|
||||
base0B = "a5c261";
|
||||
base0C = "bed6ff";
|
||||
base0D = "6c99bb";
|
||||
base0E = "d197d9";
|
||||
base0F = "692828";
|
||||
base10 = "373737";
|
||||
base11 = "1b1b1b";
|
||||
base12 = "f00c0c";
|
||||
base13 = "e1e38b";
|
||||
base14 = "c2e075";
|
||||
base15 = "dcf3ff";
|
||||
base16 = "8ab7d9";
|
||||
base17 = "efb5f7";
|
||||
};
|
||||
}
|
29
modules/config/themes/palettes/flat/default.nix
Executable file
29
modules/config/themes/palettes/flat/default.nix
Executable file
|
@ -0,0 +1,29 @@
|
|||
{
|
||||
font = "";
|
||||
colours = {
|
||||
base00 = "082845";
|
||||
base01 = "1d2845";
|
||||
base02 = "2e2e45";
|
||||
base03 = "444e5b";
|
||||
base04 = "68717b";
|
||||
base05 = "8c939a";
|
||||
base06 = "b0b6ba";
|
||||
base07 = "e7eced";
|
||||
base08 = "a82320";
|
||||
base09 = "e58d11";
|
||||
base0A = "3c7dd2";
|
||||
base0B = "2d9440";
|
||||
base0C = "2c9370";
|
||||
base0D = "3167ac";
|
||||
base0E = "781aa0";
|
||||
base0F = "541110";
|
||||
base10 = "002240";
|
||||
base11 = "001629";
|
||||
base12 = "d4312e";
|
||||
base13 = "e5be0c";
|
||||
base14 = "32a548";
|
||||
base15 = "35b387";
|
||||
base16 = "3c7dd2";
|
||||
base17 = "8230a7";
|
||||
};
|
||||
}
|
29
modules/config/themes/palettes/framer/default.nix
Executable file
29
modules/config/themes/palettes/framer/default.nix
Executable file
|
@ -0,0 +1,29 @@
|
|||
{
|
||||
font = "";
|
||||
colours = {
|
||||
base00 = "111111";
|
||||
base01 = "141414";
|
||||
base02 = "414141";
|
||||
base03 = "636363";
|
||||
base04 = "868686";
|
||||
base05 = "a9a9a9";
|
||||
base06 = "cccccc";
|
||||
base07 = "ffffff";
|
||||
base08 = "ff5555";
|
||||
base09 = "ffcc33";
|
||||
base0A = "33bbff";
|
||||
base0B = "98ec65";
|
||||
base0C = "88ddff";
|
||||
base0D = "00aaff";
|
||||
base0E = "aa88ff";
|
||||
base0F = "7f2a2a";
|
||||
base10 = "2b2b2b";
|
||||
base11 = "151515";
|
||||
base12 = "ff8888";
|
||||
base13 = "ffd966";
|
||||
base14 = "b6f292";
|
||||
base15 = "bbecff";
|
||||
base16 = "33bbff";
|
||||
base17 = "cebbff";
|
||||
};
|
||||
}
|
29
modules/config/themes/palettes/github/default.nix
Executable file
29
modules/config/themes/palettes/github/default.nix
Executable file
|
@ -0,0 +1,29 @@
|
|||
{
|
||||
font = "";
|
||||
colours = {
|
||||
base00 = "f4f4f4";
|
||||
base01 = "3e3e3e";
|
||||
base02 = "666666";
|
||||
base03 = "8c8c8c";
|
||||
base04 = "b2b2b2";
|
||||
base05 = "d8d8d8";
|
||||
base06 = "ffffff";
|
||||
base07 = "ffffff";
|
||||
base08 = "970b16";
|
||||
base09 = "f8eec7";
|
||||
base0A = "2e6cba";
|
||||
base0B = "07962a";
|
||||
base0C = "89d1ec";
|
||||
base0D = "003e8a";
|
||||
base0E = "e94691";
|
||||
base0F = "4b050b";
|
||||
base10 = "444444";
|
||||
base11 = "222222";
|
||||
base12 = "de0000";
|
||||
base13 = "f1d007";
|
||||
base14 = "87d5a2";
|
||||
base15 = "1cfafe";
|
||||
base16 = "2e6cba";
|
||||
base17 = "ffa29f";
|
||||
};
|
||||
}
|
29
modules/config/themes/palettes/hardcore/default.nix
Executable file
29
modules/config/themes/palettes/hardcore/default.nix
Executable file
|
@ -0,0 +1,29 @@
|
|||
{
|
||||
font = "";
|
||||
colours = {
|
||||
base00 = "111111";
|
||||
base01 = "141414";
|
||||
base02 = "414141";
|
||||
base03 = "636363";
|
||||
base04 = "868686";
|
||||
base05 = "a9a9a9";
|
||||
base06 = "cccccc";
|
||||
base07 = "ffffff";
|
||||
base08 = "ff5555";
|
||||
base09 = "ffcc33";
|
||||
base0A = "33bbff";
|
||||
base0B = "98ec65";
|
||||
base0C = "88ddff";
|
||||
base0D = "00aaff";
|
||||
base0E = "aa88ff";
|
||||
base0F = "7f2a2a";
|
||||
base10 = "0a0a0a";
|
||||
base11 = "060606";
|
||||
base12 = "ff8888";
|
||||
base13 = "ffd966";
|
||||
base14 = "b6f292";
|
||||
base15 = "bbecff";
|
||||
base16 = "33bbff";
|
||||
base17 = "cebbff";
|
||||
};
|
||||
}
|
29
modules/config/themes/palettes/one/black/default.nix
Executable file
29
modules/config/themes/palettes/one/black/default.nix
Executable file
|
@ -0,0 +1,29 @@
|
|||
{
|
||||
font = "";
|
||||
colours = {
|
||||
base00 = "000000";
|
||||
base01 = "000000";
|
||||
base02 = "4f5666";
|
||||
base03 = "545862";
|
||||
base04 = "9196a1";
|
||||
base05 = "abb2bf";
|
||||
base06 = "e6e6e6";
|
||||
base07 = "ffffff";
|
||||
base08 = "e05561";
|
||||
base09 = "d18f52";
|
||||
base0A = "e6b965";
|
||||
base0B = "8cc265";
|
||||
base0C = "42b3c2";
|
||||
base0D = "4aa5f0";
|
||||
base0E = "c162de";
|
||||
base0F = "bf4034";
|
||||
base10 = "000000";
|
||||
base11 = "000000";
|
||||
base12 = "ff616e";
|
||||
base13 = "f0a45d";
|
||||
base14 = "a5e075";
|
||||
base15 = "4cd1e0";
|
||||
base16 = "4dc4ff";
|
||||
base17 = "de73ff";
|
||||
};
|
||||
}
|
29
modules/config/themes/palettes/one/dark/default.nix
Executable file
29
modules/config/themes/palettes/one/dark/default.nix
Executable file
|
@ -0,0 +1,29 @@
|
|||
{
|
||||
font = "";
|
||||
colours = {
|
||||
base00 = "282c34";
|
||||
base01 = "3f4451";
|
||||
base02 = "4f5666";
|
||||
base03 = "545862";
|
||||
base04 = "9196a1";
|
||||
base05 = "abb2bf";
|
||||
base06 = "e6e6e6";
|
||||
base07 = "ffffff";
|
||||
base08 = "e05561";
|
||||
base09 = "d18f52";
|
||||
base0A = "e6b965";
|
||||
base0B = "8cc265";
|
||||
base0C = "42b3c2";
|
||||
base0D = "4aa5f0";
|
||||
base0E = "c162de";
|
||||
base0F = "bf4034";
|
||||
base10 = "21252b";
|
||||
base11 = "181a1f";
|
||||
base12 = "ff616e";
|
||||
base13 = "f0a45d";
|
||||
base14 = "a5e075";
|
||||
base15 = "4cd1e0";
|
||||
base16 = "4dc4ff";
|
||||
base17 = "de73ff";
|
||||
};
|
||||
}
|
29
modules/config/themes/palettes/one/light/default.nix
Executable file
29
modules/config/themes/palettes/one/light/default.nix
Executable file
|
@ -0,0 +1,29 @@
|
|||
{
|
||||
font = "";
|
||||
colours = {
|
||||
base00 = "e7e7e9";
|
||||
base01 = "dfdfe1";
|
||||
base02 = "cacace";
|
||||
base03 = "a0a1a7";
|
||||
base04 = "696c77";
|
||||
base05 = "383a42";
|
||||
base06 = "202227";
|
||||
base07 = "090a0b";
|
||||
base08 = "ca1243";
|
||||
base09 = "c18401";
|
||||
base0A = "febb2a";
|
||||
base0B = "50a14f";
|
||||
base0C = "0184bc";
|
||||
base0D = "4078f2";
|
||||
base0E = "a626a4";
|
||||
base0F = "986801";
|
||||
base10 = "f0f0f1";
|
||||
base11 = "fafafa";
|
||||
base12 = "ec2258";
|
||||
base13 = "f4a701";
|
||||
base14 = "6db76c";
|
||||
base15 = "01a7ef";
|
||||
base16 = "709af5";
|
||||
base17 = "d02fcd";
|
||||
};
|
||||
}
|
29
modules/config/themes/palettes/sparky/default.nix
Executable file
29
modules/config/themes/palettes/sparky/default.nix
Executable file
|
@ -0,0 +1,29 @@
|
|||
{
|
||||
font = "";
|
||||
colours = {
|
||||
base00 = "072B31";
|
||||
base01 = "00313C";
|
||||
base02 = "003C46";
|
||||
base03 = "003B49";
|
||||
base04 = "00778B";
|
||||
base05 = "F4F5F0";
|
||||
base06 = "F5F5F1";
|
||||
base07 = "FFFFFF";
|
||||
base08 = "FF585D";
|
||||
base09 = "FF8F1C";
|
||||
base0A = "FBDD40";
|
||||
base0B = "78D64B";
|
||||
base0C = "2DCCD3";
|
||||
base0D = "4698CB";
|
||||
base0E = "D59ED7";
|
||||
base0F = "9B704D";
|
||||
base10 = "4B4F54";
|
||||
base11 = "212322";
|
||||
base12 = "FF7276";
|
||||
base13 = "F6EB61";
|
||||
base14 = "8EDD65";
|
||||
base15 = "00C1D5";
|
||||
base16 = "69B3E7";
|
||||
base17 = "F99FC9";
|
||||
};
|
||||
}
|
27
modules/config/users/config/user0.nix
Executable file
27
modules/config/users/config/user0.nix
Executable file
|
@ -0,0 +1,27 @@
|
|||
{ user0 }:
|
||||
let
|
||||
inherit
|
||||
user0
|
||||
;
|
||||
in
|
||||
{
|
||||
name = "Nick";
|
||||
aliases = {
|
||||
name0 = "BRBWaffles";
|
||||
name1 = "brbwaffles";
|
||||
name2 = "Nutrivore";
|
||||
name3 = "nutrivore";
|
||||
name4 = "upRootNutrition";
|
||||
};
|
||||
email = {
|
||||
address0 = "nickjhiebert@proton.me";
|
||||
address1 = "thenutrivore@proton.me";
|
||||
address2 = "nick@uprootnutrition.com";
|
||||
};
|
||||
paths = {
|
||||
path0 = "/home/${user0}/Files/Projects"; # Git path
|
||||
};
|
||||
sshKeys = [
|
||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBF9TmImDoYDpsW5VMFbOcuK3aH4TWRtx/xGxT3yUtEN nick@desktop"
|
||||
];
|
||||
}
|
15
modules/config/users/config/user1.nix
Executable file
15
modules/config/users/config/user1.nix
Executable file
|
@ -0,0 +1,15 @@
|
|||
{ user1 }:
|
||||
let
|
||||
inherit
|
||||
user1
|
||||
;
|
||||
in
|
||||
{
|
||||
name = "Garnet";
|
||||
email = {
|
||||
address0 = "ninaeffler@gmail.com";
|
||||
};
|
||||
paths = {
|
||||
path0 = "/home/${user1}/Files/Projects"; # Git path
|
||||
};
|
||||
}
|
19
modules/config/users/config/user2.nix
Executable file
19
modules/config/users/config/user2.nix
Executable file
|
@ -0,0 +1,19 @@
|
|||
{ user2 }:
|
||||
let
|
||||
inherit
|
||||
user2
|
||||
;
|
||||
in
|
||||
{
|
||||
name = "Stacie";
|
||||
email = {
|
||||
address0 = "staciesimonson@gmail.com";
|
||||
};
|
||||
paths = {
|
||||
path0 = "/home/${user2}"; # Git path
|
||||
};
|
||||
sshKeys = [
|
||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILQQDw0NigCC76G/GlHWIMunckaBmfgqbfJXFGWB+8fe stacie@desktop"
|
||||
];
|
||||
|
||||
}
|
20
modules/config/users/config/user3.nix
Executable file
20
modules/config/users/config/user3.nix
Executable file
|
@ -0,0 +1,20 @@
|
|||
{ user3 }:
|
||||
let
|
||||
inherit
|
||||
user3
|
||||
;
|
||||
in
|
||||
{
|
||||
name = "Streaming";
|
||||
aliases = {
|
||||
};
|
||||
email = {
|
||||
address0 = "nick@upRootNutrition.com";
|
||||
};
|
||||
paths = {
|
||||
path0 = "/home/${user3}/Files/Projects"; # Git path
|
||||
};
|
||||
sshKeys = [
|
||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBF9TmImDoYDpsW5VMFbOcuK3aH4TWRtx/xGxT3yUtEN nick@desktop"
|
||||
];
|
||||
}
|
22
modules/config/users/default.nix
Executable file
22
modules/config/users/default.nix
Executable file
|
@ -0,0 +1,22 @@
|
|||
let
|
||||
configPath = ./config;
|
||||
|
||||
user0 = "nick";
|
||||
user1 = "garnet";
|
||||
user2 = "fallaryn";
|
||||
user3 = "streaming";
|
||||
in
|
||||
{
|
||||
inherit
|
||||
user0
|
||||
user1
|
||||
user2
|
||||
user3
|
||||
;
|
||||
users = {
|
||||
"${user0}" = import (configPath + /user0.nix) { inherit user0; };
|
||||
"${user1}" = import (configPath + /user1.nix) { inherit user1; };
|
||||
"${user2}" = import (configPath + /user2.nix) { inherit user2; };
|
||||
"${user3}" = import (configPath + /user3.nix) { inherit user3; };
|
||||
};
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue