Files
lux/modules/features/noctalia.nix
T

114 lines
2.7 KiB
Nix

{
config,
lib,
...
}:
let
homeModules = config.flake.modules.homeManager;
metaLib = config.meta.lib;
mkPortableSettings =
baseSettings:
lib.recursiveUpdate baseSettings {
bar.widgets.right = lib.concatMap (
widget:
if widget.id == "ControlCenter" then
[
{
id = "Network";
}
{
id = "Battery";
showPowerProfiles = true;
displayMode = "graphic";
}
widget
]
else
[ widget ]
) baseSettings.bar.widgets.right;
};
in
{
flake.modules.homeManager.noctalia =
{
inputs,
config,
lib,
pkgs,
...
}:
let
terminalPackage = metaLib.resolvePackagePath {
inherit pkgs;
path = config.meta.user.terminalPackagePath;
};
hasMainProgram = terminalPackage != null && terminalPackage ? meta.mainProgram;
baseSettings =
if hasMainProgram then
import ./_noctalia-config.nix {
inherit
lib
terminalPackage
;
}
else
{ };
in
{
imports = [ inputs.noctalia.homeModules.default ];
assertions = [
{
assertion = terminalPackage != null;
message = "Unknown terminal package `${lib.showAttrPath config.meta.user.terminalPackagePath}` for user `${config.meta.user.name}`.";
}
{
assertion = hasMainProgram;
message = "Terminal package `${lib.showAttrPath config.meta.user.terminalPackagePath}` must define `meta.mainProgram`.";
}
];
programs.noctalia-shell = {
enable = true;
package = lib.mkForce (
inputs.noctalia.packages.${pkgs.stdenv.hostPlatform.system}.default.override {
calendarSupport = true;
}
);
settings = baseSettings;
};
};
flake.modules.homeManager.noctalia-portable =
{
config,
lib,
pkgs,
...
}:
let
terminalPackage = metaLib.resolvePackagePath {
inherit pkgs;
path = config.meta.user.terminalPackagePath;
};
hasMainProgram = terminalPackage != null && terminalPackage ? meta.mainProgram;
baseSettings =
if hasMainProgram then
import ./_noctalia-config.nix {
inherit
lib
terminalPackage
;
}
else
{ };
in
{
imports = [ homeModules.noctalia ];
programs.noctalia-shell.settings = lib.mkForce (
if hasMainProgram then mkPortableSettings baseSettings else { }
);
};
}