parent
76b29a4500
commit
1d7cd163ce
@ -0,0 +1,73 @@ |
|||||||
|
{ config, lib, pkgs, ... }: |
||||||
|
|
||||||
|
with lib; |
||||||
|
|
||||||
|
let |
||||||
|
cfg = config.services.xserver.desktopManager.phosh; |
||||||
|
in |
||||||
|
|
||||||
|
{ |
||||||
|
options = { |
||||||
|
services.xserver.desktopManager.phosh = { |
||||||
|
enable = mkOption { |
||||||
|
type = types.bool; |
||||||
|
default = false; |
||||||
|
description = "Enable the Phone Shell."; |
||||||
|
}; |
||||||
|
|
||||||
|
package = mkOption { |
||||||
|
type = types.package; |
||||||
|
default = pkgs.phosh; |
||||||
|
defaultText = literalExpression "pkgs.phosh"; |
||||||
|
example = literalExpression "pkgs.phosh"; |
||||||
|
description = '' |
||||||
|
Package that should be used for Phosh. |
||||||
|
''; |
||||||
|
}; |
||||||
|
|
||||||
|
user = mkOption { |
||||||
|
description = "The user to run the Phosh service."; |
||||||
|
type = types.str; |
||||||
|
example = "alice"; |
||||||
|
}; |
||||||
|
|
||||||
|
group = mkOption { |
||||||
|
description = "The group to run the Phosh service."; |
||||||
|
type = types.str; |
||||||
|
example = "users"; |
||||||
|
}; |
||||||
|
}; |
||||||
|
}; |
||||||
|
|
||||||
|
config = mkIf cfg.enable { |
||||||
|
programs.phosh.enable = true; |
||||||
|
|
||||||
|
systemd.defaultUnit = "graphical.target"; |
||||||
|
# Inspired by https://gitlab.gnome.org/World/Phosh/phosh/-/blob/main/data/phosh.service |
||||||
|
systemd.services.phosh = { |
||||||
|
wantedBy = [ "graphical.target" ]; |
||||||
|
serviceConfig = { |
||||||
|
ExecStart = "${cfg.package}/bin/phosh"; |
||||||
|
User = cfg.user; |
||||||
|
Group = cfg.group; |
||||||
|
PAMName = "login"; |
||||||
|
WorkingDirectory = "~"; |
||||||
|
Restart = "always"; |
||||||
|
|
||||||
|
TTYPath = "/dev/tty7"; |
||||||
|
TTYReset = "yes"; |
||||||
|
TTYVHangup = "yes"; |
||||||
|
TTYVTDisallocate = "yes"; |
||||||
|
|
||||||
|
# Fail to start if not controlling the tty. |
||||||
|
StandardInput = "tty-fail"; |
||||||
|
StandardOutput = "journal"; |
||||||
|
StandardError = "journal"; |
||||||
|
|
||||||
|
# Log this user with utmp, letting it show up with commands 'w' and 'who'. |
||||||
|
UtmpIdentifier = "tty7"; |
||||||
|
UtmpMode = "user"; |
||||||
|
}; |
||||||
|
}; |
||||||
|
}; |
||||||
|
} |
Loading…
Reference in new issue