refactor: centralize workstation HM base and derive terminal from user metadata
This commit is contained in:
@@ -10,8 +10,33 @@ let
|
||||
in
|
||||
{
|
||||
flake.modules.nixos.orion-admin =
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
let
|
||||
rawTerminalAttrPath = lib.splitString "." config.meta.host.users.kiri.terminalPackageAttr;
|
||||
terminalAttrPath =
|
||||
if rawTerminalAttrPath != [ ] && builtins.head rawTerminalAttrPath == "pkgs" then
|
||||
builtins.tail rawTerminalAttrPath
|
||||
else
|
||||
rawTerminalAttrPath;
|
||||
terminalPackage = lib.attrByPath terminalAttrPath null pkgs;
|
||||
in
|
||||
{
|
||||
assertions = [
|
||||
{
|
||||
assertion = terminalPackage != null;
|
||||
message = "Unknown terminal package `${config.meta.host.users.kiri.terminalPackageAttr}` for user `kiri`.";
|
||||
}
|
||||
{
|
||||
assertion = terminalPackage != null && lib.elem "terminfo" terminalPackage.outputs;
|
||||
message = "Terminal package `${config.meta.host.users.kiri.terminalPackageAttr}` must provide a `terminfo` output for `orion`.";
|
||||
}
|
||||
];
|
||||
|
||||
users.users.kiri = {
|
||||
linger = true;
|
||||
openssh.authorizedKeys.keys = [
|
||||
@@ -20,8 +45,9 @@ in
|
||||
};
|
||||
|
||||
environment.systemPackages = [
|
||||
pkgs.kitty
|
||||
];
|
||||
] ++ lib.optional (terminalPackage != null && lib.elem "terminfo" terminalPackage.outputs) (
|
||||
lib.getOutput "terminfo" terminalPackage
|
||||
);
|
||||
};
|
||||
|
||||
flake.modules.nixos.orion = metaLib.mkHost {
|
||||
@@ -45,7 +71,11 @@ in
|
||||
(metaLib.mkHostUser {
|
||||
account = metaLib.users.kiri;
|
||||
needsPassword = false;
|
||||
homeImports = [ homeModules.kiri-server ];
|
||||
homeImports = [
|
||||
homeModules.shell
|
||||
homeModules.git
|
||||
homeModules.syncthing
|
||||
];
|
||||
})
|
||||
./_hardware.nix
|
||||
./_disk.nix
|
||||
|
||||
Reference in New Issue
Block a user