dots/flake.nix
2026-01-14 14:27:38 +11:00

106 lines
2.6 KiB
Nix

{
description = "NixOS configuration";
inputs = {
# keep-sorted start block=yes
agenix = {
url = "github:ryantm/agenix";
inputs.nixpkgs.follows = "nixpkgs";
};
copyparty.url = "github:9001/copyparty";
home-manager = {
url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs";
};
nix-citizen = {
url = "github:LovingMelody/nix-citizen";
inputs.nix-gaming.follows = "nix-gaming";
};
nix-gaming.url = "github:fufexan/nix-gaming";
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
nixvim = {
url = "github:nix-community/nixvim";
inputs.nixpkgs.follows = "nixpkgs";
};
nur = {
url = "github:nix-community/NUR";
inputs.nixpkgs.follows = "nixpkgs";
};
# zen-browser = {
# url = "github:0xc000022070/zen-browser-flake";
# inputs.nixpkgs.follows = "nixpkgs";
# };
# keep-sorted end
};
outputs =
{
# keep-sorted start
agenix,
home-manager,
nixpkgs,
nur,
# zen-browser,
# keep-sorted end
...
}@inputs:
let
commonSystem =
{
hostName ? "nixos",
userName ? "will",
system ? "x86_64-linux",
}:
let
util = import ./util.nix;
in
nixpkgs.lib.nixosSystem {
modules = [
./hosts/${hostName}/configuration.nix
nur.modules.nixos.default
home-manager.nixosModules.home-manager
{
home-manager = {
users.${userName}.imports = [
./hosts/${hostName}/home.nix
agenix.homeManagerModules.default
# zen-browser.homeModules.twilight
];
backupFileExtension = "backup";
extraSpecialArgs = {
inherit
inputs
hostName
userName
system
util
;
};
useGlobalPkgs = true;
useUserPackages = true;
};
}
];
specialArgs = {
inherit
inputs
hostName
userName
system
util
;
};
inherit system;
};
in
{
nixosConfigurations = {
desktop = commonSystem { hostName = "desktop"; };
laptop = commonSystem { hostName = "laptop"; };
server = commonSystem {
hostName = "server";
userName = "srv";
};
};
};
}