nixy

package
v1.4.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 24, 2025 License: MIT Imports: 24 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ProfileSandboxMountPath        = "/profile"
	WorkspaceDirSandboxMountPath   = "/workspace"
	WorkspaceFlakeSandboxMountPath = "/workspace-flake"
)

Functions

func InitNixyFile

func InitNixyFile(parent context.Context, dest string) error

func ProfileCreate

func ProfileCreate(ctx context.Context, name string) error

ProfileCreate creates a new profile with the given name

func ProfileEdit

func ProfileEdit(ctx context.Context, name string) error

ProfileEdit opens the profile's flake.nix in the user's editor

func ProfileList

func ProfileList(ctx context.Context) ([]string, error)

ProfileList returns all available profiles

func XDGDataDir

func XDGDataDir() string

Types

type Build

type Build struct {
	Packages []*NormalizedPackage `yaml:"packages"`
	Paths    []string             `yaml:"paths"`
}

type Context

type Context struct {
	context.Context

	NixyProfile    string
	NixyMode       Mode
	NixyUseProfile bool
	NixyBinPath    string
	InNixyShell    bool

	PWD string

	NixyDataDir string
}

func NewContext

func NewContext(parent context.Context, workspaceDir string) (*Context, error)

func (*Context) IsLocalMode

func (ctx *Context) IsLocalMode() bool

type ExecutorArgs

type ExecutorArgs struct {
	NixBinaryMountedPath  string
	ProfileDirMountedPath string
	FakeHomeMountedPath   string
	NixDirMountedPath     string

	WorkspaceFlakeDirHostPath    string
	WorkspaceFlakeDirMountedPath string

	EnvVars executorEnvVars
}

func UseBubbleWrap

func UseBubbleWrap(ctx *Context, profile *Profile) (*ExecutorArgs, error)

func UseDocker

func UseDocker(ctx *Context, profile *Profile) (*ExecutorArgs, error)

func UseLocal

func UseLocal(ctx *Context, profile *Profile) (*ExecutorArgs, error)

type ExecutorMountPath

type ExecutorMountPath struct {
	HostPath  string
	MountPath string
	ReadOnly  bool
}

type InShellNixy

type InShellNixy struct {
	PWD    string `yaml:"-"`
	Logger *slog.Logger
	NixyConfig
}

func LoadInNixyShell

func LoadInNixyShell(parent context.Context) (*InShellNixy, error)

func (*InShellNixy) Build

func (n *InShellNixy) Build(ctx context.Context, target string) error

type Mode

type Mode string
const (
	LocalMode          Mode = "local"
	LocalIgnoreEnvMode Mode = "local-ignore-env"
	DockerMode         Mode = "docker"
	BubbleWrapMode     Mode = "bubblewrap"
)

func (Mode) String

func (m Mode) String() string

type NixPackage

type NixPackage struct {
	Name   string
	Commit string
}

type NixPkgsMap added in v1.4.0

type NixPkgsMap map[string]string

func (NixPkgsMap) DefaultCommit added in v1.4.0

func (m NixPkgsMap) DefaultCommit() string

func (NixPkgsMap) List added in v1.4.0

func (m NixPkgsMap) List() []string

type Nixy

type Nixy struct {
	Context *Context

	ConfigFile *string

	sync.Mutex `yaml:"-"`
	Logger     *slog.Logger `yaml:"-"`

	PWD string

	NixyConfig
	// contains filtered or unexported fields
}

func LoadFromFile

func LoadFromFile(parent context.Context, f string) (*Nixy, error)

func (*Nixy) Build

func (nixy *Nixy) Build(ctx *Context, target string) error

func (*Nixy) PrepareShellCommand

func (nixy *Nixy) PrepareShellCommand(ctx *Context, command string, args ...string) (*exec.Cmd, error)

func (*Nixy) Shell

func (n *Nixy) Shell(ctx *Context, program string) error

func (*Nixy) SyncToDisk

func (nixy *Nixy) SyncToDisk() error

type NixyConfig

type NixyConfig struct {
	NixPkgs   NixPkgsMap           `yaml:"nixpkgs"`
	Packages  []*NormalizedPackage `yaml:"packages"`
	Libraries []string             `yaml:"libraries,omitempty"`

	Env map[string]string `yaml:"env,omitempty"`

	OnShellEnter string `yaml:"onShellEnter,omitempty"`

	// OnShellExit is not used as of now, will try to use it in future
	OnShellExit string `yaml:"onShellExit,omitempty"`

	Builds map[string]Build `yaml:"builds,omitempty"`

	// Mount is applicable only on bubblewrap and docker modes
	Mounts []NixyMount `yaml:"mounts,omitempty"`
}

type NixyHostDataStore

type NixyHostDataStore struct {
	// contains filtered or unexported fields
}

func (NixyHostDataStore) ProfilePath

func (n NixyHostDataStore) ProfilePath(profile string) string

type NixyMount added in v1.4.0

type NixyMount struct {
	Source      string `yaml:"source"`
	Destination string `yaml:"dest"`
	ReadOnly    bool   `yaml:"readOnly,omitempty"`
}

type NormalizedPackage

type NormalizedPackage struct {
	*NixPackage
	*URLPackage
}

func (*NormalizedPackage) MarshalYAML

func (p *NormalizedPackage) MarshalYAML() (any, error)

func (*NormalizedPackage) UnmarshalYAML

func (p *NormalizedPackage) UnmarshalYAML(value *yaml.Node) error

type Profile

type Profile struct {
	Name                string
	NixPkgsCommitHash   string `json:"nixpkgs,omitempty"`
	ProfilePath         string // ~/.local/share/nixy/profiles/<name>
	FakeHomeDir         string
	WorkspacesDir       string
	NixDir              string
	StaticNixBinPath    string // Path for static nix binary
	ProfileNixyYAMLPath string
}

Profile represents a general profile that all executors can use

func GetProfile

func GetProfile(_ *Context, name string) (*Profile, error)

func NewProfile

func NewProfile(ctx *Context, name string) (*Profile, error)

NewProfile creates a new profile instance

func (*Profile) CreateDirs

func (p *Profile) CreateDirs() error

CreateDirs creates the necessary directories for the profile

func (*Profile) Save

func (p *Profile) Save() error

type URLPackage

type URLPackage struct {
	Name        string `yaml:"name"`
	URL         string `yaml:"url"`
	RenderedURL string `yaml:"-"`

	// Sha256 is a map of $OS/$ARCH to sha256 corresponding to the binary
	Sha256 map[string]string `yaml:"sha256,omitempty"`
}

type WorkspaceFlakeGenParams

type WorkspaceFlakeGenParams struct {
	NixPkgs          NixPkgsMap
	WorkspaceDirPath string
	Packages         []*NormalizedPackage
	Libraries        []string
	Builds           map[string]Build
	EnvVars          map[string]string
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL