{ description = "imnyang's Nix Configuration"; inputs = { nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable"; nixpkgs-2511.url = "github:NixOS/nixpkgs/nixos-25.11"; home-manager = { url = "github:nix-community/home-manager"; inputs.nixpkgs.follows = "nixpkgs"; }; spicetify-nix.url = "github:Gerg-L/spicetify-nix"; catppuccin.url = "github:catppuccin/nix"; nix-flatpak.url = "github:gmodena/nix-flatpak/"; plasma-manager = { url = "github:nix-community/plasma-manager"; inputs.nixpkgs.follows = "nixpkgs"; inputs.home-manager.follows = "home-manager"; }; darwin = { url = "github:nix-darwin/nix-darwin"; inputs.nixpkgs.follows = "nixpkgs"; }; nix-homebrew.url = "github:zhaofengli/nix-homebrew"; sops-nix = { url = "github:Mic92/sops-nix"; inputs.nixpkgs.follows = "nixpkgs"; }; nixcord.url = "github:FlameFlag/nixcord"; # nixcord.url = "path:/home/imnyang/workspaces/git/imnyang/nixcord"; vscode-nigo = { url = "git+https://git.pari.ng/imnyang/vscode-nigo.git?ref=main"; inputs.nixpkgs.follows = "nixpkgs"; }; notion-desktop = { url = "github:heytcass/notion-mac-flake"; inputs.nixpkgs.follows = "nixpkgs"; }; # notion-calendar-electron.url = "github:czlabinger/notion-calendar-electron"; millennium.url = "github:SteamClientHomebrew/Millennium?dir=packages/nix"; vicinae.url = "github:vicinaehq/vicinae"; vicinae-extensions = { url = "github:vicinaehq/extensions"; inputs.nixpkgs.follows = "nixpkgs"; }; nixos-wsl.url = "github:nix-community/NixOS-WSL/main"; codex-app = { url = "github:ilysenko/codex-desktop-linux"; }; quadlet-nix.url = "github:SEIAROTg/quadlet-nix"; rustfs = { url = "github:rustfs/rustfs-flake"; inputs.nixpkgs.follows = "nixpkgs"; }; imnyang.url = "git+https://git.mizuki.guru/imnyang/nix-packages.git"; paring.url = "git+https://git.pari.ng/paring/nix-packages.git"; mizuki-nc.url = "git+https://git.mizuki.guru/imnyang/mizuki.guru.git?rev=70b1c9a2befc933c63f2b3197655b4f1166f9fbb"; muvel.url = "github:imnyang/muvel-nix"; # Git source filtering keeps config.toml and state.json out of the Nix store. amiaBot = { url = "git+file:///home/imnyang/workspaces/git/imnyang/amia"; flake = false; }; }; outputs = inputs@{ imnyang, paring, ... }: let # Overlays overlays = [ paring.overlays.default imnyang.overlays.default inputs.millennium.overlays.default (import ./overlays/spotx.nix) (final: prev: { vulkan-validation-layers = prev.vulkan-validation-layers.overrideAttrs (old: { cmakeFlags = (old.cmakeFlags or [ ]) ++ [ # Fixed upstream; keep this until the locked nixpkgs includes it. "-DUPDATE_DEPS=OFF" ]; }); pythonPackagesExtensions = (prev.pythonPackagesExtensions or [ ]) ++ [ (python-final: python-prev: { uefi-firmware-parser = python-prev.uefi-firmware-parser.overridePythonAttrs (old: { build-system = (old.build-system or [ ]) ++ [ python-final.setuptools-scm ]; }); }) ]; }) (import ./overlays/hoffice) ]; mkHost = hostPath: overlays: import hostPath { inherit inputs overlays; }; in { nixosConfigurations = { # Machine mafuyu = mkHost ./hosts/machine/mafuyu overlays; mizuki = mkHost ./hosts/machine/mizuki overlays; ena = mkHost ./hosts/machine/ena overlays; ribbon = mkHost ./hosts/machine/ribbon [ paring.overlays.default imnyang.overlays.default ]; installer = mkHost ./hosts/installer overlays; # Server hikari = mkHost ./hosts/server/hikari/default overlays; hako = mkHost ./hosts/server/hikari/hako overlays; amia = mkHost ./hosts/server/hikari/amia overlays; natsu = mkHost ./hosts/server/natsu overlays; kazusa = mkHost ./hosts/server/kazusa overlays; }; darwinConfigurations = { # Machine kanade = mkHost ./hosts/machine/kanade overlays; }; }; }