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:
|
## 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 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)
|
- Consistent base16 theming using [stylix](https://github.com/danth/stylix)
|
||||||
- Declarative secret management using [sops-nix](https://github.com/Mic92/sops-nix)
|
- 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
|
- [Ranger](https://github.com/ranger/ranger) — file manager
|
||||||
- [Catgirl](https://git.causal.agency/catgirl/about/) — irc client
|
- [Catgirl](https://git.causal.agency/catgirl/about/) — irc client
|
||||||
- Self management:
|
- 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
|
- [Intray](https://github.com/NorfairKing/intray) — selfhosted GTD capture tool
|
||||||
|
|
||||||
### Services
|
### 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
|
- [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
|
- [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
|
- [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.
|
- [Intray](https://github.com/NorfairKing/intray) — GTD capture tool.
|
||||||
|
- [Actual](https://actualbudget.org/) — budgeting tool.
|
||||||
|
|
||||||
## Hall of fame
|
## 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";
|
url = "https://search.moonythm.dev/search";
|
||||||
param = "q";
|
param = "q";
|
||||||
aliases = [ "@m" "@moonythm" ];
|
aliases = [ "@m" "@moonythm" ];
|
||||||
|
icon = ../../../../common/icons/whoogle.webp;
|
||||||
};
|
};
|
||||||
|
|
||||||
"Google".metaData.alias = "@g";
|
"Google".metaData.alias = "@g";
|
||||||
|
@ -282,7 +283,7 @@ in
|
||||||
# {{{ Desmos
|
# {{{ Desmos
|
||||||
desmos = {
|
desmos = {
|
||||||
url = "https://www.desmos.com/calculator";
|
url = "https://www.desmos.com/calculator";
|
||||||
icon = ./icons/desmos.png;
|
icon = ../../../../common/icons/desmos.png;
|
||||||
displayName = "Desmos";
|
displayName = "Desmos";
|
||||||
id = 1;
|
id = 1;
|
||||||
};
|
};
|
||||||
|
@ -290,7 +291,7 @@ in
|
||||||
# {{{ Monkey type
|
# {{{ Monkey type
|
||||||
monkey-type = {
|
monkey-type = {
|
||||||
url = "https://monkeytype.com/";
|
url = "https://monkeytype.com/";
|
||||||
icon = ./icons/monkeytype.png;
|
icon = ../../../../common/icons/monkeytype.png;
|
||||||
displayName = "Monkeytype";
|
displayName = "Monkeytype";
|
||||||
id = 2;
|
id = 2;
|
||||||
};
|
};
|
||||||
|
@ -298,7 +299,7 @@ in
|
||||||
# {{{ Syncthing
|
# {{{ Syncthing
|
||||||
syncthing = {
|
syncthing = {
|
||||||
url = "http://localhost:8384/";
|
url = "http://localhost:8384/";
|
||||||
icon = ./icons/syncthing.png;
|
icon = ../../../../common/icons/syncthing.png;
|
||||||
displayName = "Syncthing";
|
displayName = "Syncthing";
|
||||||
id = 3;
|
id = 3;
|
||||||
};
|
};
|
||||||
|
|
|
@ -11,6 +11,7 @@
|
||||||
./services/smos.nix
|
./services/smos.nix
|
||||||
./services/vaultwarden.nix
|
./services/vaultwarden.nix
|
||||||
./services/actual.nix
|
./services/actual.nix
|
||||||
|
./services/homer.nix
|
||||||
./services/zfs.nix
|
./services/zfs.nix
|
||||||
./filesystems
|
./filesystems
|
||||||
./hardware
|
./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) {};
|
# example = pkgs.callPackage (import ./example.nix) {};
|
||||||
vimclip = pkgs.callPackage (import ./vimclip.nix) { };
|
vimclip = pkgs.callPackage (import ./vimclip.nix) { };
|
||||||
|
homer = pkgs.callPackage (import ./homer.nix) { };
|
||||||
|
|
||||||
plymouthThemeCutsAlt = plymouthThemes.cuts_alt;
|
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
|