merged all the module import files into modules.nix
This commit is contained in:
parent
45cdbd53c2
commit
f167e0cf42
12
base.nix
12
base.nix
@ -6,17 +6,11 @@
|
||||
...
|
||||
}:
|
||||
{
|
||||
imports =
|
||||
[
|
||||
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})
|
||||
);
|
||||
./modules/servers.nix
|
||||
];
|
||||
system.stateVersion = "24.11";
|
||||
sops = {
|
||||
defaultSopsFormat = "yaml";
|
||||
|
||||
@ -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;
|
||||
};
|
||||
};
|
||||
}
|
||||
@ -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
127
modules/modules.nix
Normal 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;
|
||||
};
|
||||
};
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
};
|
||||
}
|
||||
@ -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;
|
||||
};
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user