{ inputs = { nixpkgs.url = "github:nixos/nixpkgs/nixos-23.05"; nixpkgs-unstable.url = "github:nixos/nixpkgs/nixpkgs-unstable"; flake-utils.url = "github:numtide/flake-utils"; flake-parts.url = "github:hercules-ci/flake-parts"; agenix = { url = "github:ryantm/agenix"; inputs.darwin.follows = ""; inputs.home-manager.follows = ""; }; valheim-server = { url = "github:aidalgol/valheim-server-flake"; inputs.flake-utils.follows = "flake-utils"; inputs.nixpkgs.follows = "nixpkgs"; }; nixinate = { url = "github:matthewcroughan/nixinate"; inputs.nixpkgs.follows = "nixpkgs"; }; pre-commit-hooks = { url = "github:cachix/pre-commit-hooks.nix"; inputs.flake-utils.follows = "flake-utils"; }; attic.url = "github:zhaofengli/attic"; sanctureplicum-nur.url = "git+https://gitea.pid1.sh/sanctureplicum/nur.git"; }; nixConfig = { extra-trusted-substituters = [ "https://attic-action.cachix.org" "https://cache.garnix.io" "https://pre-commit-hooks.cachix.org" "https://sanctureplicum.cachix.org" "https://staging.attic.rs/attic-ci" ]; extra-trusted-public-keys = [ "attic-action.cachix.org-1:3Iqcq1PU6FJmNWyfSMKcx2HIBei6fybMIgVBcHS5Uvc=" "attic-ci:U5Sey4mUxwBXM3iFapmP0/ogODXywKLRNgRPQpEXxbo=" "cache.garnix.io:CTFPyKSLcx5RMJKfLo5EEPUObbA78b0YQ2DTCJXqr9g=" "pre-commit-hooks.cachix.org-1:Pkk3Panw5AW24TOv6kz3PvLhlH8puAsJTBbOPmBo7Rc=" "sanctureplicum.cachix.org-1:VztHStNqXs5pFZ0eNVoIfoqCaeKdNKRqkbNb8lYrqQ8=" ]; }; outputs = {flake-parts, ...} @ inputs: let overlays = final: prev: rec { atuin = unstable.atuin; gitea-nyx = inputs.sanctureplicum-nur.packages.${prev.system}.gitea-nyx; unstable = inputs.nixpkgs-unstable.legacyPackages.${prev.system}; }; in flake-parts.lib.mkFlake {inherit inputs;} { flake = { nixosConfigurations.main-node = inputs.nixpkgs.lib.nixosSystem { system = "x86_64-linux"; modules = [ { _module.args.nixinate = { host = "main-node"; buildOn = "remote"; hermetic = false; }; nixpkgs = { config.allowUnfree = true; overlays = [overlays]; }; } ./hosts/main-node ./config ./modules inputs.attic.nixosModules.atticd inputs.agenix.nixosModules.default inputs.valheim-server.nixosModules.default ]; }; }; perSystem = { pkgs, system, self', ... }: { apps = (inputs.nixinate.nixinate.${system} inputs.self).nixinate; checks.pre-commit-check = inputs.pre-commit-hooks.lib.${system}.run { src = ./.; hooks = { alejandra.enable = true; nil.enable = true; }; }; devShells.default = pkgs.mkShell { buildInputs = [inputs.agenix.packages.${system}.agenix]; inherit (inputs.self.checks.${system}.pre-commit-check) shellHook; }; formatter = pkgs.alejandra; }; systems = ["x86_64-linux" "aarch64-linux" "aarch64-darwin" "x86_64-darwin"]; }; }