{
  pkgs,
  lib,
  config,
  hostName,
  ...
}:
{
  imports = [
    ../home-manager/profiles/essential.nix
    ../home-manager/profiles/vim.nix
    ../home-manager/options.nix
    julm/mutt.nix
    (import (julm/hosts + "/${hostName}.nix"))
  ];
  programs.bash.shellAliases = {
    firefox-calyx = "sudo systemd-run -P -p JoinsNamespaceOf=netns-calyx.service -p PrivateNetwork=true -p BindReadOnlyPaths=/etc/netns/calyx/resolv.conf:/etc/resolv.conf -E DISPLAY=$DISPLAY -p User=julm -E DBUS_SESSION_BUS_ADDRESS=$DBUS_SESSION_BUS_ADDRESS -E LANG=$LANG -E LOCALE_ARCHIVE=$LOCALE_ARCHIVE -E PATH=$PATH -- firefox -P calyx";
  };
  programs.browserpass.enable = config.programs.firefox.enable;
  programs.firefox.profiles =
    let
      defaultProfile = {
        settings = {
          "browser.bookmarks.showMobileBookmarks" = true;
          "browser.compactmode.show" = true;
          "browser.search.isUS" = false;
          "browser.search.region" = "FR";
          "distribution.searchplugins.defaultLocale" = "fr-FR";
          "dom.security.https_first" = true;
          "dom.security.https_only_mode" = true;
          "general.useragent.locale" = "fr-FR";
          "privacy.globalprivacycontrol.enabled" = true;
          "privacy.globalprivacycontrol.functionality.enabled" = true;
          "security.identityblock.show_extended_validation" = true;
          "toolkit.legacyUserProfileCustomizations.stylesheets" = true;
          #"privacy.firstparty.isolate" = true;
        };
        userChrome = lib.readFile ../home-manager/profiles/firefox/userChrome.css;
      };
    in
    {
      "rD9bggx0.2025" = lib.mkMerge [
        defaultProfile
        {
          id = 0;
          name = "2025";
          settings = {
            "browser.startup.homepage" = "https://democracynow.org";
          };
        }
      ];
      "8y3d28fa.tor" = lib.mkMerge [
        defaultProfile
        {
          id = 1;
          name = "tor";
          settings = {
            "browser.startup.homepage" = "https://check.torproject.org";
            "privacy.firstparty.isolate" = true;
          };
        }
      ];
      "zqa1ck7d.calyx" = lib.mkMerge [
        defaultProfile
        {
          id = 2;
          name = "calyx";
          settings = {
            "browser.startup.homepage" = "https://icanhazip.com";
            "privacy.firstparty.isolate" = true;
          };
        }
      ];
      "0yplujgj.2022" = lib.mkMerge [
        defaultProfile
        {
          id = 4;
          name = "2022";
          settings = {
            "browser.startup.homepage" = "https://democracynow.org";
          };
        }
      ];
    };
  home.file."${config.programs.gpg.homedir}/gpg.conf".text = ''
    # julm@autogeree.net
    trusted-key 0xD15AF7F467E8299B
    # julm@sourcephile.fr (2021-08-12)
    trusted-key 0xA58CD81C3863926F
  '';
  services.gpg-agent.sshKeys = [
    # julm@autogeree.net
    "D275EBA09C7E1FFBFB47F6EEF164E6D56FB24AB2"
    # julm@sourcephile.fr (2021-08-12)
    "3D94D14514F1EA2B6D62F1275D888897B082415D"
    # julm@oignon
    # Ed25519 key added on: 2021-10-31 06:48:49
    # Fingerprints:  MD5:fe:fe:81:79:d8:7f:e4:ff:64:ac:f3:1c:bd:65:24:3a
    #                SHA256:bCfwfC8MQTjm6c1HcMLtzvGpnWRdqLwe/bvbh2jsNaA
    "F6CCA60CF05FADAE911CFBEC0BCDED22F40A19FD"
    # Radicle key added on 2024-05-21 23:24:10
    # Fingerprints:  SHA256:yhSIWvGFqN0oM/oTE1hMhEdhlSSEeCMcp/g/3TdNKYY
    "1D6AF2BF857201D98413475AE022F8A4CFC34BF0"
    # julm@pumpkin
    # Ed25519 key added on: 2025-01-08 21:16:22
    # Fingerprints:  MD5:f5:d0:fe:37:c3:54:47:cf:17:ec:9b:f5:15:3e:b3:15
    #                SHA256:EDzxI3g1w+iPf1WUovsbuZckU/tseEGVdXmkGYcvhas
    "C399CC38D6AACFF9FD1BF608AFC4D117A46331D0"
  ];
  programs.irssi.extraConfig = lib.readFile julm/irssi/irssi.conf;
  xdg.configFile."doom/config.el".text = lib.readFile julm/emacs/config.el;
  home.file.".irssi/passwd" = lib.mkIf config.programs.irssi.enable {
    text = ''
      FreeNode   : ${pkgs.pass}/bin/pass freenode.net/irc/julm
      GeekNode   : ${pkgs.pass}/bin/pass geeknode.org/irc/julm
      IndyMedia  : ${pkgs.pass}/bin/pass indymedia.org/irc/julm
      Libera     : ${pkgs.pass}/bin/pass libera.chat/irc/julm
      OFTC       : ${pkgs.pass}/bin/pass oftc.net/irc/julm
      ToileLibre : ${pkgs.pass}/bin/pass toile-libre.org/irc/julm
    '';
  };
  programs.ssh.matchBlocks =
    {
      "aubergine.sp" = {
        #compression = true; # Helps to get a better framerate with forwardX11
        forwardAgent = true;
        forwardX11 = true;
        forwardX11Trusted = true;
        serverAliveInterval = 15;
        extraOptions = {
          Ciphers = "aes128-gcm@openssh.com";
        };
      };
      "blackberry.sp" = {
        user = "julm";
      };
      "courge.sp" = {
        user = "mo";
      };
      "patate.sp" = {
        user = "sevy";
      };
    }
    // lib.genAttrs [ "lan.losurdo.sourcephile.fr" "losurdo.sp" ] (_: {
      compression = true; # Helps to get a better framerate with forwardX11
      forwardX11 = true;
      forwardX11Trusted = true;
      serverAliveInterval = 15;
    });
  programs.git = {
    userName = "Julien Moutinho";
    userEmail = "julm@sourcephile.fr";
    signing.key = "0x4FE467034C11017B429BAC53A58CD81C3863926F";
    signing.signByDefault = false;
    extraConfig = {
      sendemail.smtpEncryption = "ssl"; # Yes, "ssl", not "tls" which does not work because it expects STARTTLS.
      sendemail.smtpServer = "mail.sourcephile.fr";
      sendemail.smtpServerPort = "465";
      sendemail.smtpUser = "julm@sourcephile.fr";
    };
  };
}