Run Pelican Panel on NixOS
Warning
This readme assumes you did not modify default settings. Some commands may need to change if you do.
Update your flake
inputs = {
nixpkgs.url = "nixpkgs/nixos-25.05";
pelican-panel = {
url = "github:mpeterson2/nix-pelican-panel";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs =
{
nixpkgs,
...
}@inputs:
{
nixosConfigurations = {
<hostname> = nixpkgs.lib.nixosSystem {
specialArgs = { inherit inputs; };
modules = [ ... ];
};
};
};Update your configuration.nix
{ inputs, config, ... }:
{
imports = [
inputs.pelican-panel.nixosModules.pelican-panel
];
services.pelican-panel = {
enable = true;
nginx.enable = true;
};
}Setup the env file
Run sudo -u pelican-panel pelican-panel-artisan p:environment:setup.
You can now modify the env in /srv/http/pelican-panel/.env.
Note: prior to running this, you may see some services failing. These services are typically enabled when you install the panel.
Run migrations
Run sudo -u pelican-panel pelican-panel-artisan migrate.
Install your panel
Navigate to your pelican panel's /installer route and follow the instructions. When it comes to the page where it asks you to run commands, you can ignore it, they're already ran for you.
Setup Wings
On the panel, create a wing, note the config and translate it to nix config:
{ inputs, config, ... }:
{
imports = [
inputs.pelican-panel.nixosModules.wings
];
services.wings = {
enable = true;
node = {
uuid = "<node-uuid>";
tokenId = "<node-token>";
# Recommended to use sops or another form of encrypting this value
tokenPath = config.sops.secrets.wings-token.path;
remote = "<node-remote>";
};
};
}Note: This package provides the rest of the config as defaults, so no need to edit if you want to keep those.