{ 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"; nixos-wsl.url = "github:nix-community/nixos-wsl"; nixos-wsl.inputs.nixpkgs.follows = "nixpkgs"; nixos-wsl.inputs.flake-utils.follows = "utils"; }; outputs = { self, nixpkgs, utils, home-manager, neovim, nur, nixos-wsl, ... }: let modules = { home = { common = [ ./users/relms/base.nix ./users/relms/shell.nix ]; dev = [ ./users/relms/dev.nix ]; gui = [ ./users/relms/gui.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/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 ]; }; wsl = nixpkgs.lib.nixosSystem { inherit pkgs; system = "x86_64-linux"; modules = [ nixos-wsl.nixosModules.wsl ./common/personal.nix ./common/nix.nix ./devices/wsl/base.nix ]; }; }; homeConfigurations.relms = home-manager.lib.homeManagerConfiguration { inherit pkgs; modules = modules.home.common ++ modules.home.dev ++ modules.home.gui; }; formatter.x86_64-linux = nixpkgs.legacyPackages.x86_64-linux.alejandra; }; }