1
Fork 0

Set up homer

This commit is contained in:
prescientmoon 2024-02-24 03:51:35 +01:00
parent 9cc1c2f644
commit f077913a4d
Signed by: prescientmoon
SSH key fingerprint: SHA256:UUF9JT2s8Xfyv76b8ZuVL7XrmimH4o49p4b+iexbVH4
12 changed files with 137 additions and 6 deletions

View file

@ -7,7 +7,7 @@ In case you are not familiar with nix/nixos, this is a collection of configurati
## Features this repository includes:
- Sets up all the apps I use — including git, neovim, fish, tmux, starship, hyprland, anyrun, discord, zathura, wezterm & much more.
- Sets up my entire homelab — including zfs-based [impermanence](https://grahamc.com/blog/erase-your-darlings), automatic let's-encrypt certificates, tailscale, syncthing, vaultwarden, whoogle, pounce, calico, smos, intray & more.
- Sets up my entire homelab — including zfs-based [impermanence](https://grahamc.com/blog/erase-your-darlings), automatic let's-encrypt certificates, tailscale, syncthing, vaultwarden, whoogle, pounce, calico, smos, intray, actual & more.
- Consistent base16 theming using [stylix](https://github.com/danth/stylix)
- Declarative secret management using [sops-nix](https://github.com/Mic92/sops-nix)
@ -98,7 +98,7 @@ Here's some things you might want to check out:
- [Ranger](https://github.com/ranger/ranger) — file manager
- [Catgirl](https://git.causal.agency/catgirl/about/) — irc client
- Self management:
- [Smos](https://github.com/NorfairKing/smos) — selfhosted comprehensive self-management System
- [Smos](https://github.com/NorfairKing/smos) — selfhosted comprehensive self-management system
- [Intray](https://github.com/NorfairKing/intray) — selfhosted GTD capture tool
### Services
@ -109,8 +109,9 @@ Most services are served over [tailscale](https://tailscale.com/), using certifi
- [Whoogle](https://github.com/benbusby/whoogle-search#manual-docker) — search engine
- [Pounce](https://git.causal.agency/pounce/about/) & [calico](https://git.causal.agency/pounce/about/calico.1) — irc bouncer
- [Vaultwarden](https://github.com/dani-garcia/vaultwarden/) — password manager
- [Smos](https://github.com/NorfairKing/smos) — a comprehensive self-management System.
- [Smos](https://github.com/NorfairKing/smos) — a comprehensive self-management system.
- [Intray](https://github.com/NorfairKing/intray) — GTD capture tool.
- [Actual](https://actualbudget.org/) — budgeting tool.
## Hall of fame

BIN
common/icons/actual.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

BIN
common/icons/bitwarden.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

View file

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 16 KiB

View file

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 23 KiB

View file

Before

Width:  |  Height:  |  Size: 48 KiB

After

Width:  |  Height:  |  Size: 48 KiB

BIN
common/icons/whoogle.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

View file

@ -195,6 +195,7 @@ in
url = "https://search.moonythm.dev/search";
param = "q";
aliases = [ "@m" "@moonythm" ];
icon = ../../../../common/icons/whoogle.webp;
};
"Google".metaData.alias = "@g";
@ -282,7 +283,7 @@ in
# {{{ Desmos
desmos = {
url = "https://www.desmos.com/calculator";
icon = ./icons/desmos.png;
icon = ../../../../common/icons/desmos.png;
displayName = "Desmos";
id = 1;
};
@ -290,7 +291,7 @@ in
# {{{ Monkey type
monkey-type = {
url = "https://monkeytype.com/";
icon = ./icons/monkeytype.png;
icon = ../../../../common/icons/monkeytype.png;
displayName = "Monkeytype";
id = 2;
};
@ -298,7 +299,7 @@ in
# {{{ Syncthing
syncthing = {
url = "http://localhost:8384/";
icon = ./icons/syncthing.png;
icon = ../../../../common/icons/syncthing.png;
displayName = "Syncthing";
id = 3;
};

View file

@ -11,6 +11,7 @@
./services/smos.nix
./services/vaultwarden.nix
./services/actual.nix
./services/homer.nix
./services/zfs.nix
./filesystems
./hardware

View file

@ -0,0 +1,90 @@
{ pkgs, config, ... }:
let
colors = with config.lib.stylix.scheme.withHashtag; {
highlight-primary = base0A;
highlight-secondary = base09;
highlight-hover = base08;
text-title = base00;
text-subtitle = base00;
text = base05;
link = base08;
background = base00;
card-background = base01;
};
fa = name: "fas fa-${name}";
icon = file: ../../../../common/icons/${file};
in
{
services.nginx.virtualHosts."dashboard.moonythm.dev" = {
enableACME = true;
acmeRoot = null;
forceSSL = true;
root = pkgs.homer.withAssets {
config = {
title = " The celestial citadel ";
subtitle = "The home for my homelab :3";
header = false;
footer = false;
connectivityCheck = true;
colors.light = colors;
colors.dark = colors;
services = [
{
name = "Pillars";
icon = fa "toolbox";
items = [
{
name = "Vaultwarden";
subtitle = "Password manager";
logo = icon "bitwarden.png";
url = "warden.moonythm.dev";
keywords = "pass";
}
{
name = "Syncthing";
subtitle = "File synchronization";
logo = icon "syncthing.png";
url = "syncthing.lapetus.moonythm.dev";
}
{
name = "Whoogle";
subtitle = "Search engine";
logo = icon "woogle.webp";
url = "search.moonythm.dev";
keywords = "search google";
}
];
}
{
name = "Self management";
icon = fa "superpowers";
items = [
{
name = "Intray";
subtitle = "GTD capture tool";
icon = fa "cubes-stacked";
url = "intray.moonythm.dev";
}
{
name = "Smos";
subtitle = "A comprehensive self-management system.";
icon = fa "list";
url = "smos.moonythm.dev";
}
{
name = "Actual";
subtitle = "Budgeting tool";
logo = icon "actual.png";
url = "actual.moonythm.dev";
}
];
}
];
};
};
};
}

View file

@ -6,6 +6,7 @@ let plymouthThemes = pkgs.callPackage (import ./plymouth-themes.nix) { }; in
{
# example = pkgs.callPackage (import ./example.nix) {};
vimclip = pkgs.callPackage (import ./vimclip.nix) { };
homer = pkgs.callPackage (import ./homer.nix) { };
plymouthThemeCutsAlt = plymouthThemes.cuts_alt;
}

37
pkgs/homer.nix Normal file
View file

@ -0,0 +1,37 @@
{ lib, fetchzip, writeTextFile, runCommandLocal, symlinkJoin }:
let
homer = fetchzip rec {
pname = "homer";
version = "24.02.1";
url =
"https://github.com/bastienwirtz/${pname}/releases/download/v${version}/${pname}.zip";
hash = "sha256-McMJuZ84B3BlGHLQf+/ttRe5xAzQuR6qHrH8IjGys2Q=";
stripRoot = false;
passthru = {
withAssets = { name ? null, config, extraAssets ? [ ] }:
let nameSuffix = lib.optionalString (name != null) "-${name}";
in
symlinkJoin {
name = "homer-root${nameSuffix}";
paths = [
homer
(writeTextFile {
name = "homer-configuration${nameSuffix}";
text = builtins.toJSON config;
destination = "/assets/config.yml";
})
] ++ lib.optional (extraAssets != [ ])
(runCommandLocal "homer-assets${nameSuffix}" { }
(builtins.concatStringsSep "\n" (map
(asset: ''
mkdir -p $out/assets/${dirOf asset}
ln -s ${asset} $out/assets/${asset}
'')
extraAssets)));
};
};
};
in
homer