Files
FxNet/flake.nix

140 lines
3.8 KiB
Nix

{
description = "Fxnet system configurations";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.11";
nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixos-unstable";
nixpkgs-master.url = "github:NixOS/nixpkgs/master";
home-manager = {
url = "github:nix-community/home-manager/release-25.11";
inputs.nixpkgs.follows = "nixpkgs";
};
photocatalog = {
url = "github:derfenix/photocatalog";
inputs.nixpkgs.follows = "nixpkgs";
};
disko = {
url = "github:nix-community/disko/latest";
inputs.nixpkgs.follows = "nixpkgs";
};
raspberry-pi-nix = {
url = "github:nix-community/raspberry-pi-nix/master";
inputs.nixpkgs.follows = "nixpkgs";
};
nixos-hardware = {
url = "github:NixOS/nixos-hardware/master";
};
nix-flatpak = {
url = "github:gmodena/nix-flatpak";
};
};
outputs =
{
self,
nixpkgs,
nixpkgs-unstable,
nixpkgs-master,
...
}@inputs:
let
lib = nixpkgs.lib;
timeZone = "Europe/Moscow";
stateVersion = "25.05";
hmModules = builtins.map (name: ./modules/hm + "/${name}") (
builtins.attrNames (builtins.readDir ./modules/hm)
);
sysModules = builtins.map (name: ./modules/sys + "/${name}") (
builtins.attrNames (builtins.readDir ./modules/sys)
);
pkgsSettings = (
system:
import nixpkgs {
inherit system;
config.allowUnfree = true;
}
);
pkgsUnstableSettings =
system:
import nixpkgs-unstable {
inherit system;
config.allowUnfree = true;
};
pkgsMasterSettings =
system:
import nixpkgs-master {
inherit system;
config.allowUnfree = true;
};
hosts = import ./hosts.nix;
hostNames = builtins.attrNames hosts;
commonModules = [
(
{ lib, pkgs, ... }:
{
system.stateVersion = stateVersion;
time.timeZone = lib.mkDefault timeZone;
home-manager = {
backupFileExtension = ".bak";
useGlobalPkgs = true;
useUserPackages = true;
sharedModules = hmModules ++ [
(
{ osConfig, ... }:
{
home.stateVersion = osConfig.system.stateVersion;
}
)
inputs.nix-flatpak.homeManagerModules.nix-flatpak
];
extraSpecialArgs = {
inherit inputs;
pkgsUnstable = pkgsUnstableSettings pkgs.system;
pkgsMaster = pkgsMasterSettings pkgs.system;
hosts = hosts;
};
};
}
)
inputs.nix-flatpak.nixosModules.nix-flatpak
inputs.home-manager.nixosModules.home-manager
inputs.photocatalog.nixosModules.photocatalog
inputs.disko.nixosModules.disko
./options.nix
./nix.nix
]
++ sysModules;
in
{
nixosConfigurations = lib.genAttrs hostNames (
name:
let
host = hosts.${name};
in
if host ? system then
inputs.nixpkgs.lib.nixosSystem {
system = host.system;
specialArgs = {
inherit inputs;
pkgsUnstable = pkgsUnstableSettings host.system;
pkgsMaster = pkgsMasterSettings host.system;
hosts = hosts;
quirks = (quirks: (import ./quirks { inherit quirks; }));
};
pkgs = pkgsSettings host.system;
modules = commonModules ++ [
./hosts/${name}
./hosts/${name}/hardware-configuration.nix
./roles/${host.role}.nix
];
}
else
{ }
);
};
}