| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- # Auto-generated by compose2nix.
- { pkgs, lib, config, ... }:
- {
- # Runtime
- virtualisation.podman = {
- enable = true;
- autoPrune.enable = true;
- dockerCompat = true;
- };
- # Enable container name DNS for all Podman networks.
- networking.firewall.interfaces = let
- matchAll = if !config.networking.nftables.enable then "podman+" else "podman*";
- in {
- "${matchAll}".allowedUDPPorts = [ 53 ];
- };
- virtualisation.oci-containers.backend = "podman";
- ø
- # Containers
- virtualisation.oci-containers.containers."navidrome-navidrome" = {
- image = "deluan/navidrome:latest";
- volumes = [
- "/opt/docker-containers/navidrome/data:/data:rw"
- "/opt/docker-containers/navidrome/music:/music:ro"
- ];
- ports = [
- "4533:4533/tcp"
- ];
- user = "1000:1000";
- log-driver = "journald";
- extraOptions = [
- "--network-alias=navidrome"
- "--network=navidrome_default"
- ];
- };
- systemd.services."podman-navidrome-navidrome" = {
- serviceConfig = {
- Restart = lib.mkOverride 90 "always";
- };
- after = [
- "podman-network-navidrome_default.service"
- ];
- requires = [
- "podman-network-navidrome_default.service"
- ];
- partOf = [
- "podman-compose-navidrome-root.target"
- ];
- wantedBy = [
- "podman-compose-navidrome-root.target"
- ];
- };
- # Networks
- systemd.services."podman-network-navidrome_default" = {
- path = [ pkgs.podman ];
- serviceConfig = {
- Type = "oneshot";
- RemainAfterExit = true;
- ExecStop = "podman network rm -f navidrome_default";
- };
- script = ''
- podman network inspect navidrome_default || podman network create navidrome_default
- '';
- partOf = [ "podman-compose-navidrome-root.target" ];
- wantedBy = [ "podman-compose-navidrome-root.target" ];
- };
- # Root service
- # When started, this will automatically create all resources and start
- # the containers. When stopped, this will teardown all resources.
- systemd.targets."podman-compose-navidrome-root" = {
- unitConfig = {
- Description = "Root target generated by compose2nix.";
- };
- wantedBy = [ "multi-user.target" ];
- };
- }
|