{ config, lib, ... }: let repo = config.repo; repoHelpers = repo.helpers; mkNoctaliaSettings = { homeDirectory, lib, terminalPackage, }: import ./_noctalia-config.nix { inherit homeDirectory lib terminalPackage ; }; mkBaseSettings = { homeDirectory, lib, pkgs, }: let terminalPackage = repoHelpers.resolvePackagePath { inherit pkgs; path = repo.desktop.terminal.packagePath; }; in if terminalPackage == null then { } else mkNoctaliaSettings { inherit homeDirectory lib terminalPackage ; }; 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 = { config, inputs, lib, osConfig, pkgs, ... }: let baseSettings = mkBaseSettings { inherit lib pkgs; homeDirectory = config.home.homeDirectory; }; settings = if baseSettings == { } || !osConfig.meta.machine.portable then baseSettings else mkPortableSettings baseSettings; in { imports = [ inputs.noctalia.homeModules.default ]; programs.noctalia-shell = { enable = true; package = lib.mkForce ( inputs.noctalia.packages.${pkgs.stdenv.hostPlatform.system}.default.override { calendarSupport = true; } ); inherit settings; }; }; }