116 lines
3.1 KiB
Nix
116 lines
3.1 KiB
Nix
{
|
|
inputs = {
|
|
agenix = {
|
|
url = "github:ryantm/agenix";
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
};
|
|
home-manager = {
|
|
url = "github:nix-community/home-manager";
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
};
|
|
impermanence.url = "github:nix-community/impermanence";
|
|
nixos-mailserver = {
|
|
url = "gitlab:simple-nixos-mailserver/nixos-mailserver";
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
};
|
|
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
|
|
nix-zulip = {
|
|
url = "git+https://git.afnix.fr/nix-zulip/nix-zulip";
|
|
flake = false;
|
|
};
|
|
noshell = {
|
|
url = "github:viperML/noshell";
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
};
|
|
nur = {
|
|
url = "github:nix-community/NUR";
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
};
|
|
nvf = {
|
|
url = "github:notashelf/nvf";
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
};
|
|
phoenix = {
|
|
url = "github:celenityy/Phoenix";
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
};
|
|
stylix = {
|
|
url = "github:nix-community/stylix";
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
};
|
|
};
|
|
outputs = {
|
|
agenix,
|
|
home-manager,
|
|
impermanence,
|
|
nixos-mailserver,
|
|
nixpkgs,
|
|
nix-zulip,
|
|
noshell,
|
|
nur,
|
|
nvf,
|
|
phoenix,
|
|
stylix,
|
|
...
|
|
}: let
|
|
nix-zulip' = (import "${nix-zulip}/nix/default.nix" {}).output;
|
|
machines = import ./machines.nix;
|
|
configuration = machine: modules:
|
|
nixpkgs.lib.nixosSystem {
|
|
system = machine.system;
|
|
specialArgs = {inherit machine;};
|
|
modules =
|
|
modules
|
|
++ [
|
|
./users.nix
|
|
./secrets.nix
|
|
./modules/nixos/common.nix
|
|
impermanence.nixosModules.impermanence
|
|
agenix.nixosModules.default
|
|
nixos-mailserver.nixosModule
|
|
noshell.nixosModules.default
|
|
phoenix.nixosModules.default
|
|
nix-zulip'.nixosModules.zulip
|
|
{
|
|
nixpkgs.overlays = [
|
|
agenix.overlays.default
|
|
nur.overlays.default
|
|
nix-zulip'.overlays.default
|
|
];
|
|
}
|
|
]
|
|
++ machine.modules;
|
|
};
|
|
configurationWithHomeManager = machine: (configuration machine
|
|
[
|
|
home-manager.nixosModules.home-manager
|
|
{
|
|
home-manager.useGlobalPkgs = true;
|
|
home-manager.extraSpecialArgs = {inherit machine;};
|
|
home-manager.users =
|
|
builtins.mapAttrs
|
|
(name: value: value)
|
|
(
|
|
nixpkgs.legacyPackages.${machine.system}.lib.genAttrs
|
|
machine.users
|
|
(
|
|
name: {
|
|
imports = [
|
|
agenix.homeManagerModules.default
|
|
stylix.homeModules.stylix
|
|
nvf.homeManagerModules.default
|
|
./users/${name}/home.nix
|
|
];
|
|
}
|
|
)
|
|
);
|
|
}
|
|
]);
|
|
in {
|
|
nixosConfigurations =
|
|
builtins.mapAttrs
|
|
(hostname: value: configurationWithHomeManager value)
|
|
machines;
|
|
};
|
|
}
|