Move to different structure
parent
05c996db50
commit
bcec9a18c3
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
domain = "staging.kallestruik.nl";
|
||||
shortDomain = "khs.li";
|
||||
}
|
11
flake.nix
11
flake.nix
|
@ -11,11 +11,14 @@
|
|||
let
|
||||
outputs = self.outputs;
|
||||
utils = import ./utils.nix { inherit nixpkgs inputs outputs; };
|
||||
|
||||
homelabConfig = import ./config.nix;
|
||||
roles = import ./roles { inherit utils; };
|
||||
hosts = import ./hosts.nix { inherit homelabConfig roles; };
|
||||
in
|
||||
{
|
||||
nixosConfigurations = {
|
||||
"base" = utils.mkSystem [ ];
|
||||
"nix-test" = utils.mkSystem [ ./systems/nix-test.nix ];
|
||||
};
|
||||
nixosConfigurations = nixpkgs.lib.mapAttrs (
|
||||
hostname: value: (utils.mkSystem value // { inherit hostname; })
|
||||
) hosts;
|
||||
};
|
||||
}
|
||||
|
|
|
@ -0,0 +1,25 @@
|
|||
{
|
||||
roles,
|
||||
homelabConfig,
|
||||
...
|
||||
}:
|
||||
let
|
||||
hlConfig = homelabConfig;
|
||||
in
|
||||
{
|
||||
base = {
|
||||
roles = [ ];
|
||||
config = { };
|
||||
stateVersion = "24.05";
|
||||
};
|
||||
|
||||
nix-test = {
|
||||
roles = with roles; [
|
||||
sonarr
|
||||
];
|
||||
config = {
|
||||
sonarr.domain = "sonarr.${hlConfig.domain}";
|
||||
};
|
||||
stateVersion = "24.05";
|
||||
};
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
utils,
|
||||
}:
|
||||
{
|
||||
sonarr = utils.mkRole (import ./sonarr.nix);
|
||||
}
|
|
@ -0,0 +1,43 @@
|
|||
{
|
||||
name = "Sonarr";
|
||||
description = ''
|
||||
Sonarr PVR
|
||||
'';
|
||||
|
||||
traefikRoutes =
|
||||
{
|
||||
hostname,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
[
|
||||
{
|
||||
name = "${hostname}-sonarr";
|
||||
rule = "Host(`${config.sonarr.domain}`)";
|
||||
target = "http://${hostname}.lan:8989";
|
||||
|
||||
}
|
||||
];
|
||||
|
||||
nixosModules =
|
||||
{ lib, ... }:
|
||||
{
|
||||
options.sonarr = {
|
||||
domain = lib.mkOption {
|
||||
type = lib.types.listOf lib.types.str;
|
||||
};
|
||||
};
|
||||
|
||||
config = {
|
||||
# Enable the sonarr service
|
||||
services.sonarr = {
|
||||
enable = true;
|
||||
openFirewall = true;
|
||||
group = "media";
|
||||
};
|
||||
|
||||
# Ensure that the media group exists
|
||||
users.groups.media = { };
|
||||
};
|
||||
};
|
||||
}
|
25
utils.nix
25
utils.nix
|
@ -6,15 +6,30 @@
|
|||
}:
|
||||
{
|
||||
mkSystem =
|
||||
configs:
|
||||
hostConfig:
|
||||
nixpkgs.lib.nixosSystem {
|
||||
system = "x86_64-linux";
|
||||
specialArgs = {
|
||||
inherit inputs outputs;
|
||||
inherit inputs outputs hostConfig;
|
||||
};
|
||||
modules = [
|
||||
modules = [
|
||||
inputs.impermanence.nixosModules.impermanence
|
||||
./systems/base/configuration.nix
|
||||
] ++ configs;
|
||||
# inputs.sops-nix.nixosModules.sops
|
||||
|
||||
./systems/base/configuration.nix
|
||||
(
|
||||
{ ... }:
|
||||
{
|
||||
networking.hostName = hostConfig.hostname;
|
||||
system.stateVersion = hostConfig.stateVersion;
|
||||
}
|
||||
)
|
||||
({ ... }: hostConfig.config)
|
||||
] ++ builtins.map (role: role.nixosModule) hostConfig.roles;
|
||||
};
|
||||
|
||||
mkRole = cfg: {
|
||||
inherit (cfg) name description nixosModule;
|
||||
traefikRoutes = cfg.traefikRoutes or ({ ... }: [ ]);
|
||||
};
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue