Files
nixos/users/marc/home.nix
T
Hermes Agent 4c0cdc14d9 feat(hermes): partager l'état avec les sessions hermes lancées par marc
Les sessions hermes ouvertes dans un pane herdr tournent sous marc, pas sous le
compte de service : HERMES_HOME=/var/lib/hermes/.hermes (users/marc/home.nix) pour
qu'elles lisent et écrivent le même état (sessions, mémoire, lazy-python) que le
service hermes-agent.

Accès : groupe secondaire hermes pour marc (users.nix) et ACL tmpfiles sur
/var/lib/hermes (traversée) puis .hermes et .hermes/plugins (rwx + défauts ACL),
pour que les fichiers créés par marc restent lisibles côté service. C'est ce qui
rend le plugin herdr-agent-state utilisable : il parle au socket herdr de marc.
2026-09-27 13:00:55 -04:00

189 lines
5.4 KiB
Nix

{
inputs,
pkgs,
lib,
config,
...
}: {
imports = [
./packages.nix
inputs.catppuccin.homeModules.catppuccin
inputs.nixvim.homeModules.default
inputs.sops.homeManagerModules.sops
inputs.sopswarden.homeManagerModules.default
inputs.niri.homeModules.niri
inputs.nix-flatpak.homeManagerModules.nix-flatpak
inputs.spicetify.homeManagerModules.spicetify
# inputs.backtest.packages.${pkgs.system}.default
# inputs.option-pricer.packages.${pkgs.system}.default
../../modules/home/git
../../modules/home/zsh
../../modules/home/ssh
../../modules/home/eternal-terminal
../../modules/home/tealdeer
../../modules/home/neovim
../../modules/home/gh
../../modules/home/starship
../../modules/home/topgrade
../../modules/home/rbw
../../modules/home/yt-dlp
../../modules/home/claude-commit
../../modules/home/niri
../../modules/home/wayvnc
../../modules/home/alacritty
../../modules/home/kitty
../../modules/home/wallpapers
../../modules/home/syncthing
../../modules/home/gtk
../../modules/home/xdg
../../modules/home/satty
../../modules/home/pgcli
../../modules/home/gpg
../../modules/home/wofi
../../modules/home/dconf
../../modules/home/ironbar
../../modules/home/mako
../../modules/home/gammastep
../../modules/home/udiskie
../../modules/home/kodi
../../modules/home/mpv
../../modules/home/zen-browser
../../modules/home/tor-browser
# ../../modules/home/nxbt
../../modules/home/batsignal
../../modules/home/playsched
../../modules/home/zathura
../../modules/home/spicetify
../../modules/home/watt-monitor
../../modules/home/deepfilter
../../modules/home/tewi
../../modules/home/ytui-music
../../modules/home/ytm-player
../../modules/home/yututui
../../modules/home/yt-collate
../../modules/home/youtube-music-cli
../../modules/home/geminicommit
../../modules/home/herdr
../../modules/home/backtest
../../modules/home/portfolio-optimizer
../../modules/home/option-pricer
];
nixpkgs.config.electron.commandLineArgs =
"--ozone-platform-hint=auto "
+ "--ozone-platform=wayland "
+ "--disable-gpu-sandbox "
+ "--no-sandbox "
+ "--enable-features=WaylandWindowDecorations";
sops.age.keyFile = "/home/marc/.config/sops/age/keys.txt";
sops.defaultSopsFile = lib.mkForce ../../secrets/tower.yml;
home = {
username = "marc";
homeDirectory = "/home/marc";
};
home.sessionVariables = {
EDITOR = "nvim";
VISUAL = "nvim";
# Sessions hermes lancees par marc (panes herdr) : partager l'etat du
# service au lieu de /home/marc/.hermes. C'est ce qui rend l'integration
# herdr utilisable : hermes tourne alors sous marc, meme utilisateur que le
# serveur herdr, donc HERDR_ENV/HERDR_PANE_ID survivent et le socket
# ~/.config/herdr/herdr.sock est accessible.
# Acces au state dir : groupe hermes (users.nix) + ACL declarees dans
# profiles/tower/configuration.nix.
HERMES_HOME = "/var/lib/hermes/.hermes";
GSETTINGS_SCHEMA_DIR = "${pkgs.gsettings-desktop-schemas}/share/gsettings-schemas/${pkgs.gsettings-desktop-schemas.name}";
DEFAULT_BROWSER = "${inputs.zen-browser.packages.${pkgs.stdenv.hostPlatform.system}.default}/bin/zen";
BROWSER = "${inputs.zen-browser.packages.${pkgs.stdenv.hostPlatform.system}.default}/bin/zen";
ELECTRON_OZONE_PLATFORM_HINT = "wayland";
NIXOS_OZONE_WL = "1";
GTK_USE_PORTAL = "1";
GDK_BACKEND = "wayland";
XDG_SESSION_TYPE = "wayland";
QT_QPA_PLATFORM = "wayland";
};
xdg.enable = true;
xdg.mimeApps = {
enable = true;
defaultApplications = {
"text/html" = ["zen.desktop"];
"x-scheme-handler/http" = ["zen.desktop"];
"x-scheme-handler/https" = ["zen.desktop"];
"x-scheme-handler/about" = ["zen.desktop"];
"x-scheme-handler/unknown" = ["zen.desktop"];
"video/mp4" = ["mpv.desktop"];
};
};
xdg.systemDirs.data = [
"/var/lib/flatpak/exports/share"
"/home/marc/.local/share/flatpak/exports/share"
"/run/current-system/sw/share"
"/nix/var/nix/profiles/default/share"
"/etc/profiles/per-user/marc/share"
"/home/marc/.local/state/nix/profile/share"
"/nix/profile/share"
"/home/marc/.nix-profile/share"
];
services.darkman = {
enable = true;
settings = {
lat = 48.8;
lng = 2.3;
};
};
services.gnome-keyring = {
enable = true;
components = ["secrets" "ssh"];
};
# Connexions Eternal Terminal : `et <hôte>` = zellij + enregistrement asciinema
# (fonctions ettower / ettowerlocal / ets générées, cf. modules/home/eternal-terminal)
my.et = {
enable = true;
hosts = {
tower = { };
towerlocal = { };
};
};
programs.direnv = {
enable = true;
enableZshIntegration = true;
nix-direnv.enable = true;
};
home.file."Desktop/return-to-gaming-mode.desktop" = {
executable = true;
text = ''
[Desktop Entry]
Name=Return to Gaming Mode
Exec=steamos-session-select gamescope
Icon=steam
Terminal=false
Type=Application
'';
};
# home.file.${config.gtk.gtk2.configLocation}.force = true;
xdg.configFile = {
"gtk-3.0/settings.ini".force = true;
"gtk-4.0/settings.ini".force = true;
"gtk-4.0/gtk.css".force = true;
};
programs.home-manager.enable = true;
home.stateVersion = "25.11";
}