main
  1{den, ...}: {
  2  den.aspects.hpcesia = {
  3    includes =
  4      [
  5        den.batteries.host-aspects
  6        den.batteries.primary-user
  7
  8        den.aspects.core.shell.fish.bashOverlay
  9      ]
 10      ++ (den.lib.policy.when
 11        ({host, ...}: host.hasAspect den.aspects.roles.develop)
 12        (with den.aspects; [
 13          develop.agents.opencode
 14          develop.editor.helix
 15          develop.editor.helix.lang.nix
 16          develop.jujutsu
 17          develop.wakatime
 18          develop.yazi
 19          develop.zellij
 20          develop.zoxide
 21
 22          {
 23            homeManager.programs.git.settings.url = {
 24              "ssh://git@github.com/HPCesia" = {
 25                insteadOf = "https://github.com/HPCesia";
 26              };
 27              "ssh://git@codeberg.org/HPCesia" = {
 28                insteadOf = "https://codeberg.org/HPCesia";
 29              };
 30              "ssh://git@git.net.trin.one/HPCesia" = {
 31                insteadOf = "https://git.net.trin.one/HPCesia";
 32              };
 33            };
 34          }
 35        ]))
 36      ++ (den.lib.policy.when
 37        ({host, ...}: host.hasAspect den.aspects.roles.desktop)
 38        (with den.aspects; [
 39          desktop.browser.chromium
 40          desktop.browser.floorp
 41          desktop.browser.floorp.mkDefault
 42          desktop.env.shell.noctalia
 43          desktop.env.wm.niri
 44          desktop.env.locale
 45          desktop.flatpak
 46          desktop.gnupg
 47          desktop.input-method.fcitx5
 48          desktop.kdeconnect
 49          desktop.terminal.foot
 50
 51          desktop.app.mpv
 52          desktop.app.obs-studio
 53        ]))
 54      ++ (den.lib.policy.when
 55        ({host, ...}: host.hasAspect den.aspects.roles.game)
 56        (with den.aspects; [
 57          game.heroic
 58          game.hoyo
 59          game.ludusavi
 60          game.minecraft
 61          game.steam
 62        ]));
 63  };
 64
 65  den.users.registry.hpcesia = {
 66    groups = [
 67      "admins"
 68    ];
 69    identity = {
 70      displayName = "HPCesia";
 71      email = "me@hpcesia.com";
 72      avatar = ./avatar.png;
 73      gpgKeys = [
 74        ./gpg.asc
 75      ];
 76      sshKeys = [
 77        {
 78          tag = "hpcesia@kevin";
 79          key = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFMKaGC2I3an4AJDeWzVx5vhm63+kxi6zJNdh7yEp6CK";
 80        }
 81      ];
 82    };
 83    system = {
 84      hashedPasswordAged = ./hashed-password.age;
 85      themes.theme = "catppuccin";
 86      settings = {
 87        desktop = {
 88          terminal.default = "foot";
 89          flatpak = {
 90            packages = [
 91              "com.qq.QQ"
 92              "org.mozilla.thunderbird"
 93            ];
 94            overrides = {
 95              "org.mozilla.thunderbird".Context = {
 96                sockets = [
 97                  "gpg-agent" # Expose GPG agent
 98                  "pcsc" # Expose smart cards (i.e. YubiKey)
 99                ];
100              };
101            };
102          };
103        };
104      };
105    };
106  };
107}