diff --git a/flake.lock b/flake.lock index ef7011d..36fab6f 100644 --- a/flake.lock +++ b/flake.lock @@ -6,11 +6,11 @@ "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1785426242, - "narHash": "sha256-QHAP8KsJQmI+dpNS/wfWAtEBQ0Zby+B0Ty+qZIO/U2w=", + "lastModified": 1786367009, + "narHash": "sha256-5Hm7sY6Kjw0lZmISOmv0+Kzt7mqJhEyb+g+I5tVStzM=", "owner": "tpwrules", "repo": "nixos-apple-silicon", - "rev": "66d8dd2c27f99bd5420c99938b60695aac1785c4", + "rev": "3d2325a31f37221e276f721fabac363a65d0cf7d", "type": "github" }, "original": { @@ -24,11 +24,11 @@ "nixpkgs": "nixpkgs_2" }, "locked": { - "lastModified": 1786309022, - "narHash": "sha256-Bn1EFvCd74JZXJs3pxUdfEMhls3/yuJre4O1owI6oe8=", + "lastModified": 1786696832, + "narHash": "sha256-wjdfX+jCJCJsteGD75xEfsDR3yATFFEx4mwelhlDXdU=", "owner": "catppuccin", "repo": "nix", - "rev": "9e84aa294455c58a1caba475902d06c1170ed5c1", + "rev": "35d78c213b65e38789bcb359aae2380fcb4dc3e8", "type": "github" }, "original": { @@ -131,11 +131,11 @@ "utils": "utils" }, "locked": { - "lastModified": 1786220854, - "narHash": "sha256-/b79w+zO/+sJ1ADXUfkemP+0kBV+HPxmZVY7xlPI2ag=", + "lastModified": 1786361680, + "narHash": "sha256-IxaZkb9rCGEZ+yGndxKXONeIEcKMzoFUsvLTB5G/caw=", "owner": "serokell", "repo": "deploy-rs", - "rev": "4dcc87bbf8b3e63ecbe2bf3bb77d729ced7d91d8", + "rev": "16901271e5b30b591e56f7a84f25f186fb20f3e1", "type": "github" }, "original": { @@ -506,11 +506,11 @@ "uv2nix": "uv2nix" }, "locked": { - "lastModified": 1786355233, - "narHash": "sha256-SmV+kmPffBko7t244HBw2Enlbj+3Nweb+MHiFsE9g8E=", + "lastModified": 1786706620, + "narHash": "sha256-O/pCmrO97nX9hniiomlfCM9wooU4HaYCrXuyEN++q4o=", "owner": "NousResearch", "repo": "hermes-agent", - "rev": "54e33c95a64a07345f40ff28117eab722604581e", + "rev": "1f8fdc7bd824c8d07e3cefe109bd96425ec3171f", "type": "github" }, "original": { @@ -522,11 +522,11 @@ "hermes-webui": { "flake": false, "locked": { - "lastModified": 1786311991, - "narHash": "sha256-RTDvje+GIoeGUa3AuOqmfSTUgJMFV2EhnafSmjdIF+4=", + "lastModified": 1786704072, + "narHash": "sha256-z5CAYqLUtzP51wCaDFQF3k97M2W0GwAUe4HrlPVxtEM=", "owner": "nesquena", "repo": "hermes-webui", - "rev": "bd91b649f1a1d5863cb711fb25cbd3243c9d1411", + "rev": "91356b7c3fb2713a8e9dc00643e449ec7640c6d8", "type": "github" }, "original": { @@ -542,11 +542,11 @@ ] }, "locked": { - "lastModified": 1786286733, - "narHash": "sha256-7dN93WKkEERgutPtTjK7SY3ZarO2LAU33A1+vKu+7cc=", + "lastModified": 1786656209, + "narHash": "sha256-ybGtuwGKTUCefKYsplzvw4xcCqznto0c7BaiQhgILtA=", "owner": "nix-community", "repo": "home-manager", - "rev": "367f7ef80856d18438953d54dda235d42a46ba31", + "rev": "c554d3441f725537854e877519f01cbd60680174", "type": "github" }, "original": { @@ -582,11 +582,11 @@ "nixpkgs": "nixpkgs_8" }, "locked": { - "lastModified": 1786221710, - "narHash": "sha256-aanL3SfzU8+p2HeD3AaPVU23Kd2XpPibQVC7zFlu3hw=", + "lastModified": 1786610333, + "narHash": "sha256-p/mv2uKwbvIk7PqHP4ZNk2CSJ34uPwM4sOR65jQt4TM=", "owner": "Jovian-Experiments", "repo": "Jovian-NixOS", - "rev": "57773e5c9efe27d298d732a2a061a380a5194090", + "rev": "a6043f17992543f9157c594129272e7621c45ea5", "type": "github" }, "original": { @@ -759,11 +759,11 @@ "nixpkgs": "nixpkgs_14" }, "locked": { - "lastModified": 1785232496, - "narHash": "sha256-65EQYIRRpTdpH8lUiB6Mvo5uBkG60aBIzAJuALfx+O0=", + "lastModified": 1786528975, + "narHash": "sha256-8KuasCs+mVQ7WbLONUf/QB7NZeQvovyXRyxAj4nOOzY=", "owner": "nixos", "repo": "nixos-hardware", - "rev": "2e790b0a6be8ec2b76174ac0931b8ff11919ec98", + "rev": "3e7edd9afe17e45521300e041c65de3015f4a302", "type": "github" }, "original": { @@ -774,11 +774,11 @@ }, "nixos-stable": { "locked": { - "lastModified": 1786201459, - "narHash": "sha256-CiOTEjmwAmG2AWnaIno9YaCJJmpca2FXPhMAsnrolCg=", + "lastModified": 1786535285, + "narHash": "sha256-rG5HKMAgAhMgydvKGtco6rqTxRq4EDZQCx9USLvVqYw=", "owner": "nixos", "repo": "nixpkgs", - "rev": "8b8c811c7c2541c30382c5de7ed26be055569c60", + "rev": "9f78f44a87948854445dae0b6bf82b2e87e4efb5", "type": "github" }, "original": { @@ -790,11 +790,11 @@ }, "nixos-unstable": { "locked": { - "lastModified": 1786106723, - "narHash": "sha256-zDSUbpoeo/9ZmD2+wXnzxoo1+uhL8vxc0b8yuYMKYq0=", + "lastModified": 1786599213, + "narHash": "sha256-yNJd40f11EzXBjSByCB7IPpeFFAdeoSKKM67dGkfFoU=", "owner": "nixos", "repo": "nixpkgs", - "rev": "f13ff45afd1bb73e640eaa08a7066dbed07e3238", + "rev": "0e251e24a4f24e036a084b6b4b2d2491af4167f4", "type": "github" }, "original": { @@ -825,11 +825,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1784796856, - "narHash": "sha256-wWFrV5/Qbm+lyt5x20E/bSbfJiGKMo4RCxZV8cl/WZI=", + "lastModified": 1786106723, + "narHash": "sha256-zDSUbpoeo/9ZmD2+wXnzxoo1+uhL8vxc0b8yuYMKYq0=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "e2587caef70cea85dd97d7daab492899902dbf5d", + "rev": "f13ff45afd1bb73e640eaa08a7066dbed07e3238", "type": "github" }, "original": { @@ -905,11 +905,11 @@ }, "nixpkgs-unstable": { "locked": { - "lastModified": 1786098110, - "narHash": "sha256-shi1tjDhCGGd0kIgVPNY03V8NBWSTzhMSFDb7IqSoec=", + "lastModified": 1786593342, + "narHash": "sha256-smTKQXMLLStzc8zJevMCckbk3My7SvbbLmPYZUJJKW4=", "owner": "nixos", "repo": "nixpkgs", - "rev": "afb4584a80bbf779ce0f691509ff902d188c2b3d", + "rev": "6b5e5b7a6631f065bf6908986990b37d845f847f", "type": "github" }, "original": { @@ -1030,11 +1030,11 @@ }, "nixpkgs_17": { "locked": { - "lastModified": 1786106723, - "narHash": "sha256-zDSUbpoeo/9ZmD2+wXnzxoo1+uhL8vxc0b8yuYMKYq0=", + "lastModified": 1786599213, + "narHash": "sha256-yNJd40f11EzXBjSByCB7IPpeFFAdeoSKKM67dGkfFoU=", "owner": "nixos", "repo": "nixpkgs", - "rev": "f13ff45afd1bb73e640eaa08a7066dbed07e3238", + "rev": "0e251e24a4f24e036a084b6b4b2d2491af4167f4", "type": "github" }, "original": { @@ -1075,11 +1075,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1785747939, - "narHash": "sha256-NqaCaIITVSDaBYdcWcfCyEu1erL7paTPEQbISQp9xwQ=", - "rev": "104240a772428cc2e20d8fd86c9ddbb886bbaff2", + "lastModified": 1786534138, + "narHash": "sha256-Cwffw7dPM56d8spt4/queFQ1cKg69D9qrsp+wfwKvfo=", + "rev": "044bfe75bfe4c7bbe043dc17b5e42ea823b84a09", "type": "tarball", - "url": "https://releases.nixos.org/nixpkgs/nixpkgs-26.11pre1046984.104240a77242/nixexprs.tar.xz" + "url": "https://releases.nixos.org/nixpkgs/nixpkgs-26.11pre1052792.044bfe75bfe4/nixexprs.tar.xz" }, "original": { "type": "tarball", @@ -1232,11 +1232,11 @@ }, "nixpkgs_8": { "locked": { - "lastModified": 1785828668, - "narHash": "sha256-8fsyqeO+mJqvIzeO4xIpgJe/f7MTbbVTEC6RT6WSXNs=", + "lastModified": 1786514691, + "narHash": "sha256-9dkt1i5JNbEfPb+EjLcSDNs8zqEHQ/1JlSaKgj0SBAg=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "e72e4f299401a3689d4b3d5fc6496b11db7064eb", + "rev": "867dcbc30bafe3c862ef88620f2e7a109d7d3be5", "type": "github" }, "original": { @@ -1289,11 +1289,11 @@ "nixpkgs": "nixpkgs_17" }, "locked": { - "lastModified": 1786353845, - "narHash": "sha256-UU94Sv60mU4Y3AaBrQLarsFFciGa/BXRQ2mHAa+rtbo=", + "lastModified": 1786709778, + "narHash": "sha256-mnJlmEESwUlHx2/2s9vjrbQ+7hBITAdsTzMHcungV7E=", "owner": "nix-community", "repo": "nur", - "rev": "815f7f7ade904dcee58ba6102794a414dfb511db", + "rev": "1887fee1755f4c438d75113693315d02eec0823f", "type": "github" }, "original": { @@ -1309,11 +1309,11 @@ "nixpkgs": "nixpkgs_18" }, "locked": { - "lastModified": 1786307523, - "narHash": "sha256-RKnrspb7azG0ERNZgdumX3EEivFCD3Vtglwbf90T1K0=", + "lastModified": 1786433999, + "narHash": "sha256-rbOp2g0UCYt+evTnCGCKBQGqSMfwX4RTXneNbeHqOAk=", "owner": "NotAShelf", "repo": "nvf", - "rev": "23f994fcd754e9de067fa00cca891a774498825b", + "rev": "a213644cadd5f90bf18b0c409f08f282b30e55e3", "type": "github" }, "original": { @@ -1491,11 +1491,11 @@ "nixpkgs": "nixpkgs_20" }, "locked": { - "lastModified": 1786334499, - "narHash": "sha256-g63bW8kYMVhJSncbPuqc1ugbd5ZL3YU3ieEVeaBq/0k=", + "lastModified": 1786680812, + "narHash": "sha256-5lDFwethgqSULdupYl3Eu5n80jfcbb85gSJX/jb58GQ=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "2cb7cad89f0326df860ca399e209352ba6a19ef9", + "rev": "f1dcc7e4ea4fdb6d8f276face22f353832b161e3", "type": "github" }, "original": { @@ -1530,11 +1530,11 @@ "nixpkgs": "nixpkgs_21" }, "locked": { - "lastModified": 1783174389, - "narHash": "sha256-aCWC8ngycU7OdJrU2+Je3qf+1a2ykuBvpPhZT/9tXMc=", + "lastModified": 1786629091, + "narHash": "sha256-gkig4nPi1CWc4Z50GBsjE4ygSE7hMpl/TwID2an2Cck=", "owner": "Mic92", "repo": "sops-nix", - "rev": "f1406619a3884cd5c47992a70b8b35c9c0fcb4c9", + "rev": "a8627b21b9107c5711c96b84f32a9a4b3d45295f", "type": "github" }, "original": { @@ -1741,11 +1741,11 @@ "rust-overlay": "rust-overlay_3" }, "locked": { - "lastModified": 1786353615, - "narHash": "sha256-aOIS0KymwOG6Lz/fYyCQwsvTF1Oagcq4a6ZlCOOEV50=", + "lastModified": 1786700332, + "narHash": "sha256-feeCPG7SU3mfLrsLLleTuBvDWP40DbGAbcJ6lAqdt34=", "owner": "zed-industries", "repo": "zed", - "rev": "4e8057d74db3570b3bd419ff296eb84c35b3a5a3", + "rev": "24e25552b1259d56a6fdd7956a419ed9e8a1a25e", "type": "github" }, "original": { diff --git a/modules/nixos/tmpfiles.nix b/modules/nixos/tmpfiles.nix index 2f4b092..e8034b6 100644 --- a/modules/nixos/tmpfiles.nix +++ b/modules/nixos/tmpfiles.nix @@ -59,8 +59,9 @@ in directory: uids: map (uid: '' if [ -d "${directory}" ]; then - ${pkgs.acl}/bin/setfacl -R -m m::rwx,u:${toString uid}:rwx "${directory}" || true - ${pkgs.acl}/bin/setfacl -R -d -m m::rwx,u:${toString uid}:rwx "${directory}" || true + find "${directory}" -type d -exec ${pkgs.acl}/bin/setfacl -m m::rwx,u:${toString uid}:rwx {} + || true + find "${directory}" -type f -exec ${pkgs.acl}/bin/setfacl -m m::rw-,u:${toString uid}:rw- {} + || true + find "${directory}" -type d -exec ${pkgs.acl}/bin/setfacl -d -m m::rwx,u:${toString uid}:rwx {} + || true find "${directory}" -type d -name ".ssh" -exec ${pkgs.acl}/bin/setfacl -R -x u:${toString uid} {} + || true find "${directory}" -type d -name ".ssh" -exec ${pkgs.acl}/bin/setfacl -R -d -x u:${toString uid} {} + || true find "${directory}" -type d -path "*/.config/sops" -exec ${pkgs.acl}/bin/setfacl -R -x u:${toString uid} {} + || true diff --git a/todos.md b/todos.md index 4c0a71b..559a77f 100644 --- a/todos.md +++ b/todos.md @@ -11,6 +11,13 @@ Outstanding work and follow-up items for this repository. - [ ] allow some ip ranges past forward auth, eg 10.200.x.x - [ ] setup forwarding to binary cache/nas with nix.settings.post-build-hook +### ACL / file-mode fix + +- [x] Root cause: `modules/nixos/tmpfiles.nix` `apply-generated-acls` oneshot ran `setfacl -R -d -m m::rwx` on `/home/toyvo` (nas), which set an ACL mask of `rwx` on every file; the mask shows up in `stat`'s group bits, so git/jj saw an execute bit and flagged all 212 repo files as `100644 -> 100755` on every activation. +- [x] Durable fix in `modules/nixos/tmpfiles.nix`: split the recursive ACL by type — directories get `m::rwx,u:UID:rwx` (traversal), files get `m::rw-,u:UID:rw-` (no execute bit to leak). Default ACLs applied to dirs only. +- [x] One-time cleanup of the `nixcfg` working copy: stripped owner/other execute on 13 spurious files and restored a real user-execute bit on the 12 legitimately-executable scripts (whose exec was previously faked by the mask leak). +- [ ] Deploy the nas (`nh os switch .#nas` or `deploy .#nas`) so the new `apply-generated-acls` oneshot runs and the fix sticks — until then the old oneshot would re-poison file modes on next activation. + ## Forgejo (git.diekvoss.net) ### Forgejo Actions (CI runner on the nas)