mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-06-13 05:05:29 +03:00
nixos/homer: init
This commit is contained in:
parent
fbc0dac9f3
commit
4cff6cd191
3 changed files with 187 additions and 0 deletions
|
@ -63,6 +63,8 @@
|
||||||
|
|
||||||
- [Kimai](https://www.kimai.org/), a web-based multi-user time-tracking application. Available as [services.kimai](options.html#opt-services.kimai).
|
- [Kimai](https://www.kimai.org/), a web-based multi-user time-tracking application. Available as [services.kimai](options.html#opt-services.kimai).
|
||||||
|
|
||||||
|
- [Homer](https://homer-demo.netlify.app/), a very simple static homepage for your server. Available as [services.homer](options.html#opt-services.homer).
|
||||||
|
|
||||||
- [Omnom](https://github.com/asciimoo/omnom), a webpage bookmarking and snapshotting service. Available as [services.omnom](options.html#opt-services.omnom.enable).
|
- [Omnom](https://github.com/asciimoo/omnom), a webpage bookmarking and snapshotting service. Available as [services.omnom](options.html#opt-services.omnom.enable).
|
||||||
|
|
||||||
- [Yggdrasil-Jumper](https://github.com/one-d-wide/yggdrasil-jumper) is an independent project that aims to transparently reduce latency of a connection over Yggdrasil network, utilizing NAT traversal to automatically bypass intermediary nodes.
|
- [Yggdrasil-Jumper](https://github.com/one-d-wide/yggdrasil-jumper) is an independent project that aims to transparently reduce latency of a connection over Yggdrasil network, utilizing NAT traversal to automatically bypass intermediary nodes.
|
||||||
|
|
|
@ -1497,6 +1497,7 @@
|
||||||
./services/web-apps/hedgedoc.nix
|
./services/web-apps/hedgedoc.nix
|
||||||
./services/web-apps/hledger-web.nix
|
./services/web-apps/hledger-web.nix
|
||||||
./services/web-apps/homebox.nix
|
./services/web-apps/homebox.nix
|
||||||
|
./services/web-apps/homer.nix
|
||||||
./services/web-apps/honk.nix
|
./services/web-apps/honk.nix
|
||||||
./services/web-apps/icingaweb2/icingaweb2.nix
|
./services/web-apps/icingaweb2/icingaweb2.nix
|
||||||
./services/web-apps/icingaweb2/module-monitoring.nix
|
./services/web-apps/icingaweb2/module-monitoring.nix
|
||||||
|
|
184
nixos/modules/services/web-apps/homer.nix
Normal file
184
nixos/modules/services/web-apps/homer.nix
Normal file
|
@ -0,0 +1,184 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
cfg = config.services.homer;
|
||||||
|
settingsFormat = pkgs.formats.yaml { };
|
||||||
|
configFile = settingsFormat.generate "homer-config.yml" cfg.settings;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.services.homer = {
|
||||||
|
enable = lib.mkEnableOption ''
|
||||||
|
A dead simple static HOMepage for your servER to keep your services on hand, from a simple yaml configuration file.
|
||||||
|
'';
|
||||||
|
|
||||||
|
virtualHost = {
|
||||||
|
nginx.enable = lib.mkEnableOption "a virtualhost to serve homer through nginx";
|
||||||
|
caddy.enable = lib.mkEnableOption "a virtualhost to serve homer through caddy";
|
||||||
|
|
||||||
|
domain = lib.mkOption {
|
||||||
|
description = ''
|
||||||
|
Domain to use for the virtual host.
|
||||||
|
|
||||||
|
This can be used to change nginx options like
|
||||||
|
```nix
|
||||||
|
services.nginx.virtualHosts."$\{config.services.homer.virtualHost.domain}".listen = [ ... ]
|
||||||
|
```
|
||||||
|
or
|
||||||
|
```nix
|
||||||
|
services.nginx.virtualHosts."example.com".listen = [ ... ]
|
||||||
|
```
|
||||||
|
'';
|
||||||
|
type = lib.types.str;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
package = lib.mkPackageOption pkgs "homer" { };
|
||||||
|
|
||||||
|
settings = lib.mkOption {
|
||||||
|
default = { };
|
||||||
|
description = ''
|
||||||
|
Settings serialized into `config.yml` before build.
|
||||||
|
If left empty, the default configuration shipped with the package will be used instead.
|
||||||
|
For more information, see the [official documentation](https://github.com/bastienwirtz/homer/blob/main/docs/configuration.md).
|
||||||
|
|
||||||
|
Note that the full configuration will be written to the nix store as world readable, which may include secrets such as [api-keys](https://github.com/bastienwirtz/homer/blob/main/docs/customservices.md).
|
||||||
|
|
||||||
|
To add files such as icons or backgrounds, you can reference them in line such as
|
||||||
|
```nix
|
||||||
|
icon = "$\{./icon.png}";
|
||||||
|
```
|
||||||
|
This will add the file to the nix store upon build, referencing it by file path as expected by Homer.
|
||||||
|
'';
|
||||||
|
example = ''
|
||||||
|
{
|
||||||
|
title = "App dashboard";
|
||||||
|
subtitle = "Homer";
|
||||||
|
logo = "assets/logo.png";
|
||||||
|
header = true;
|
||||||
|
footer = ${"''"}
|
||||||
|
<p>Created with <span class="has-text-danger">❤️</span> with
|
||||||
|
<a href="https://bulma.io/">bulma</a>,
|
||||||
|
<a href="https://vuejs.org/">vuejs</a> &
|
||||||
|
<a href="https://fontawesome.com/">font awesome</a> //
|
||||||
|
Fork me on <a href="https://github.com/bastienwirtz/homer">
|
||||||
|
<i class="fab fa-github-alt"></i></a></p>
|
||||||
|
${"''"};
|
||||||
|
columns = "3";
|
||||||
|
connectivityCheck = true;
|
||||||
|
|
||||||
|
proxy = {
|
||||||
|
useCredentials = false;
|
||||||
|
headers = {
|
||||||
|
Test = "Example";
|
||||||
|
Test1 = "Example1";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
defaults = {
|
||||||
|
layout = "columns";
|
||||||
|
colorTheme = "auto";
|
||||||
|
};
|
||||||
|
|
||||||
|
theme = "default";
|
||||||
|
|
||||||
|
message = {
|
||||||
|
style = "is-warning";
|
||||||
|
title = "Optional message!";
|
||||||
|
icon = "fa fa-exclamation-triangle";
|
||||||
|
content = "Lorem ipsum dolor sit amet, consectetur adipiscing elit.";
|
||||||
|
};
|
||||||
|
|
||||||
|
links = [
|
||||||
|
{
|
||||||
|
name = "Link 1";
|
||||||
|
icon = "fab fa-github";
|
||||||
|
url = "https://github.com/bastienwirtz/homer";
|
||||||
|
target = "_blank";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "link 2";
|
||||||
|
icon = "fas fa-book";
|
||||||
|
url = "https://github.com/bastienwirtz/homer";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
services = [
|
||||||
|
{
|
||||||
|
name = "Application";
|
||||||
|
icon = "fas fa-code-branch";
|
||||||
|
items = [
|
||||||
|
{
|
||||||
|
name = "Awesome app";
|
||||||
|
logo = "assets/tools/sample.png";
|
||||||
|
subtitle = "Bookmark example";
|
||||||
|
tag = "app";
|
||||||
|
keywords = "self hosted reddit";
|
||||||
|
url = "https://www.reddit.com/r/selfhosted/";
|
||||||
|
target = "_blank";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "Another one";
|
||||||
|
logo = "assets/tools/sample2.png";
|
||||||
|
subtitle = "Another application";
|
||||||
|
tag = "app";
|
||||||
|
tagstyle = "is-success";
|
||||||
|
url = "#";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "Other group";
|
||||||
|
icon = "fas fa-heartbeat";
|
||||||
|
items = [
|
||||||
|
{
|
||||||
|
name = "Pi-hole";
|
||||||
|
logo = "assets/tools/sample.png";
|
||||||
|
tag = "other";
|
||||||
|
url = "http://192.168.0.151/admin";
|
||||||
|
type = "PiHole";
|
||||||
|
target = "_blank";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
'';
|
||||||
|
inherit (pkgs.formats.yaml { }) type;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
services.nginx = lib.mkIf cfg.virtualHost.nginx.enable {
|
||||||
|
enable = true;
|
||||||
|
virtualHosts."${cfg.virtualHost.domain}" = {
|
||||||
|
locations."/" = {
|
||||||
|
root = cfg.package;
|
||||||
|
tryFiles = "$uri /index.html";
|
||||||
|
};
|
||||||
|
locations."= /assets/config.yml" = {
|
||||||
|
alias = configFile;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
services.caddy = lib.mkIf cfg.virtualHost.caddy.enable {
|
||||||
|
enable = true;
|
||||||
|
virtualHosts."${cfg.virtualHost.domain}".extraConfig = ''
|
||||||
|
root * ${cfg.package}
|
||||||
|
file_server
|
||||||
|
handle_path /assets/config.yml {
|
||||||
|
root * ${configFile}
|
||||||
|
file_server
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
meta.maintainers = [
|
||||||
|
lib.maintainers.stunkymonkey
|
||||||
|
];
|
||||||
|
}
|
Loading…
Add table
Add a link
Reference in a new issue