{ description = "grimmauld-nixos"; inputs = { nixpkgs = { url = "github:NixOS/nixpkgs/nixos-unstable"; # url = "git+file:///home/grimmauld/coding/nixpkgs"; }; nixpkgs-stable = { url = "github:NixOS/nixpkgs/nixos-23.11"; }; chaotic = { url = "github:chaotic-cx/nyx/nyxpkgs-unstable"; inputs.nixpkgs.follows = "nixpkgs"; }; agenix = { url = "github:ryantm/agenix"; inputs.nixpkgs.follows = "nixpkgs"; }; nix-gaming = { url = "github:fufexan/nix-gaming"; inputs.nixpkgs.follows = "nixpkgs"; }; nix-locate = { url = "github:nix-community/nix-index"; inputs.nixpkgs.follows = "nixpkgs"; }; hammering = { url = "github:jtojnar/nixpkgs-hammering"; inputs.nixpkgs.follows = "nixpkgs"; }; }; outputs = inputs @ { self, nix-gaming, agenix, hammering, nixpkgs, nixpkgs-stable, nix-locate, chaotic, ... }: let patches = [ { # tlpui url = "https://patch-diff.githubusercontent.com/raw/NixOS/nixpkgs/pull/305278.patch"; hash = "sha256-8RvPI8Id+Ttgv07IMBTAxkSc+K00WhiWgdgrCcULd7o="; } { # xdg term url = "https://patch-diff.githubusercontent.com/raw/NixOS/nixpkgs/pull/303225.patch"; hash = "sha256-+CBCMeBc5NqtjaUUTX1DBKhlFlKf1G6ovWrAo6xHH+I="; } ]; customNixosSystem = system: definitions: let stable = import nixpkgs-stable { inherit system; config.allowUnfree = true; }; overlays = if (builtins.hasAttr "overlays" definitions) then definitions.overlays else [ ]; unpatched = nixpkgs.legacyPackages.${system}; patched = unpatched.applyPatches { name = "nixpkgs-patched"; src = inputs.nixpkgs; patches = map unpatched.fetchpatch patches; }; nixosSystem = import (patched + "/nixos/lib/eval-config.nix"); in nixosSystem ({ inherit system; modules = definitions.modules ++ [ ({ config, lib, ... }: { nixpkgs.overlays = map (f: (final: prev: (import f { inherit final prev lib config; }))) overlays; }) ]; specialArgs = { inherit inputs system stable; }; } // builtins.removeAttrs definitions [ "overlays" "modules" ]); in { nixosConfigurations = { grimmauld-nixos = customNixosSystem "x86_64-linux" { overlays = import ./overlays; modules = [ agenix.nixosModules.default chaotic.nixosModules.default nix-gaming.nixosModules.pipewireLowLatency ./common ./specific/grimm-nixos-laptop/configuration.nix ./configuration.nix ./modules/users.nix ./modules/system-packages.nix ./modules/kvm.nix ]; }; }; }; }