{ description = "aurie's configs"; inputs = { disko = { url = "github:nix-community/disko/latest"; inputs.nixpkgs.follows = "nixpkgs"; }; fairydust = { url = "github:AsahiLinux/linux/fairydust"; flake = false; }; finge = { url = "github:monke0192/nixos-06cb-009a-fingerprint-sensor?ref=unstable"; inputs.nixpkgs.follows = "nixpkgs"; }; home-manager = { url = "github:nix-community/home-manager/master"; inputs.nixpkgs.follows = "nixpkgs"; }; niri = { url = "github:epireyn/niri-flake"; inputs.nixpkgs.follows = "nixpkgs"; }; nixos-apple-silicon = { url = "github:nix-community/nixos-apple-silicon/main"; inputs.nixpkgs.follows = "nixpkgs"; }; nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable-small"; nixvim.url = "github:nix-community/nixvim"; sops-nix = { url = "github:Mic92/sops-nix"; inputs.nixpkgs.follows = "nixpkgs"; }; tangled.url = "git+https://tangled.org/did:plc:j5hmlfdrwkvtxm7cjmu7j2is?ref=refs/tags/v1.16.1-alpha"; }; outputs = inputs@{ nixpkgs, ... }: let forArchs = nixpkgs.lib.genAttrs [ "aarch64-linux" "x86_64-linux" ]; systems = { bathtub = { extraModules = [ inputs.nixos-apple-silicon.nixosModules.apple-silicon-support ]; system = "aarch64-linux"; }; forest = { extraModules = [ inputs.tangled.nixosModules.knot ]; system = "x86_64-linux"; }; tundra = { extraModules = [ inputs.finge.nixosModules."06cb-009a-fingerprint-sensor" ]; system = "x86_64-linux"; }; prometheus = { extraModules = [ ]; system = "x86_64-linux"; }; }; in { formatter = forArchs (a: nixpkgs.legacyPackages.${a}.nixfmt-tree); devShell = forArchs ( a: let pkgs = nixpkgs.legacyPackages.${a}; in pkgs.mkShell { packages = with pkgs; [ sops age just ]; } ); nixosConfigurations = nixpkgs.lib.mapAttrs ( hostname: config: nixpkgs.lib.nixosSystem { system = config.system; specialArgs = { inherit inputs; }; modules = [ ./${hostname} inputs.disko.nixosModules.disko inputs.home-manager.nixosModules.home-manager inputs.sops-nix.nixosModules.sops inputs.niri.nixosModules.niri { home-manager = { backupFileExtension = "old"; extraSpecialArgs = inputs; useGlobalPkgs = true; useUserPackages = true; sharedModules = [ inputs.sops-nix.homeManagerModules.sops inputs.nixvim.homeModules.nixvim ]; }; } ] ++ config.extraModules; } ) systems; }; }