Commit 3bf52cd

HPCesia <me@hpcesia.com>
2026-05-27 13:10:56
refactor: den aspect - desktop
modules/desktop/apps/browser/_firefox.nix
@@ -1,5 +1,5 @@
 {lib, ...}: {
-  flake.modules.homeManager.desktop = {
+  den.aspects.desktop.provides.app.homeManager = {
     pkgs,
     osConfig,
     ...
modules/desktop/apps/browser/chromium.nix
@@ -1,5 +1,5 @@
 {lib, ...}: {
-  flake.modules.homeManager.desktop = {
+  den.aspects.desktop.provides.app.homeManager = {
     pkgs,
     osConfig,
     ...
modules/desktop/apps/browser/floorp.nix
@@ -1,5 +1,5 @@
 {lib, ...}: {
-  flake.modules.homeManager.desktop = {
+  den.aspects.desktop.provides.app.homeManager = {
     pkgs,
     osConfig,
     ...
modules/desktop/apps/browser/xdg.nix
@@ -1,5 +1,5 @@
 {
-  flake.modules.homeManager.desktop = _: {
+  den.aspects.desktop.provides.app.homeManager = _: {
     xdg.mimeApps.defaultApplications = let
       browser = ["floorp.desktop"];
     in {
modules/desktop/apps/deadbeef/config.nix
@@ -1,11 +1,11 @@
 {lib, ...}: {
-  flake.modules.nixos.desktop = {pkgs, ...}: {
+  den.aspects.desktop.provides.app.nixos = {pkgs, ...}: {
     environment.plasma6.excludePackages = with pkgs.kdePackages; [
       elisa # Using deadbeef instead.
     ];
   };
 
-  flake.modules.homeManager.desktop = {pkgs, ...}: {
+  den.aspects.desktop.provides.app.homeManager = {pkgs, ...}: {
     programs.deadbeef =
       lib.mkIf
       pkgs.stdenv.hostPlatform.isLinux
modules/desktop/apps/deadbeef/option.nix
@@ -1,5 +1,5 @@
 {lib, ...}: {
-  flake.modules.homeManager.desktop = {
+  den.aspects.desktop.provides.app.homeManager = {
     config,
     pkgs,
     ...
modules/desktop/apps/rclone/default.nix
@@ -1,12 +1,12 @@
 {
-  flake.modules.nixos.desktop = _: {
+  den.aspects.desktop.provides.app.nixos = _: {
     vaultix.secrets.rclone-onedrive-token = {
       file = ./onedrive-token.age;
       owner = "hpcesia";
     };
   };
 
-  flake.modules.homeManager.desktop = {
+  den.aspects.desktop.provides.app.homeManager = {
     osConfig,
     config,
     ...
modules/desktop/apps/terminal/wezterm/default.nix
@@ -1,5 +1,5 @@
 {
-  flake.modules.homeManager.terminal-wezterm = _: {
+  den.aspects.desktop.provides.terminal.provides.wezterm.homeManager = _: {
     programs.wezterm = {
       enable = true;
     };
modules/desktop/apps/terminal/default.nix
@@ -1,5 +1,5 @@
-{config, ...}: {
-  flake.modules.nixos.desktop = {pkgs, ...}: {
+{
+  den.aspects.desktop.provides.terminal.nixos = {pkgs, ...}: {
     # add user's shell into /etc/shells
     environment.shells = with pkgs; [
       bashInteractive
@@ -14,18 +14,4 @@
     # fix for `sudo xxx` in kitty/wezterm/foot and other modern terminal emulators
     security.sudo.keepTerminfo = true;
   };
-  flake.modules.homeManager.desktop = _: {
-    imports = with config.flake.modules.homeManager; [
-      terminal-foot
-      terminal-ghostty
-      # terminal-wezterm
-    ];
-
-    xdg.terminal-exec = {
-      enable = true;
-      settings = {
-        default = ["com.mitchellh.ghostty.desktop"];
-      };
-    };
-  };
 }
modules/desktop/apps/terminal/foot.nix
@@ -1,5 +1,5 @@
 {
-  flake.modules.homeManager.terminal-foot = _: {
+  den.aspects.desktop.provides.terminal.provides.foot.homeManager = {
     programs.foot = {
       enable = true;
       settings = {
modules/desktop/apps/terminal/ghostty.nix
@@ -1,5 +1,5 @@
 {lib, ...}: {
-  flake.modules.homeManager.terminal-ghostty = {osConfig, ...}: {
+  den.aspects.desktop.provides.terminal.provides.ghostty.homeManager = {osConfig, ...}: {
     programs.ghostty = {
       enable = true;
       enableBashIntegration = true;
@@ -23,4 +23,13 @@
       };
     };
   };
+
+  den.aspects.desktop.provides.terminal.provides.ghostty.provides.xdg-term-exec.homeManager = {
+    xdg.terminal-exec = {
+      enable = true;
+      settings = {
+        default = ["com.mitchellh.ghostty.desktop"];
+      };
+    };
+  };
 }
modules/desktop/apps/thunderbird/bird-tray.nix
@@ -1,5 +1,5 @@
 {lib, ...}: {
-  flake.modules.homeManager.desktop = {
+  den.aspects.desktop.provides.app.homeManager = {
     pkgs,
     config,
     osConfig,
modules/desktop/apps/thunderbird/default.nix
@@ -1,11 +1,11 @@
 {lib, ...}: {
-  flake.modules.nixos.desktop = {pkgs, ...}: {
+  den.aspects.desktop.provides.app.nixos = {pkgs, ...}: {
     environment.plasma6.excludePackages = with pkgs.kdePackages; [
       kdepim-runtime # No needed if using Thunderbird.
     ];
   };
 
-  flake.modules.homeManager.desktop = {pkgs, ...}: {
+  den.aspects.desktop.provides.app.homeManager = {pkgs, ...}: {
     programs.thunderbird = {
       enable = true;
       package = lib.mkDefault pkgs.thunderbird-bin;
modules/desktop/apps/btop.nix
@@ -1,5 +1,5 @@
 {
-  flake.modules.homeManager.desktop = _: {
+  den.aspects.desktop.provides.app.homeManager = _: {
     # Enable btop in home-manager to auto apply stylix's theme
     # Btop is also a system package in modules/core/tools/packages.nix
     programs.btop = {
modules/desktop/apps/cava.nix
@@ -1,5 +1,5 @@
 {
-  flake.modules.homeManager.desktop = _: {
+  den.aspects.desktop.provides.app.homeManager = _: {
     programs.cava = {
       enable = true;
       settings = {
modules/desktop/apps/flatpak.nix
@@ -1,11 +1,11 @@
 {inputs, ...}: {
   flake-file.inputs.flatpaks.url = "github:in-a-dil-emma/declarative-flatpak/latest";
 
-  flake.modules.nixos.desktop = _: {
+  den.aspects.desktop.provides.app.nixos = _: {
     services.flatpak.enable = true;
   };
 
-  flake.modules.homeManager.desktop = _: {
+  den.aspects.desktop.provides.app.homeManager = _: {
     imports = [inputs.flatpaks.homeModules.default];
 
     services.flatpak = {
modules/desktop/apps/kdeconnect.nix
@@ -1,5 +1,5 @@
 {
-  flake.modules.nixos.desktop = _: {
+  den.aspects.desktop.provides.app.nixos = _: {
     networking.firewall = {
       allowedTCPPortRanges = [
         {
@@ -16,7 +16,7 @@
     };
   };
 
-  flake.modules.homeManager.desktop = {osConfig, ...}: let
+  den.aspects.desktop.provides.app.homeManager = {osConfig, ...}: let
     isPlasma = osConfig.services.desktopManager.plasma6.enable;
     isNoctalia = osConfig.services.noctalia-shell.enable or false;
   in {
modules/desktop/apps/loupe.nix
@@ -1,11 +1,11 @@
 {
-  flake.modules.nixos.desktop = {pkgs, ...}: {
+  den.aspects.desktop.provides.app.nixos = {pkgs, ...}: {
     environment.plasma6.excludePackages = with pkgs.kdePackages; [
       gwenview # KDE's default image viewer
     ];
   };
 
-  flake.modules.homeManager.desktop = {pkgs, ...}: {
+  den.aspects.desktop.provides.app.homeManager = {pkgs, ...}: {
     home.packages = [pkgs.loupe];
 
     xdg.mimeApps.defaultApplications = {
modules/desktop/apps/mpd.nix
@@ -1,5 +1,5 @@
 {lib, ...}: {
-  flake.modules.homeManager.desktop = {config, ...}: {
+  den.aspects.desktop.provides.app.homeManager = {config, ...}: {
     services.mpd = {
       enable = true;
       network.startWhenNeeded = true;
modules/desktop/apps/mpv.nix
@@ -1,5 +1,5 @@
 {
-  flake.modules.homeManager.desktop = {pkgs, ...}: {
+  den.aspects.desktop.provides.app.homeManager = {pkgs, ...}: {
     programs.mpv = {
       enable = true;
       defaultProfiles = ["gpu-hq"];
modules/desktop/apps/onlyoffice.nix
@@ -1,5 +1,5 @@
 {
-  flake.modules.homeManager.desktop = _: {
+  den.aspects.desktop.provides.app.homeManager = _: {
     programs.onlyoffice = {
       enable = true;
     };
modules/desktop/apps/packages.nix
@@ -1,5 +1,5 @@
 {lib, ...}: {
-  flake.modules.homeManager.desktop = {
+  den.aspects.desktop.provides.app.homeManager = {
     pkgs,
     osConfig,
     ...
modules/desktop/apps/rmpc.nix
@@ -1,5 +1,5 @@
 {
-  flake.modules.homeManager.desktop = {config, ...}: {
+  den.aspects.desktop.provides.app.homeManager = {config, ...}: {
     # Require MPD
     programs.rmpc = {
       enable = true;
modules/desktop/apps/syncthing.nix
@@ -1,5 +1,5 @@
 {
-  flake.modules.homeManager.desktop = _: {
+  den.aspects.desktop.provides.app.homeManager = _: {
     services.syncthing = {
       enable = true;
       guiAddress = "127.0.0.1:4074";
modules/desktop/apps/telegram.nix
@@ -1,5 +1,5 @@
 {
-  flake.modules.homeManager.desktop = {pkgs, ...}: {
+  den.aspects.desktop.provides.app.homeManager = {pkgs, ...}: {
     home.packages = [pkgs.telegram-desktop];
 
     xdg = {
modules/desktop/input-method/fcitx5/default.nix
@@ -1,5 +1,5 @@
 {lib, ...}: {
-  flake.modules.homeManager.desktop = {pkgs, ...}: let
+  den.aspects.desktop.provides.input-method.provides.fcitx5.homeManager = {pkgs, ...}: let
     fcitx5-rime = pkgs.fcitx5-rime.override {
       rimeDataPkgs = [pkgs.nur.repos.xddxdd.rime-ice];
     };
modules/desktop/input-method/fcitx5/plasma.nix
@@ -1,5 +1,5 @@
 {lib, ...}: {
-  flake.modules.homeManager.desktop = {osConfig, ...}: let
+  den.aspects.desktop.provides.input-method.provides.fcitx5.homeManager = {osConfig, ...}: let
     hasPlasma = osConfig.services.desktopManager.plasma6.enable;
   in
     lib.optionalAttrs hasPlasma {
modules/desktop/input-method/default.nix
@@ -0,0 +1,7 @@
+{den, ...}: {
+  den.aspects.desktop.includes = [den.aspects.desktop._.input-method];
+
+  den.aspects.desktop.provides.input-method.includes = [
+    den.aspects.desktop._.input-method._.fcitx5
+  ];
+}
modules/desktop/cursor.nix
@@ -1,5 +1,7 @@
-{
-  flake.modules.nixos.desktop = {pkgs, ...}: {
+{den, ...}: {
+  den.aspects.desktop.includes = [den.aspects.desktop._.cursor];
+
+  den.aspects.desktop.provides.cursor.nixos = {pkgs, ...}: {
     stylix.cursor = {
       name = "Bibata-Modern-Classic";
       package = pkgs.bibata-cursors;
modules/desktop/icon-theme.nix
@@ -1,5 +1,7 @@
-{
-  flake.modules.nixos.desktop = {pkgs, ...}: {
+{den, ...}: {
+  den.aspects.desktop.includes = [den.aspects.desktop._.icon-theme];
+
+  den.aspects.desktop.provides.icon-theme.nixos = {pkgs, ...}: {
     stylix.icons = let
       whitesur-icon-theme = pkgs.whitesur-icon-theme.override {
         boldPanelIcons = true;
@@ -13,7 +15,7 @@
     };
   };
 
-  flake.modules.homeManager.desktop = {osConfig, ...}: {
+  den.aspects.desktop.provides.icon-theme.homeManager = {osConfig, ...}: {
     stylix.icons = osConfig.stylix.icons;
   };
 }
modules/desktop/pipewire.nix
@@ -1,5 +1,7 @@
-{
-  flake.modules.nixos.desktop = {pkgs, ...}: {
+{den, ...}: {
+  den.aspects.desktop.includes = [den.aspects.desktop._.pipewire];
+
+  den.aspects.desktop.provides.pipewire.nixos = {pkgs, ...}: {
     environment.systemPackages = with pkgs; [
       pulseaudio # provides `pactl`, which is required by some apps(e.g. sonic-pi)
     ];
modules/desktop/power-management.nix
@@ -1,5 +1,7 @@
-{
-  flake.modules.nixos.desktop = {pkgs, ...}: {
+{den, ...}: {
+  den.aspects.desktop.includes = [den.aspects.desktop._.power-management];
+
+  den.aspects.desktop.provides.power-management.nixos = {pkgs, ...}: {
     services = {
       tlp = {
         enable = true;
modules/desktop/thumbnail.nix
@@ -1,5 +1,7 @@
-{
-  flake.modules.nixos.desktop = {pkgs, ...}: {
+{den, ...}: {
+  den.aspects.desktop.includes = [den.aspects.desktop._.thumbnail];
+
+  den.aspects.desktop.provides.thumbnail.nixos = {pkgs, ...}: {
     services.tumbler.enable = true; # Thumbnail support
     environment.systemPackages = with pkgs; [
       # Image
modules/desktop/utils.nix
@@ -1,12 +1,12 @@
 {lib, ...}: {
-  flake.modules.nixos.desktop = {config, ...}: {
+  den.aspects.desktop.nixos = {config, ...}: {
     services.gvfs.enable = true; # Mount, trash, and other functionalities
     services.xserver.xkb.layout = "us";
     services.blueman.enable = config.hardware.bluetooth.enable;
     i18n.extraLocales = "all";
   };
 
-  flake.modules.homeManager.desktop = {config, ...}: {
+  den.aspects.desktop.homeManager = {config, ...}: {
     # Fix some QT applications not following the color scheme, such as KDE Connect.
     # See https://github.com/nix-community/stylix/issues/1958#issuecomment-3607824025
     xdg.configFile.kdeglobals.source = let
modules/desktop/xdg.nix
@@ -1,5 +1,5 @@
 {
-  flake.modules.homeManager.desktop = {
+  den.aspects.desktop.provides.xdg.homeManager = {
     config,
     pkgs,
     ...
modules/hosts/kevin/default.nix
@@ -31,9 +31,11 @@ in {
   den.aspects.kevin.includes = [
     <desktop/fonts>
     <desktop/kmscon>
+    <desktop/terminal>
   ];
 
   den.aspects.kevin.provides.to-users.includes = [
+    <desktop>
     <desktop/de/custom>
     <desktop/de/custom/wm/niri>
     <desktop/de/custom/shell/noctalia>
@@ -47,20 +49,4 @@ in {
     isDesktop = true;
     isLaptop = true;
   };
-
-  den.aspects.kevin.nixos = {
-    imports =
-      (with config.flake.modules.nixos; [
-        desktop
-      ])
-      ++ [
-        {
-          home-manager.users.hpcesia = {
-            imports = with config.flake.modules.homeManager; [
-              desktop
-            ];
-          };
-        }
-      ];
-  };
 }
modules/users/hpcesia/default.nix
@@ -21,6 +21,10 @@ in {
           <dev>
         ])
         ++ (lib.optionals isGraphic [
+          <desktop/app>
+          <desktop/terminal/ghostty>
+          <desktop/terminal/ghostty/xdg-term-exec>
+          <desktop/xdg>
           <game>
         ])
         ++ (lib.optionals (isDevelop && isGraphic) [