c51c7183c1
Allow AdGuard Home to read ACME certificates via ReadOnlyPaths
2026-03-18 22:12:28 +01:00
deedd00762
Automate certificate path injection in AdGuard Home config
2026-03-18 22:11:08 +01:00
223f716b85
Remove explicit filter IDs from AdGuard config to avoid unmarshalling errors
2026-03-18 22:06:47 +01:00
8a9c513fde
Fix AdGuard filter ID type (string to integer)
2026-03-18 22:02:44 +01:00
7ea9246d74
Manage AdGuard Home blocklists via NixOS using yq-go injection
2026-03-18 22:01:38 +01:00
4790078ff9
Fix CrowdSec GeoIP filter syntax
2026-03-18 21:54:34 +01:00
c3adfa7e25
Restrict incoming connections to DE via CrowdSec GeoIP
2026-03-18 21:53:05 +01:00
8f44273faf
Cleanup
2026-03-18 21:33:42 +01:00
01b19c9fa0
Cleanup
2026-03-18 21:31:19 +01:00
ecf4fe59af
Cleanup
2026-03-18 21:29:58 +01:00
e9652aaaa6
Cleanup
2026-03-18 21:27:41 +01:00
ac36befbd7
Cleanup
2026-03-18 21:26:19 +01:00
e82bbec626
Cleanup
2026-03-18 21:23:53 +01:00
1c56d477fa
Cleanup
2026-03-18 21:23:37 +01:00
e1d18c18be
Cleanup
2026-03-18 21:22:19 +01:00
1792180144
Cleanup
2026-03-18 21:20:42 +01:00
1942425605
feat(adguard): enable DoT and fix ClientID injection
...
- Enable DNS-over-TLS (DoT) on port 853 using Nginx's ACME certificates
- Fix an issue where the native NixOS module dropped SOPS client IDs
- Use sops.templates and yq to inject ClientIDs dynamically before start
- Enable allow_unencrypted_doh to fix Nginx proxying DoH correctly
2026-03-18 21:12:31 +01:00
5dd91f74b1
fix(adguard): resolve port 53 conflict
...
Change AdGuard Home DNS listener to bind to 127.0.0.1:5353 to avoid conflicting with existing services on port 53, since we only expose DoH via Nginx.
2026-03-18 20:58:07 +01:00
219391bc85
refactor(adguard): migrate to native nixos service
...
Replace the Podman container and manual YAML templating with the native NixOS module for better system integration and simpler declarative configuration.
2026-03-18 20:56:30 +01:00
7a505055f8
fix(adguard): fix string interpolation syntax error
...
Fix a broken string concatenation that was causing a syntax error during NixOS evaluation.
Co-Authored-By: Gemini CLI <noreply@google.com>
2026-03-18 20:49:31 +01:00
93bef3b301
fix(adguard): rewrite with correct lib.length syntax
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-18 19:51:53 +01:00
7bdbe767b6
fix(adguard): use lib.length instead of == for empty check
...
Nix doesn't support == operator.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-18 19:27:47 +01:00
51e937c02f
fix(adguard): add empty clients list when no clients configured
...
AdGuard Home fails with empty persistent list.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-18 19:27:21 +01:00
7b9b1e1909
fix(adguard): add newline before filtering section
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-18 19:26:40 +01:00
a5d1f3e136
fix(adguard): fix YAML structure - clients at correct level
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-18 19:24:37 +01:00
ce152ba2b3
fix(adguard): fix template string concatenation
...
Properly concatenate optionalString with content.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-18 19:23:51 +01:00
294b556542
fix(adguard): handle empty clients list
...
Only render clients section when clients are configured.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-18 19:22:58 +01:00
23696e7e79
fix(adguard): remove --cap-drop=ALL flag
...
AdGuard Home needs capabilities to run.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-18 19:20:41 +01:00
9b1d5ede54
fix(adguard): remove --read-only flag
...
AdGuard Home needs write access to working directory.
Config file remains read-only via :ro mount.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-18 19:19:30 +01:00
8b3df01823
chore(secrets): add AdGuard ClientID secrets
2026-03-18 18:14:48 +00:00
9189a9c49d
feat(config): enable AdGuard Home module with two clients
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-18 19:09:59 +01:00
d413d5ec1b
feat(modules): register adguard module in default.nix
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-18 19:09:04 +01:00
1ed9acdcda
feat(modules): add AdGuard Home module with DoH and ClientID support
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-18 19:07:59 +01:00
30d5ce8134
docs: add AdGuard Home implementation plan
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-18 19:06:42 +01:00
4eeeef121e
docs: add explicit podman dependency in implementation
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-18 19:03:57 +01:00
fd5d3f3a7c
docs: fix remaining spec issues
...
- Remove unused tmpfiles rule (using named volume)
- Remove redundant firewall config (nginx module handles 443)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-18 19:03:00 +01:00
70016fe9c4
docs: fix spec review issues
...
- Fix YAML indentation in SOPS template
- Add myModules.podman.enable dependency
- Remove unused tmpfiles rule (using named volume)
- Remove redundant firewall config (nginx module handles 443)
- Fix lib.types.listOf parentheses
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-18 19:01:39 +01:00
51e723ddad
docs: address spec review feedback for AdGuard module
...
- Add complete container definition with security options
- Add SOPS template code with ClientID interpolation
- Fix nginx location to use regex for /dns-query/{clientId}
- Add volume persistence for stats/logs
- Add proxy_http_version for DoH
- Document security considerations
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-18 19:00:15 +01:00
053198d013
docs: add AdGuard Home module design spec
...
Design for private DoH server with ClientID-based access control.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-18 18:57:54 +01:00
638d588d81
fix(backup): use new B2 bucket for restic repository
...
Switch to nixos-vps-backup2 bucket to resolve password mismatch
with existing repository.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-18 18:10:54 +01:00
d2d02f8a60
chore: add backup secrets
2026-03-18 13:19:46 +00:00
8030657042
chore: add backup secrets
2026-03-18 13:18:53 +00:00
70ef850994
feat: enable B2 backups
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-18 14:17:10 +01:00
fd056367d2
feat: add backup module with Restic + Backblaze B2
...
- Encrypted backups to B2
- Configurable retention (daily/weekly/monthly)
- SOPS-managed credentials
- Automatic pruning
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-18 14:11:11 +01:00
f82b822d16
feat: add firewall bouncer to CrowdSec module
...
- Enable crowdsec-firewall-bouncer by default
- Auto-registers bouncer with local CrowdSec API
- Blocks malicious IPs at iptables/nftables level
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-18 13:58:13 +01:00
8a933fd9de
fix: enable CrowdSec Local API for cscli
...
Add LAPI server configuration with credentials file path.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-18 13:53:15 +01:00
e0de37b15f
fix: simplify CrowdSec module
...
Remove LAPI server config causing null coercion error.
Detection-only mode for now; bouncer can be added later.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-18 13:50:44 +01:00
9a57a2c511
.
2026-03-18 12:49:08 +00:00
211693ef3b
feat: add CrowdSec security module
...
- Wraps native NixOS CrowdSec service
- Configures SSH and nginx log acquisition
- Installs linux/nginx/sshd hub collections
- Supports IP whitelisting and ban duration config
- Optional nginx bouncer integration (requires manual API key setup)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-18 13:44:36 +01:00
db4f0f8f61
fix: remove duplicate SOPS declaration, clean up unused param
...
- Remove redundant vaultwarden_admin_token from configuration.nix
(already declared in module)
- Remove unused pkgs parameter from vaultwarden module
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-18 12:37:09 +01:00