{ description = "Personal system configurations"; inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; flake-parts.url = "github:hercules-ci/flake-parts"; impermanence.url = "github:nix-community/impermanence"; home-manager = { url = "github:nix-community/home-manager"; inputs.nixpkgs.follows = "nixpkgs"; }; disko = { url = "github:nix-community/disko"; inputs.nixpkgs.follows = "nixpkgs"; }; sops-nix = { url = "github:Mic92/sops-nix"; inputs.nixpkgs.follows = "nixpkgs"; }; }; outputs = { self, flake-parts, ... } @ inputs: let inherit (self) outputs; in flake-parts.lib.mkFlake { inherit inputs; } { imports = [ inputs.home-manager.flakeModules.home-manager ]; # Systems the "perSystem" option will target. systems = [ "x86_64-linux" "x86_64-darwin" "aarch64-linux" "aarch64-darwin" "i686-linux" ]; # Outputs for each above defined system. perSystem = { pkgs, ... }: { devShells.default = pkgs.mkShell { packages = with pkgs; [ just ]; }; }; # Flake configuration attributes. flake = { # Reusable nixos modules one might want to export. # Usually bundled pre-configured configuration toggles for my systems. nixosModules = import ./modules/nixos; # Reusable home-manager modules one might want to export. # Usually bundled pre-configured configuration toggles for my homes. homeManagerModules = import ./modules/home-manager; nixosConfigurations = { makise = inputs.nixpkgs.lib.nixosSystem { specialArgs = { inherit inputs outputs; }; modules = [ ./hosts/makise/system/system.nix ]; }; }; homeConfigurations = { "kurisu@makise" = inputs.home-manager.lib.homeManagerConfiguration { pkgs = inputs.nixpkgs.legacyPackages.x86_64-linux; extraSpecialArgs = { inherit inputs outputs; }; modules = [ ./hosts/makise/homes/kurisu/home.nix ]; }; "admin@makise" = inputs.home-manager.lib.homeManagerConfiguration { pkgs = inputs.nixpkgs.legacyPackages.x86_64-linux; extraSpecialArgs = { inherit inputs outputs; }; modules = [ ./hosts/makise/homes/admin/default.nix ]; }; }; }; }; }