{ outputs = { devenv, flake-root, flake-parts, home-manager, just-flake, nixpkgs, nixpkgs-darwin, pre-commit-hooks, self, ... }@inputs: let lib = nixpkgs.lib // home-manager.lib; secrets = builtins.fromTOML (builtins.readFile "${self}/secrets/secrets.toml"); systemsAttributes = lib.genAttrs lib.systems.flakeExposed; kansaiPkgs = import "${self}/lib/kansai-pkgs.nix" { inherit systemsAttributes nixpkgs nixpkgs-darwin self inputs ; }; in flake-parts.lib.mkFlake { inherit inputs; } { systems = builtins.attrNames (systemsAttributes (system: system)); imports = [ devenv.flakeModule flake-root.flakeModule just-flake.flakeModule (import ./home { inherit kansaiPkgs self lib inputs secrets ; inherit (self) outputs; }) (import ./hosts { inherit kansaiPkgs self lib inputs secrets ; inherit (self) outputs; }) ]; perSystem = { system, config, ... }: let pkgs = (kansaiPkgs { })."${system}"; in { imports = let parts = "${self}/parts"; in [ (import "${parts}/checks.nix" { inherit pre-commit-hooks system; }) (if pkgs.stdenv.isDarwin then { } else import "${parts}/devenv.nix" { inherit config lib pkgs; }) ]; packages.default = home-manager.defaultPackage."${system}"; formatter = pkgs.nixfmt-rfc-style; }; }; inputs = { determinate.url = "https://flakehub.com/f/DeterminateSystems/determinate/*"; flake-root.url = "github:srid/flake-root"; flake-schemas.url = "https://flakehub.com/f/DeterminateSystems/flake-schemas/=0.1.5.tar.gz"; just-flake.url = "github:juspay/just-flake"; mk-shell-bin.url = "github:rrbutani/nix-mk-shell-bin"; nix-filter.url = "github:numtide/nix-filter"; nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; nixpkgs-stable.url = "github:NixOS/nixpkgs/24.05"; nixpkgs-darwin.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; nur.url = "github:nix-community/NUR"; systems.url = "github:nix-systems/default"; aagl = { url = "github:ezKEa/aagl-gtk-on-nix"; inputs = { flake-compat.follows = "flake-compat"; nixpkgs.follows = "nixpkgs"; }; }; apple-fonts = { url = "github:Lyndeno/apple-fonts.nix"; # TODO: sf-pro, sf-compact, sf-mono, sf-arabic, ny inputs = { flake-utils.follows = "flake-utils"; nixpkgs.follows = "nixpkgs"; }; }; artginzburg-homebrew-tap = { url = "github:artginzburg/homebrew-tap"; flake = false; }; acsandmann-homebrew-tap = { url = "github:acsandmann/homebrew-tap"; flake = false; }; # brew-src = { # url = "github:Homebrew/brew/4.5.2"; # flake = false; # }; oven-sh-homebrew-bun = { url = "github:oven-sh/homebrew-bun"; flake = false; }; cachix = { url = "github:cachix/cachix"; inputs = { devenv.follows = "devenv"; git-hooks.follows = "pre-commit-hooks"; flake-compat.follows = "flake-compat"; nixpkgs.follows = "nixpkgs"; }; }; chaotic = { url = "github:chaotic-cx/nyx/nyxpkgs-unstable"; # TODO: fenix?, nixpkgs inputs = { flake-schemas.follows = "flake-schemas"; home-manager.follows = "home-manager"; jovian.follows = "jovian"; }; }; cider = { url = "github:Fuwn/cider.nix"; inputs = { flake-compat.follows = "flake-compat"; flake-utils.follows = "flake-utils"; nixpkgs.follows = "nixpkgs"; systems.follows = "systems"; }; }; devenv = { url = "github:cachix/devenv"; # TODO: nix inputs = { cachix.follows = "cachix"; flake-compat.follows = "flake-compat"; nixpkgs.follows = "nixpkgs"; pre-commit-hooks.follows = "pre-commit-hooks"; }; }; disko = { url = "github:nix-community/disko"; inputs.nixpkgs.follows = "nixpkgs"; }; fenix = { url = "github:nix-community/fenix"; inputs = { nixpkgs.follows = "nixpkgs"; rust-analyzer-src.follows = "rust-analyzer-src"; }; }; flake-compat = { url = "github:edolstra/flake-compat"; flake = false; }; flake-parts = { url = "github:hercules-ci/flake-parts"; inputs.nixpkgs-lib.follows = "nixpkgs"; }; flake-registry = { url = "github:NixOS/flake-registry"; flake = false; }; flake-utils = { url = "github:numtide/flake-utils"; inputs.systems.follows = "systems"; }; gigi = { url = "github:Fuwn/gigi"; inputs = { flake-utils.follows = "flake-utils"; nixpkgs.follows = "nixpkgs"; systems.follows = "systems"; }; }; gitignore = { url = "github:hercules-ci/gitignore.nix"; inputs.nixpkgs.follows = "nixpkgs"; }; gromgit-homebrew-fuse = { url = "github:gromgit/homebrew-fuse"; flake = false; }; hillyu-homebrew-tap = { url = "github:hillyu/homebrew-tap"; flake = false; }; home-manager = { url = "github:nix-community/home-manager"; inputs.nixpkgs.follows = "nixpkgs"; }; homebrew-cask = { url = "github:homebrew/homebrew-cask"; flake = false; }; homebrew-core = { url = "github:homebrew/homebrew-core"; flake = false; }; humanlayer-homebrew-humanlayer = { url = "github:humanlayer/homebrew-humanlayer"; flake = false; }; hyprfocus = { url = "github:pyt0xic/hyprfocus"; inputs = { hyprland.follows = "hyprland"; nix-filter.follows = "nix-filter"; }; }; hyprland = { type = "git"; url = "https://github.com/hyprwm/Hyprland"; submodules = true; # TODO: aquamarine, hyprcursor, hyprland-protocols, hyprlang, hyprutils, # hyprwayland-scanner, xdph inputs = { nixpkgs.follows = "nixpkgs"; pre-commit-hooks.follows = "pre-commit-hooks"; systems.follows = "systems"; }; }; hyprland-plugins = { url = "github:hyprwm/hyprland-plugins"; inputs = { hyprland.follows = "hyprland"; nixpkgs.follows = "nixpkgs"; systems.follows = "systems"; }; }; jovian = { url = "github:Jovian-Experiments/Jovian-NixOS"; inputs = { nix-github-actions.follows = "nix-github-actions"; nixpkgs.follows = "nixpkgs"; }; }; koekeishiya-homebrew-tap = { url = "github:koekeishiya/homebrew-formulae"; flake = false; }; nerdsupremacist-homebrew-tap = { url = "github:nerdsupremacist/homebrew-tap"; flake = false; }; nikitabobko-homebrew-tap = { url = "github:nikitabobko/homebrew-tap"; flake = false; }; nix-alien = { url = "github:thiagokokada/nix-alien"; inputs = { flake-compat.follows = "flake-compat"; flake-utils.follows = "flake-utils"; nix-filter.follows = "nix-filter"; nix-index-database.follows = "nix-index-database"; nixpkgs.follows = "nixpkgs"; }; }; nix-darwin = { url = "github:LnL7/nix-darwin"; inputs.nixpkgs.follows = "nixpkgs-darwin"; }; nix-gaming = { url = "github:fufexan/nix-gaming"; inputs = { flake-parts.follows = "flake-parts"; nixpkgs.follows = "nixpkgs"; umu.follows = "umu"; }; }; nix-github-actions = { url = "github:zhaofengli/nix-github-actions/matrix-name"; inputs.nixpkgs.follows = "nixpkgs"; }; nix-homebrew = { url = "github:zhaofengli-wip/nix-homebrew"; # inputs.brew-src.follows = "brew-src"; }; nix-index-database = { url = "github:nix-community/nix-index-database"; inputs.nixpkgs.follows = "nixpkgs"; }; nix-microchip = { url = "github:Fuwn/nix-microchip"; inputs.nixpkgs.follows = "nixpkgs"; }; nix-search = { url = "github:diamondburned/nix-search"; inputs = { flake-compat.follows = "flake-compat"; flake-utils.follows = "flake-utils"; nixpkgs.follows = "nixpkgs"; }; }; nix-thorium = { url = "github:almahdi/nix-thorium"; inputs.nixpkgs.follows = "nixpkgs"; }; nix-prettier = { url = "github:loophp/nix-prettier"; inputs = { flake-utils.follows = "flake-utils"; nixpkgs.follows = "nixpkgs"; }; }; nix2container = { url = "github:nlewo/nix2container"; inputs = { flake-utils.follows = "flake-utils"; nixpkgs.follows = "nixpkgs"; }; }; notion-repackaged = { url = "github:pikokr/nix-notion-repackaged"; inputs.nixpkgs.follows = "nixpkgs"; }; omnix = { url = "github:juspay/omnix"; # TODO: cachix-push, cargo-doc-live, devour-flake, inspect, # nix-systems-aarch64-darwin, nix-systems-aarch64-linux, # nix-systems-x86_64-darwin, nix-systems-x86_64-linux, # process-compose-flake, rust-flake, treefmt-nix inputs = { flake-parts.follows = "flake-parts"; nixpkgs.follows = "nixpkgs"; systems.follows = "systems"; }; }; pia = { url = "github:Fuwn/nixos-pia"; inputs = { flake-utils.follows = "flake-utils"; nixpkgs.follows = "nixpkgs"; }; }; pre-commit-hooks = { url = "github:cachix/git-hooks.nix"; inputs = { flake-compat.follows = "flake-compat"; gitignore.follows = "gitignore"; nixpkgs.follows = "nixpkgs"; nixpkgs-stable.follows = "nixpkgs-stable"; }; }; raspberry-pi-nix = { url = "github:nix-community/raspberry-pi-nix"; inputs.nixpkgs.follows = "nixpkgs"; }; pywal-nix = { url = "github:Fuwn/pywal-nix"; inputs = { flake-compat.follows = "flake-compat"; flake-utils.follows = "flake-utils"; nixpkgs.follows = "nixpkgs"; pre-commit-hooks.follows = "pre-commit-hooks"; systems.follows = "systems"; }; }; rui = { url = "github:Fuwn/rui"; inputs = { flake-compat.follows = "flake-compat"; flake-utils.follows = "flake-utils"; nixpkgs.follows = "nixpkgs"; pre-commit-hooks.follows = "pre-commit-hooks"; systems.follows = "systems"; }; }; rust-analyzer-src = { url = "github:rust-lang/rust-analyzer/nightly"; flake = false; }; sops-nix = { url = "github:Mic92/sops-nix"; inputs.nixpkgs.follows = "nixpkgs"; }; spicetify-nix = { url = "github:the-argus/spicetify-nix"; inputs = { flake-utils.follows = "flake-utils"; nixpkgs.follows = "nixpkgs"; }; }; tailray = { url = "github:NotAShelf/tailray"; inputs.nixpkgs.follows = "nixpkgs"; }; tsutsumi = { url = "github:Fuwn/tsutsumi"; # TODO: nix-gleam inputs = { flake-compat.follows = "flake-compat"; flake-utils.follows = "flake-utils"; gigi.follows = "gigi"; gitignore.follows = "gitignore"; nixpkgs.follows = "nixpkgs"; pre-commit-hooks.follows = "pre-commit-hooks"; systems.follows = "systems"; }; }; tuist-homebrew-tap = { url = "github:tuist/homebrew-tuist"; flake = false; }; umu = { url = "git+https://github.com/Open-Wine-Components/umu-launcher/?dir=packaging/nix&submodules=1"; inputs.nixpkgs.follows = "nixpkgs"; }; }; }