treewide: migrate to hakurei.app
All checks were successful
Test / Create distribution (push) Successful in 24s
Test / Sandbox (push) Successful in 46s
Test / Hakurei (push) Successful in 2m9s
Test / Sandbox (race detector) (push) Successful in 3m14s
Test / Planterette (push) Successful in 3m41s
Test / Hakurei (race detector) (push) Successful in 3m40s
Test / Flake checks (push) Successful in 1m18s

Signed-off-by: Ophestra <cat@gensokyo.uk>
This commit is contained in:
Ophestra 2025-07-03 03:30:39 +09:00
parent 1b5ecd9eaf
commit d2f9a9b83b
Signed by: cat
SSH Key Fingerprint: SHA256:gQ67O0enBZ7UdZypgtspB2FDM1g3GVw8nX0XSdcFw8Q
89 changed files with 205 additions and 205 deletions

View File

@ -7,8 +7,8 @@
</p> </p>
<p align="center"> <p align="center">
<a href="https://pkg.go.dev/git.gensokyo.uk/security/hakurei"><img src="https://pkg.go.dev/badge/git.gensokyo.uk/security/hakurei.svg" alt="Go Reference" /></a> <a href="https://pkg.go.dev/hakurei.app"><img src="https://pkg.go.dev/badge/hakurei.app.svg" alt="Go Reference" /></a>
<a href="https://goreportcard.com/report/git.gensokyo.uk/security/hakurei"><img src="https://goreportcard.com/badge/git.gensokyo.uk/security/hakurei" alt="Go Report Card" /></a> <a href="https://goreportcard.com/report/hakurei.app"><img src="https://goreportcard.com/badge/hakurei.app" alt="Go Report Card" /></a>
</p> </p>
Hakurei is a tool for running sandboxed graphical applications as dedicated subordinate users on the Linux kernel. Hakurei is a tool for running sandboxed graphical applications as dedicated subordinate users on the Linux kernel.

View File

