NixOS Containers: Difference between revisions
Simplify and cleanup page |
Flake containers |
||
Line 114: | Line 114: | ||
Further informations are available in the {{manual:nixos|sec=#ch-containers|chapter=NixOS manual}}. | Further informations are available in the {{manual:nixos|sec=#ch-containers|chapter=NixOS manual}}. | ||
== Tips and tricks == | |||
==== Define and create nixos-container from a Flake file ==== | |||
We can define and create a custom container called <code>container</code> from a file stored as <code>flake.nix</code>. In this case we use the unstable branch of the nixpkgs repository as a source.<syntaxhighlight lang="nix"> | |||
{ | |||
inputs.nixpkgs.url = "nixpkgs/nixos-unstable"; | |||
outputs = { self, nixpkgs }: { | |||
nixosConfigurations.container = nixpkgs.lib.nixosSystem { | |||
system = "x86_64-linux"; | |||
modules = | |||
[ ({ pkgs, ... }: { | |||
boot.isContainer = true; | |||
networking.firewall.allowedTCPPorts = [ 80 ]; | |||
services.httpd = { | |||
enable = true; | |||
adminAddr = "morty@example.org"; | |||
}; | |||
}) | |||
]; | |||
}; | |||
}; | |||
} | |||
</syntaxhighlight>To create and run container enter following commands. In this example the <code>flake.nix</code> file is in the same directory.<syntaxhighlight lang="sh"> | |||
# nixos-container create flake-test --flake . | |||
host IP is 10.233.4.1, container IP is 10.233.4.2 | |||
# nixos-container start flake-test | |||
</syntaxhighlight> | |||
== Troubleshooting == | == Troubleshooting == | ||
=== I have changed the host's channel and some services are no longer functional === | ==== I have changed the host's channel and some services are no longer functional ==== | ||
'''Symptoms:''' | '''Symptoms:''' | ||
* Lost data in PostgreSQL database | * Lost data in PostgreSQL database |