Skip to content

Commit

Permalink
Merge pull request #119 from hercules-ci/nixos-21.05-podman-preparation
Browse files Browse the repository at this point in the history
Add NixOS 21.05 to ci.nix
  • Loading branch information
roberth authored Jun 3, 2021
2 parents 8650557 + 3171cf1 commit 4a38050
Show file tree
Hide file tree
Showing 4 changed files with 37 additions and 13 deletions.
2 changes: 2 additions & 0 deletions .envrc
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
HOST_XDG_DATA_DIRS="${XDG_DATA_DIRS:-}"
eval "$(lorri direnv)"
export XDG_DATA_DIRS="${XDG_DATA_DIRS}:${HOST_XDG_DATA_DIRS}"

# Use system PKI
unset SSL_CERT_FILE
Expand Down
32 changes: 19 additions & 13 deletions docs/modules/ROOT/pages/index.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -61,11 +61,18 @@ Add this module to your NixOS configuration:
{ pkgs, ... }: {
environment.systemPackages = [
pkgs.arion
pkgs.docker # docker CLI will use podman socket

# Do install the docker CLI to talk to podman.
# Not needed when virtualisation.docker.enable = true;
pkgs.docker-client
];

# Arion works with Docker, but for NixOS-based containers, you need Podman
# since NixOS 21.05.
virtualisation.docker.enable = false;
virtualisation.podman.enable = true;
virtualisation.podman.dockerSocket.enable = true;
virtualisation.podman.defaultNetwork.dnsname.enable = true;

# Use your username instead of `myuser`
users.extraUsers.myuser.extraGroups = ["podman"];
Expand Down Expand Up @@ -125,16 +132,13 @@ Describe containers using NixOS-style modules. There are a few options:
};
};
}


```

==== NixOS: run only one systemd service

`examples/nixos-unit/arion-compose.nix`:

```nix

{
services.webserver = { config, pkgs, ... }: {

Expand All @@ -157,7 +161,6 @@ Describe containers using NixOS-style modules. There are a few options:
];
};
}

```

==== NixOS: run full OS
Expand Down Expand Up @@ -220,10 +223,10 @@ development environments while working on
https://www.hercules-ci.com[Hercules CI]. (It was also born out of
ancient Greek deities disguised as horses. More on that later.)

If you do want to use Arion for production environments, you’ll probably
want to either build normal container images or manage garbage
collection roots if you control the deployment host. Neither scenario is
made easier by arion at this time.
Arion can be used for simple single host deployments, using Docker's TLS
client verification, or https://search.nixos.org/options?channel=unstable&show=virtualisation.podman.networkSocket.enable&query=virtualisation.podman[`virtualisation.podman.networkSocket` options].
Remote deployments do not support `useHostStore`, although an SSH-based deployment method could support this.
Docker Swarm is not currently supported.

Arion has run successfully on Linux distributions other than NixOS, but we only perform CI for Arion on NixOS.

Expand Down Expand Up @@ -254,6 +257,8 @@ container.

Nope, it’s just Nix and Docker Compose under the hood.

It does xref:hercules-ci-effects:ROOT:reference/nix-functions/runArion.adoc[integrate] nicely though.

=== What about garbage collection?

Arion removes the need for garbage collecting docker images, delegating
Expand All @@ -266,8 +271,9 @@ generate images that can be used in production.

=== Why is my container not running latest code?

Restart it with `arion restart <name>` or if you've changed the image rebuild
them using `arion up -d --always-recreate-deps <name>`.
Rebuild the image using `arion up -d --always-recreate-deps <name>` or simply `arion up -d`.

Like `docker-compose restart`, `arion restart` does not update the image before starting.

=== What is messing with my environment variables?

Expand All @@ -278,11 +284,11 @@ reference a script from `pkgs.writeScript` or escape the dollar sign as

=== Why name it ``Arion``?

Arion comes from Greek mythology. Poseidon, the god of ~Docker~ the seas
Arion comes from Greek mythology. Poseidon, the god of Docker -- I mean the seas --
had his eye on Demeter. Demeter tried to trick him by disguising as a
horse, but Poseidon saw through the deception and they had Arion.

So Arion is a super fast divine horse; the result of some weird mixing.
Also it talks.

(And we feel morally obliged to name our stuff after Greek mythology)
(And we felt morally obliged to name our stuff after Greek mythology)
4 changes: 4 additions & 0 deletions nix/ci.nix
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,10 @@ dimension "Nixpkgs version" {
dockerSupportsSystemd = true;
nixosHasPodmanDockerSocket = false;
};
"nixos-21_05" = {
nixpkgsSource = "nixos-21.05";
enableDoc = true;
};
"nixos-unstable" = {
nixpkgsSource = "nixos-unstable";
enableDoc = true;
Expand Down
12 changes: 12 additions & 0 deletions nix/sources.json
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,18 @@
"url": "https://github.com/NixOS/nixpkgs/archive/0cfe5377e8993052f9b0dd56d058f8008af45bd9.tar.gz",
"url_template": "https://github.com/<owner>/<repo>/archive/<rev>.tar.gz"
},
"nixos-21.05": {
"branch": "nixos-21.05",
"description": "Nix Packages collection",
"homepage": null,
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "297970378b9437541c065f3fef26871397edd2d4",
"sha256": "1q5dnylr4w1xqn3qxx7hn0pn01pcwdmsy70cjs01dn8b50ppc93g",
"type": "tarball",
"url": "https://github.com/NixOS/nixpkgs/archive/297970378b9437541c065f3fef26871397edd2d4.tar.gz",
"url_template": "https://github.com/<owner>/<repo>/archive/<rev>.tar.gz"
},
"nixos-unstable": {
"branch": "master",
"description": "A read-only mirror of NixOS/nixpkgs tracking the released channels. Send issues and PRs to",
Expand Down

0 comments on commit 4a38050

Please sign in to comment.