# Common configuration for all hosts { pkgs, lib, inputs, outputs, ... }: { imports = [ ./extraServices ./users inputs.home-manager.nixosModules.home-manager ]; home-manager = { useUserPackages = true; extraSpecialArgs = {inherit inputs outputs;}; }; nixpkgs = { # You can add overlays here overlays = [ # Add overlays your own flake exports (from overlays and pkgs dir): outputs.overlays.additions outputs.overlays.modifications outputs.overlays.stable-packages # You can also add overlays exported from other flakes: # neovim-nightly-overlay.overlays.default # Or define it inline, for example: # (final: prev: { # hi = final.hello.overrideAttrs (oldAttrs: { # patches = [ ./change-hello-to-hi.patch ]; # }); # }) ]; # Configure your nixpkgs instance config = { # Disable if you don't want unfree packages allowUnfree = true; }; }; nix = let flakeInputs = lib.filterAttrs (_: lib.isType "flake") inputs; in { settings = { experimental-features = "nix-command flakes"; trusted-users = [ "root" "m3tam3re" ]; # Set users that are allowed to use the flake command }; gc = { automatic = true; options = "--delete-older-than 30d"; }; optimise.automatic = true; registry = lib.mapAttrs (_: flake: {inherit flake;}) flakeInputs; nixPath = ["/etc/nix/path"] ++ lib.mapAttrsToList (flakeName: _: "${flakeName}=flake:${flakeName}") flakeInputs; }; users.defaultUserShell = pkgs.fish; }