From f167e0cf42143451de98e783b421eb6b93342481 Mon Sep 17 00:00:00 2001 From: Danilo Reyes Date: Sun, 15 Dec 2024 21:04:49 -0600 Subject: [PATCH] merged all the module import files into modules.nix --- base.nix | 16 ++---- modules/apps.nix | 21 ------- modules/dev.nix | 17 ------ modules/modules.nix | 127 +++++++++++++++++++++++++++++++++++++++++++ modules/scripts.nix | 11 ---- modules/servers.nix | 27 ++++++--- modules/services.nix | 15 ----- modules/shell.nix | 13 ----- 8 files changed, 151 insertions(+), 96 deletions(-) delete mode 100644 modules/apps.nix delete mode 100644 modules/dev.nix create mode 100644 modules/modules.nix delete mode 100644 modules/scripts.nix delete mode 100644 modules/services.nix delete mode 100644 modules/shell.nix diff --git a/base.nix b/base.nix index 1dbb1e9..d74aa13 100644 --- a/base.nix +++ b/base.nix @@ -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"; diff --git a/modules/apps.nix b/modules/apps.nix deleted file mode 100644 index dcb1abc..0000000 --- a/modules/apps.nix +++ /dev/null @@ -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; - }; - }; -} diff --git a/modules/dev.nix b/modules/dev.nix deleted file mode 100644 index 379cbfa..0000000 --- a/modules/dev.nix +++ /dev/null @@ -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; - }; -} diff --git a/modules/modules.nix b/modules/modules.nix new file mode 100644 index 0000000..7cd53e0 --- /dev/null +++ b/modules/modules.nix @@ -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; + }; + }; +} diff --git a/modules/scripts.nix b/modules/scripts.nix deleted file mode 100644 index e3d10e9..0000000 --- a/modules/scripts.nix +++ /dev/null @@ -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; -} diff --git a/modules/servers.nix b/modules/servers.nix index 9dd45ef..7a9586d 100644 --- a/modules/servers.nix +++ b/modules/servers.nix @@ -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; diff --git a/modules/services.nix b/modules/services.nix deleted file mode 100644 index 71b74df..0000000 --- a/modules/services.nix +++ /dev/null @@ -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; - }; -} diff --git a/modules/shell.nix b/modules/shell.nix deleted file mode 100644 index a129f42..0000000 --- a/modules/shell.nix +++ /dev/null @@ -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; - }; -}