{ description = "monke's configs"; inputs = { disko = { url = "github:nix-community/disko/latest"; inputs.nixpkgs.follows = "nixpkgs"; }; 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:sodiboo/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"; inputs.nixpkgs.follows = "nixpkgs"; }; sops-nix = { url = "github:Mic92/sops-nix"; inputs.nixpkgs.follows = "nixpkgs"; }; libinput-jyutping = { url = "git+https://tangled.org/auri.ee/libime-jyutping-flake"; inputs.nixpkgs.follows = "nixpkgs"; }; tangled.url = "git+https://tangled.org/@tangled.org/core?ref=refs/tags/v1.11.0-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 inputs.niri.nixosModules.niri ]; system = "aarch64-linux"; }; forest = { extraModules = [ inputs.tangled.nixosModules.knot ]; system = "x86_64-linux"; }; tundra = { extraModules = [ inputs.niri.nixosModules.niri inputs.finge.nixosModules."06cb-009a-fingerprint-sensor" ]; 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 { home-manager = { backupFileExtension = ".old"; extraSpecialArgs = inputs; useGlobalPkgs = true; useUserPackages = true; users."monke" = import ./${hostname}/home.nix; sharedModules = [ inputs.sops-nix.homeManagerModules.sops inputs.nixvim.homeModules.nixvim ]; }; } ] ++ config.extraModules; } ) systems; }; }