mirror of https://github.com/voidlizard/hbs2
Create home-manager module for hbs2-peer and hbs2-git-dashboard
This commit is contained in:
parent
0b4c20d91b
commit
9640543924
50
README.md
50
README.md
|
@ -142,6 +142,8 @@ We’re using it for our non-public projects.
|
||||||
|
|
||||||
## How to install
|
## How to install
|
||||||
|
|
||||||
|
### nix flakes
|
||||||
|
|
||||||
Assuming you know what the Nix and Nix flakes are ( See
|
Assuming you know what the Nix and Nix flakes are ( See
|
||||||
[nixos.org](https://nixos.org) if you don’t )
|
[nixos.org](https://nixos.org) if you don’t )
|
||||||
|
|
||||||
|
@ -158,6 +160,54 @@ Alternative option:
|
||||||
--substituters http://nix.hbs2.net:6000 \
|
--substituters http://nix.hbs2.net:6000 \
|
||||||
--trusted-public-keys git.hbs2.net-1:HYIYU3xWetj0NasmHrxsWQTVzQUjawOE8ejZAW2xUS4=
|
--trusted-public-keys git.hbs2.net-1:HYIYU3xWetj0NasmHrxsWQTVzQUjawOE8ejZAW2xUS4=
|
||||||
|
|
||||||
|
### Home Manager module
|
||||||
|
|
||||||
|
The following snippet of code tries to show how to bring the HBS2 flake
|
||||||
|
from the flake input and use its packages with Home Manager.
|
||||||
|
|
||||||
|
Don’t forget to replace exampleName with your username!
|
||||||
|
|
||||||
|
```nix
|
||||||
|
# flake.nix
|
||||||
|
|
||||||
|
{
|
||||||
|
inputs = {
|
||||||
|
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
||||||
|
|
||||||
|
home-manager = {
|
||||||
|
url = "github:nix-community/home-manager";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
|
||||||
|
hbs2.url = "git+https://git.hbs2.net/BTThPdHKF8XnEq4m6wzbKHKA6geLFK4ydYhBXAqBdHSP";
|
||||||
|
};
|
||||||
|
|
||||||
|
outputs = {nixpkgs, home-manager, hbs2, ...}: {
|
||||||
|
homeConfigurations."exampleName" =
|
||||||
|
let system = "x86_64-linux"; # use your system here
|
||||||
|
in home-manager.lib.homeManagerConfiguration {
|
||||||
|
pkgs = nixpkgs.legacyPackages.${system};
|
||||||
|
|
||||||
|
modules = [
|
||||||
|
hbs2.homeManagerModules.${system}.default
|
||||||
|
{
|
||||||
|
services.hbs2 = {
|
||||||
|
enable = true;
|
||||||
|
git-dashboard.enable = true; # optional
|
||||||
|
};
|
||||||
|
}
|
||||||
|
# ...
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Option `services.hbs2.enable` will add all hbs2 binaries into your environment and
|
||||||
|
create `hbs2-peer` user service to run it automatically at the background.
|
||||||
|
|
||||||
|
Option `services.hbs2.git-dashboard.enable` will create `hbs2-git-dashboard` user service.
|
||||||
|
|
||||||
## How to generate peer’s key?
|
## How to generate peer’s key?
|
||||||
|
|
||||||
hbs2 keyring-new > new-peer-key.key
|
hbs2 keyring-new > new-peer-key.key
|
||||||
|
|
|
@ -116,6 +116,7 @@ outputs = { self, nixpkgs, flake-utils, ... }@inputs:
|
||||||
in {
|
in {
|
||||||
legacyPackages = pkgs;
|
legacyPackages = pkgs;
|
||||||
overlays.default = defaultOverlay;
|
overlays.default = defaultOverlay;
|
||||||
|
homeManagerModules.default = import ./nix/hm-module.nix self;
|
||||||
|
|
||||||
packages =
|
packages =
|
||||||
packagesDynamic //
|
packagesDynamic //
|
||||||
|
|
|
@ -0,0 +1,64 @@
|
||||||
|
self: {
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
... }: let
|
||||||
|
inherit (pkgs.stdenv.hostPlatform) system;
|
||||||
|
|
||||||
|
package = self.packages.${system}.default;
|
||||||
|
|
||||||
|
cfg = config.services.hbs2;
|
||||||
|
hbs2 = cfg.package;
|
||||||
|
hbs2-peer = "${hbs2}/bin/hbs2-peer";
|
||||||
|
hbs2-git-dashboard = "${hbs2}/bin/hbs2-git-dashboard";
|
||||||
|
in {
|
||||||
|
options = {
|
||||||
|
services.hbs2 = {
|
||||||
|
enable = lib.mkEnableOption "hbs2-peer daemon";
|
||||||
|
package = lib.mkOption {
|
||||||
|
type = lib.types.package;
|
||||||
|
description = "Package with all HBS2 basic binaries";
|
||||||
|
default = package;
|
||||||
|
};
|
||||||
|
git-dashboard.enable = lib.mkEnableOption "hbs2-git-dashboard daemon";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
|
||||||
|
home.packages = [ cfg.package ];
|
||||||
|
|
||||||
|
systemd.user.services.hbs2-peer = {
|
||||||
|
Unit = {
|
||||||
|
Description = "HBS2 peer daemon";
|
||||||
|
After = [ "network.target" ];
|
||||||
|
};
|
||||||
|
Install = {
|
||||||
|
WantedBy = [ "default.target" ];
|
||||||
|
};
|
||||||
|
Service = {
|
||||||
|
ExecPreStart = "${hbs2-peer} init";
|
||||||
|
ExecStart = "${hbs2-peer} run";
|
||||||
|
Restart = "always";
|
||||||
|
RuntimeMaxSec = "1d";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.user.services.hbs2-git-dashboard = lib.mkIf cfg.git-dashboard.enable {
|
||||||
|
Unit = {
|
||||||
|
Description = "HBS2 git dashboard daemon";
|
||||||
|
After = [ "hbs2-peer.service" "network.target" ];
|
||||||
|
BindsTo = [ "hbs2-peer.service" ];
|
||||||
|
};
|
||||||
|
Install = {
|
||||||
|
WantedBy = [ "default.target" ];
|
||||||
|
};
|
||||||
|
Service = {
|
||||||
|
ExecPreStart = "sleep 5";
|
||||||
|
ExecStart = "${hbs2-git-dashboard} web";
|
||||||
|
Environment = [ "PATH=${hbs2}/bin:${pkgs.git}/bin:$PATH" ]; # detectRPC require hbs2-peer to be in scope
|
||||||
|
Restart = "always";
|
||||||
|
RuntimeMaxSec = "1d";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
Loading…
Reference in New Issue