refactor: use terminal package attr paths with shared resolver

This commit is contained in:
2026-04-21 22:48:00 +02:00
parent 4781cc60be
commit 8de3bc1b72
7 changed files with 61 additions and 49 deletions
+2 -2
View File
@@ -42,8 +42,8 @@ let
type = lib.types.str;
};
terminalPackageAttr = lib.mkOption {
type = lib.types.str;
terminalPackagePath = lib.mkOption {
type = lib.types.listOf lib.types.str;
};
nixosConfigurationPath = lib.mkOption {
+14 -10
View File
@@ -1,4 +1,11 @@
{ inputs, ... }:
{
inputs,
config,
...
}:
let
metaLib = config.meta.lib;
in
{
flake.modules.nixos.niri =
{ pkgs, ... }:
@@ -43,13 +50,10 @@
inherit (display) mode;
}
) config.meta.host.displays;
rawTerminalAttrPath = lib.splitString "." config.meta.user.terminalPackageAttr;
terminalAttrPath =
if rawTerminalAttrPath != [ ] && builtins.head rawTerminalAttrPath == "pkgs" then
builtins.tail rawTerminalAttrPath
else
rawTerminalAttrPath;
terminalPackage = lib.attrByPath terminalAttrPath null pkgs;
terminalPackage = metaLib.resolvePackagePath {
inherit pkgs;
path = config.meta.user.terminalPackagePath;
};
hasMainProgram = terminalPackage != null && terminalPackage ? meta.mainProgram;
mouseSettings = lib.filterAttrs (_: value: value != null) {
@@ -77,11 +81,11 @@
assertions = [
{
assertion = terminalPackage != null;
message = "Unknown terminal package `${config.meta.user.terminalPackageAttr}` for user `${config.meta.user.name}`.";
message = "Unknown terminal package `${lib.showAttrPath config.meta.user.terminalPackagePath}` for user `${config.meta.user.name}`.";
}
{
assertion = hasMainProgram;
message = "Terminal package `${config.meta.user.terminalPackageAttr}` must define `meta.mainProgram`.";
message = "Terminal package `${lib.showAttrPath config.meta.user.terminalPackagePath}` must define `meta.mainProgram`.";
}
];
+11 -16
View File
@@ -5,6 +5,7 @@
}:
let
homeModules = config.flake.modules.homeManager;
metaLib = config.meta.lib;
mkPortableSettings =
baseSettings:
lib.recursiveUpdate baseSettings {
@@ -37,13 +38,10 @@ in
...
}:
let
rawTerminalAttrPath = lib.splitString "." config.meta.user.terminalPackageAttr;
terminalAttrPath =
if rawTerminalAttrPath != [ ] && builtins.head rawTerminalAttrPath == "pkgs" then
builtins.tail rawTerminalAttrPath
else
rawTerminalAttrPath;
terminalPackage = lib.attrByPath terminalAttrPath null pkgs;
terminalPackage = metaLib.resolvePackagePath {
inherit pkgs;
path = config.meta.user.terminalPackagePath;
};
hasMainProgram = terminalPackage != null && terminalPackage ? meta.mainProgram;
baseSettings =
if hasMainProgram then
@@ -62,11 +60,11 @@ in
assertions = [
{
assertion = terminalPackage != null;
message = "Unknown terminal package `${config.meta.user.terminalPackageAttr}` for user `${config.meta.user.name}`.";
message = "Unknown terminal package `${lib.showAttrPath config.meta.user.terminalPackagePath}` for user `${config.meta.user.name}`.";
}
{
assertion = hasMainProgram;
message = "Terminal package `${config.meta.user.terminalPackageAttr}` must define `meta.mainProgram`.";
message = "Terminal package `${lib.showAttrPath config.meta.user.terminalPackagePath}` must define `meta.mainProgram`.";
}
];
@@ -90,13 +88,10 @@ in
...
}:
let
rawTerminalAttrPath = lib.splitString "." config.meta.user.terminalPackageAttr;
terminalAttrPath =
if rawTerminalAttrPath != [ ] && builtins.head rawTerminalAttrPath == "pkgs" then
builtins.tail rawTerminalAttrPath
else
rawTerminalAttrPath;
terminalPackage = lib.attrByPath terminalAttrPath null pkgs;
terminalPackage = metaLib.resolvePackagePath {
inherit pkgs;
path = config.meta.user.terminalPackagePath;
};
hasMainProgram = terminalPackage != null && terminalPackage ? meta.mainProgram;
baseSettings =
if hasMainProgram then
+11 -10
View File
@@ -1,3 +1,7 @@
{ config, ... }:
let
metaLib = config.meta.lib;
in
{
flake.modules.homeManager.terminal =
{
@@ -7,13 +11,10 @@
...
}:
let
rawTerminalAttrPath = lib.splitString "." config.meta.user.terminalPackageAttr;
terminalAttrPath =
if rawTerminalAttrPath != [ ] && builtins.head rawTerminalAttrPath == "pkgs" then
builtins.tail rawTerminalAttrPath
else
rawTerminalAttrPath;
terminalPackage = lib.attrByPath terminalAttrPath null pkgs;
terminalPackage = metaLib.resolvePackagePath {
inherit pkgs;
path = config.meta.user.terminalPackagePath;
};
hasTerminalPackage = terminalPackage != null;
hasMainProgram = hasTerminalPackage && terminalPackage ? meta.mainProgram;
terminalDesktopId =
@@ -23,15 +24,15 @@
assertions = [
{
assertion = hasTerminalPackage;
message = "Unknown terminal package `${config.meta.user.terminalPackageAttr}` for user `${config.meta.user.name}`.";
message = "Unknown terminal package `${lib.showAttrPath config.meta.user.terminalPackagePath}` for user `${config.meta.user.name}`.";
}
{
assertion = hasMainProgram;
message = "Terminal package `${config.meta.user.terminalPackageAttr}` must define `meta.mainProgram`.";
message = "Terminal package `${lib.showAttrPath config.meta.user.terminalPackagePath}` must define `meta.mainProgram`.";
}
{
assertion = hasMainProgram && builtins.pathExists "${terminalPackage}/share/applications/${terminalDesktopId}";
message = "Terminal package `${config.meta.user.terminalPackageAttr}` must provide `${terminalDesktopId}`.";
message = "Terminal package `${lib.showAttrPath config.meta.user.terminalPackagePath}` must provide `${terminalDesktopId}`.";
}
{
assertion = hasMainProgram && terminalPackage.meta.mainProgram == "kitty";