aboutsummaryrefslogtreecommitdiffhomepage
path: root/options.nix
diff options
context:
space:
mode:
authorOphestra <cat@gensokyo.uk>2026-07-07 18:32:56 +0900
committerOphestra <cat@gensokyo.uk>2026-07-07 18:56:27 +0900
commit6d55ee536e902d059380f79e870d06547627cc7c (patch)
treeaacf3e3ec42525cf0e7a674aa948359fd0c21ae2 /options.nix
parentc8e8651694415d497b0800319b2ddda361b7651f (diff)
test: move nix files
These are too much clutter. Move them to test directory until the test suite replacement is upstreamed. Signed-off-by: Ophestra <cat@gensokyo.uk>
Diffstat (limited to 'options.nix')
-rw-r--r--options.nix364
1 files changed, 0 insertions, 364 deletions
diff --git a/options.nix b/options.nix
deleted file mode 100644
index f624b6f5..00000000
--- a/options.nix
+++ /dev/null
@@ -1,364 +0,0 @@
-packages:
-{
- lib,
- pkgs,
- config,
- ...
-}:
-
-let
- inherit (lib) types mkOption mkEnableOption;
-
- cfg = config.environment.hakurei;
-in
-
-{
- options = {
- environment.hakurei = {
- enable = mkEnableOption "hakurei";
-
- package = mkOption {
- type = types.package;
- default = packages.${pkgs.stdenv.hostPlatform.system}.hakurei;
- description = "The hakurei package to use.";
- };
-
- hsuPackage = mkOption {
- type = types.package;
- default = packages.${pkgs.stdenv.hostPlatform.system}.hsu;
- description = "The hsu package to use.";
- };
-
- users = mkOption {
- type =
- let
- inherit (types) attrsOf ints;
- in
- attrsOf (ints.between 0 99);
- description = ''
- Users allowed to spawn hakurei apps and their corresponding hakurei identity.
- '';
- };
-
- extraHomeConfig = mkOption {
- type = types.anything;
- description = ''
- Extra home-manager configuration to merge with all target users.
- '';
- };
-
- sharefs = {
- package = mkOption {
- type = types.package;
- default = pkgs.linkFarm "sharefs" {
- "bin/sharefs" = "${cfg.package}/libexec/sharefs";
- "bin/mount.fuse.sharefs" = "${cfg.package}/libexec/sharefs";
- };
- description = "The sharefs package to use.";
- };
-
- user = mkOption {
- type = types.str;
- default = "sharefs";
- description = ''
- Name of the user to run the sharefs daemon as.
- '';
- };
-
- group = mkOption {
- type = types.str;
- default = "sharefs";
- description = ''
- Name of the group to run the sharefs daemon as.
- '';
- };
-
- name = mkOption {
- type = types.str;
- default = "/sdcard";
- description = ''
- Host path to mount sharefs on.
- '';
- };
-
- source = mkOption {
- type = types.nullOr types.str;
- default = null;
- description = ''
- Writable backing directory. Setting this to null disables sharefs.
- '';
- };
- };
-
- apps = mkOption {
- type =
- let
- inherit (types)
- int
- ints
- str
- bool
- enum
- package
- anything
- submodule
- listOf
- attrsOf
- nullOr
- functionTo
- ;
- in
- attrsOf (submodule {
- options = {
- name = mkOption {
- type = str;
- description = ''
- Name of the app's launcher script.
- '';
- };
-
- verbose = mkEnableOption "launchers with verbose output";
-
- identity = mkOption {
- type = ints.between 1 9999;
- description = ''
- Application identity. Identity 0 is reserved for system services.
- '';
- };
- shareUid = mkEnableOption "sharing identity with another application";
-
- packages = mkOption {
- type = listOf package;
- default = [ ];
- description = ''
- List of extra packages to install via home-manager.
- '';
- };
-
- extraConfig = mkOption {
- type = anything;
- default = { };
- description = ''
- Extra home-manager configuration.
- '';
- };
-
- path = mkOption {
- type = nullOr str;
- default = null;
- description = ''
- Custom executable path.
- Setting this to null will default to the start script.
- '';
- };
-
- args = mkOption {
- type = nullOr (listOf str);
- default = null;
- description = ''
- Custom args.
- Setting this to null will default to script name.
- '';
- };
-
- script = mkOption {
- type = nullOr str;
- default = null;
- description = ''
- Application launch script.
- '';
- };
-
- command = mkOption {
- type = nullOr str;
- default = null;
- description = ''
- Command to run as the target user.
- Setting this to null will default command to launcher name.
- Has no effect when script is set.
- '';
- };
-
- groups = mkOption {
- type = listOf str;
- default = [ ];
- description = ''
- List of groups to inherit from the privileged user.
- '';
- };
-
- shareRuntime = mkEnableOption "sharing of XDG_RUNTIME_DIR between containers under the same identity";
- shareTmpdir = mkEnableOption "sharing of TMPDIR between containers under the same identity";
-
- dbus = {
- session = mkOption {
- type = nullOr (functionTo anything);
- default = null;
- description = ''
- D-Bus session bus custom configuration.
- Setting this to null will enable built-in defaults.
- '';
- };
-
- system = mkOption {
- type = nullOr anything;
- default = null;
- description = ''
- D-Bus system bus custom configuration.
- Setting this to null will disable the system bus proxy.
- '';
- };
- };
-
- env = mkOption {
- type = nullOr (attrsOf str);
- default = null;
- description = ''
- Environment variables to set for the initial process in the sandbox.
- '';
- };
-
- wait_delay = mkOption {
- type = nullOr int;
- default = null;
- description = ''
- Duration to wait for after interrupting a container's initial process in nanoseconds.
- A negative value causes the container to be terminated immediately on cancellation.
- Setting this to null defaults to five seconds.
- '';
- };
-
- devel = mkEnableOption "debugging-related kernel interfaces";
- userns = mkEnableOption "user namespace creation";
- tty = mkEnableOption "access to the controlling terminal";
- multiarch = mkEnableOption "multiarch kernel-level support";
-
- hostNet = mkEnableOption "share host net namespace" // {
- default = true;
- };
- hostAbstract = mkEnableOption "share abstract unix socket scope";
-
- schedPolicy = mkOption {
- type = nullOr (enum [
- "fifo"
- "rr"
- "batch"
- "idle"
- "deadline"
- "ext"
- ]);
- default = null;
- description = ''
- Scheduling policy to set for the container.
- The zero value retains the current scheduling policy.
- '';
- };
- schedPriority = mkOption {
- type = nullOr (ints.between 1 99);
- default = null;
- description = ''
- Scheduling priority to set for the container.
- '';
- };
-
- nix = mkEnableOption "nix daemon access";
- mapRealUid = mkEnableOption "mapping to priv-user uid";
- device = mkEnableOption "access to all devices";
- insecureWayland = mkEnableOption "direct access to the Wayland socket";
-
- gpu = mkOption {
- type = nullOr bool;
- default = null;
- description = ''
- Target process GPU and driver access.
- Setting this to null will enable GPU whenever X or Wayland is enabled.
- '';
- };
-
- useCommonPaths = mkEnableOption "common extra paths" // {
- default = true;
- };
-
- extraPaths = mkOption {
- type = listOf (attrsOf anything);
- default = [ ];
- description = ''
- Extra paths to make available to the container.
- '';
- };
-
- enablements = {
- wayland = mkOption {
- type = nullOr bool;
- default = true;
- description = ''
- Whether to share the Wayland server via security-context-v1.
- '';
- };
-
- x11 = mkOption {
- type = nullOr bool;
- default = false;
- description = ''
- Whether to share the X11 socket and allow connection.
- '';
- };
-
- dbus = mkOption {
- type = nullOr bool;
- default = true;
- description = ''
- Whether to proxy D-Bus.
- '';
- };
-
- pipewire = mkOption {
- type = nullOr bool;
- default = true;
- description = ''
- Whether to share the PipeWire server via pipewire-pulse on a SecurityContext socket.
- '';
- };
- };
-
- share = mkOption {
- type = nullOr package;
- default = null;
- description = ''
- Package containing share files.
- Setting this to null will default package name to wrapper name.
- '';
- };
- };
- });
- default = { };
- description = ''
- Declaratively configured hakurei apps.
- '';
- };
-
- commonPaths = mkOption {
- type = types.listOf (types.attrsOf types.anything);
- default = [ ];
- description = ''
- Common extra paths to make available to the container.
- '';
- };
-
- shell = mkOption {
- type = types.str;
- default = "/run/current-system/sw/bin/bash";
- description = ''
- Absolute path to preferred shell.
- '';
- };
-
- stateDir = mkOption {
- type = types.str;
- description = ''
- The state directory where app home directories are stored.
- '';
- };
- };
- };
-}