{ description = "nixconfig"; inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; nixpkgs-stable.url = "github:NixOS/nixpkgs/nixos-25.11"; # Hardware and gaming nixos-hardware.url = "github:NixOS/nixos-hardware/master"; openmw-nix = { url = "git+https://codeberg.org/PopeRigby/openmw-nix.git"; inputs.nixpkgs.follows = "nixpkgs"; }; nix-gaming-edge = { url = "github:powerofthe69/nix-gaming-edge"; inputs.nixpkgs.follows = "nixpkgs"; }; # System Utilities sops-nix = { url = "github:Mic92/sops-nix"; inputs.nixpkgs.follows = "nixpkgs"; }; home-manager = { url = "github:nix-community/home-manager/master"; inputs.nixpkgs.follows = "nixpkgs"; }; disko = { url = "github:nix-community/disko/latest"; inputs.nixpkgs.follows = "nixpkgs"; }; # UI and apps niri = { url = "github:sodiboo/niri-flake"; inputs.nixpkgs.follows = "nixpkgs"; }; waybar = { url = "github:Alexays/Waybar"; inputs.nixpkgs.follows = "nixpkgs"; }; yazi = { url = "github:sxyazi/yazi"; inputs.nixpkgs.follows = "nixpkgs"; }; satty = { url = "github:gabm/Satty"; inputs.nixpkgs.follows = "nixpkgs"; }; spicetify-nix = { url = "github:Gerg-L/spicetify-nix"; inputs.nixpkgs.follows = "nixpkgs"; }; # Editors nixvim = { url = "github:nix-community/nixvim"; inputs.nixpkgs.follows = "nixpkgs"; }; nvf = { url = "github:NotAShelf/nvf"; inputs.nixpkgs.follows = "nixpkgs"; }; neovim-nightly-overlay = { url = "github:nix-community/neovim-nightly-overlay"; inputs.nixpkgs.follows = "nixpkgs"; }; # Other omnisearch = { url = "git+https://git.bwaaa.monster/omnisearch"; inputs.nixpkgs.follows = "nixpkgs"; }; otter-launcher = { url = "github:kuokuo123/otter-launcher"; inputs.nixpkgs.follows = "nixpkgs"; }; fsel = { url = "github:Mjoyufull/fsel"; inputs.nixpkgs.follows = "nixpkgs"; }; }; outputs = { self, nixpkgs, nixpkgs-stable, ... }@inputs: let mkHost = { hostname, user ? "adam", isStable ? false, path ? ./hosts/${hostname}/configuration.nix, }: let basePkgs = if isStable then nixpkgs-stable else nixpkgs; actualPath = if path != null then path else ./hosts/${hostname}/configuration.nix; in basePkgs.lib.nixosSystem { specialArgs = { inherit inputs; username = user; pkgs-unstable = import inputs.nixpkgs { config.allowUnfree = true; }; pkgs-stable = import inputs.nixpkgs-stable { config.allowUnfree = true; }; }; modules = [ actualPath { networking.hostName = hostname; } ]; }; in { nixosConfigurations = { szpont = mkHost { hostname = "szpont"; path = ./hosts/desktop/configuration.nix; }; laptop = mkHost { hostname = "laptop"; }; thinkpad = mkHost { hostname = "thinkpad"; }; pendrive = mkHost { hostname = "pendrive"; user = "user"; }; }; }; }