merged all the module import files into modules.nix

This commit is contained in:
Danilo Reyes 2024-12-15 21:04:49 -06:00
parent 45cdbd53c2
commit f167e0cf42
8 changed files with 151 additions and 96 deletions

View File

@ -6,17 +6,11 @@
...
}:
{
imports =
[
inputs.home-manager.nixosModules.home-manager
./jawz.nix
]
++ (
builtins.readDir ./modules
|> builtins.attrNames
|> builtins.filter (file: builtins.match ".*\\.nix" file != null)
|> map (file: ./modules/${file})
);
imports = [
inputs.home-manager.nixosModules.home-manager
./jawz.nix
./modules/servers.nix
];
system.stateVersion = "24.11";
sops = {
defaultSopsFormat = "yaml";

View File

@ -1,21 +0,0 @@
{ lib, ... }:
{
imports =
builtins.readDir ./apps
|> builtins.attrNames
|> builtins.filter (file: builtins.match ".*\\.nix" file != null)
|> map (file: ./apps/${file});
my = {
dev.gameDev.enable = lib.mkDefault false;
apps = {
art.enable = lib.mkDefault false;
dictionaries.enable = lib.mkDefault false;
fonts.enable = lib.mkDefault false;
gaming.enable = lib.mkDefault false;
internet.enable = lib.mkDefault false;
multimedia.enable = lib.mkDefault false;
office.enable = lib.mkDefault false;
misc.enable = lib.mkDefault false;
};
};
}

View File

@ -1,17 +0,0 @@
{ lib, ... }:
{
imports =
builtins.readDir ./dev
|> builtins.attrNames
|> builtins.filter (file: builtins.match ".*\\.nix" file != null)
|> map (file: ./dev/${file});
my.emacs.enable = lib.mkDefault false;
my.dev = {
sh.enable = lib.mkDefault false;
nix.enable = lib.mkDefault false;
docker.enable = lib.mkDefault false;
python.enable = lib.mkDefault false;
haskell.enable = lib.mkDefault false;
javascript.enable = lib.mkDefault false;
};
}

127
modules/modules.nix Normal file
View File

@ -0,0 +1,127 @@
{ lib, config, ... }:
let
enableContainers = lib.any (opt: opt) [
config.my.servers.collabora.enable
config.my.servers.ryot.enable
config.my.servers.lidarr.enable
config.my.servers.prowlarr.enable
config.my.servers.maloja.enable
config.my.servers.multi-scrobbler.enable
config.my.servers.flame.enable
config.my.servers.flameSecret.enable
config.my.servers.metube.enable
config.my.servers.go-vod.enable
config.my.servers.tranga.enable
];
filterNames = file: file != "base.nix" && file != "setup.nix";
autoImport =
dir:
builtins.readDir ./${dir}
|> builtins.attrNames
|> builtins.filter (file: builtins.match ".*\\.nix" file != null && filterNames file)
|> map (file: ./${dir}/${file});
in
{
imports =
autoImport "apps"
++ autoImport "dev"
++ autoImport "scripts"
++ autoImport "servers"
++ autoImport "services"
++ autoImport "shell";
options.my = {
localhost = lib.mkOption {
type = lib.types.str;
default = "127.0.0.1";
description = "The localhost address.";
};
domain = lib.mkOption {
type = lib.types.str;
default = "servidos.lat";
description = "The domain name.";
};
ips = lib.mkOption {
type = lib.types.attrsOf lib.types.str;
default = {
server = "192.168.1.69";
miniserver = "192.168.1.100";
workstation = "192.168.1.64";
};
description = "Set of IP's for all my computers.";
};
mainServer = lib.mkOption {
type = lib.types.str;
default = "miniserver";
description = "The hostname of the main server.";
};
postgresSocket = lib.mkOption {
type = lib.types.str;
default = "/run/postgresql";
description = "The PostgreSQL socket path.";
};
containerSocket = lib.mkOption {
type = lib.types.str;
default = "/var/run/docker.sock";
description = "The docker/podman socket path.";
};
containerData = lib.mkOption {
type = lib.types.str;
default = "/var/lib/docker-configs";
description = "The docker/podman socket path.";
};
smtpemail = lib.mkOption {
type = lib.types.str;
default = "stunner6399@gmail.com";
description = "localhost smtp email";
};
email = lib.mkOption {
type = lib.types.str;
default = "CaptainJawZ@protonmail.com";
description = "localhost smtp email";
};
timeZone = lib.mkOption {
type = lib.types.str;
default = "America/Mexico_City";
description = "Timezone";
};
enableContainers = lib.mkEnableOption "enable";
enableProxy = lib.mkEnableOption "enable";
};
config = {
virtualisation = {
containers.enable = true;
oci-containers.backend = "podman";
podman = lib.mkIf (enableContainers || config.my.enableContainers) {
enable = true;
dockerCompat = true;
dockerSocket.enable = true;
defaultNetwork.settings.dns_enabled = true;
autoPrune = {
enable = true;
flags = [ "--all" ];
dates = "weekly";
};
};
};
security.acme = lib.mkIf config.services.nginx.enable {
acceptTerms = true;
defaults.email = config.my.email;
};
services.nginx = {
enable = config.my.enableProxy;
clientMaxBodySize = "4096m";
sslCiphers = "AES256+EECDH:AES256+EDH:!aNULL";
};
networking.firewall =
let
ports = [
config.services.nginx.defaultHTTPListenPort
config.services.nginx.defaultSSLListenPort
];
in
{
allowedTCPPorts = ports;
allowedUDPPorts = ports;
};
};
}

View File

@ -1,11 +0,0 @@
{ lib, ... }:
{
imports =
builtins.readDir ./scripts
|> builtins.attrNames
|> builtins.filter (file: builtins.match ".*\\.nix" file != null && file != "base.nix")
|> map (file: ./scripts/${file});
my.units.download.enable = lib.mkDefault false;
my.units.downloadManga.enable = lib.mkDefault false;
my.units.stream-dl.enable = lib.mkDefault false;
}

View File

@ -13,13 +13,22 @@ let
config.my.servers.go-vod.enable
config.my.servers.tranga.enable
];
filterNames = file: file != "base.nix" && file != "setup.nix";
autoImport =
dir:
builtins.readDir ./${dir}
|> builtins.attrNames
|> builtins.filter (file: builtins.match ".*\\.nix" file != null && filterNames file)
|> map (file: ./${dir}/${file});
in
{
imports =
builtins.readDir ./servers
|> builtins.attrNames
|> builtins.filter (file: builtins.match ".*\\.nix" file != null && file != "setup.nix")
|> map (file: ./servers/${file});
autoImport "apps"
++ autoImport "dev"
++ autoImport "scripts"
++ autoImport "servers"
++ autoImport "services"
++ autoImport "shell";
options.my = {
localhost = lib.mkOption {
type = lib.types.str;
@ -105,10 +114,12 @@ in
};
networking.firewall =
let
ports = [
config.services.nginx.defaultHTTPListenPort
config.services.nginx.defaultSSLListenPort
];
ports = builtins.attrValues {
inherit (config.services.nginx)
defaultHTTPListenPort
defaultSSLListenPort
;
};
in
{
allowedTCPPorts = ports;

View File

@ -1,15 +0,0 @@
{ lib, ... }:
{
imports =
builtins.readDir ./services
|> builtins.attrNames
|> builtins.filter (file: builtins.match ".*\\.nix" file != null)
|> map (file: ./services/${file});
my.services = {
network.enable = lib.mkDefault false;
nvidia.enable = lib.mkDefault false;
printing.enable = lib.mkDefault false;
sound.enable = lib.mkDefault false;
wireguard.enable = lib.mkDefault false;
};
}

View File

@ -1,13 +0,0 @@
{ lib, ... }:
{
imports =
builtins.readDir ./shell
|> builtins.attrNames
|> builtins.filter (file: builtins.match ".*\\.nix" file != null)
|> map (file: ./shell/${file});
my.shell = {
exercism.enable = lib.mkDefault false;
multimedia.enable = lib.mkDefault false;
tools.enable = lib.mkDefault false;
};
}