diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b2be92b --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +result diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..3ed4dbc --- /dev/null +++ b/flake.lock @@ -0,0 +1,41 @@ +{ + "nodes": { + "flake-utils": { + "locked": { + "lastModified": 1629481132, + "narHash": "sha256-JHgasjPR0/J1J3DRm4KxM4zTyAj4IOJY8vIl75v/kPI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "997f7efcb746a9c140ce1f13c72263189225f482", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1630527283, + "narHash": "sha256-DD8FDMxndAgGD/yUHuwQypvgcqKSCB+gdwo+mXhc28c=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "837d765221201227fa62bf7a77e94577e8dc00f7", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "type": "indirect" + } + }, + "root": { + "inputs": { + "flake-utils": "flake-utils", + "nixpkgs": "nixpkgs" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix index 94f2327..43f4156 100644 --- a/flake.nix +++ b/flake.nix @@ -1,11 +1,23 @@ { description = "A very basic flake"; - outputs = { self, nixpkgs }: { - - packages.x86_64-linux.hello = nixpkgs.legacyPackages.x86_64-linux.hello; - - defaultPackage.x86_64-linux = self.packages.x86_64-linux.hello; - + inputs = { + flake-utils.url = "github:numtide/flake-utils"; }; + + outputs = { self, nixpkgs, flake-utils }: + flake-utils.lib.eachSystem ["x86_64-linux"] (system: + let + pkgs = nixpkgs.legacyPackages.${system}; + in + { + packages = rec { + agola = pkgs.callPackage ./pkgs/agola.nix {}; + }; + + nixosModules = { + agola = import ./modules/agola.nix; + }; + } + ); } diff --git a/modules/agola.nix b/modules/agola.nix new file mode 100644 index 0000000..6dab323 --- /dev/null +++ b/modules/agola.nix @@ -0,0 +1,20 @@ +{ config, lib, pkgs, ... }: +with lib; + +let + agola = pkgs.agola; + cfg = config.services.agola; +in +{ + options.services.agola = { + enable = mkEnableOption "Enable agola server."; + }; + + config = lib.mkIf cfg.enable { + systemd.services.agola = { + script = '' + ${agola}/bin/agola + ''; + }; + }; +} diff --git a/pkgs/agola.nix b/pkgs/agola.nix new file mode 100644 index 0000000..1be753f --- /dev/null +++ b/pkgs/agola.nix @@ -0,0 +1,16 @@ +{ pkgs ? import {} }: + +pkgs.buildGoModule { + name = "agola"; + vendorSha256 = "wjEr5zmcWEJJtH6d2OGPPX5CDJvj9xM8LKHBBmBvQj8="; + + src = pkgs.fetchFromGitHub { + owner = "agola-io"; + repo = "agola"; + rev = "v0.6.0"; + sha256 = "NIJEf1eMyx74REc84EYgLmwrP4bYCiyTdeb/8kR4cTM="; + }; + + # TODO: repeat this later on a computer with more resources... + doCheck = false; +} diff --git a/test/nixops.nix b/test/nixops.nix new file mode 100644 index 0000000..90f7191 --- /dev/null +++ b/test/nixops.nix @@ -0,0 +1,21 @@ +let + lib = import ; +in +{ + machine = { + deployment.targetEnv = "virtualbox"; + deployment.virtualbox.headless = true; + virtualisation.virtualbox.guest.enable = lib.mkForce false; + + nixpkgs.overlays = [(self: super: { + agola = import ../pkgs/agola.nix { pkgs = super; }; + })]; + imports = [ + (import ../modules/agola.nix) + ]; + + services = { + agola.enable = true; + }; + }; +}