This required some changes to systemd unit handling: * Add an option to specify that a unit is just a symlink * Allow specified units to overwrite systemd-provided ones * Have gettys.target require autovt@1.service instead of getty@1.service Signed-off-by: Shea Levy <shea@shealevy.com>wip/yesman
parent
e5c34ddb55
commit
48daf624c5
@ -0,0 +1,64 @@ |
||||
{ config, pkgs, ... }: |
||||
let |
||||
inherit (pkgs.lib) mkOption types mkIf optionalString; |
||||
|
||||
cfg = config.services.kmscon; |
||||
|
||||
configDir = pkgs.writeTextFile { name = "kmscon-config"; destination = "/kmscon.conf"; text = cfg.extraConfig; }; |
||||
in { |
||||
options = { |
||||
services.kmscon = { |
||||
enable = mkOption { |
||||
description = "Use kmscon as the virtual console instead of gettys"; |
||||
type = types.bool; |
||||
default = false; |
||||
}; |
||||
|
||||
hwRender = mkOption { |
||||
description = "Whether to use 3D hardware acceleration to render the console"; |
||||
type = types.bool; |
||||
default = false; |
||||
}; |
||||
|
||||
extraConfig = mkOption { |
||||
description = "Extra contents of the kmscon.conf file"; |
||||
type = types.lines; |
||||
default = ""; |
||||
example = "font-size=14"; |
||||
}; |
||||
}; |
||||
}; |
||||
|
||||
config = mkIf cfg.enable { |
||||
# Largely copied from unit provided with kmscon source |
||||
systemd.units."kmsconvt@.service".text = '' |
||||
[Unit] |
||||
Description=KMS System Console on %I |
||||
Documentation=man:kmscon(1) |
||||
After=systemd-user-sessions.service |
||||
After=plymouth-quit-wait.service |
||||
After=systemd-logind.service |
||||
Requires=systemd-logind.service |
||||
Before=getty.target |
||||
Conflicts=getty@%i.service |
||||
OnFailure=getty@%i.service |
||||
IgnoreOnIsolate=yes |
||||
ConditionPathExists=/dev/tty0 |
||||
|
||||
[Service] |
||||
ExecStart=${pkgs.kmscon}/bin/kmscon "--vt=%I" --seats=seat0 --no-switchvt --configdir ${configDir} --login -- ${pkgs.shadow}/bin/login -p |
||||
UtmpIdentifier=%I |
||||
TTYPath=/dev/%I |
||||
TTYReset=yes |
||||
TTYVHangup=yes |
||||
TTYVTDisallocate=yes |
||||
''; |
||||
|
||||
systemd.units."autovt@.service".linkTarget = "${config.systemd.units."kmsconvt@.service".unit}/kmsconvt@.service"; |
||||
|
||||
services.kmscon.extraConfig = mkIf cfg.hwRender '' |
||||
drm |
||||
hwaccel |
||||
''; |
||||
}; |
||||
} |
Loading…
Reference in new issue