| 31 Jan 2024 |
@mariosangiorgio:matrix.org | I think I found my issue. To bring home-manager in scope I had to add inputs.home-manager.nixosModules.default to my import, similar to what you did to bring in sops.
Now everything builds fine, time to actually write some home manager configuration and see if it works | 22:37:30 |
| 3 Feb 2024 |
| @networkexception:chat.upi.li changed their profile picture. | 11:52:08 |
| 8 Feb 2024 |
| 98765abc joined the room. | 11:29:20 |
| pgibson joined the room. | 23:40:05 |
| 9 Feb 2024 |
pgibson | Hi, I'm a Nix newb and I'm trying to deploy a server to a DigitalOcean droplet with Colmena. I've got NixOS running on the droplet via a custom image. Do I need to reference/import "virtualisation/digital-ocean-image.nix" somewhere in my flake.nix? | 00:31:19 |
pgibson | Oh looks like this works imports = [ (nixpkgs + "/nixos/modules/virtualisation/digital-ocean-config.nix") ]; | 01:18:39 |
pgibson | I spent so long trying different combinations before asking, then found the solution about 10 minutes later 🤦 | 01:19:21 |
treed | FWIW, for something similar I have imports = [ (modulesPath + "/profiles/qemu-guest.nix") ]; | 01:20:07 |
treed | where modulesPath is an input to that file along with like config lib pkgs | 01:20:25 |
treed | I forget where it actually comes from, but it was the solution I found at some point | 01:20:39 |
treed | I guess it'd only work if you're importing the file that contains that line though? | 01:20:56 |
pgibson | Where does modulesPath come from? | 01:21:09 |
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 |