grimm-nixos-laptop/flake.nix

93 lines
2.9 KiB
Nix

{
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
];
};
};
};
}