{ description = "NixOS configuration of Marc"; inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-26.05"; unstable.url = "github:NixOS/nixpkgs/nixos-unstable"; home-manager = { url = "github:nix-community/home-manager/release-26.05"; inputs.nixpkgs.follows = "nixpkgs"; }; nur = { url = "github:nix-community/NUR"; inputs.nixpkgs.follows = "nixpkgs"; }; nixpkgs-darwin.url = "github:NixOS/nixpkgs/nixpkgs-26.05-darwin"; nix-darwin.url = "github:nix-darwin/nix-darwin/nix-darwin-26.05"; nix-darwin.inputs.nixpkgs.follows = "nixpkgs-darwin"; clawdbot.url = "github:clawdbot/nix-clawdbot"; clawdbot.inputs.nixpkgs.follows = "nixpkgs"; # hyprland.url = "github:hyprwm/Hyprland?ref=v0.50.0"; # hy3.url = "github:outfoxxed/hy3?ref=hl0.50.0"; # hy3.url = "github:outfoxxed/hy3"; # hy3.inputs.hyprland.follows = "hyprland"; # nix-search-tv.url = "github:3timeslazy/nix-search-tv"; catppuccin.url = "github:catppuccin/nix"; # newt.url = "github:fosrl/newt"; claude-code.url = "github:sadjow/claude-code-nix"; nix-flatpak.url = "github:gmodena/nix-flatpak/?ref=latest"; niri.url = "github:sodiboo/niri-flake"; niri.inputs.nixpkgs.follows = "nixpkgs"; disko.url = "github:nix-community/disko"; disko.inputs.nixpkgs.follows = "nixpkgs"; sops.url = "github:Mic92/sops-nix"; sops.inputs.nixpkgs.follows = "nixpkgs"; nixvim.url = "github:nix-community/nixvim/nixos-26.05"; # nixvim.inputs.nixpkgs.follows = "nixpkgs"; zen-browser.url = "github:youwen5/zen-browser-flake"; zen-browser.inputs.nixpkgs.follows = "nixpkgs"; spicetify.url = "github:Gerg-L/spicetify-nix"; spicetify.inputs.nixpkgs.follows = "nixpkgs"; # rycee-nurpkgs = { # url = "gitlab:rycee/nur-expressions?dir=pkgs/firefox-addons"; # inputs.nixpkgs.follows = "nixpkgs"; # }; # hyprtasking = { # url = "github:raybbian/hyprtasking"; # inputs.hyprland.follows = "hyprland"; # }; catppuccin-thunderbird = { url = "github:catppuccin/thunderbird"; flake = false; # The repo isn't a flake; use as raw source }; # Pack de skins Hermes (26 palettes) : source brute, cf. modules/home-mac/hermes-skins. hermes-menagerie = { url = "github:ZakiChair/hermes-catppuccin"; flake = false; # The repo isn't a flake; use as raw source }; # On crée une entrée SPÉCIALE pour le téléphone # nixpkgs-droid.url = "github:NixOS/nixpkgs/nixos-24.05"; nix-on-droid = { url = "github:nix-community/nix-on-droid/master"; # url = "github:nix-community/nix-on-droid/release-24.05"; # C'EST LA LIGNE CRUCIALE : # On lui dit de suivre la version Droid, pas la version Laptop. # inputs.nixpkgs.follows = "nixpkgs-droid"; # On aligne aussi le home-manager interne de nix-on-droid # inputs.home-manager.follows = "home-manager-droid"; }; # On définit aussi un home-manager compatible 24.05 pour le tel # home-manager-droid = { # url = "github:nix-community/home-manager/release-24.05"; # inputs.nixpkgs.follows = "nixpkgs-droid"; # }; # nixvim-droid.url = "github:nix-community/nixvim/nixos-24.05"; # nixvim-droid.inputs.nixpkgs.follows = "nixpkgs-droid"; # hyprland-plugins = { # url = "github:hyprwm/hyprland-plugins"; # inputs.hyprland.follows = "hyprland"; # }; sopswarden = { url = "github:pfassina/sopswarden"; inputs.nixpkgs.follows = "nixpkgs"; }; agenix.url = "github:ryantm/agenix"; microvm.url = "github:astro/microvm.nix"; # nwg-dock-hyprland-pin-nixpkgs.url = "nixpkgs/2098d845d76f8a21ae4fe12ed7c7df49098d3f15"; # nixgl.url = "github:guibou/nixGL"; # nixgl.inputs.nixpkgs.follows = "nixpkgs"; backtest.url = "github:marcpartensky/backtest-cpp-py"; backtest.inputs.nixpkgs.follows = "nixpkgs"; portfolio-optimizer.url = "github:marcpartensky/portfolio-optimizer"; portfolio-optimizer.inputs.nixpkgs.follows = "nixpkgs"; option-pricer.url = "github:marcpartensky/option-pricer"; option-pricer.inputs.nixpkgs.follows = "nixpkgs"; # addon Anki MCP (ankimcp.ai) : pas de follows, ses deps python (mcp >= 1.27) # doivent venir du même nixpkgs que l'Anki qui le charge anki-mcp.url = "github:ankimcp/anki-mcp-server-addon"; uv2nix.url = "github:pyproject-nix/uv2nix"; uv2nix.inputs.nixpkgs.follows = "nixpkgs"; pyproject-nix.url = "github:pyproject-nix/pyproject.nix"; pyproject-nix.inputs.nixpkgs.follows = "nixpkgs"; discord-bot.url = "github:MarcPartensky/discord-bot"; hermes-agent.url = "github:NousResearch/hermes-agent"; # hermes-agent.inputs.nixpkgs.follows = "github:NousResearch/hermes-agent"; # UI web de chat (parité CLI) pour hermes-agent. Projet communautaire # (MIT), il publie son propre flake + module NixOS. follows nixpkgs pour # ne pas évaluer un second nixpkgs : le paquet ne fait que python3 + # pyyaml + cryptography, la 26.05 suffit. hermes-webui = { url = "github:nesquena/hermes-webui"; inputs.nixpkgs.follows = "nixpkgs"; }; # Clients YouTube Music TUI (voir modules/home/{ytm-player,yututui,yt-collate,youtube-music-cli}) ytm-player = { url = "github:peternaame-boop/ytm-player"; # v2.1.0 exige dbus-fast >= 5.0.0, absent de 26.05 (4.0.4) : # on suit unstable, la nixpkgs que le flake upstream teste. inputs.nixpkgs.follows = "unstable"; }; yututui = { url = "github:Ochichan/Yututui"; inputs.nixpkgs.follows = "nixpkgs"; }; firefox-devtools-mcp = { # Officiel Mozilla, MCP browser automation via WebDriver BiDi. Pin sur le # commit de la release v0.10.4 (2026-09-22) ; flake=false, source brute. url = "github:mozilla/firefox-devtools-mcp/bdb377af9ce3a3596e8c196786014ecee50fe178"; flake = false; }; stalwart-mcp = { # Rust MCP server for Stalwart Mail Server (webpatser/stalwart-mcp). # JMAP access: read, search, real-time notifications via EventSource. # Pin sur commit main (pas de release taggée). url = "github:webpatser/stalwart-mcp/be2c16d5921f45395996a130a5a643c542ef2105"; flake = false; }; ankimcp = { url = "github:ankimcp/anki-mcp-server-addon"; inputs.nixpkgs.follows = "nixpkgs"; }; jovian.url = "github:Jovian-Experiments/Jovian-NixOS"; # jovian.inputs.nixpkgs.follows = "nixpkgs"; steam-config-nix = { url = "github:different-name/steam-config-nix"; inputs.nixpkgs.follows = "nixpkgs"; }; }; outputs = { self, nixpkgs, ... } @ inputs: { nixosConfigurations = { laptop = nixpkgs.lib.nixosSystem { system = "x86_64-linux"; specialArgs = {inherit inputs;}; modules = [ ./profiles/common ./profiles/laptop/configuration.nix ./services ]; }; tower = nixpkgs.lib.nixosSystem { system = "x86_64-linux"; specialArgs = {inherit inputs;}; modules = [ ./profiles/common ./profiles/tower/configuration.nix ./services ]; }; deck = inputs.jovian.inputs.nixpkgs.lib.nixosSystem { system = "x86_64-linux"; specialArgs = {inherit inputs;}; modules = [ ./profiles/deck/configuration.nix # ./services ]; }; laptop-iso = nixpkgs.lib.nixosSystem { system = "x86_64-linux"; specialArgs = {inherit inputs;}; modules = [ ./modules/nixos/iso inputs.disko.nixosModules.disko inputs.nixvim.nixosModules.default inputs.sopswarden.nixosModules.default inputs.home-manager.nixosModules.default ./hosts/laptop/disko.nix ./hosts/laptop/hardware-configuration.nix ./profiles/laptop/configuration.nix ./services ./users.nix ]; }; deck-iso = nixpkgs.lib.nixosSystem { system = "x86_64-linux"; modules = [./modules/nixos/iso ./users.nix {programs.zsh.enable = true;}]; }; anywhere = nixpkgs.lib.nixosSystem { system = "x86_64-linux"; specialArgs = {inherit inputs;}; modules = [ ./profiles/anywhere/configuration.nix ./users.nix ]; }; # VM de dev microvm.nix (input `microvm`, voir vms/) : `just vm` ou # `nix run .#dev`. Dupliquer vms/dev.nix pour une 2e VM. dev = nixpkgs.lib.nixosSystem { system = "x86_64-linux"; specialArgs = {inherit inputs;}; modules = [ inputs.microvm.nixosModules.microvm ./vms/dev.nix ]; }; }; # Runners des VM de dev, lançables directement : `nix run .#dev`. packages.x86_64-linux.dev = self.nixosConfigurations.dev.config.microvm.declaredRunner; nixOnDroidConfigurations.default = inputs.nix-on-droid.lib.nixOnDroidConfiguration { # pkgs = import inputs.nixpkgs-droid { pkgs = import inputs.nix-on-droid.inputs.nixpkgs { system = "aarch64-linux"; }; extraSpecialArgs = {inherit inputs;}; # extraSpecialArgs = { # inputs = inputs // { # nixpkgs = inputs.nixpkgs-droid; # home-manager = inputs.home-manager-droid; # nixvim = inputs.nixvim-droid; # }; # }; modules = [ # inputs.home-manager.nixosModules.default ./profiles/nix-on-droid/configuration.nix # ./users.nix ]; }; homeConfigurations = { "marc" = inputs.home-manager.lib.homeManagerConfiguration { extraSpecialArgs = {inherit inputs;}; pkgs = import nixpkgs { system = "x86_64-linux"; overlays = [inputs.nur.overlays.default inputs.clawdbot.overlays.default]; }; modules = [./users/marc/home.nix]; }; "marc@macos" = inputs.home-manager.lib.homeManagerConfiguration { extraSpecialArgs = {inherit inputs;}; pkgs = import inputs.nixpkgs-darwin { system = "aarch64-darwin"; }; modules = [./users/mac/home.nix]; }; "marc@deck" = inputs.home-manager.lib.homeManagerConfiguration { extraSpecialArgs = {inherit inputs;}; pkgs = import nixpkgs { system = "x86_64-linux"; config.allowUnfree = true; }; modules = [./users/deck]; }; }; darwinConfigurations."macos" = inputs.nix-darwin.lib.darwinSystem { system = "aarch64-darwin"; specialArgs = {inherit inputs;}; pkgs = import inputs.nixpkgs-darwin {system = "aarch64-darwin";}; modules = [ ./profiles/macos/configuration.nix {nixpkgs.config.allowUnfree = true;} ]; }; }; }