{ inputs = { # nixpkgs (Packges and modules) nixpkgs.url = github:NixOS/nixpkgs/nixos-unstable; # Nix Hardware (Hardware configs) nixos-hardware.url = github:NixOS/nixos-hardware; # NUR (User Packges) nur.url = github:nix-community/NUR; # Home Manger (Dot files) home-manager = { url = github:nix-community/home-manager; inputs.nixpkgs.follows = "nixpkgs"; inputs.utils.follows = "flake-utils"; }; # Nix Darwin (Mac OS support) nix-darwin = { url = github:LnL7/nix-darwin; inputs.nixpkgs.follows = "nixpkgs"; }; # Image generators nixos-generators = { url = github:nix-community/nixos-generators; inputs.nixpkgs.follows = "nixpkgs"; inputs.nixlib.follows = "nixlib"; }; # PrismLauncher (git version of PrismLauncher) prismlauncher = { url = github:PrismLauncher/PrismLauncher; inputs.nixpkgs.follows = "nixpkgs"; inputs.flake-compat.follows = "flake-compat"; inputs.libnbtplusplus.follows = "libnbtplusplus"; }; libnbtplusplus = { url = github:PrismLauncher/libnbtplusplus; flake = false; }; # vscode extensions nix-vscode-extensions = { url = github:nix-community/nix-vscode-extensions; inputs.flake-compat.follows = "flake-compat"; inputs.flake-utils.follows = "flake-utils"; inputs.nixpkgs.follows = "nixpkgs"; }; snowfall-lib = { url = github:snowfallorg/lib; inputs.nixpkgs.follows = "nixpkgs"; inputs.flake-compat.follows = "flake-compat"; inputs.flake-utils-plus.follows = "flake-utils-plus"; }; snowfall-flake = { url = github:snowfallorg/flake; inputs.nixpkgs.follows = "nixpkgs"; inputs.unstable.follows = "nixpkgs"; inputs.flake-compat.follows = "flake-compat"; inputs.snowfall-lib.follows = "snowfall-lib"; }; comma = { url = github:nix-community/comma; inputs.nixpkgs.follows = "nixpkgs"; inputs.flake-compat.follows = "flake-compat"; inputs.utils.follows = "flake-utils"; inputs.naersk.follows = "naersk"; }; deploy-rs = { url = github:serokell/deploy-rs; inputs.nixpkgs.follows = "nixpkgs"; inputs.flake-compat.follows = "flake-compat"; inputs.utils.follows = "flake-utils"; }; peerix = { url = github:cid-chan/peerix; inputs.nixpkgs.follows = "nixpkgs"; inputs.flake-compat.follows = "flake-compat"; inputs.flake-utils.follows = "flake-utils"; }; agenix = { url = github:ryantm/agenix; inputs.nixpkgs.follows = "nixpkgs"; inputs.darwin.follows = "nix-darwin"; }; # Dependcies flake-compat = { url = github:edolstra/flake-compat; flake = false; }; flake-utils.url = github:numtide/flake-utils; nixlib.url = github:nix-community/nixpkgs.lib; naersk = { url = github:nix-community/naersk; inputs.nixpkgs.follows = "nixpkgs"; }; flake-utils-plus = { url = github:gytis-ivaskevicius/flake-utils-plus; inputs.flake-utils.follows = "flake-utils"; }; # Nix registery agda.url = github:agda/agda; arion.url = github:hercules-ci/arion; blender-bin.url = github:edolstra/nix-warez?dir=blender; composable.url = github:ComposableFi/composable; dreampkgs.url = github:nix-community/dreampkgs; dwarffs.url = github:edolstra/dwarffs; emacs-overlay.url = github:nix-community/emacs-overlay; fenix.url = github:nix-community/fenix; flake-parts.url = github:hercules-ci/flake-parts; gemini.url = github:nix-community/flake-gemini; hercules-ci-effects.url = github:hercules-ci/hercules-ci-effects; hercules-ci-agent.url = github:hercules-ci/hercules-ci-agent; hydra.url = github:NixOS/hydra; mach-nix.url = github:DavHau/mach-nix; nimble.url = github:nix-community/flake-nimble; nix.url = github:NixOS/nix; nixops.url = github:NixOS/nixops; nixos-homepage.url = github:NixOS/nixos-homepage; nixos-search.url = github:NixOS/nixos-search; templates.url = github:NixOS/templates; patchelf.url = github:NixOS/patchelf; poetry2nix.url = github:nix-community/poetry2nix; nix-serve.url = github:edolstra/nix-serve; nickel.url = github:tweag/nickel; bundlers.url = github:NixOS/bundlers; pridefetch.url = github:SpyHoodle/pridefetch; helix.url = github:helix-editor/helix; sops-nix.url = github:Mic92/sops-nix; }; outputs = inputs: let lib = inputs.snowfall-lib.mkLib { inherit inputs; src = ./.; }; in lib.mkFlake { package-namespace = "custom"; channels-config.allowUnfree = true; overlays = with inputs; [ nur.overlay snowfall-flake.overlay prismlauncher.overlay ]; systems.modules = with inputs; [ home-manager.nixosModules.home-manager nur.nixosModules.nur peerix.nixosModules.peerix agenix.nixosModules.default { home-manager = { useGlobalPkgs = true; useUserPackages = true; }; system.stateVersion = "23.05"; nix.registry = { agda.flake = agda; arion.flake = arion; blender-bin.flake = blender-bin; composable.flake = composable; dreampkgs.flake = dreampkgs; dwarffs.flake = dwarffs; emacs-overlay.flake = emacs-overlay; fenix.flake = fenix; flake-parts.flake = flake-parts; flake-utils.flake = flake-utils; gemini.flake = gemini; hercules-ci-effects.flake = hercules-ci-effects; hercules-ci-agent.flake = hercules-ci-agent; home-manager.flake = home-manager; hydra.flake = hydra; mach-nix.flake = mach-nix; nimble.flake = nimble; nix.flake = nix; nix-darwin.flake = nix-darwin; nixops.flake = nixops; nixos-hardware.flake = nixos-hardware; nixos-homepage.flake = nixos-homepage; nixos-search.flake = nixos-search; nur.flake = nur; nixpkgs.flake = nixpkgs; templates.flake = templates; patchelf.flake = patchelf; poetry2nix.flake = poetry2nix; nix-serve.flake = nix-serve; nickel.flake = nickel; bundlers.flake = bundlers; pridefetch.flake = pridefetch; helix.flake = helix; sops-nix.flake = sops-nix; }; nix.nixPath = [ "nixpkgs=/etc/channels/nixpkgs" "nixos-config=/etc/nixos/configuration.nix" "/nix/var/nix/profiles/per-user/root/channels" ]; environment.etc."channels/nixpkgs".source = inputs.nixpkgs.outPath; } ]; systems.hosts.yokai.modules = with inputs; [ nixos-hardware.nixosModules.pine64-pinebook-pro ]; deploy = lib.mkDeploy { inherit (inputs) self; }; checks = builtins.mapAttrs (system: deploy-lib: deploy-lib.deployChecks inputs.self.deploy) inputs.deploy-rs.lib; }; }