nixos-config/flake.nix
2022-07-03 15:49:27 +02:00

128 lines
3.9 KiB
Nix

{
description = "Nixos configuration flake";
inputs = {
accentor = {
url = "github:accentor/flake";
inputs = {
api.follows = "accentor-api";
devshell.follows = "devshell";
flake-utils.follows = "flake-utils";
nixpkgs.follows = "nixpkgs";
web.follows = "accentor-web";
};
};
accentor-api = {
url = "github:accentor/api";
inputs = {
devshell.follows = "devshell";
flake-utils.follows = "flake-utils";
nixpkgs.follows = "nixpkgs";
};
};
accentor-web = {
url = "github:accentor/web";
inputs = {
devshell.follows = "devshell";
flake-utils.follows = "flake-utils";
nixpkgs.follows = "nixpkgs";
};
};
agenix = {
url = "github:ryantm/agenix";
inputs.nixpkgs.follows = "nixpkgs";
};
devshell = {
url = "github:numtide/devshell";
inputs = {
flake-utils.follows = "flake-utils";
nixpkgs.follows = "nixpkgs";
};
};
emacs-overlay = {
url = "github:nix-community/emacs-overlay";
inputs = {
nixpkgs.follows = "nixpkgs";
flake-utils.follows = "flake-utils";
};
};
flake-utils.url = "github:numtide/flake-utils";
home-manager = {
url = "github:nix-community/home-manager";
inputs = {
nixpkgs.follows = "nixpkgs";
utils.follows = "flake-utils";
};
};
nixos-mailserver = {
url = "gitlab:simple-nixos-mailserver/nixos-mailserver";
inputs = {
nixpkgs.follows = "nixpkgs";
utils.follows = "flake-utils";
};
};
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
nur.url = "github:nix-community/NUR";
tetris = {
url = "github:chvp/tetris";
inputs = {
devshell.follows = "devshell";
flake-utils.follows = "flake-utils";
nixpkgs.follows = "nixpkgs";
};
};
utils = {
url = "github:gytis-ivaskevicius/flake-utils-plus";
inputs = {
flake-utils.follows = "flake-utils";
devshell.follows = "devshell";
};
};
};
outputs = inputs@{ self, nixpkgs, accentor, accentor-api, accentor-web, agenix, devshell, emacs-overlay, flake-utils, home-manager, nixos-mailserver, nur, tetris, utils }:
utils.lib.mkFlake {
inherit self inputs;
channels.nixpkgs = {
input = nixpkgs;
patches = builtins.map (patch: ./patches + "/${patch}") (builtins.filter (x: x != ".keep") (builtins.attrNames (builtins.readDir ./patches)));
overlaysBuilder = _: [
accentor.overlay
devshell.overlay
emacs-overlay.overlay
(self: super: {
tetris = tetris.packages.${self.system}.default;
})
nur.overlay
];
};
hostDefaults = {
modules = [
{ nix.generateRegistryFromInputs = true; }
accentor.nixosModule
agenix.nixosModules.age
home-manager.nixosModule
nixos-mailserver.nixosModule
./modules
];
};
hosts = {
kharbranth.modules = [ ./machines/kharbranth ];
kholinar.modules = [ ./machines/kholinar ];
lasting-integrity.modules = [ ./machines/lasting-integrity ];
urithiru.modules = [ ./machines/urithiru ];
};
outputsBuilder = channels:
let pkgs = channels.nixpkgs; in
{
devShells =
let
ls = builtins.readDir ./shells;
files = builtins.filter (name: ls.${name} == "regular") (builtins.attrNames ls);
shellNames = builtins.map (filename: builtins.head (builtins.split "\\." filename)) files;
nameToValue = name: import (./shells + "/${name}.nix") { inherit pkgs inputs; };
in
builtins.listToAttrs (builtins.map (name: { inherit name; value = nameToValue name; }) shellNames);
};
};
}