{ 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-flake = { url = "git+ssh://gitea@pi1.odie.intranet/odie/neovim-flake.git"; }; 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-flake.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; }; pkgs = mkPkgs "x86_64-linux"; extraSpecialArgs = { inherit inputs outputs vars; }; in rec { homeModules = rec { base = import ./modules/base.nix; gui = import ./modules/gui.nix; shell = import ./modules/shell.nix; dev = import ./modules/dev.nix; }; homeConfigurations = rec { odie-shell = home-manager.lib.homeManagerConfiguration { inherit pkgs extraSpecialArgs; modules = [ homeModules.base homeModules.shell ]; }; odie-dev = home-manager.lib.homeManagerConfiguration { inherit pkgs extraSpecialArgs; modules = [ inputs.neovim-flake.homeModules.neovim-ide homeModules.base homeModules.shell homeModules.dev ]; }; odie-gui = home-manager.lib.homeManagerConfiguration { inherit pkgs extraSpecialArgs; modules = [ inputs.neovim-flake.homeModules.neovim-ide homeModules.base homeModules.shell homeModules.dev homeModules.gui { gui.enable = true; } ]; }; odie-gui-nixGL = home-manager.lib.homeManagerConfiguration { inherit pkgs extraSpecialArgs; modules = [ inputs.neovim-flake.homeModules.neovim-ide homeModules.base homeModules.shell homeModules.dev homeModules.gui { gui.enable = true; services.nixGL.enable = true; } ]; }; odie = odie-gui; }; } // 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 ]; }; }; }); }