{ description = "A very basic flake"; inputs = { nixpkgs.url = "github:nixos/nixpkgs/nixos-23.11"; nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable"; flake-utils.url = "github:numtide/flake-utils"; home-manager = { url = "github:nix-community/home-manager/release-23.11"; }; neovim-nightly-overlay = { url = "github:nix-community/neovim-nightly-overlay"; }; neovim = { url = "git+ssh://gitea@pi1.odie.intranet/odie/neovim-flake"; #url = "/home/odie/Code/nix/neovim-config"; }; nur.url = "github:nix-community/NUR"; nixgl.url = "github:nix-community/nixGL"; }; outputs = inputs@{ self, nixpkgs, flake-utils, home-manager, ... }: let inherit (self) outputs; vars = rec { name = "Patrick Neff"; username = "odie"; homeDirectory = "/home/${username}"; locale = "de_DE.UTF-8"; email = "odie86@gmail.com"; }; inputOverlays = [ inputs.neovim-nightly-overlay.overlays.default inputs.neovim.overlays.default inputs.nur.overlay inputs.nixgl.overlay ]; unstableOverlay = final: _prev: { unstable = import inputs.nixpkgs-unstable { inherit (final) system; config.allowUnfree = true; overlays = inputOverlays; }; }; overlays = [ unstableOverlay ] ++ inputOverlays; mkPkgs = system: import nixpkgs { inherit system overlays; config.allowUnfree = true; }; in rec { homeManagerModules = rec { full = [ (import ./modules) ]; }; homeConfigurations = { "odie-full" = home-manager.lib.homeManagerConfiguration { pkgs = mkPkgs "x86_64-linux"; extraSpecialArgs = { inherit inputs outputs vars; }; modules = homeManagerModules.full; }; }; } // flake-utils.lib.eachDefaultSystem (system: let pkgs = mkPkgs system; in { formatter = pkgs.alejandra; devShells = { default = pkgs.mkShell { name = "home-manager"; buildInputs = with pkgs; [ inputs.home-manager.packages.${system}.default ]; }; }; }); }