add glance service
This commit is contained in:
@@ -15,6 +15,7 @@
|
|||||||
./disk.nix
|
./disk.nix
|
||||||
./dns.nix
|
./dns.nix
|
||||||
./freshrss.nix
|
./freshrss.nix
|
||||||
|
./glance.nix
|
||||||
./hardware.nix
|
./hardware.nix
|
||||||
./immich.nix
|
./immich.nix
|
||||||
./monitoring
|
./monitoring
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ let
|
|||||||
genepi = {
|
genepi = {
|
||||||
ip = "100.83.123.79";
|
ip = "100.83.123.79";
|
||||||
subdomains = [
|
subdomains = [
|
||||||
|
"glance"
|
||||||
"grafana"
|
"grafana"
|
||||||
"images"
|
"images"
|
||||||
"rss"
|
"rss"
|
||||||
|
|||||||
187
hosts/genepi/glance-config.nix
Normal file
187
hosts/genepi/glance-config.nix
Normal file
@@ -0,0 +1,187 @@
|
|||||||
|
{
|
||||||
|
theme = {
|
||||||
|
light = true;
|
||||||
|
background-color = "0 0 95";
|
||||||
|
primary-color = "0 0 10";
|
||||||
|
negative-color = "0 90 50";
|
||||||
|
};
|
||||||
|
pages = [
|
||||||
|
{
|
||||||
|
name = "Home";
|
||||||
|
columns = [
|
||||||
|
{
|
||||||
|
size = "small";
|
||||||
|
widgets = [
|
||||||
|
{
|
||||||
|
type = "calendar";
|
||||||
|
first-day-of-week = "monday";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
type = "server-stats";
|
||||||
|
servers = [
|
||||||
|
{
|
||||||
|
type = "local";
|
||||||
|
name = "Genepi";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
{
|
||||||
|
size = "full";
|
||||||
|
widgets = [
|
||||||
|
{
|
||||||
|
type = "search";
|
||||||
|
autofocus = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
type = "monitor";
|
||||||
|
cache = "1m";
|
||||||
|
title = "Services";
|
||||||
|
sites = [
|
||||||
|
{
|
||||||
|
title = "Immich";
|
||||||
|
url = "https://images.home.rpqt.fr";
|
||||||
|
icon = "si:immich";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
title = "Grafana";
|
||||||
|
url = "https://grafana.home.rpqt.fr";
|
||||||
|
icon = "si:grafana";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
title = "FreshRSS";
|
||||||
|
url = "https://rss.home.rpqt.fr";
|
||||||
|
icon = "si:rss";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
{
|
||||||
|
size = "small";
|
||||||
|
widgets = [
|
||||||
|
{
|
||||||
|
type = "weather";
|
||||||
|
location = "Grenoble, France";
|
||||||
|
units = "metric";
|
||||||
|
hour-format = "24h";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "Feeds";
|
||||||
|
columns = [
|
||||||
|
{
|
||||||
|
size = "small";
|
||||||
|
widgets = [
|
||||||
|
{
|
||||||
|
type = "rss";
|
||||||
|
title = "Blogs";
|
||||||
|
limit = 10;
|
||||||
|
collapse-after = 5;
|
||||||
|
cache = "12h";
|
||||||
|
feeds = [
|
||||||
|
{
|
||||||
|
url = "https://rss.home.rpqt.fr/api/query.php?user=rpqt&t=74HfeLZ6Wu9h4MmjNR38Rz&f=rss";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
{
|
||||||
|
type = "rss";
|
||||||
|
title = "Status & Updates";
|
||||||
|
limit = 3;
|
||||||
|
cache = "12h";
|
||||||
|
feeds = [
|
||||||
|
{
|
||||||
|
url = "https://status.sr.ht/index.xml";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
{
|
||||||
|
size = "full";
|
||||||
|
widgets = [
|
||||||
|
{
|
||||||
|
type = "group";
|
||||||
|
widgets = [
|
||||||
|
{
|
||||||
|
type = "hacker-news";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
type = "lobsters";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
{
|
||||||
|
type = "group";
|
||||||
|
widgets = [
|
||||||
|
{
|
||||||
|
type = "reddit";
|
||||||
|
subreddit = "selfhosted";
|
||||||
|
show-thumbnails = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
type = "reddit";
|
||||||
|
subreddit = "homelab";
|
||||||
|
show-thumbnails = true;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
{
|
||||||
|
type = "videos";
|
||||||
|
channels = [
|
||||||
|
"UCR-DXc1voovS8nhAvccRZhg"
|
||||||
|
"UCsBjURrPoezykLs9EqgamOA"
|
||||||
|
];
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
{
|
||||||
|
size = "small";
|
||||||
|
widgets = [
|
||||||
|
{
|
||||||
|
type = "releases";
|
||||||
|
cache = "1d";
|
||||||
|
repositories = [
|
||||||
|
"glanceapp/glance"
|
||||||
|
];
|
||||||
|
}
|
||||||
|
{
|
||||||
|
type = "custom-api";
|
||||||
|
title = "Random Fact";
|
||||||
|
cache = "6h";
|
||||||
|
url = "https://uselessfacts.jsph.pl/api/v2/facts/random";
|
||||||
|
template = ''
|
||||||
|
<p class="size-h4 color-paragraph">{{ .JSON.String "text" }}</p>
|
||||||
|
'';
|
||||||
|
}
|
||||||
|
{
|
||||||
|
type = "custom-api";
|
||||||
|
title = "Steam Specials";
|
||||||
|
cache = "12h";
|
||||||
|
url = "https://store.steampowered.com/api/featuredcategories?cc=us";
|
||||||
|
template = ''
|
||||||
|
<ul class="list list-gap-10 collapsible-container" data-collapse-after="5">
|
||||||
|
{{ range .JSON.Array "specials.items" }}
|
||||||
|
<li>
|
||||||
|
<a class="size-h4 color-highlight block text-truncate" href="https://store.steampowered.com/app/{{ .Int "id" }}/">{{ .String "name" }}</a>
|
||||||
|
<ul class="list-horizontal-text">
|
||||||
|
<li>{{ div (.Int "final_price" | toFloat) 100 | printf "$%.2f" }}</li>
|
||||||
|
{{ $discount := .Int "discount_percent" }}
|
||||||
|
<li{{ if ge $discount 40 }} class="color-positive"{{ end }}>{{ $discount }}% off</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
{{ end }}
|
||||||
|
</ul>
|
||||||
|
'';
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
18
hosts/genepi/glance.nix
Normal file
18
hosts/genepi/glance.nix
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
{ config, ... }:
|
||||||
|
let
|
||||||
|
domain = "home.rpqt.fr";
|
||||||
|
subdomain = "glance.${domain}";
|
||||||
|
in
|
||||||
|
{
|
||||||
|
services.glance = {
|
||||||
|
enable = true;
|
||||||
|
settings = ./glance-config.nix;
|
||||||
|
};
|
||||||
|
|
||||||
|
services.nginx.virtualHosts.${subdomain} = {
|
||||||
|
forceSSL = true;
|
||||||
|
useACMEHost = "${domain}";
|
||||||
|
locations."/".proxyPass =
|
||||||
|
"http://127.0.0.1:${toString config.services.glance.settings.server.port}";
|
||||||
|
};
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user