Set up homer
|
@ -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
After Width: | Height: | Size: 10 KiB |
BIN
common/icons/bitwarden.png
Normal file
After Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 23 KiB After Width: | Height: | Size: 23 KiB |
Before Width: | Height: | Size: 48 KiB After Width: | Height: | Size: 48 KiB |
BIN
common/icons/whoogle.webp
Normal file
After Width: | Height: | Size: 24 KiB |
|
@ -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;
|
||||
};
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
./services/smos.nix
|
||||
./services/vaultwarden.nix
|
||||
./services/actual.nix
|
||||
./services/homer.nix
|
||||
./services/zfs.nix
|
||||
./filesystems
|
||||
./hardware
|
||||
|
|
90
hosts/nixos/lapetus/services/homer.nix
Normal 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";
|
||||
}
|
||||
];
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
|
@ -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
|
@ -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
|