blob: fe3b3333b4b2efd89ef41ee5e35a273ebc7cfc04 [file] [log] [blame]
{ lib
, pkgs
, config
, ...
}:
let
lockMessage = "This computer has been locked, please authenticate to continue";
in
{
config = {
services.fprintd.enable = true;
environment.persistence."/nix/persist".directories = [ "/var/lib/fprint" ];
security.apparmor = {
enable = true;
killUnconfinedConfinables = true;
};
boot.initrd.availableKernelModules = [
"aesni_intel"
"cryptd"
"uas"
"xhci_hcd"
];
boot.initrd.luks.devices = {
nix.device = "/dev/disk/by-label/NIX";
swap.device = "/dev/disk/by-label/SWAP";
expansion0.device = "/dev/disk/by-label/EXPANSION0";
};
services.physlock = {
inherit lockMessage;
enable = false;
allowAnyUser = true;
};
security.wrappers = {
lock = {
source = ./security/lock.sh;
setuid = true;
owner = config.users.users.root.name;
group = config.users.users.nobody.group;
};
_onLock = {
source = ./security/onLock.sh;
setuid = false;
owner = config.users.users.root.name;
group = config.users.users.nobody.group;
};
};
};
home =
let
lockCommand =
lib.pipe ''
${pkgs.systemd}/bin/systemd-inhibit --why="Already locked" --what=idle --who="lock script" ${config.security.wrapperDir}/lock
'' [
(lib.splitString "\n")
(lib.filter (line: line != ""))
(lib.concatStringsSep " && ")
];
in
{
services.swayidle = {
enable = false;
timeouts = [
{
timeout = 60;
command = lockCommand;
}
];
};
home.packages = [
(pkgs.writeScriptBin "lock" lockCommand)
pkgs.kbd
];
};
}