Getting Started¶
This guide shows how to add Nixflix to your NixOS configuration using flakes.
Prerequisites¶
- NixOS with flakes enabled
- Git for version control
- Basic familiarity with NixOS modules
- Some form of secrets management, like sops-nix
Enable Flakes¶
If you haven't already enabled flakes, add this to your configuration:
Adding Nixflix to Your Flake¶
Add Nixflix as an input to your flake.nix:
{
description = "My NixOS Configuration";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
nixflix = {
url = "github:kiriwalawren/nixflix";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs = {
self,
nixpkgs,
nixflix,
...
}: {
nixosConfigurations.yourhost = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
modules = [
./configuration.nix
nixflix.nixosModules.default
];
};
};
}
Minimal Configuration Example¶
Here's a minimal configuration to get started:
{
nixflix = {
enable = true;
mediaDir = "/data/media";
stateDir = "/data/.state";
nginx.enable = true;
postgres.enable = true;
sonarr = {
enable = true;
config = {
apiKey = {_secret = config.sops.secrets."sonarr/api_key".path;};
hostConfig.password = {_secret = config.sops.secrets."sonarr/password".path;};
};
};
radarr = {
enable = true;
config = {
apiKey = {_secret = config.sops.secrets."radarr/api_key".path;};
hostConfig.password = {_secret = config.sops.secrets."radarr/password".path;};
};
};
prowlarr = {
enable = true;
config = {
apiKey = {_secret = config.sops.secrets."prowlarr/api_key".path;};
hostConfig.password = {_secret = config.sops.secrets."prowlarr/password".path;};
};
};
sabnzbd = {
enable = true;
settings = {
misc.api_key = {_secret = config.sops.secrets."sabnzbd/api_key".path;};
};
};
jellyfin = {
enable = true;
users.admin = {
policy.isAdministrator = true;
password = {_secret = config.sops.secrets."jellyfin/admin_password".path;};
};
};
};
}
Next Steps¶
- Review the Basic Setup Example for a complete configuration
- See the Options Reference for all available settings