{ inputs = { nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable"; nur.url = "github:nix-community/NUR"; systems.url = "github:nix-systems/default"; chaotic.url = "github:chaotic-cx/nyx/nyxpkgs-unstable"; omnix = { url = "github:juspay/omnix"; inputs.nixpkgs.follows = "nixpkgs"; }; spicetify-nix = { url = "github:the-argus/spicetify-nix"; inputs.nixpkgs.follows = "nixpkgs"; }; nix-gaming = { url = "github:fufexan/nix-gaming"; inputs.nixpkgs.follows = "nixpkgs"; }; nix-thorium = { url = "github:almahdi/nix-thorium"; inputs.nixpkgs.follows = "nixpkgs"; }; nix-alien = { url = "github:thiagokokada/nix-alien"; inputs.nixpkgs.follows = "nixpkgs"; }; pre-commit-hooks = { url = "github:cachix/git-hooks.nix"; inputs.nixpkgs.follows = "nixpkgs"; }; hyprland = { type = "git"; url = "https://github.com/hyprwm/Hyprland"; submodules = true; inputs.nixpkgs.follows = "nixpkgs"; }; home-manager = { url = "github:nix-community/home-manager"; inputs.nixpkgs.follows = "nixpkgs"; }; nix-index-database = { url = "github:nix-community/nix-index-database"; inputs.nixpkgs.follows = "nixpkgs"; }; pia = { url = "git+https://git.sr.ht/~rprospero/nixos-pia?ref=development"; inputs.nixpkgs.follows = "nixpkgs"; }; hyprland-plugins = { url = "github:hyprwm/hyprland-plugins"; inputs.hyprland.follows = "hyprland"; }; # Hyprspace = { # url = "github:KZDKM/Hyprspace"; # inputs.hyprland.follows = "hyprland"; # }; }; outputs = { self, nixpkgs, home-manager, systems, nix-index-database, pia, nur, pre-commit-hooks, chaotic, ... }@inputs: let inherit (self) outputs; lib = nixpkgs.lib // home-manager.lib; forAllSystems = lib.genAttrs (import systems); nixpkgsFor = forAllSystems (system: import nixpkgs { inherit system; }); secrets = builtins.fromTOML (builtins.readFile "${self}/secrets/secrets.toml"); system = builtins.currentSystem; in { inherit lib; packages = forAllSystems (system: { default = home-manager.defaultPackage."${system}"; }); formatter = forAllSystems (system: { default = nixpkgs.legacyPackages."${system}".nixfmt-rfc-style; }); checks = forAllSystems (system: { pre-commit-check = pre-commit-hooks.lib.${system}.run { src = ./.; hooks = { deadnix.enable = true; flake-checker.enable = true; nixfmt-rfc-style.enable = true; statix.enable = true; }; }; }); devShells = forAllSystems (system: { default = nixpkgs.legacyPackages.${system}.mkShell { inherit (self.checks.${system}.pre-commit-check) shellHook; buildInputs = self.checks.${system}.pre-commit-check.enabledPackages; }; }); nixosConfigurations.kansai = lib.nixosSystem { specialArgs = { inherit inputs outputs secrets; }; modules = [ home-manager.nixosModule pia.nixosModule nix-index-database.nixosModules.nix-index nur.nixosModules.nur chaotic.nixosModules.default ./hosts/kansai ]; }; homeConfigurations.ebisu = let username = "ebisu"; flakeDirectory = ".nixos-config"; in home-manager.lib.homeManagerConfiguration { pkgs = nixpkgsFor."${system}"; modules = [ ./home/${username} chaotic.homeManagerModules.default ]; extraSpecialArgs = { inherit inputs outputs self secrets username flakeDirectory ; }; }; }; }