diff options
| author | Ophestra <cat@gensokyo.uk> | 2025-06-25 20:44:49 +0900 |
|---|---|---|
| committer | Ophestra <cat@gensokyo.uk> | 2025-06-25 20:50:24 +0900 |
| commit | aa454b158f3713b2ee47162837dcea1efdce0ee6 (patch) | |
| tree | 71c9ebf64bf518311fccef1b9c0fc25d59778c26 /cmd/fpkg/with.go | |
| parent | 7007bd6a1c022dee1951413b820a54f5b4271bbb (diff) | |
cmd/planterette: remove hsu special case
Remove special case and invoke hakurei out of process.
Signed-off-by: Ophestra <cat@gensokyo.uk>
Diffstat (limited to 'cmd/fpkg/with.go')
| -rw-r--r-- | cmd/fpkg/with.go | 114 |
1 files changed, 0 insertions, 114 deletions
diff --git a/cmd/fpkg/with.go b/cmd/fpkg/with.go deleted file mode 100644 index ffacec71..00000000 --- a/cmd/fpkg/with.go +++ /dev/null @@ -1,114 +0,0 @@ -package main - -import ( - "context" - "path" - "strings" - - "git.gensokyo.uk/security/hakurei/hst" - "git.gensokyo.uk/security/hakurei/internal" - "git.gensokyo.uk/security/hakurei/sandbox/seccomp" -) - -func withNixDaemon( - ctx context.Context, - action string, command []string, net bool, updateConfig func(config *hst.Config) *hst.Config, - app *appInfo, pathSet *appPathSet, dropShell bool, beforeFail func(), -) { - mustRunAppDropShell(ctx, updateConfig(&hst.Config{ - ID: app.ID, - - Path: shellPath, - Args: []string{shellPath, "-lc", "rm -f /nix/var/nix/daemon-socket/socket && " + - // start nix-daemon - "nix-daemon --store / & " + - // wait for socket to appear - "(while [ ! -S /nix/var/nix/daemon-socket/socket ]; do sleep 0.01; done) && " + - // create directory so nix stops complaining - "mkdir -p /nix/var/nix/profiles/per-user/root/channels && " + - strings.Join(command, " && ") + - // terminate nix-daemon - " && pkill nix-daemon", - }, - - Username: "hakurei", - Shell: shellPath, - Data: pathSet.homeDir, - Dir: path.Join("/data/data", app.ID), - ExtraPerms: []*hst.ExtraPermConfig{ - {Path: dataHome, Execute: true}, - {Ensure: true, Path: pathSet.baseDir, Read: true, Write: true, Execute: true}, - }, - - Identity: app.Identity, - - Container: &hst.ContainerConfig{ - Hostname: formatHostname(app.Name) + "-" + action, - Userns: true, // nix sandbox requires userns - Net: net, - Seccomp: seccomp.FilterMultiarch, - Tty: dropShell, - Filesystem: []*hst.FilesystemConfig{ - {Src: pathSet.nixPath, Dst: "/nix", Write: true, Must: true}, - }, - Link: [][2]string{ - {app.CurrentSystem, "/run/current-system"}, - {"/run/current-system/sw/bin", "/bin"}, - {"/run/current-system/sw/bin", "/usr/bin"}, - }, - Etc: path.Join(pathSet.cacheDir, "etc"), - AutoEtc: true, - }, - }), dropShell, beforeFail) -} - -func withCacheDir( - ctx context.Context, - action string, command []string, workDir string, - app *appInfo, pathSet *appPathSet, dropShell bool, beforeFail func()) { - mustRunAppDropShell(ctx, &hst.Config{ - ID: app.ID, - - Path: shellPath, - Args: []string{shellPath, "-lc", strings.Join(command, " && ")}, - - Username: "nixos", - Shell: shellPath, - Data: pathSet.cacheDir, // this also ensures cacheDir via shim - Dir: path.Join("/data/data", app.ID, "cache"), - ExtraPerms: []*hst.ExtraPermConfig{ - {Path: dataHome, Execute: true}, - {Ensure: true, Path: pathSet.baseDir, Read: true, Write: true, Execute: true}, - {Path: workDir, Execute: true}, - }, - - Identity: app.Identity, - - Container: &hst.ContainerConfig{ - Hostname: formatHostname(app.Name) + "-" + action, - Seccomp: seccomp.FilterMultiarch, - Tty: dropShell, - Filesystem: []*hst.FilesystemConfig{ - {Src: path.Join(workDir, "nix"), Dst: "/nix", Must: true}, - {Src: workDir, Dst: path.Join(hst.Tmp, "bundle"), Must: true}, - }, - Link: [][2]string{ - {app.CurrentSystem, "/run/current-system"}, - {"/run/current-system/sw/bin", "/bin"}, - {"/run/current-system/sw/bin", "/usr/bin"}, - }, - Etc: path.Join(workDir, "etc"), - AutoEtc: true, - }, - }, dropShell, beforeFail) -} - -func mustRunAppDropShell(ctx context.Context, config *hst.Config, dropShell bool, beforeFail func()) { - if dropShell { - config.Args = []string{shellPath, "-l"} - mustRunApp(ctx, config, beforeFail) - beforeFail() - internal.Exit(0) - } - mustRunApp(ctx, config, beforeFail) -} |
