clan-core/clanModules/waypipe.nix
Jörg Thalheim e296a3019d
All checks were successful
checks / check-links (pull_request) Successful in 21s
checks / checks-impure (pull_request) Successful in 1m50s
checks / checks (pull_request) Successful in 4m23s
re-format with nixfmt
2024-03-17 19:48:49 +01:00

79 lines
2.2 KiB
Nix

{
pkgs,
lib,
config,
...
}:
{
options.clan.services.waypipe = {
enable = lib.mkEnableOption "waypipe";
user = lib.mkOption {
type = lib.types.str;
default = "user";
description = "User the program is run under";
};
flags = lib.mkOption {
type = lib.types.listOf lib.types.str;
default = [
"--vsock"
"-s"
"3049"
"server"
];
description = "Flags that will be passed to waypipe";
};
command = lib.mkOption {
type = lib.types.listOf lib.types.str;
default = [ (lib.getExe pkgs.foot) ];
description = "Commands that waypipe should run";
};
};
config = lib.mkIf config.clan.services.waypipe.enable {
# Waypipe needs pipewire
services.pipewire = {
enable = lib.mkDefault true;
alsa.enable = lib.mkDefault true;
alsa.support32Bit = lib.mkDefault true;
pulse.enable = lib.mkDefault true;
};
# General default settings
fonts.enableDefaultPackages = lib.mkDefault true;
hardware.opengl.enable = lib.mkDefault true;
# Assume it is run inside a clan context
clan.virtualisation.waypipe = lib.mkDefault true;
# User account
services.getty.autologinUser = lib.mkDefault config.clan.services.waypipe.user;
security.sudo.wheelNeedsPassword = false;
users.users.user = lib.mkIf (config.clan.services.waypipe.user == "user") {
isNormalUser = true;
uid = 1000;
password = "";
extraGroups = [
"wheel"
"video"
];
shell = "/run/current-system/sw/bin/bash";
};
systemd.user.services.waypipe = {
serviceConfig.PassEnvironment = "DISPLAY";
serviceConfig.Environment = ''
XDG_SESSION_TYPE=wayland \
NIXOS_OZONE_WL=1 \
GDK_BACKEND=wayland \
QT_QPA_PLATFORM=wayland \
CLUTTER_BACKEND = "wayland" \
SDL_VIDEODRIVER=wayland
'';
script = ''
${lib.getExe config.clanCore.clanPkgs.waypipe} \
${lib.escapeShellArgs config.clan.services.waypipe.flags} \
${lib.escapeShellArgs config.clan.services.waypipe.command}
'';
wantedBy = [ "default.target" ];
};
};
}