refactor(ipa): move FreeIPA client to common config with auto-enrollment
Check NixOS configurations / eval-hosts (pull_request) Failing after 9m48s

modules/ipa/client.nix is now a self-contained NixOS module (no longer a
parameterized function): it checks builtins.pathExists for
secrets/<hostname>.keytab at eval time and enables itself automatically if
found, making it a no-op for hosts without a keytab.

modules/common/configuration.nix imports it so every host in the flake is
a candidate for IPA enrollment — no per-host wiring needed. Adding a
keytab (via scripts/ipa/create-nixos-ipa-host-account.sh) is now the
only step required to enroll a host.

The module also sets networking.domain and networking.nameservers via
mkDefault when active, so new hosts don't need those set explicitly.

Also:
- Remove explicit IPA imports from hosts/nix-cache and hosts/tailscale-router
- Add secrets/pxe-boot.keytab + creation rule; remove incorrect
  secrets/nixos.sweet.home.keytab and its creation rule
- Add .sops.yaml creation rules for all remaining host keytabs
  (server, docker, tor-relay, nix-minimal, nixos) so the creation script
  can target them without manual .sops.yaml edits
- Fix duplicate tailscale-router.keytab rule and corrupted gui.yaml comment
  block in .sops.yaml

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-07-28 11:15:59 +10:00
co-authored by Claude Sonnet 4.6
parent dedd69dc42
commit 2f829ba3e7
7 changed files with 100 additions and 82 deletions
-14
View File
@@ -1,14 +0,0 @@
{
"data": "ENC[AES256_GCM,data:dY+YT+OIM3yk9MSfTEiiHQuBP12fLn2txqK2W4p2uLWxc/KY1wbvIwNE7ug2S27NH3w3jLqvlAIfII4pKxujNEQIZ7ylX+2J/F7finn6G8QnTJMFj20JQo7TSDOOOHcOsmjtb6C/07qCPjOUxQ58SiYH2+qDf5DbniNldcFGpWDkw9DbrYJ6G3Ugnfl5D6ZSCNjBjmTavEDFW9GPLBgmseaDycIung7Rz3MjNEx31LVTBnlztweqoQhpOTqWcLiXK+4YnVaNAiWyNOpFXeronWNU+fItntp5TxJInUdbQioZJ6+qUjk3ZHxuikKuGjEpORTeHptX8m3AxenPiKEvDzLuRN6lnGzcbuH8+DvKIwA06QUeLRYARAnbGujkfS24i2Zkm+HQq0ZK5Y/0d4OoHi9dX5YQo39mCAUJxN/+R3T4QdMVLi+eDnkbNNCwlsRyivhwl64SjGMvFq1uXl6+wGTQ0/Aj16dJR273l+WsSSu509Q0sVdwbE0u,iv:UnpS8KFuNVtdYa/eCMWtQlm9awwNDgMU3Cy5x7Vfycc=,tag:NlGOfcg59NdwXJJesTZ1/w==,type:str]",
"sops": {
"age": [
{
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB3ZEdXUEF4WWhPTGFFcWkr\nV3ZsVjl2SWQ0V3VjeHdjVmJ5ZnRGcExPN0ZzCjBZbTNVYWlqd0NnRHZmSUpObC9s\nUUhJQkp1em9YeGxGaHN3ZjE5eWFPSEEKLS0tIDdOSWU3b1pRSzBxMDhIWjJ4SDRO\nRVA5S3FVSFZGRm5XejdlQytCL2k3NmcKFeQ/nRcuEiFwgJEDj8z0KMeyEcFGbG35\nBcuM5cUh5qLArOQlONThmOt/Jepfo2dMPblQ6kd0zSqWfLNqZDg3Hw==\n-----END AGE ENCRYPTED FILE-----\n",
"recipient": "age1njap586hc0q43kr03g6c8eqhdsmk8zcafkl3f83xwlc2gqhlmfgs4tmwad"
}
],
"lastmodified": "2026-07-28T00:42:31Z",
"mac": "ENC[AES256_GCM,data:IiLoY24bVjvbsA3bd9a6/OEw0PDkHm1Uc3OiHG2FlOxAoPhb6zvE5t2tpZyqeT2goIYv+mr4C/y8BYSsVcZr1FtgqwYx7Y5eiAq9uVzFQ838TDN5ndgkKYrbyPwHSKCHCrOPZ/jDiQTSSO/dv1R8cQHfBf8kX5GEt6ovtGvI2AY=,iv:PctMMNSv0iPZYATsACcQ0aqgFME7xGGCD915k/RiuEI=,tag:Pxaet5zPXIYicExNRFyzGA==,type:str]",
"version": "3.13.2"
}
}
+22
View File
@@ -0,0 +1,22 @@
{
"data": "ENC[AES256_GCM,data:Q++XWxg9tvY7ugT8+8FWCC5jgOfQ1+LYLsnqN0/WGxTf5XT2VmoXvszcE/ow2BUOBG3qBTXS3OHYFPwmj1GgaBHB8rpdXX6+LveSBE2gmx1VR+NUDTxy+0/DBq411MK9n/J9eIYcybdFIE11biFSAob9EgfxBF5roCDXIPDPyVCSe6LyhNvqYPnGQsfHCbejSewLTcRQEiguP9BX96CpMPIpmaB9fHN25t5RWCgMI7MtacrRxRsyKg44+2FZstXdZrp2Wv9u86BxqdAFqtZE8qpPeGdrdzluZx9jhnw0wZPzHdKg5wS7/UrLCb0UxIQiDxDMDuuBuLGkKXfAhb6SGZU41wWAWYk548iGRUaG+79BO4HhRZNObOFvfsjpMXEfcH/Vbv/wHVY4OpJUPe/ZWK4wpL9YrY4nT0t62HH7MirOy1uhwLE50h2+6dHKj6ur5G7thkSqgzVWXQ==,iv:zaRBwS+gfXLhH30havn6Q2+oPWuLV3qBfbOj00kewlQ=,tag:Vr5iEQ2u+9YNahryhgzwSw==,type:str]",
"sops": {
"age": [
{
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSArTGJnaVhleUtsWnlITE1s\nNmRCaW1QWTFNSG5LRFdmb1lzRlV5NWl3YTBNCmF6eUN6RkJBZzc0MmJJa0dKTW01\ncVh4K1VLR2lURUpKQXpxNGpQNnpSUlUKLS0tIFJONnJFWkNCR3pqalRsUW9POVBj\nQ0pFQ3ltKzBETTVXTW5sV1ppWTFJc1kKzxUboNZO+Nwn2eTWy11VP9w1pRswCHaJ\nE2dYU0oUOClVzc0oSuIJxraG6TPj1N4WGC24gS+UmpkmSuCiOeZBsw==\n-----END AGE ENCRYPTED FILE-----\n",
"recipient": "age1njap586hc0q43kr03g6c8eqhdsmk8zcafkl3f83xwlc2gqhlmfgs4tmwad"
},
{
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBDSmxNR1I3dUFKT0xUVG9h\nWkRIakNVeWRQOEN3blNRVjZlWHF4K2NRa0hBClRiOXlmTTJ4T2JTUEw2c1l0R2N2\nMnRwdDA5bEZlQWJRTm9vUmNKclBSU1EKLS0tIFcyeDFjbTZyVEVDUjN1VzU1VHly\nNWNDMW9rTXY2bHNWYVR0SmtMckovUzQKhTWr6yFVW9am3okCiIswwqR5+/p9OLmB\nWCgPtwoFaBt1RjUXPK4/eS4LlucR2K6V/mNMn4xVsnkIl193U9632g==\n-----END AGE ENCRYPTED FILE-----\n",
"recipient": "age16j42pdc5dr6wnj7xayhkqdj2rny9u68fcqejs50hqq42scssh4gsnrrnlt"
},
{
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA2ME9CbmVGcENRWksyL0pW\nOEJyUGhpbGMwWlBhVXBSeXQ2MW1EWnFuR0E4CnMwU0pjdk1YMzF5ZEhTVFlBaHZq\nam94UWVGbjhZSEx6VHBmem9JRWgwYzAKLS0tIHFJZWRyRjRHNzhXdDJSYWN3bDlR\nYVp3eGJWWkh3Y09ZWElyclZQN1ZSVFkKjR32//EcFAdMjVlNgky5zvVkwXwEN68D\nrkTuHKjiO5aV7yAQGPkdNw0UM0oRGF0u4YF3oOUcZfSvnKgDeoi2Zw==\n-----END AGE ENCRYPTED FILE-----\n",
"recipient": "age1ug787sgt6st6k82fgkrug2lzltw4qsukrrqqs3w27ewwqj8rg4hsxcmylz"
}
],
"lastmodified": "2026-07-28T00:27:46Z",
"mac": "ENC[AES256_GCM,data:AbJIHYcFpeanQsJ3x7RPL9Yjlg5BJgkepKax0fL9L/PpA03Antab93iUNG95Mp6k/duovp8Jm445lbuppDZq1dh9ij/deBa8GbzJ50wwEe9zMc3EwRKScpqZEhRPF7KlJsIjsHJyd8NkcI5ji49XkHb4Ae1//8zG5HpVgy+3b04=,iv:uxQCbMwMIfP5S1dbsvIx3F79YWEguxwox8T0YZvUBdc=,tag:3utjmBGDmPc8q4JjaXvCkA==,type:str]",
"version": "3.13.2"
}
}