{ description = "personal NixOS configurations"; inputs = { # Nixpkgs, NixOS's official repo nixpkgs.url = "github:nixos/nixpkgs/release-22.05"; utils.url = "github:numtide/flake-utils"; # We use the unstable nixpkgs repo for some packages. nixpkgs-unstable.url = "github:nixos/nixpkgs/nixpkgs-unstable"; emacs-overlay.url = "github:nix-community/emacs-overlay"; agenix = { url = "github:ryantm/agenix"; inputs.nixpkgs.follows = "nixpkgs"; }; nur.url = "github:nix-community/NUR"; flake-utils.url = "github:numtide/flake-utils"; home-manager = { url = "github:nix-community/home-manager/release-22.05"; # We want home-manager to use the same set of nixpkgs as our system. inputs.nixpkgs.follows = "nixpkgs"; }; }; # Output config, or config for NixOS system outputs = { ... }@inputs: let lib = import ./nix { inherit inputs; }; in { nixosConfigurations = { carmel = lib.mkSystem { hostname = "carmel"; }; aptos = lib.mkSystem { hostname = "aptos"; }; tahoe = lib.mkSystem { hostname = "tahoe"; }; }; } // inputs.utils.lib.eachDefaultSystem (system: let pkgs = import inputs.nixpkgs { inherit system; }; home-manager = inputs.home-manager.defaultPackage."${system}"; in { packages = pkgs // { inherit home-manager; tools = { dnsupdate = import ./tools/dnsupdate { inherit pkgs; }; govanity = import ./tools/govanity { inherit pkgs; }; }; users.fcuny = { blog = import ./users/fcuny/blog { inherit pkgs; }; notes = import ./users/fcuny/notes { inherit pkgs; }; resume = import ./users/fcuny/resume { inherit pkgs; }; }; }; devShell = pkgs.mkShell { buildInputs = with pkgs; [ nixUnstable nixfmt rnix-lsp home-manager git go gopls ]; }; }); }