cc-sandbox: add persistent .claude overlay
This commit is contained in:
32
flake.nix
32
flake.nix
@@ -147,6 +147,29 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
# Create and loop-mount an ext4 image on the 9p data volume
|
||||||
|
# for the overlay upper/work (9p can't serve as overlayfs upper)
|
||||||
|
systemd.services.claude-overlay-img = {
|
||||||
|
description = "Create ext4 image for Claude overlay";
|
||||||
|
wantedBy = [ "var-lib-claude\\x2drw.mount" ];
|
||||||
|
before = [ "var-lib-claude\\x2drw.mount" ];
|
||||||
|
after = [ "var-lib-cc\\x2dsandbox.mount" ];
|
||||||
|
requires = [ "var-lib-cc\\x2dsandbox.mount" ];
|
||||||
|
unitConfig.DefaultDependencies = false;
|
||||||
|
serviceConfig = {
|
||||||
|
Type = "oneshot";
|
||||||
|
RemainAfterExit = true;
|
||||||
|
ExecStart = pkgs.writeShellScript "claude-overlay-img" ''
|
||||||
|
img=/var/lib/cc-sandbox/claude-overlay.img
|
||||||
|
if [ ! -f "$img" ]; then
|
||||||
|
${pkgs.coreutils}/bin/truncate -s 128M "$img"
|
||||||
|
${pkgs.e2fsprogs}/bin/mkfs.ext4 -q "$img"
|
||||||
|
fi
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
fileSystems = {
|
fileSystems = {
|
||||||
# tmpfs backing for the writable nix store overlay
|
# tmpfs backing for the writable nix store overlay
|
||||||
"/nix/.rw-store" = {
|
"/nix/.rw-store" = {
|
||||||
@@ -155,11 +178,14 @@
|
|||||||
neededForBoot = true;
|
neededForBoot = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
# Claude config: ephemeral overlay on top of host's ~/.claude
|
# Loop-mounted ext4 image for overlay upper/work
|
||||||
"/var/lib/claude-rw" = {
|
"/var/lib/claude-rw" = {
|
||||||
fsType = "tmpfs";
|
device = "/var/lib/cc-sandbox/claude-overlay.img";
|
||||||
options = [ "size=128M" "mode=0700" ];
|
fsType = "ext4";
|
||||||
|
options = [ "loop" ];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# Claude config: persistent overlay on top of host's ~/.claude
|
||||||
"/root/.claude".overlay = {
|
"/root/.claude".overlay = {
|
||||||
lowerdir = [ "/var/lib/claude-lower" ];
|
lowerdir = [ "/var/lib/claude-lower" ];
|
||||||
upperdir = "/var/lib/claude-rw/upper";
|
upperdir = "/var/lib/claude-rw/upper";
|
||||||
|
|||||||
Reference in New Issue
Block a user