{ description = "tacocat's nix configuration"; nixConfig = { experimental-features = ["nix-command" "flakes"]; extra-substituters = [ # Nix community's cache server "https://nix-community.cachix.org" "https://helix.cachix.org" ]; extra-trusted-public-keys = [ "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=" "helix.cachix.org-1:ejp9KQpR1FBI2onstMQ34yogDm4OgU2ru6lIwPvuCVs=" ]; }; inputs = { nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; helix.url = "github:helix-editor/helix/master"; home-manager = { url = "github:nix-community/home-manager"; inputs.nixpkgs.follows = "nixpkgs"; }; nixos-hardware.url = "github:NixOs/nixos-hardware/master"; nur.url = "github:nix-community/nur"; agenix.url = "github:ryantm/agenix"; }; # pass in the urls defined above # the @ syntax stores the arguments in the inputs variable outputs = { self, nixpkgs, home-manager, helix, nixos-hardware, nur, agenix, ... } @ inputs: let system = "x86_64-linux"; pkgs = inputs.nixpkgs.legacyPackages.${system}; overlays = [ nur.overlay ]; home-manager-config = toplevel: [ home-manager.nixosModules.home-manager { home-manager.backupFileExtension = "bk"; home-manager.useGlobalPkgs = true; home-manager.extraSpecialArgs = {inherit inputs;}; home-manager.users.tacocat = { imports = [toplevel]; _module.args.theme = import ./modules/themes; }; } ]; common = [ ./modules/nixos-common.nix {nixpkgs.overlays = overlays;} agenix.nixosModules.default ] ++ home-manager-config ./users/tacocat/home.nix; in { # desktop nixosConfigurations."bicep" = nixpkgs.lib.nixosSystem { inherit system; specialArgs = {inherit inputs;}; modules = [ ./hosts/bicep/configuration.nix ] ++ common; }; # laptop nixosConfigurations."jwst" = nixpkgs.lib.nixosSystem { inherit system; specialArgs = {inherit inputs;}; modules = [ ./hosts/jwst/configuration.nix nixos-hardware.nixosModules.dell-xps-15-9520 ] ++ common; }; formatter.${system} = pkgs.alejandra; }; }