@ -13,15 +13,15 @@ import (
"syscall" "syscall"
"time" "time"
"git.gensokyo.uk/security/hakurei/cmd/hakurei/internal/app" "hakurei.app/cmd/hakurei/internal/app"
"git.gensokyo.uk/security/hakurei/cmd/hakurei/internal/app/instance" "hakurei.app/cmd/hakurei/internal/app/instance"
"git.gensokyo.uk/security/hakurei/cmd/hakurei/internal/state" "hakurei.app/cmd/hakurei/internal/state"
"git.gensokyo.uk/security/hakurei/command" "hakurei.app/command"
"git.gensokyo.uk/security/hakurei/hst" "hakurei.app/hst"
"git.gensokyo.uk/security/hakurei/internal" "hakurei.app/internal"
"git.gensokyo.uk/security/hakurei/internal/hlog" "hakurei.app/internal/hlog"
"git.gensokyo.uk/security/hakurei/system" "hakurei.app/system"
"git.gensokyo.uk/security/hakurei/system/dbus" "hakurei.app/system/dbus"
) )
func buildCommand(out io.Writer) command.Command { func buildCommand(out io.Writer) command.Command {

View File

@ -6,7 +6,7 @@ import (
"flag" "flag"
"testing" "testing"
"git.gensokyo.uk/security/hakurei/command" "hakurei.app/command"
) )
func TestHelp(t *testing.T) { func TestHelp(t *testing.T) {

View File

@ -5,7 +5,7 @@ import (
"syscall" "syscall"
"time" "time"
"git.gensokyo.uk/security/hakurei/hst" "hakurei.app/hst"
) )
type App interface { type App interface {

View File

@ -4,7 +4,7 @@ import (
"errors" "errors"
"testing" "testing"
. "git.gensokyo.uk/security/hakurei/cmd/hakurei/internal/app" . "hakurei.app/cmd/hakurei/internal/app"
) )
func TestParseAppID(t *testing.T) { func TestParseAppID(t *testing.T) {

View File

@ -8,11 +8,11 @@ import (
"path" "path"
"syscall" "syscall"
"git.gensokyo.uk/security/hakurei/container" "hakurei.app/container"
"git.gensokyo.uk/security/hakurei/container/seccomp" "hakurei.app/container/seccomp"
"git.gensokyo.uk/security/hakurei/hst" "hakurei.app/hst"
"git.gensokyo.uk/security/hakurei/internal/sys" "hakurei.app/internal/sys"
"git.gensokyo.uk/security/hakurei/system/dbus" "hakurei.app/system/dbus"
) )
// in practice there should be less than 30 entries added by the runtime; // in practice there should be less than 30 entries added by the runtime;

View File

@ -3,8 +3,8 @@ package instance
import ( import (
"syscall" "syscall"
"git.gensokyo.uk/security/hakurei/cmd/hakurei/internal/app" "hakurei.app/cmd/hakurei/internal/app"
"git.gensokyo.uk/security/hakurei/cmd/hakurei/internal/app/internal/setuid" "hakurei.app/cmd/hakurei/internal/app/internal/setuid"
) )
func PrintRunStateErr(whence int, rs *app.RunState, runErr error) (code int) { func PrintRunStateErr(whence int, rs *app.RunState, runErr error) (code int) {

View File

@ -6,9 +6,9 @@ import (
"log" "log"
"syscall" "syscall"
"git.gensokyo.uk/security/hakurei/cmd/hakurei/internal/app" "hakurei.app/cmd/hakurei/internal/app"
"git.gensokyo.uk/security/hakurei/cmd/hakurei/internal/app/internal/setuid" "hakurei.app/cmd/hakurei/internal/app/internal/setuid"
"git.gensokyo.uk/security/hakurei/internal/sys" "hakurei.app/internal/sys"
) )
const ( const (

View File

@ -1,6 +1,6 @@
package instance package instance
import "git.gensokyo.uk/security/hakurei/cmd/hakurei/internal/app/internal/setuid" import "hakurei.app/cmd/hakurei/internal/app/internal/setuid"
// ShimMain is the main function of the shim process and runs as the unconstrained target user. // ShimMain is the main function of the shim process and runs as the unconstrained target user.
func ShimMain() { setuid.ShimMain() } func ShimMain() { setuid.ShimMain() }

View File

@ -5,10 +5,10 @@ import (
"fmt" "fmt"
"sync" "sync"
. "git.gensokyo.uk/security/hakurei/cmd/hakurei/internal/app" . "hakurei.app/cmd/hakurei/internal/app"
"git.gensokyo.uk/security/hakurei/hst" "hakurei.app/hst"
"git.gensokyo.uk/security/hakurei/internal/hlog" "hakurei.app/internal/hlog"
"git.gensokyo.uk/security/hakurei/internal/sys" "hakurei.app/internal/sys"
) )
func New(ctx context.Context, os sys.State) (App, error) { func New(ctx context.Context, os sys.State) (App, error) {

View File

@ -1,13 +1,13 @@
package setuid_test package setuid_test
import ( import (
"git.gensokyo.uk/security/hakurei/cmd/hakurei/internal/app" "hakurei.app/cmd/hakurei/internal/app"
"git.gensokyo.uk/security/hakurei/container" "hakurei.app/container"
"git.gensokyo.uk/security/hakurei/container/seccomp" "hakurei.app/container/seccomp"
"git.gensokyo.uk/security/hakurei/hst" "hakurei.app/hst"
"git.gensokyo.uk/security/hakurei/system" "hakurei.app/system"
"git.gensokyo.uk/security/hakurei/system/acl" "hakurei.app/system/acl"
"git.gensokyo.uk/security/hakurei/system/dbus" "hakurei.app/system/dbus"
) )
var testCasesNixos = []sealTestCase{ var testCasesNixos = []sealTestCase{

View File

@ -3,13 +3,13 @@ package setuid_test
import ( import (
"os" "os"
"git.gensokyo.uk/security/hakurei/cmd/hakurei/internal/app" "hakurei.app/cmd/hakurei/internal/app"
"git.gensokyo.uk/security/hakurei/container" "hakurei.app/container"
"git.gensokyo.uk/security/hakurei/container/seccomp" "hakurei.app/container/seccomp"
"git.gensokyo.uk/security/hakurei/hst" "hakurei.app/hst"
"git.gensokyo.uk/security/hakurei/system" "hakurei.app/system"
"git.gensokyo.uk/security/hakurei/system/acl" "hakurei.app/system/acl"
"git.gensokyo.uk/security/hakurei/system/dbus" "hakurei.app/system/dbus"
) )
var testCasesPd = []sealTestCase{ var testCasesPd = []sealTestCase{

View File

@ -7,7 +7,7 @@ import (
"os/user" "os/user"
"strconv" "strconv"
"git.gensokyo.uk/security/hakurei/hst" "hakurei.app/hst"
) )
// fs methods are not implemented using a real FS // fs methods are not implemented using a real FS

View File

@ -7,12 +7,12 @@ import (
"testing" "testing"
"time" "time"
"git.gensokyo.uk/security/hakurei/cmd/hakurei/internal/app" "hakurei.app/cmd/hakurei/internal/app"
"git.gensokyo.uk/security/hakurei/cmd/hakurei/internal/app/internal/setuid" "hakurei.app/cmd/hakurei/internal/app/internal/setuid"
"git.gensokyo.uk/security/hakurei/container" "hakurei.app/container"
"git.gensokyo.uk/security/hakurei/hst" "hakurei.app/hst"
"git.gensokyo.uk/security/hakurei/internal/sys" "hakurei.app/internal/sys"
"git.gensokyo.uk/security/hakurei/system" "hakurei.app/system"
) )
type sealTestCase struct { type sealTestCase struct {

View File

@ -4,8 +4,8 @@ import (
"errors" "errors"
"log" "log"
. "git.gensokyo.uk/security/hakurei/cmd/hakurei/internal/app" . "hakurei.app/cmd/hakurei/internal/app"
"git.gensokyo.uk/security/hakurei/internal/hlog" "hakurei.app/internal/hlog"
) )
func PrintRunStateErr(rs *RunState, runErr error) (code int) { func PrintRunStateErr(rs *RunState, runErr error) (code int) {

View File

@ -1,10 +1,10 @@
package setuid package setuid
import ( import (
. "git.gensokyo.uk/security/hakurei/cmd/hakurei/internal/app" . "hakurei.app/cmd/hakurei/internal/app"
"git.gensokyo.uk/security/hakurei/container" "hakurei.app/container"
"git.gensokyo.uk/security/hakurei/internal/sys" "hakurei.app/internal/sys"
"git.gensokyo.uk/security/hakurei/system" "hakurei.app/system"
) )
func NewWithID(id ID, os sys.State) App { func NewWithID(id ID, os sys.State) App {

View File

@ -12,12 +12,12 @@ import (
"syscall" "syscall"
"time" "time"
. "git.gensokyo.uk/security/hakurei/cmd/hakurei/internal/app" . "hakurei.app/cmd/hakurei/internal/app"
"git.gensokyo.uk/security/hakurei/cmd/hakurei/internal/state" "hakurei.app/cmd/hakurei/internal/state"
"git.gensokyo.uk/security/hakurei/container" "hakurei.app/container"
"git.gensokyo.uk/security/hakurei/internal" "hakurei.app/internal"
"git.gensokyo.uk/security/hakurei/internal/hlog" "hakurei.app/internal/hlog"
"git.gensokyo.uk/security/hakurei/system" "hakurei.app/system"
) )
const shimWaitTimeout = 5 * time.Second const shimWaitTimeout = 5 * time.Second

View File

@ -16,17 +16,17 @@ import (
"sync/atomic" "sync/atomic"
"syscall" "syscall"
. "git.gensokyo.uk/security/hakurei/cmd/hakurei/internal/app" . "hakurei.app/cmd/hakurei/internal/app"
"git.gensokyo.uk/security/hakurei/cmd/hakurei/internal/app/instance/common" "hakurei.app/cmd/hakurei/internal/app/instance/common"
"git.gensokyo.uk/security/hakurei/container" "hakurei.app/container"
"git.gensokyo.uk/security/hakurei/hst" "hakurei.app/hst"
"git.gensokyo.uk/security/hakurei/internal" "hakurei.app/internal"
"git.gensokyo.uk/security/hakurei/internal/hlog" "hakurei.app/internal/hlog"
"git.gensokyo.uk/security/hakurei/internal/sys" "hakurei.app/internal/sys"
"git.gensokyo.uk/security/hakurei/system" "hakurei.app/system"
"git.gensokyo.uk/security/hakurei/system/acl" "hakurei.app/system/acl"
"git.gensokyo.uk/security/hakurei/system/dbus" "hakurei.app/system/dbus"
"git.gensokyo.uk/security/hakurei/system/wayland" "hakurei.app/system/wayland"
) )
const ( const (

View File

@ -10,10 +10,10 @@ import (
"syscall" "syscall"
"time" "time"
"git.gensokyo.uk/security/hakurei/container" "hakurei.app/container"
"git.gensokyo.uk/security/hakurei/container/seccomp" "hakurei.app/container/seccomp"
"git.gensokyo.uk/security/hakurei/internal" "hakurei.app/internal"
"git.gensokyo.uk/security/hakurei/internal/hlog" "hakurei.app/internal/hlog"
) )
/* /*

View File

@ -3,7 +3,7 @@ package setuid
import ( import (
"strconv" "strconv"
. "git.gensokyo.uk/security/hakurei/cmd/hakurei/internal/app" . "hakurei.app/cmd/hakurei/internal/app"
) )
func newInt(v int) *stringPair[int] { return &stringPair[int]{v, strconv.Itoa(v)} } func newInt(v int) *stringPair[int] { return &stringPair[int]{v, strconv.Itoa(v)} }

View File

@ -13,9 +13,9 @@ import (
"sync" "sync"
"syscall" "syscall"
"git.gensokyo.uk/security/hakurei/cmd/hakurei/internal/app" "hakurei.app/cmd/hakurei/internal/app"
"git.gensokyo.uk/security/hakurei/hst" "hakurei.app/hst"
"git.gensokyo.uk/security/hakurei/internal/hlog" "hakurei.app/internal/hlog"
) )
// fine-grained locking and access // fine-grained locking and access

View File

@ -3,7 +3,7 @@ package state_test
import ( import (
"testing" "testing"
"git.gensokyo.uk/security/hakurei/cmd/hakurei/internal/state" "hakurei.app/cmd/hakurei/internal/state"
) )
func TestMulti(t *testing.T) { testStore(t, state.NewMulti(t.TempDir())) } func TestMulti(t *testing.T) { testStore(t, state.NewMulti(t.TempDir())) }

View File

@ -5,8 +5,8 @@ import (
"io" "io"
"time" "time"
"git.gensokyo.uk/security/hakurei/cmd/hakurei/internal/app" "hakurei.app/cmd/hakurei/internal/app"
"git.gensokyo.uk/security/hakurei/hst" "hakurei.app/hst"
) )
var ErrNoConfig = errors.New("state does not contain config") var ErrNoConfig = errors.New("state does not contain config")

View File

@ -10,9 +10,9 @@ import (
"testing" "testing"
"time" "time"
"git.gensokyo.uk/security/hakurei/cmd/hakurei/internal/app" "hakurei.app/cmd/hakurei/internal/app"
"git.gensokyo.uk/security/hakurei/cmd/hakurei/internal/state" "hakurei.app/cmd/hakurei/internal/state"
"git.gensokyo.uk/security/hakurei/hst" "hakurei.app/hst"
) )
func testStore(t *testing.T, s state.Store) { func testStore(t *testing.T, s state.Store) {

View File

@ -9,10 +9,10 @@ import (
"log" "log"
"os" "os"
"git.gensokyo.uk/security/hakurei/container" "hakurei.app/container"
"git.gensokyo.uk/security/hakurei/internal" "hakurei.app/internal"
"git.gensokyo.uk/security/hakurei/internal/hlog" "hakurei.app/internal/hlog"
"git.gensokyo.uk/security/hakurei/internal/sys" "hakurei.app/internal/sys"
) )
var ( var (

View File

@ -10,9 +10,9 @@ import (
"strings" "strings"
"syscall" "syscall"
"git.gensokyo.uk/security/hakurei/cmd/hakurei/internal/state" "hakurei.app/cmd/hakurei/internal/state"
"git.gensokyo.uk/security/hakurei/hst" "hakurei.app/hst"
"git.gensokyo.uk/security/hakurei/internal/hlog" "hakurei.app/internal/hlog"
) )
func tryPath(name string) (config *hst.Config) { func tryPath(name string) (config *hst.Config) {

View File

@ -12,10 +12,10 @@ import (
"text/tabwriter" "text/tabwriter"
"time" "time"
"git.gensokyo.uk/security/hakurei/cmd/hakurei/internal/state" "hakurei.app/cmd/hakurei/internal/state"
"git.gensokyo.uk/security/hakurei/hst" "hakurei.app/hst"
"git.gensokyo.uk/security/hakurei/internal/hlog" "hakurei.app/internal/hlog"
"git.gensokyo.uk/security/hakurei/system/dbus" "hakurei.app/system/dbus"
) )
func printShowSystem(output io.Writer, short, flagJSON bool) { func printShowSystem(output io.Writer, short, flagJSON bool) {

View File

@ -5,10 +5,10 @@ import (
"testing" "testing"
"time" "time"
"git.gensokyo.uk/security/hakurei/cmd/hakurei/internal/app" "hakurei.app/cmd/hakurei/internal/app"
"git.gensokyo.uk/security/hakurei/cmd/hakurei/internal/state" "hakurei.app/cmd/hakurei/internal/state"
"git.gensokyo.uk/security/hakurei/hst" "hakurei.app/hst"
"git.gensokyo.uk/security/hakurei/system/dbus" "hakurei.app/system/dbus"
) )
var ( var (

View File

@ -6,10 +6,10 @@ import (
"os" "os"
"path" "path"
"git.gensokyo.uk/security/hakurei/container/seccomp" "hakurei.app/container/seccomp"
"git.gensokyo.uk/security/hakurei/hst" "hakurei.app/hst"
"git.gensokyo.uk/security/hakurei/system" "hakurei.app/system"
"git.gensokyo.uk/security/hakurei/system/dbus" "hakurei.app/system/dbus"
) )
type appInfo struct { type appInfo struct {

View File

@ -10,10 +10,10 @@ import (
"path" "path"
"syscall" "syscall"
"git.gensokyo.uk/security/hakurei/command" "hakurei.app/command"
"git.gensokyo.uk/security/hakurei/hst" "hakurei.app/hst"
"git.gensokyo.uk/security/hakurei/internal" "hakurei.app/internal"
"git.gensokyo.uk/security/hakurei/internal/hlog" "hakurei.app/internal/hlog"
) )
const shellPath = "/run/current-system/sw/bin/bash" const shellPath = "/run/current-system/sw/bin/bash"

View File

@ -8,8 +8,8 @@ import (
"strconv" "strconv"
"sync/atomic" "sync/atomic"
"git.gensokyo.uk/security/hakurei/hst" "hakurei.app/hst"
"git.gensokyo.uk/security/hakurei/internal/hlog" "hakurei.app/internal/hlog"
) )
var ( var (

View File

@ -9,9 +9,9 @@ import (
"os" "os"
"os/exec" "os/exec"
"git.gensokyo.uk/security/hakurei/hst" "hakurei.app/hst"
"git.gensokyo.uk/security/hakurei/internal" "hakurei.app/internal"
"git.gensokyo.uk/security/hakurei/internal/hlog" "hakurei.app/internal/hlog"
) )
var hakureiPath = internal.MustHakureiPath() var hakureiPath = internal.MustHakureiPath()

View File

@ -5,9 +5,9 @@ import (
"path" "path"
"strings" "strings"
"git.gensokyo.uk/security/hakurei/container/seccomp" "hakurei.app/container/seccomp"
"git.gensokyo.uk/security/hakurei/hst" "hakurei.app/hst"
"git.gensokyo.uk/security/hakurei/internal" "hakurei.app/internal"
) )
func withNixDaemon( func withNixDaemon(

View File

@ -3,7 +3,7 @@ package command_test
import ( import (
"testing" "testing"
"git.gensokyo.uk/security/hakurei/command" "hakurei.app/command"
) )
func TestBuild(t *testing.T) { func TestBuild(t *testing.T) {

View File

@ -10,7 +10,7 @@ import (
"strings" "strings"
"testing" "testing"
"git.gensokyo.uk/security/hakurei/command" "hakurei.app/command"
) )
func TestParse(t *testing.T) { func TestParse(t *testing.T) {

View File

@ -14,7 +14,7 @@ import (
. "syscall" . "syscall"
"time" "time"
"git.gensokyo.uk/security/hakurei/container/seccomp" "hakurei.app/container/seccomp"
) )
type ( type (

View File

@ -12,13 +12,13 @@ import (
"testing" "testing"
"time" "time"
"git.gensokyo.uk/security/hakurei/container" "hakurei.app/container"
"git.gensokyo.uk/security/hakurei/container/seccomp" "hakurei.app/container/seccomp"
"git.gensokyo.uk/security/hakurei/container/vfs" "hakurei.app/container/vfs"
"git.gensokyo.uk/security/hakurei/hst" "hakurei.app/hst"
"git.gensokyo.uk/security/hakurei/internal" "hakurei.app/internal"
"git.gensokyo.uk/security/hakurei/internal/hlog" "hakurei.app/internal/hlog"
"git.gensokyo.uk/security/hakurei/ldd" "hakurei.app/ldd"
) )
const ( const (

View File

@ -4,7 +4,7 @@ import (
"os" "os"
"testing" "testing"
"git.gensokyo.uk/security/hakurei/container" "hakurei.app/container"
) )
func TestExecutable(t *testing.T) { func TestExecutable(t *testing.T) {

View File

@ -13,7 +13,7 @@ import (
. "syscall" . "syscall"
"time" "time"
"git.gensokyo.uk/security/hakurei/container/seccomp" "hakurei.app/container/seccomp"
) )
const ( const (

View File

@ -7,7 +7,7 @@ import (
"path/filepath" "path/filepath"
. "syscall" . "syscall"
"git.gensokyo.uk/security/hakurei/container/vfs" "hakurei.app/container/vfs"
) )
func (p *procPaths) bindMount(source, target string, flags uintptr, eq bool) error { func (p *procPaths) bindMount(source, target string, flags uintptr, eq bool) error {

View File

@ -10,7 +10,7 @@ import (
"strings" "strings"
"syscall" "syscall"
"git.gensokyo.uk/security/hakurei/container/vfs" "hakurei.app/container/vfs"
) )
const ( const (

View File

@ -8,7 +8,7 @@ import (
"syscall" "syscall"
"testing" "testing"
. "git.gensokyo.uk/security/hakurei/container/seccomp" . "hakurei.app/container/seccomp"
) )
func TestExport(t *testing.T) { func TestExport(t *testing.T) {

View File

@ -5,7 +5,7 @@ import (
"errors" "errors"
"syscall" "syscall"
"git.gensokyo.uk/security/hakurei/helper/proc" "hakurei.app/helper/proc"
) )
const ( const (

View File

@ -6,7 +6,7 @@ import (
"syscall" "syscall"
"testing" "testing"
"git.gensokyo.uk/security/hakurei/container/seccomp" "hakurei.app/container/seccomp"
) )
func TestLibraryError(t *testing.T) { func TestLibraryError(t *testing.T) {

View File

@ -3,7 +3,7 @@ package vfs_test
import ( import (
"testing" "testing"
"git.gensokyo.uk/security/hakurei/container/vfs" "hakurei.app/container/vfs"
) )
func TestUnmangle(t *testing.T) { func TestUnmangle(t *testing.T) {

View File

@ -12,7 +12,7 @@ import (
"syscall" "syscall"
"testing" "testing"
"git.gensokyo.uk/security/hakurei/container/vfs" "hakurei.app/container/vfs"
) )
func TestMountInfo(t *testing.T) { func TestMountInfo(t *testing.T) {

View File

@ -8,7 +8,7 @@ import (
"syscall" "syscall"
"testing" "testing"
"git.gensokyo.uk/security/hakurei/container/vfs" "hakurei.app/container/vfs"
) )
func TestUnfold(t *testing.T) { func TestUnfold(t *testing.T) {

6
dist/release.sh vendored
View File

@ -10,9 +10,9 @@ cp -rv "dist/comp" "${out}"
go generate ./... go generate ./...
go build -trimpath -v -o "${out}/bin/" -ldflags "-s -w -buildid= -extldflags '-static' go build -trimpath -v -o "${out}/bin/" -ldflags "-s -w -buildid= -extldflags '-static'
-X git.gensokyo.uk/security/hakurei/internal.version=${VERSION} -X hakurei.app/internal.version=${VERSION}
-X git.gensokyo.uk/security/hakurei/internal.hmain=/usr/bin/hakurei -X hakurei.app/internal.hmain=/usr/bin/hakurei
-X git.gensokyo.uk/security/hakurei/internal.hsu=/usr/bin/hsu -X hakurei.app/internal.hsu=/usr/bin/hsu
-X main.hmain=/usr/bin/hakurei" ./... -X main.hmain=/usr/bin/hakurei" ./...
rm -f "./${out}.tar.gz" && tar -C dist -czf "${out}.tar.gz" "${pname}" rm -f "./${out}.tar.gz" && tar -C dist -czf "${out}.tar.gz" "${pname}"

2
go.mod
View File

@ -1,3 +1,3 @@
module git.gensokyo.uk/security/hakurei module hakurei.app
go 1.24 go 1.24

View File

@ -7,7 +7,7 @@ import (
"syscall" "syscall"
"testing" "testing"
"git.gensokyo.uk/security/hakurei/helper" "hakurei.app/helper"
) )
func TestArgsString(t *testing.T) { func TestArgsString(t *testing.T) {

View File

@ -10,7 +10,7 @@ import (
"sync" "sync"
"syscall" "syscall"
"git.gensokyo.uk/security/hakurei/helper/proc" "hakurei.app/helper/proc"
) )
// NewDirect initialises a new direct Helper instance with wt as the null-terminated argument writer. // NewDirect initialises a new direct Helper instance with wt as the null-terminated argument writer.

View File

@ -8,7 +8,7 @@ import (
"os/exec" "os/exec"
"testing" "testing"
"git.gensokyo.uk/security/hakurei/helper" "hakurei.app/helper"
) )
func TestCmd(t *testing.T) { func TestCmd(t *testing.T) {

View File

@ -9,8 +9,8 @@ import (
"slices" "slices"
"sync" "sync"
"git.gensokyo.uk/security/hakurei/container" "hakurei.app/container"
"git.gensokyo.uk/security/hakurei/helper/proc" "hakurei.app/helper/proc"
) )
// New initialises a Helper instance with wt as the null-terminated argument writer. // New initialises a Helper instance with wt as the null-terminated argument writer.

View File

@ -7,10 +7,10 @@ import (
"os/exec" "os/exec"
"testing" "testing"
"git.gensokyo.uk/security/hakurei/container" "hakurei.app/container"
"git.gensokyo.uk/security/hakurei/helper" "hakurei.app/helper"
"git.gensokyo.uk/security/hakurei/internal" "hakurei.app/internal"
"git.gensokyo.uk/security/hakurei/internal/hlog" "hakurei.app/internal/hlog"
) )
func TestContainer(t *testing.T) { func TestContainer(t *testing.T) {

View File

@ -8,7 +8,7 @@ import (
"os" "os"
"time" "time"
"git.gensokyo.uk/security/hakurei/helper/proc" "hakurei.app/helper/proc"
) )
var WaitDelay = 2 * time.Second var WaitDelay = 2 * time.Second

View File

@ -11,7 +11,7 @@ import (
"testing" "testing"
"time" "time"
"git.gensokyo.uk/security/hakurei/helper" "hakurei.app/helper"
) )
var ( var (

View File

@ -3,7 +3,7 @@ package helper_test
import ( import (
"testing" "testing"
"git.gensokyo.uk/security/hakurei/helper" "hakurei.app/helper"
) )
func TestHelperStub(t *testing.T) { helper.InternalHelperStub() } func TestHelperStub(t *testing.T) { helper.InternalHelperStub() }

View File

@ -2,8 +2,8 @@
package hst package hst
import ( import (
"git.gensokyo.uk/security/hakurei/system" "hakurei.app/system"
"git.gensokyo.uk/security/hakurei/system/dbus" "hakurei.app/system/dbus"
) )
const Tmp = "/.hakurei" const Tmp = "/.hakurei"

View File

@ -1,7 +1,7 @@
package hst package hst
import ( import (
"git.gensokyo.uk/security/hakurei/container/seccomp" "hakurei.app/container/seccomp"
) )
type ( type (

View File

@ -1,9 +1,9 @@
package hst package hst
import ( import (
"git.gensokyo.uk/security/hakurei/container/seccomp" "hakurei.app/container/seccomp"
"git.gensokyo.uk/security/hakurei/system" "hakurei.app/system"
"git.gensokyo.uk/security/hakurei/system/dbus" "hakurei.app/system/dbus"
) )
// Template returns a fully populated instance of Config. // Template returns a fully populated instance of Config.

View File

@ -4,7 +4,7 @@ import (
"encoding/json" "encoding/json"
"testing" "testing"
"git.gensokyo.uk/security/hakurei/hst" "hakurei.app/hst"
) )
func TestTemplate(t *testing.T) { func TestTemplate(t *testing.T) {

View File

@ -3,7 +3,7 @@ package internal
import ( import (
"os" "os"
"git.gensokyo.uk/security/hakurei/internal/hlog" "hakurei.app/internal/hlog"
) )
func Exit(code int) { hlog.BeforeExit(); os.Exit(code) } func Exit(code int) { hlog.BeforeExit(); os.Exit(code) }

View File

@ -1,9 +1,9 @@
package internal package internal
import ( import (
"git.gensokyo.uk/security/hakurei/container" "hakurei.app/container"
"git.gensokyo.uk/security/hakurei/internal/hlog" "hakurei.app/internal/hlog"
"git.gensokyo.uk/security/hakurei/system" "hakurei.app/system"
) )
func InstallOutput(verbose bool) { func InstallOutput(verbose bool) {

View File

@ -4,7 +4,7 @@ import (
"log" "log"
"path" "path"
"git.gensokyo.uk/security/hakurei/internal/hlog" "hakurei.app/internal/hlog"
) )
var ( var (

View File

@ -7,8 +7,8 @@ import (
"path" "path"
"strconv" "strconv"
"git.gensokyo.uk/security/hakurei/hst" "hakurei.app/hst"
"git.gensokyo.uk/security/hakurei/internal/hlog" "hakurei.app/internal/hlog"
) )
// State provides safe interaction with operating system state. // State provides safe interaction with operating system state.

View File

@ -12,10 +12,10 @@ import (
"sync" "sync"
"syscall" "syscall"
"git.gensokyo.uk/security/hakurei/container" "hakurei.app/container"
"git.gensokyo.uk/security/hakurei/hst" "hakurei.app/hst"
"git.gensokyo.uk/security/hakurei/internal" "hakurei.app/internal"
"git.gensokyo.uk/security/hakurei/internal/hlog" "hakurei.app/internal/hlog"
) )
// Std implements System using the standard library. // Std implements System using the standard library.

View File

@ -8,8 +8,8 @@ import (
"os/exec" "os/exec"
"time" "time"
"git.gensokyo.uk/security/hakurei/container" "hakurei.app/container"
"git.gensokyo.uk/security/hakurei/container/seccomp" "hakurei.app/container/seccomp"
) )
const lddTimeout = 2 * time.Second const lddTimeout = 2 * time.Second

View File

@ -5,7 +5,7 @@ import (
"reflect" "reflect"
"testing" "testing"
"git.gensokyo.uk/security/hakurei/ldd" "hakurei.app/ldd"
) )
func TestParseError(t *testing.T) { func TestParseError(t *testing.T) {

View File

@ -65,7 +65,7 @@ buildGoModule rec {
lib.attrsets.foldlAttrs lib.attrsets.foldlAttrs
( (
ldflags: name: value: ldflags: name: value:
ldflags ++ [ "-X git.gensokyo.uk/security/hakurei/internal.${name}=${value}" ] ldflags ++ [ "-X hakurei.app/internal.${name}=${value}" ]
) )
( (
[ "-s -w" ] [ "-s -w" ]

View File

@ -6,7 +6,7 @@ import (
"os" "os"
"slices" "slices"
"git.gensokyo.uk/security/hakurei/system/acl" "hakurei.app/system/acl"
) )
// UpdatePerm appends an ephemeral acl update Op. // UpdatePerm appends an ephemeral acl update Op.

View File

@ -7,7 +7,7 @@ import (
"reflect" "reflect"
"testing" "testing"
"git.gensokyo.uk/security/hakurei/system/acl" "hakurei.app/system/acl"
) )
const testFileName = "acl.test" const testFileName = "acl.test"

View File

@ -3,7 +3,7 @@ package system
import ( import (
"testing" "testing"
"git.gensokyo.uk/security/hakurei/system/acl" "hakurei.app/system/acl"
) )
func TestUpdatePerm(t *testing.T) { func TestUpdatePerm(t *testing.T) {

View File

@ -9,7 +9,7 @@ import (
"sync" "sync"
"syscall" "syscall"
"git.gensokyo.uk/security/hakurei/system/dbus" "hakurei.app/system/dbus"
) )
var ( var (

View File

@ -5,7 +5,7 @@ import (
"reflect" "reflect"
"testing" "testing"
"git.gensokyo.uk/security/hakurei/system/dbus" "hakurei.app/system/dbus"
) )
func TestParse(t *testing.T) { func TestParse(t *testing.T) {

View File

@ -9,7 +9,7 @@ import (
"strings" "strings"
"testing" "testing"
"git.gensokyo.uk/security/hakurei/system/dbus" "hakurei.app/system/dbus"
) )
func TestConfig_Args(t *testing.T) { func TestConfig_Args(t *testing.T) {

View File

@ -13,11 +13,11 @@ import (
"testing" "testing"
"time" "time"
"git.gensokyo.uk/security/hakurei/container" "hakurei.app/container"
"git.gensokyo.uk/security/hakurei/helper" "hakurei.app/helper"
"git.gensokyo.uk/security/hakurei/internal" "hakurei.app/internal"
"git.gensokyo.uk/security/hakurei/internal/hlog" "hakurei.app/internal/hlog"
"git.gensokyo.uk/security/hakurei/system/dbus" "hakurei.app/system/dbus"
) )
func TestFinalise(t *testing.T) { func TestFinalise(t *testing.T) {

View File

@ -11,10 +11,10 @@ import (
"strconv" "strconv"
"syscall" "syscall"
"git.gensokyo.uk/security/hakurei/container" "hakurei.app/container"
"git.gensokyo.uk/security/hakurei/container/seccomp" "hakurei.app/container/seccomp"
"git.gensokyo.uk/security/hakurei/helper" "hakurei.app/helper"
"git.gensokyo.uk/security/hakurei/ldd" "hakurei.app/ldd"
) )
// Start starts and configures a D-Bus proxy process. // Start starts and configures a D-Bus proxy process.

View File

@ -8,7 +8,7 @@ import (
"sync" "sync"
"syscall" "syscall"
"git.gensokyo.uk/security/hakurei/helper" "hakurei.app/helper"
) )
// ProxyName is the file name or path to the proxy program. // ProxyName is the file name or path to the proxy program.

View File

@ -3,7 +3,7 @@ package dbus_test
import ( import (
"sync" "sync"
"git.gensokyo.uk/security/hakurei/system/dbus" "hakurei.app/system/dbus"
) )
const ( const (

View File

@ -3,7 +3,7 @@ package dbus_test
import ( import (
"testing" "testing"
"git.gensokyo.uk/security/hakurei/helper" "hakurei.app/helper"
) )
func TestHelperStub(t *testing.T) { helper.InternalHelperStub() } func TestHelperStub(t *testing.T) { helper.InternalHelperStub() }

View File

@ -3,7 +3,7 @@ package system_test
import ( import (
"testing" "testing"
"git.gensokyo.uk/security/hakurei/system" "hakurei.app/system"
) )
func TestEnablementString(t *testing.T) { func TestEnablementString(t *testing.T) {

View File

@ -4,7 +4,7 @@ import (
"strconv" "strconv"
"testing" "testing"
"git.gensokyo.uk/security/hakurei/system" "hakurei.app/system"
) )
func TestNew(t *testing.T) { func TestNew(t *testing.T) {

View File

@ -1,7 +1,7 @@
package system package system
import ( import (
"git.gensokyo.uk/security/hakurei/container" "hakurei.app/container"
) )
var msg container.Msg = new(container.DefaultMsg) var msg container.Msg = new(container.DefaultMsg)

View File

@ -5,8 +5,8 @@ import (
"fmt" "fmt"
"os" "os"
"git.gensokyo.uk/security/hakurei/system/acl" "hakurei.app/system/acl"
"git.gensokyo.uk/security/hakurei/system/wayland" "hakurei.app/system/wayland"
) )
// Wayland sets up a wayland socket with a security context attached. // Wayland sets up a wayland socket with a security context attached.

View File

@ -3,7 +3,7 @@ package system
import ( import (
"fmt" "fmt"
"git.gensokyo.uk/security/hakurei/system/internal/xcb" "hakurei.app/system/internal/xcb"
) )
// ChangeHosts appends an X11 ChangeHosts command Op. // ChangeHosts appends an X11 ChangeHosts command Op.

View File

@ -8,7 +8,7 @@ import (
"testing" "testing"
"testing/fstest" "testing/fstest"
"git.gensokyo.uk/security/hakurei/test/sandbox" "hakurei.app/test/sandbox"
) )
var ( var (

View File

@ -5,7 +5,7 @@ import (
"path" "path"
"testing" "testing"
"git.gensokyo.uk/security/hakurei/test/sandbox" "hakurei.app/test/sandbox"
) )
func TestMountinfo(t *testing.T) { func TestMountinfo(t *testing.T) {

View File

@ -6,7 +6,7 @@ import (
"strconv" "strconv"
"strings" "strings"
"git.gensokyo.uk/security/hakurei/test/sandbox" "hakurei.app/test/sandbox"
) )
func main() { func main() {

View File

@ -21,7 +21,7 @@ buildGoModule rec {
nativeBuildInputs = [ pkg-config ]; nativeBuildInputs = [ pkg-config ];
preBuild = '' preBuild = ''
go mod init git.gensokyo.uk/security/hakurei/test/sandbox >& /dev/null go mod init hakurei.app/test/sandbox >& /dev/null
''; '';
postInstall = '' postInstall = ''