{ description = "personal NixOS configurations"; inputs = { # Nixpkgs, NixOS's official repo nixpkgs.url = "github:nixos/nixpkgs/release-21.11"; 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"; home-manager = { url = "github:nix-community/home-manager/release-21.11"; # 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 ./lib { inherit inputs; }; in { nixosConfigurations = { carmel = lib.mkSystem { hostname = "carmel"; system = "x86_64-linux"; }; aptos = lib.mkSystem { hostname = "aptos"; system = "x86_64-linux"; }; tahoe = lib.mkSystem { hostname = "tahoe"; system = "x86_64-linux"; }; }; homeConfigurations = { "fcuny@carmel" = lib.mkHome { username = "fcuny"; system = "x86_64-linux"; hostname = "carmel"; isDesktop = true; }; "fcuny@aptos" = lib.mkHome { username = "fcuny"; system = "x86_64-linux"; hostname = "aptos"; isDesktop = true; }; "fcuny@tahoe" = lib.mkHome { username = "fcuny"; system = "x86_64-linux"; 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; }; devShell = pkgs.mkShell { buildInputs = with pkgs; [ nixUnstable nixfmt rnix-lsp home-manager git ]; }; }); }