{ description = "Chris's system configuration"; inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-24.05"; nixunstable.url = "github:NixOS/nixpkgs/nixos-unstable"; flake-parts.url = "github:hercules-ci/flake-parts"; devshell.url = "github:numtide/devshell"; deploy-rs = { url = "github:serokell/deploy-rs"; inputs.nixpkgs.follows = "nixpkgs"; }; home-manager = { url = "github:nix-community/home-manager/release-24.05"; inputs.nixpkgs.follows = "nixpkgs"; }; sops-nix = { url = "github:Mic92/sops-nix"; inputs.nixpkgs.follows = "nixpkgs"; }; impermanence.url = "github:nix-community/impermanence"; stylix = { url = "github:danth/stylix/release-24.05"; inputs = { nixpkgs.follows = "nixpkgs"; home-manager.follows = "home-manager"; }; }; nixos-hardware.url = "github:NixOS/nixos-hardware/master"; }; outputs = inputs@{ flake-parts, ... }: flake-parts.lib.mkFlake { inherit inputs; } ({ self, ... }: { imports = [ inputs.devshell.flakeModule ]; systems = [ "x86_64-linux" "aarch64-linux" ]; flake = { deploy = { sshUser = "root"; fastConnection = true; nodes = { smolboi = { hostname = "smolboi"; profiles.system.path = inputs.deploy-rs.lib.x86_64-linux.activate.nixos self.nixosConfigurations.smolboi; }; zeus = { hostname = "zeus"; profiles.system.path = inputs.deploy-rs.lib.x86_64-linux.activate.nixos self.nixosConfigurations.zeus; }; orangepihole = { hostname = "orangepihole"; profiles.system.path = inputs.deploy-rs.lib.aarch64-linux.activate.nixos self.nixosConfigurations.orangepihole; }; }; }; nixosConfigurations = { smolboi = inputs.nixpkgs.lib.nixosSystem { specialArgs = { inherit inputs; pkgs-unstable = inputs.nixunstable; }; modules = [ ./systems/smolboi/configuration.nix inputs.stylix.nixosModules.stylix inputs.impermanence.nixosModules.impermanence inputs.nixos-hardware.nixosModules.common-cpu-amd inputs.nixos-hardware.nixosModules.common-cpu-amd-pstate inputs.nixos-hardware.nixosModules.common-cpu-amd-zenpower inputs.nixos-hardware.nixosModules.common-gpu-amd inputs.nixos-hardware.nixosModules.common-pc inputs.nixos-hardware.nixosModules.common-pc-ssd inputs.nixos-hardware.nixosModules.gigabyte-b550 inputs.home-manager.nixosModules.home-manager { home-manager.useGlobalPkgs = true; home-manager.users.cdombroski = import ./systems/smolboi/home.nix; } ]; }; zeus = inputs.nixpkgs.lib.nixosSystem { specialArgs = { inherit inputs; pkgs-unstable = inputs.nixunstable; }; modules = [ ./systems/zeus/configuration.nix inputs.impermanence.nixosModules.impermanence inputs.nixos-hardware.nixosModules.supermicro inputs.nixos-hardware.nixosModules.common-cpu-amd inputs.nixos-hardware.nixosModules.common-cpu-amd-pstate inputs.nixos-hardware.nixosModules.common-cpu-amd-zenpower inputs.nixos-hardware.nixosModules.common-pc ]; }; orangepihole = inputs.nixpkgs.lib.nixosSystem { specialArgs = { inherit inputs; pkgs-unstable = inputs.nixunstable; }; modules = [ ./systems/orangepihole/configuration.nix inputs.impermanence.nixosModules.impermanence ]; }; }; }; perSystem = { pkgs, inputs', system, ... }: { # _module.args.pkgs = import inputs'.nixpkgs { # inherit system; # overlays = [ # inputs.deploy-rs.overlay # (final: prev: { # deploy-rs = { # inherit (pkgs) deploy-rs; # lib = prev.deploy-rs.lib; # }; # }) # ]; # }; devshells.default = { packages = with pkgs; [ deploy-rs sops ]; }; checks = inputs.deploy-rs.lib.${system}.deployChecks self.deploy; formatter = pkgs.nixfmt; }; }); }