{ description = "Home Manager configuration of julian"; inputs = { nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-23.11"; nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable"; home-manager = { url = "github:nix-community/home-manager/release-23.11"; inputs.nixpkgs.follows = "nixpkgs-stable"; }; alacritty-theme = { url = "github:alacritty/alacritty-theme"; flake = false; }; }; outputs = { nixpkgs-stable, nixpkgs-unstable, home-manager, ... }@inputs: let system = "x86_64-linux"; unstable-overlay = final: prev: { unstable = import nixpkgs-unstable { inherit system; config.allowUnfree = true; }; }; pkgs = import nixpkgs-stable { inherit system; config.allowUnfree = true; overlays = [ unstable-overlay ]; }; # Does not follow symlinks listNixFilesRec = dir: pkgs.lib.lists.flatten (pkgs.lib.attrsets.mapAttrsToList (name: value: let path = "${toString dir}/${name}"; in if value == "directory" && builtins.pathExists path then listNixFilesRec path else if value == "regular" && pkgs.lib.hasSuffix ".nix" name then path else [ ]) (builtins.readDir dir)); in { homeConfigurations."julian" = home-manager.lib.homeManagerConfiguration { inherit pkgs; # Specify your home configuration modules here, for example, # the path to your home.nix. modules = [ ./home-manager/home.nix ] ++ listNixFilesRec ./home-manager/modules; # Optionally use extraSpecialArgs # to pass through arguments to home.nix extraSpecialArgs = { inherit inputs; }; }; }; }