nixos: Modularize NixOS and Home Manager config

This commit is contained in:
emmatherock
2026-06-17 15:53:15 -03:00
parent 60df66aab0
commit 8b6090acdb
31 changed files with 297 additions and 276 deletions
+70
View File
@@ -0,0 +1,70 @@
{ pkgs, ... }:
{
virtualisation = {
containers.enable = true;
podman = {
enable = true;
defaultNetwork.settings.dns_enabled = true;
};
docker = {
enable = true;
storageDriver = "btrfs";
daemon.settings = {
dns = [ "1.1.1.1" "8.8.8.8" ];
};
};
};
systemd.services = {
init-docker-networks = {
description = "Crear redes globales de Docker si no existen";
after = [ "docker.service" ];
requires = [ "docker.service" ];
wantedBy = [ "multi-user.target" ];
serviceConfig = {
Type = "oneshot";
RemainAfterExit = true;
ExecStart = "${pkgs.bash}/bin/bash -c '${pkgs.docker}/bin/docker network inspect homelab_net >/dev/null 2>&1 || ${pkgs.docker}/bin/docker network create homelab_net'";
};
};
docker-compose-tools = {
description = "Stack de Docker Compose: Tools";
after = [ "docker.service" "network-online.target" "tailscaled.service" ];
wants = [ "docker.service" "network-online.target" ];
wantedBy = [ "multi-user.target" ];
serviceConfig = {
Type = "oneshot";
RemainAfterExit = true;
WorkingDirectory = "/mnt/containers/tools";
ExecStart = "${pkgs.docker}/bin/docker compose up -d --remove-orphans";
ExecStop = "${pkgs.docker}/bin/docker compose down";
};
};
docker-compose-arrs = {
description = "Stack de Docker Compose: Arrs";
after = [ "docker.service" "docker-compose-tools.service" "local-fs.target" ];
wants = [ "docker.service" "docker-compose-tools.service" ];
wantedBy = [ "multi-user.target" ];
serviceConfig = {
Type = "oneshot";
RemainAfterExit = true;
WorkingDirectory = "/mnt/containers/arrs";
ExecStart = "${pkgs.docker}/bin/docker compose up -d --remove-orphans";
ExecStop = "${pkgs.docker}/bin/docker compose down";
};
};
docker-compose-gameservers = {
description = "Stack de Docker Compose: Gameservers";
after = [ "docker.service" "docker-compose-tools.service" ];
wants = [ "docker.service" ];
wantedBy = [ "multi-user.target" ];
serviceConfig = {
Type = "oneshot";
RemainAfterExit = true;
WorkingDirectory = "/mnt/containers/gameserver";
ExecStart = "${pkgs.docker}/bin/docker compose up -d --remove-orphans";
ExecStop = "${pkgs.docker}/bin/docker compose down";
};
};
};
}
+13
View File
@@ -0,0 +1,13 @@
{ ... }:
{
nix.settings.auto-optimise-store = true;
nix.gc = {
automatic = true;
dates = "weekly";
options = "--delete-older-than 14d";
};
services.journald.extraConfig = "SystemMaxUse=500M";
}
+3
View File
@@ -0,0 +1,3 @@
{
services.vscode-server.enable = true;
}