{ description = "The nix flake for all my systems"; inputs = { nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; neovim.url = "github:neovim/neovim?dir=contrib"; neovim.inputs.nixpkgs.follows = "nixpkgs"; neovim.inputs.flake-utils.follows = "utils"; home-manager.url = "github:nix-community/home-manager"; home-manager.inputs.nixpkgs.follows = "nixpkgs"; nur.url = "github:nix-community/NUR"; utils.url = "github:gytis-ivaskevicius/flake-utils-plus"; }; outputs = { self, nixpkgs, utils, home-manager, neovim, nur, ... }: let modules = { home = [ ./users/relms/home.nix ]; nixos = { common = [ ./common/personal.nix ./common/nix.nix ./devices/common.nix ]; dev = [ ./common/dev/docker.nix ]; desktops = { common = [ ./common/desktop/apps.nix ./common/desktop/fonts.nix ./common/desktop/media.nix ./common/desktop/xorg.nix ]; gnome = [ ./common/desktop/gnome.nix ]; }; }; }; pkgs = import nixpkgs { system = "x86_64-linux"; overlays = [nur.overlay (utils.lib.genPkgOverlay neovim "neovim")]; }; in { nixosConfigurations = { skynet = nixpkgs.lib.nixosSystem { inherit pkgs; system = "x86_64-linux"; modules = modules.nixos.common ++ modules.nixos.dev ++ modules.nixos.desktops.common ++ modules.nixos.desktops.gnome ++ [ ./common/desktop/drivers/skynet.nix ./devices/skynet/base.nix ./devices/skynet/hardware.nix ]; }; }; homeConfigurations.relms = home-manager.lib.homeManagerConfiguration { inherit pkgs; modules = modules.home; }; }; }