{
  description = "nico's linux system.";

  inputs = {
    # NixOS official package source, using the unstable branch here
    nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
    lanzaboote.url = "github:nix-community/lanzaboote/v0.4.1";
    lanzaboote.inputs.nixpkgs.follows = "nixpkgs";
    nix-darwin.url = "github:LnL7/nix-darwin";
    nix-darwin.inputs.nixpkgs.follows = "nixpkgs";
  };

  outputs = { self, nixpkgs, lanzaboote, nix-darwin, ... }@inputs: {
    nixosConfigurations.pluto = nixpkgs.lib.nixosSystem {
      system = "x86_64-linux";
      modules = [
        ./hosts/nixos-common.nix

        ./modules/applications.nix
        ./modules/firefox.nix
        ./modules/fonts.nix
        ./modules/games.nix
        ./modules/nix.nix
        ./modules/shell.nix

        ./modules/linux/applications.nix
        ./modules/linux/audio.nix
        ./modules/linux/hyprland.nix
        ./modules/linux/kde.nix
        ./modules/linux/login.nix
        ./modules/linux/stow.nix
        ./modules/linux/users.nix
        ./modules/linux/secureboot.nix
        lanzaboote.nixosModules.lanzaboote

        ./hosts/pluto/conf.nix
        ./hosts/pluto/hardware-configuration.nix
      ];
    };

    darwinConfigurations.faye = nix-darwin.lib.darwinSystem {
      system = "aarch64-darwin";
      modules = [
        ./modules/applications.nix
        ./modules/firefox.nix
        ./modules/fonts.nix
        ./modules/games.nix
        ./modules/nix.nix
        ./modules/shell.nix

        ./modules/darwin/applications.nix
        ./modules/darwin/desktop.nix
        ./modules/darwin/hardware.nix
        ./modules/darwin/nix.nix

        ./hosts/faye/conf.nix
      ];
    };
  };
}
