{ description = "System and user config"; inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; nix-super.url = "git+https://git.privatevoid.net/max/nix-super-fork"; nix-super.inputs.nixpkgs.follows = "nixpkgs"; modular-nvim.url = "git+https://git.privatevoid.net/max/modular-neovim-prototype"; modular-nvim.inputs.nixpkgs.follows = "nixpkgs"; home-manager.url = "github:nix-community/home-manager/master"; home-manager.inputs.nixpkgs.follows = "nixpkgs"; nixos-hardware.url = "github:NixOS/nixos-hardware/master"; nix-crx.url = "git+https://git.privatevoid.net/max/nix-crx"; nix-crx.inputs.nixpkgs.follows = "nixpkgs"; nix-vsx.url = "git+https://git.privatevoid.net/max/nix-vsx"; nix-vsx.inputs.nixpkgs.follows = "nixpkgs"; deploy-rs.url = "github:serokell/deploy-rs"; deploy-rs.inputs.nixpkgs.follows = "nixpkgs"; deploy-rs.inputs.naersk.follows = "naersk"; # re-pin naersk to fix deprecation warning in deploy-rs naersk.url = "github:nmattia/naersk/master"; naersk.inputs.nixpkgs.follows = "nixpkgs"; agenix.url = "github:ryantm/agenix"; agenix.inputs.nixpkgs.follows = "nixpkgs"; kernel-clr = { url = "github:clearlinux-pkgs/linux"; flake = false; }; }; outputs = { self, nixpkgs, home-manager, nixos-hardware, ... }@inputs: let inherit (nixpkgs) lib; system = "x86_64-linux"; pkgs = import nixpkgs { inherit system; }; deploy-rs-lib = inputs.deploy-rs.lib.${system}; agenixModule = inputs.agenix.nixosModules.age; aspect = import ./modules inputs; hosts = import ./hosts; specialArgs = { inherit inputs hosts aspect; }; mkNixOS' = lib: name: lib.nixosSystem { inherit system; inherit specialArgs; modules = [ hosts."${name}".nixos ]; }; mkNixOS = mkNixOS' nixpkgs.lib; in { nixosModules = aspect.modules; nixosConfigurations = lib.genAttrs [ "TITAN" "jericho" ] mkNixOS; deploy.nodes = with deploy-rs-lib; { TITAN = { hostname = "titan.hypr"; profiles.system = { user = "root"; path = activate.nixos self.nixosConfigurations.TITAN; }; }; jericho = { hostname = "jericho.hypr"; profiles.system = { user = "root"; path = activate.nixos self.nixosConfigurations.jericho; }; }; }; packages.${system} = import ./packages { nixpkgs = pkgs; inherit inputs; }; defaultApp.${system} = { type = "app"; program = self.packages.${system}.flake-installer.outPath; }; hydraJobs = { systems.${system} = lib.mapAttrs (_: x: x.config.system.build.toplevel) self.nixosConfigurations; packages = self.packages; }; homeConfigurations = { max = inputs.home-manager.lib.homeManagerConfiguration { inherit system; homeDirectory = "/home/max"; username = "max"; configuration.imports = [ ./users/max/home.nix ]; extraSpecialArgs = { inherit inputs; }; }; }; }; }