| 9 Feb 2024 |
treed | Unsure. It comes for free though | 01:21:23 |
treed | https://nixos.org/manual/nixos/unstable/options | 01:21:49 |
treed | mentioned there, only defined for nixos | 01:21:58 |
treed | Probably not that different from what yours does in the end though | 01:22:38 |
pgibson | I get error: undefined variable 'modulesPath', but maybe I'm putting it in the wrong spot | 01:23:11 |
treed | It needs to be defined as an input to the file being imported, like where the file starts with { pkgs, config, ... }: | 01:23:46 |
pgibson | my-host = { name, nodes, pkgs, ... }: {
imports = [
#(nixpkgs + "/nixos/modules/virtualisation/digital-ocean-config.nix")
(modulesPath + "/nixos/modules/virtualisation/digital-ocean-config.nix")
];
| 01:23:56 |
pgibson | Ahh right | 01:24:08 |
treed | ah, put it between pkgs and ... | 01:24:11 |
treed | It's one of the module arguments | 01:25:11 |
treed | oh, and you'd want to remove /nixos/modules. I think that's included | 01:25:55 |
pgibson | Yes that's working thanks - looks a bit cleaner | 01:27:09 |
pgibson | Next question - I have a separate flake that builds a docker image that I can run that locally with podman. How do I go about deploying that as a systemd service on my droplet? | 01:45:03 |
treed | Does the flake define a service module, or something else? | 01:45:24 |
treed | Oh, probably not. | 01:45:42 |
pgibson | No at the moment it just builds the image | 01:45:50 |
treed | Assuming that the image you want is a flake output, you'd need to add it as an input to your flake, and then you can make use of its outputs however you need, presumably by putting the image in some service config. I don't have any experience with defining podman containers declaratively, so I'm not sure what the best way to handle that part would be. | 01:47:00 |
pgibson | The docker image flake is something like:
{
description = "Some Docker image";
outputs = { self, nixpkgs }: {
dockerImageFor = { name, system }:
...
dockerImages = {
site1 = self.dockerImageFor (import ./site1.nix);
site2 = self.dockerImageFor (import ./site2.nix);
};
};
}
| 01:55:25 |
pgibson | It produces a result symlink to the actual image, which you can podman load -i result | 01:56:15 |
treed | If you include that flake as in input (and then include it in the arguments to outputs, then you should be able to reference as like someDockerImage.dockerImages.site1 | 01:56:37 |
treed | Although I'm not sure how to get that into podman declaratively | 01:57:27 |
pgibson | Okay thanks I'll give it a go - appreciate your help | 01:57:49 |
treed | Looks like you might be able to use a bit like in https://nixos.wiki/wiki/Podman | 01:58:08 |
treed | but instead of image = whatever, you'd want imageFile = dockerImages.site1 | 01:58:36 |
treed | I think that might do it | 01:58:48 |
pgibson | I think I recall seeing other people pushing the images to the Docker registry so they could then use the registry url in the Podman service, but hoping to avoid that if possible | 01:58:52 |
treed | Depending on exactly how podman load works I guess | 01:59:14 |
treed | But it's certainly where I'd start | 01:59:28 |
pgibson | Yeah that's working, thanks again treed . You still need to specify image = "the-actual-image-name" as well as imageFile = someDockerImage.dockerImages.site1 | 02:54:54 |
treed | Oh, interesting. | 02:55:14 |