1
0
mirror of https://github.com/kmein/niveum synced 2026-03-22 12:51:08 +01:00

1 Commits

Author SHA1 Message Date
d06d0a9de4 WIP: mympd 2022-04-15 01:16:50 +02:00
75 changed files with 301 additions and 1087 deletions

View File

@@ -1,4 +0,0 @@
#!/bin/sh
hora reg 'miaengiadina|fysi|filli' -O csv \
-b "$(date -d "$(date +%Y-%m)-20 last month" +%Y-%m-%d)" \
-e "$(date -d "$(date +%Y-%m)-19" +%Y-%m-%d)"

View File

@@ -7,7 +7,7 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
system: [makanek,manakish,kabsa,zaatar,ful]
system: [makanek,manakish,kabsa,zaatar]
steps:
- uses: actions/checkout@v2
- uses: cachix/install-nix-action@v16

12
ci.nix
View File

@@ -3,7 +3,7 @@
system,
name,
}: let
nixpkgs = inputs.nixos-stable;
inherit (inputs) nixpkgs;
pkgs = nixpkgs.legacyPackages.${system};
ensureFiles = paths:
pkgs.runCommand "directory" {} ''
@@ -23,13 +23,6 @@
"nixos-config=${toString ./.}/systems/${name}/configuration.nix"
"system-secrets=${systemSecrets}"
"secrets=${sharedSecrets}"
"nixpkgs=${
toString (
if name == "kabsa" || name == "manakish"
then inputs.nixos-unstable
else inputs.nixos-stable
)
}"
]
++ nixpkgs.lib.mapAttrsToList (name: value: "${name}=${value}") inputs);
# cd ~/.password-store/shared && find * -type f | sed 's/.gpg$//'
@@ -43,7 +36,6 @@
"mail/gmail/amroplay"
"mail/gmail/kieran.meinhardt"
"mail/meinhaki"
"mail/dslalewa"
"mail/posteo"
"nextcloud-fysi/password"
"nextcloud/password"
@@ -62,7 +54,6 @@
kabsa = ensureFiles basic;
manakish = ensureFiles basic;
tahina = ensureFiles basic;
ful = ensureFiles (["root.password"] ++ basic);
makanek = ensureFiles ([
"irc/retiolum"
"irc/hackint"
@@ -82,7 +73,6 @@
"telegram/menstruation.token"
"telegram/cool_village.token"
"telegram/kmein.token"
"telegram/krebs.token"
"telegram/prometheus.token"
"weechat/relay"
]

View File

@@ -3,15 +3,29 @@
lib,
config,
...
}: let
alacritty-cfg = theme:
(pkgs.formats.yaml {}).generate "alacritty.yml" {
window.opacity = 0.95;
}: {
environment.variables.TERMINAL = "alacritty";
environment.systemPackages = [
pkgs.alacritty
];
home-manager.users.me.xdg.configFile = let
inherit (import <niveum/lib>) colours;
colourNames = ["black" "red" "green" "yellow" "blue" "magenta" "cyan" "white"];
colourPairs = lib.getAttrs colourNames colours;
in {
"alacritty/alacritty.yml".source = (pkgs.formats.yaml {}).generate "alacritty.yml" {
background_opacity = 0.9;
colors = {
primary = {inherit (colours) background foreground;};
normal = lib.mapAttrs (_: colour: colour.dark) colourPairs;
bright = lib.mapAttrs (_: colour: colour.bright) colourPairs;
};
font = {
normal.family = "Monospace";
size = 6;
};
live_config_reload = true;
key_bindings = [
{
key = "Plus";
@@ -29,34 +43,6 @@
action = "ResetFontSize";
}
];
colors = let
colourNames = ["black" "red" "green" "yellow" "blue" "magenta" "cyan" "white"];
colourPairs = lib.getAttrs colourNames theme;
in {
primary = {inherit (theme) background foreground;};
cursor = {inherit (theme) cursor;};
normal = lib.mapAttrs (_: colour: colour.dark) colourPairs;
bright = lib.mapAttrs (_: colour: colour.bright) colourPairs;
};
};
alacritty-pkg = pkgs.symlinkJoin {
name = "alacritty";
paths = [
(pkgs.writeDashBin "alacritty" ''
${pkgs.alacritty}/bin/alacritty --config-file /var/theme/config/alacritty.yml "$@"
'')
pkgs.alacritty
];
};
in {
environment.variables.TERMINAL = "alacritty";
environment.systemPackages = [
alacritty-pkg
];
environment.etc = {
"themes/dark/alacritty.yml".source = alacritty-cfg (import <niveum/lib/colours/ayu-dark.nix>);
"themes/light/alacritty.yml".source = alacritty-cfg (import <niveum/lib/colours/ayu-light.nix>);
};
}

View File

@@ -8,7 +8,7 @@
acpi_call
];
boot.kernelModules = ["tp_smapi" "acpi_call"];
environment.systemPackages = [pkgs.tpacpi-bat pkgs.powertop];
environment.systemPackages = [pkgs.tpacpi-bat];
services.tlp = {
enable = true;

View File

@@ -7,7 +7,6 @@
"cjpalhdlnbpafiamejdnhcphjbkeiagm" # uBlock Origin
"pjjgklgkfeoeiebjogplpnibpfnffkng" # undistracted
"nhdogjmejiglipccpnnnanhbledajbpd" # vuejs devtools
"eimadpbcbfnmbkopoojfekhnkhdbieeh" # dark reader
];
};

View File

@@ -47,12 +47,6 @@ in {
enable = true;
startInBackground = true;
};
systemd.user.services.nextcloud-client = {
Unit = {
Wants = ["gnome-keyring.service"];
After = ["gnome-keyring.service"];
};
};
};
environment.systemPackages = [

View File

@@ -52,7 +52,6 @@ in {
enable = true;
options = {
selection-clipboard = "clipboard";
recolor-keephue = true;
# first-page-column = "1:1"; # makes side-by-side mode start on the left side
};
};
@@ -80,6 +79,7 @@ in {
hardware.pulseaudio = {
enable = true;
package = pkgs.pulseaudioFull;
extraModules = [pkgs.pulseaudio-modules-bt];
# copy server:/run/pulse/.config/pulse/cookie to client:~/.config/pulse/cookie to authenticate a client machine
zeroconf.discovery.enable = true;
extraConfig = ''
@@ -144,8 +144,8 @@ in {
wcd = "source ${wcd}";
im = "${pkgs.openssh}/bin/ssh weechat@makanek -t tmux attach-session -t IM";
where = "source ${where}";
yt = "${pkgs.yt-dlp}/bin/yt-dlp --add-metadata -ic"; # Download video link
yta = "${pkgs.yt-dlp}/bin/yt-dlp --add-metadata -xic"; # Download with audio
yt = "${pkgs.youtube-dl}/bin/youtube-dl --add-metadata -ic"; # Download video link
yta = "${pkgs.youtube-dl}/bin/youtube-dl --add-metadata -xic"; # Download with audio
};
}
{i18n.defaultLocale = "en_DK.UTF-8";}
@@ -170,15 +170,13 @@ in {
{
security.wrappers = {
pmount = {
setuid = true;
owner = "root";
group = "root";
group = "users";
source = "${pkgs.pmount}/bin/pmount";
};
pumount = {
setuid = true;
owner = "root";
group = "root";
group = "users";
source = "${pkgs.pmount}/bin/pumount";
};
};
@@ -209,9 +207,6 @@ in {
})
localAddresses;
}
{
home-manager.users.me.home.stateVersion = "22.05";
}
./alacritty.nix
./backup.nix
./bash.nix
@@ -249,7 +244,7 @@ in {
./polkit.nix
./power-action.nix
./printing.nix
# ./openweathermap.nix
./openweathermap.nix
./wallpaper.nix
./redshift.nix
./retiolum.nix
@@ -260,7 +255,7 @@ in {
./sshd.nix
./sudo.nix
./sxiv.nix
./themes.nix
./theming.nix
./tmux.nix
./traadfri.nix
./unclutter.nix

View File

@@ -12,5 +12,5 @@
];
};
users.users.me.extraGroups = ["docker"];
environment.systemPackages = [pkgs.docker pkgs.docker-compose];
environment.systemPackages = [pkgs.docker pkgs.docker_compose];
}

View File

@@ -7,17 +7,14 @@
alegreya
alegreya-sans
amiri
annapurna-sil
cantarell-fonts
charis-sil
corefonts
crimson
eb-garamond
etBook
ezra-sil
fira
font-awesome
galatia-sil
font-awesome-ttf
gentium
gfs-fonts
gyre-fonts
@@ -29,6 +26,7 @@
libre-bodoni
lmodern
merriweather
noto-fonts
ocr-a
roboto
roboto-mono

View File

@@ -50,12 +50,12 @@ in {
rebase.autoStash = true;
merge.autoStash = true;
# # ref https://github.com/dandavison/delta
# core.pager = "${pkgs.delta}/bin/delta";
# interactive.diffFilter = "${pkgs.delta}/bin/delta --color-only";
# delta.navigate = true;
# merge.conflictStyle = "diff3";
# diff.colorMoved = "default";
# ref https://github.com/dandavison/delta
core.pager = "${pkgs.delta}/bin/delta";
interactive.diffFilter = "${pkgs.delta}/bin/delta --color-only";
delta.navigate = true;
merge.conflictStyle = "diff3";
diff.colorMoved = "default";
};
};
};

View File

@@ -5,17 +5,6 @@
}: {
imports = [<niveum/modules/hledger.nix>];
environment.systemPackages = let
timeLedger = "$HOME/projects/ledger/time.timeclock";
in [
(pkgs.writers.writeDashBin "hora-edit" ''
$EDITOR + "${timeLedger}" && ${pkgs.git}/bin/git -C "$(${pkgs.coreutils}/bin/dirname ${timeLedger})" commit --all --message "$(${pkgs.coreutils}/bin/date -Im)"
'')
(pkgs.writers.writeDashBin "hora" ''
${pkgs.hledger}/bin/hledger -f "${timeLedger}" "$@"
'')
];
niveum.hledger = {
enable = true;
ledgerFile = "$HOME/projects/ledger/all.journal";

View File

@@ -34,7 +34,6 @@
"devanagari" = pkgs.writers.writeDash "devanagari" ''
${pkgs.scripts.devanagari}/bin/devanagari
'';
"avesta" = pkgs.writeScript "avesta" (builtins.readFile <niveum/packages/scripts/avesta.sed>);
"curl" = pkgs.writers.writeDash "curl" ''
${pkgs.curl}/bin/curl -fSs "$(${pkgs.coreutils}/bin/cat)"
'';
@@ -248,9 +247,8 @@ in {
"${modifier}+p" = "exec --no-startup-id ${pkgs.pass}/bin/passmenu -l 5";
"${modifier}+u" = "exec ${pkgs.scripts.unicodmenu}/bin/unicodmenu";
"${modifier}+F6" = "exec ${pkgs.xorg.xkill}/bin/xkill";
"${modifier}+F7" = "exec ${pkgs.scripts.showkeys-toggle}/bin/showkeys-toggle";
"${modifier}+F8" = "exec switch-theme toggle";
"${modifier}+F8" = "exec ${pkgs.xorg.xkill}/bin/xkill";
"${modifier}+F9" = "exec ${pkgs.redshift}/bin/redshift -O 4000 -b 0.85";
"${modifier}+F10" = "exec ${pkgs.redshift}/bin/redshift -x";
"${modifier}+F11" = "exec ${pkgs.xcalib}/bin/xcalib -invert -alter";

View File

@@ -4,47 +4,17 @@
...
}: let
commaSep = builtins.concatStringsSep ",";
xkbOptions = ["compose:caps" "terminate:ctrl_alt_bksp" "grp:ctrls_toggle"];
languages = {
de = "T3";
gr = "polytonic";
ru = "phonetic";
ara = "buckwalter";
};
defaultLanguage = "de";
in {
# man 7 xkeyboard-config
services.xserver = {
layout = "de";
# T3: https://upload.wikimedia.org/wikipedia/commons/a/a9/German-Keyboard-Layout-T3-Version1-large.png
# buckwalter: http://www.qamus.org/transliteration.htm
xkbVariant = "T3";
layout = commaSep ["de" "gr"];
xkbVariant = commaSep ["T3" "polytonic"];
xkbOptions =
commaSep xkbOptions;
commaSep ["compose:caps" "terminate:ctrl_alt_bksp" "grp:ctrls_toggle"];
libinput.enable = true;
};
console.keyMap = "de";
environment.systemPackages =
lib.mapAttrsToList
(language: variant:
pkgs.writers.writeDashBin "kb-${language}" ''
${pkgs.xorg.setxkbmap}/bin/setxkbmap ${defaultLanguage},${language} ${languages.${defaultLanguage}},${variant} ${toString (map (option: "-option ${option}") xkbOptions)}
'')
languages;
# improve held key rate
services.xserver.displayManager.sessionCommands = "${pkgs.xorg.xset}/bin/xset r rate 300 50";
systemd.user.services.gxkb = {
wantedBy = ["graphical-session.target"];
serviceConfig = {
SyslogIdentifier = "gxkb";
ExecStart = "${pkgs.gxkb}/bin/gxkb";
Restart = "always";
RestartSec = "15s";
StartLimitBurst = 0;
};
};
}

View File

@@ -21,7 +21,6 @@ in {
ytdl-format = "bestvideo[height<=?720][fps<=?30][vcodec!=?vp9]+bestaudio/best";
ytdl-raw-options = lib.concatStringsSep "," [''sub-lang="de,en"'' "write-sub=" "write-auto-sub="];
screenshot-template = "%F-%wH%wM%wS-%#04n";
script-opts = "ytdl_hook-ytdl_path=${pkgs.yt-dlp}/bin/yt-dlp";
};
bindings = {
"Alt+RIGHT" = "add video-rotate 90";

View File

@@ -47,20 +47,6 @@
};
};
accounts.work-admin = {
user = "dslalewa";
password = lib.strings.fileContents <secrets/mail/dslalewa>;
address = "admin.alew.vglsprwi@hu-berlin.de";
imap = "mailbox.cms.hu-berlin.de";
smtp = "mailhost.cms.hu-berlin.de";
smtpSettings = smtp: "smtp://${smtp}";
folders = {
drafts = "Drafts";
sent = "Sent";
trash = "Trash";
};
};
accounts.work-fysi = rec {
user = "kieran@fysi.tech";
address = user;
@@ -145,7 +131,6 @@ in {
application/pdf; ${pkgs.zathura}/bin/zathura %s ;
application/pgp-encrypted; ${pkgs.gnupg}/bin/gpg -d '%s'; copiousoutput;
application/pgp-keys; ${pkgs.gnupg}/bin/gpg --import '%s'; copiousoutput;
application/vnd.openxmlformats*; ${pkgs.libreoffice}/bin/soffice '%s';
''
}:$mailcap_path

View File

@@ -44,15 +44,6 @@
vim-repeat
vim-sensible
vim-surround
(pkgs.vimUtils.buildVimPlugin {
name = "vim-dim-1.1.0";
src = pkgs.fetchFromGitHub {
owner = "jeffkreeftmeijer";
repo = "vim-dim";
rev = "1.1.0";
sha256 = "sha256-lyTZUgqUEEJRrzGo1FD8/t8KBioPrtB3MmGvPeEVI/g=";
};
})
];
opt = [
csv

View File

@@ -48,7 +48,7 @@ in {
networking.networkmanager = {
enable = true;
plugins = [
packages = [
pkgs.networkmanager-openvpn
pkgs.networkmanager-fortisslvpn
];

View File

@@ -5,7 +5,7 @@
}: let
ytdl-format = "'bestvideo[height<=?720][fps<=?30][vcodec!=?vp9]+bestaudio/best'";
youtube-download = "${pkgs.ts}/bin/ts ${pkgs.yt-dlp}/bin/yt-dlp -f ${ytdl-format} --add-metadata";
youtube-download = "${pkgs.ts}/bin/ts ${pkgs.youtube-dl}/bin/youtube-dl -f ${ytdl-format} --add-metadata";
newsboat-home = "${config.users.users.me.home}/cloud/Seafile/Documents/newsboat";
linkhandler-bin = "${pkgs.scripts.linkhandler}/bin/linkhandler";

View File

@@ -8,6 +8,8 @@
menstruation = pkgs.callPackage <menstruation-backend> {};
pandoc-doc = pkgs.callPackage <niveum/packages/man/pandoc.nix> {};
nixpkgs-unstable = import <nixpkgs-unstable> {config.allowUnfree = true;};
zoteroStyle = {
name,
sha256,
@@ -33,7 +35,7 @@
})
];
astrolog = pkgs.astrolog.overrideAttrs (old:
astrolog = nixpkgs-unstable.astrolog.overrideAttrs (old:
old
// {
installPhase = ''
@@ -71,7 +73,7 @@ in {
whois
dnsutils
# FILE MANAGERS
lf
ranger
pcmanfm
# MEDIA
ffmpeg
@@ -93,7 +95,6 @@ in {
fd # better find
file # determine file type
dos2unix
genpass # generate passwords
ncdu # ncurses disk usage
python3Packages.jsonschema # json validation
jq # json toolkit
@@ -101,10 +102,10 @@ in {
htmlq
xsv # csv toolkit
xmlstarlet # xml toolkit
man-pages
manpages
posix_man_pages
tree
exfat # to mount windows drives
fuse_exfat # to mount windows drives
parallel # for parallel, since moreutils shadows task spooler
ripgrep # better grep
rlwrap
@@ -116,7 +117,7 @@ in {
arandr # xrandr for noobs
libnotify # for notify-send
xclip # clipboard CLI
xdragon # drag and drop
dragon-drop # drag and drop
xorg.xkill # kill by clicking
audacity
calibre
@@ -125,18 +126,17 @@ in {
astrolog
anki # flashcards
jbofihe # lojbanic software
zoom-us # video conferencing
alejandra # nix formatter
nixpkgs-unstable.zoom-us # video conferencing
nixpkgs-unstable.alejandra # nix formatter
pdfgrep # search in pdf
pdftk # pdf toolkit
mupdf
poppler_utils # pdf toolkit
foxitreader # for viewing pdf annotations
okular # the word is nucular
xournalpp # for annotating pdfs
pdfpc # presenter console for pdf slides
hc # print files as qr codes
yt-dlp
youtubeDL
espeak
bc # calculator
pari # gp -- better calculator
@@ -175,6 +175,7 @@ in {
scripts.fkill
scripts.wttr
scripts.unicodmenu
scripts.horoscope
scripts.closest
scripts.trans
scripts.mpv-radio
@@ -232,7 +233,7 @@ in {
]))
python3Packages.poetry
html-tidy
htmlTidy
nodePackages.csslint
nodePackages.jsonlint
nodePackages.prettier

View File

@@ -12,13 +12,6 @@ in {
extraBackends = [hp-driver];
};
environment.systemPackages = [
pkgs.system-config-printer
];
# allow connecting to .local printers
services.avahi.nssmdns = true;
hardware.printers.ensurePrinters = [
{
name = "OfficeJet";

View File

@@ -5,8 +5,6 @@
...
}: let
inherit (import <niveum/lib>) sshPort kieran;
externalNetwork = import <niveum/lib/external-network.nix>;
sshIdentity = name: "${config.users.users.me.home}/.ssh/${name}";
in {
services.xserver.displayManager.sessionCommands = "${pkgs.openssh}/bin/ssh-add";
@@ -27,12 +25,7 @@ in {
port = sshPort;
};
makanek = {
hostname = externalNetwork.makanek;
user = "root";
port = sshPort;
};
ful = {
hostname = externalNetwork.ful;
hostname = "makanek.r";
user = "root";
port = sshPort;
};
@@ -46,6 +39,11 @@ in {
user = "kfm";
port = sshPort;
};
toum = {
hostname = "toum.r";
user = "root";
port = sshPort;
};
kabsa = {
hostname = "kabsa.r";
user = "kfm";
@@ -59,15 +57,9 @@ in {
hostname = "135.181.85.233";
user = "root";
};
"fysi-dev1" = {
hostname = "94.130.229.139";
user = "root";
identityFile = sshIdentity "fysiweb";
};
"fysi-shared0" = {
hostname = "49.12.205.235";
user = "root";
identityFile = sshIdentity "fysiweb";
oracle = {
hostname = "130.61.171.199";
user = "ubuntu";
};
};
};

View File

@@ -1,11 +1,9 @@
{
config,
pkgs,
lib,
...
}: let
unstable = import <nixos-unstable> {inherit (config.nixpkgs) config;};
nixpkgs-unstable = import <nixpkgs-unstable> {};
toSymbols = pkgs.writers.writeDash "to-symbols" ''
${pkgs.gnused}/bin/sed '
s/\bTri\b//;
@@ -52,8 +50,8 @@ in {
now=$(${pkgs.coreutils}/bin/date +%_H:%M | ${pkgs.gnused}/bin/sed 's/^\s*//')
date=$(${pkgs.coreutils}/bin/date +'%m %d %Y')
{
${unstable.astrolog}/bin/astrolog -qd $date -zN Berlin -Yt -Yd -d -R Uranus Neptune Pluto "North Node"
${unstable.astrolog}/bin/astrolog -Yt -Yd -q 10 22 1999 6:32 -zN Kassel -td $date -R Uranus Neptune Pluto "North Node"
${nixpkgs-unstable.astrolog}/bin/astrolog -qd $date -zN Berlin -Yt -Yd -d -R Uranus Neptune Pluto "North Node"
${nixpkgs-unstable.astrolog}/bin/astrolog -Yt -Yd -q 10 22 1999 6:32 -zN Kassel -td $date -R Uranus Neptune Pluto "North Node"
} | ${toSymbols} | ${pkgs.coreutils}/bin/sort -n | ${pkgs.gnugrep}/bin/grep "^$now" || :
'');
};

View File

@@ -20,12 +20,4 @@ in {
parseMode = "Markdown";
command = "${autorenkalender}/bin/autorenkalender";
};
niveum.passport.services = [
{
title = "Autorenkalender";
description = "sends <a href=\"https://www.projekt-gutenberg.org/\">Projekt Gutenberg</a>'s anniversary information to Telegram.";
link = "https://t.me/Autorenkalender";
}
];
}

View File

@@ -4,12 +4,7 @@
lib,
...
}: let
nixpkgs-21-11 = import (builtins.fetchTarball "https://github.com/NixOS/nixpkgs/archive/nixos-21.11.tar.gz") {
config.permittedInsecurePackages = [
"python3.9-poetry-1.1.12"
];
};
telebots = nixpkgs-21-11.callPackage <telebots> {};
telebots = pkgs.callPackage <telebots> {};
reverseDirectory = "/run/telegram-reverse";
proverbDirectory = "/run/telegram-proverb";
inherit (import <niveum/lib>) tmpfilesConfig;
@@ -31,24 +26,6 @@ in {
inherit path;
}) [reverseDirectory proverbDirectory];
niveum.passport.services = [
{
title = "Rückwarts-Bot";
link = "https://t.me/RueckwaertsBot";
description = "reverses things on Telegram.";
}
{
title = "BetaCode-Bot";
link = "https://t.me/BetaCodeBot";
description = "converts <a href=\"https://en.wikipedia.org/wiki/Beta_Code\">beta code</a> to polytonic Greek on Telegram.";
}
{
title = "Sprichwortgenerator-Bot";
link = "https://t.me/SprichwortGeneratorBot";
description = "generates useless German proverbs with optional stock photo background on Telegram.";
}
];
systemd.services.telegram-reverse = {
wantedBy = ["multi-user.target"];
description = "Telegram reverse bot";

View File

@@ -10,15 +10,8 @@ in {
enable = true;
time = "08/6:00";
token = lib.strings.fileContents <system-secrets/telegram/kmein.token>;
chatIds = ["-1001760262519"];
chatIds = ["18980945" "757821027" "455964311"];
command = "${literature-quote}/bin/literature-quote";
parseMode = "Markdown";
};
niveum.passport.services = [
{
title = "Literature quote bot";
description = "sends me and my friends three <a href=\"https://logotheca.xn--kiern-0qa.de/\">logotheca</a> quotes a day.";
}
];
}

View File

@@ -34,12 +34,4 @@ in {
});
serviceConfig.Restart = "always";
};
niveum.passport.services = [
{
title = "Nachtischsatan-Bot";
link = "https://t.me/NachtischsatanBot";
description = "*flubberflubber*";
}
];
}

View File

@@ -17,12 +17,4 @@
'');
parseMode = "Markdown";
};
niveum.passport.services = [
{
title = "Thesaurus Linguae Graecae Word of the Day";
description = "sends <a href=\"https://stephanus.tlg.uci.edu/\">TLG</a>'s word of the day to Telegram.";
link = "https://t.me/tlgwotd";
}
];
}

View File

@@ -1,82 +0,0 @@
{
config,
lib,
pkgs,
...
}: let
switch-theme = pkgs.writers.writeDashBin "switch-theme" ''
set -efux
if [ "$1" = toggle ]; then
if [ "$(${pkgs.coreutils}/bin/cat /var/theme/current_theme)" = dark ]; then
${placeholder "out"}/bin/switch-theme light
else
${placeholder "out"}/bin/switch-theme dark
fi
elif test -e "/etc/themes/$1"; then
mkdir -p /var/theme/config
${pkgs.rsync}/bin/rsync --chown=${config.users.users.me.name}:users -a --delete "/etc/themes/$1/" /var/theme/config/
echo "$1" > /var/theme/current_theme
${pkgs.coreutils}/bin/chown ${config.users.users.me.name}:users /var/theme/current_theme
${pkgs.xorg.xrdb}/bin/xrdb -merge /var/theme/config/xresources
${pkgs.procps}/bin/pkill -HUP xsettingsd
else
echo "theme $1 not found"
fi
'';
in {
systemd.services.xsettingsd = {
wantedBy = ["multi-user.target"];
after = ["display-manager.service"];
environment.DISPLAY = ":0";
serviceConfig = {
ExecStart = "${pkgs.xsettingsd}/bin/xsettingsd -c /var/theme/config/xsettings.conf";
User = config.users.users.me.name;
Restart = "always";
RestartSec = "15s";
};
};
systemd.tmpfiles.rules = [
"d /var/theme/ 755 ${config.users.users.me.name} users"
];
environment.systemPackages = [
switch-theme
pkgs.capitaine-cursors
];
home-manager.users.me = {
home.pointerCursor = {
name = "capitaine-cursors-white";
package = pkgs.capitaine-cursors;
size = 16;
};
};
environment.etc = {
"themes/light/xsettings.conf".text = ''
Net/ThemeName "Adwaita"
'';
"themes/light/xresources".text = ''
*background: #ffffff
*foreground: #000000
'';
"themes/dark/xsettings.conf".text = ''
Net/ThemeName "Adwaita-dark"
'';
"themes/dark/xresources".text = ''
*background: #000000
*foreground: #ffffff
'';
};
system.activationScripts.theme.text = ''
export DISPLAY=:0
if test -e /var/theme/current_theme; then
${switch-theme}/bin/switch-theme "$(cat /var/theme/current_theme)" ||
${switch-theme}/bin/switch-theme dark
else
${switch-theme}/bin/switch-theme dark
fi
'';
}

View File

@@ -23,11 +23,6 @@ in {
enable = true;
platformTheme = "gtk";
};
home.pointerCursor =
theme.cursor
// {
size = 16;
x11.enable = true;
};
xsession.pointerCursor = theme.cursor // {size = 16;};
};
}

90
flake.lock generated
View File

@@ -2,11 +2,11 @@
"nodes": {
"flake-utils": {
"locked": {
"lastModified": 1656928814,
"narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=",
"lastModified": 1648297722,
"narHash": "sha256-W+qlPsiZd8F3XkzXOzAoR+mpFqzm3ekQkJNa+PIh1BQ=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "7e2a3b3dfd9af950a856d66b0a7d01e3c18aa249",
"rev": "0f8662f1319ad6abf89b3380dd2722369fc51ade",
"type": "github"
},
"original": {
@@ -18,21 +18,20 @@
"home-manager": {
"inputs": {
"nixpkgs": [
"nixos-unstable"
],
"utils": "utils"
"nixpkgs"
]
},
"locked": {
"lastModified": 1657887110,
"narHash": "sha256-8VV0/kZed2z8fGtEc2zr+WLxTow+JTIlMjnSisyv0GQ=",
"lastModified": 1648834319,
"narHash": "sha256-i5Aj4Aw64D/A0X6XW5LxSS4XBnYj7gMz+kN4dpsbdk8=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "4c5106ed0f3168ff2df21b646aef67e86cbfc11c",
"rev": "0bdbdea2e26c984b096f4f7d10e3c88536a980b0",
"type": "github"
},
"original": {
"owner": "nix-community",
"ref": "master",
"ref": "release-21.11",
"repo": "home-manager",
"type": "github"
}
@@ -43,7 +42,7 @@
"flake-utils"
],
"nixpkgs": [
"nixos-stable"
"nixpkgs"
]
},
"locked": {
@@ -97,7 +96,7 @@
"locked": {
"lastModified": 1554228333,
"narHash": "sha256-hG/PlcCvCQhNcU55NpHfATkyH9k6cZmO7uvBoJjasXU=",
"ref": "refs/heads/master",
"ref": "master",
"rev": "c528cf970e292790b414b4c1c8c8e9d7e73b2a71",
"revCount": 32,
"type": "git",
@@ -108,34 +107,34 @@
"url": "https://cgit.krebsco.de/nix-writers"
}
},
"nixos-stable": {
"nixpkgs": {
"locked": {
"lastModified": 1657815135,
"narHash": "sha256-+5Jby1ayRjtSgsM5IpRNeUgdcIutCKQWR6sypRtd1RE=",
"lastModified": 1649490789,
"narHash": "sha256-YrhVxwoofZSx/wLZ4GYET//8vS+uqWX572zvdmP/Etg=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "c06d5fa9c605d143b15cafdbbb61c7c95388d76e",
"rev": "c86185d20d708013caf97a6adaa8dc6d72313c75",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-22.05",
"ref": "nixos-21.11",
"repo": "nixpkgs",
"type": "github"
}
},
"nixos-unstable": {
"nixpkgs-unstable": {
"locked": {
"lastModified": 1657802959,
"narHash": "sha256-9+JWARSdlL8KiH3ymnKDXltE1vM+/WEJ78F5B1kjXys=",
"lastModified": 1649541735,
"narHash": "sha256-JdOywA2jcdGCxNgu0dJA7ZNtaV7sS0HwuZg9YaXd94c=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "4a01ca36d6bfc133bc617e661916a81327c9bbc8",
"rev": "c2b6e029cd1efa0efd37daab89264ef040ae5669",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"ref": "master",
"repo": "nixpkgs",
"type": "github"
}
@@ -159,11 +158,11 @@
"retiolum": {
"flake": false,
"locked": {
"lastModified": 1656449345,
"narHash": "sha256-J6vftINxT6Sm4TjMEtUhpVz2vnGB5Fg5Dt4095t9eIU=",
"lastModified": 1647444524,
"narHash": "sha256-N4T1UXLkYJMQqk65LkTDpW70ujXXeZ9xe5k+LOpznAI=",
"owner": "krebs",
"repo": "retiolum",
"rev": "0371a65100b68d46e1811ec1e3efd8281bc741df",
"rev": "de6d7dc9bd671e65f2ee3004b6807625e7553e84",
"type": "github"
},
"original": {
@@ -180,8 +179,8 @@
"menstruation-backend": "menstruation-backend",
"menstruation-telegram": "menstruation-telegram",
"nix-writers": "nix-writers",
"nixos-stable": "nixos-stable",
"nixos-unstable": "nixos-unstable",
"nixpkgs": "nixpkgs",
"nixpkgs-unstable": "nixpkgs-unstable",
"recht": "recht",
"retiolum": "retiolum",
"scripts": "scripts",
@@ -195,11 +194,11 @@
"scripts": {
"flake": false,
"locked": {
"lastModified": 1657447671,
"narHash": "sha256-SjKlNLllYdW/OHLk55hh23E3XsBU+R0Pu18LXfsxgH0=",
"lastModified": 1648400983,
"narHash": "sha256-I9ADWgUN1orbnXPBW4kulHpv8wkx6C8zsQcg9wphpPg=",
"owner": "kmein",
"repo": "scripts",
"rev": "0bfb5d29cbd948a82d2a1c274bc0d374a88c9c88",
"rev": "f5df67a2416d8f05a7dbfea269c44668854c7887",
"type": "github"
},
"original": {
@@ -211,11 +210,11 @@
"stockholm": {
"flake": false,
"locked": {
"lastModified": 1656449028,
"narHash": "sha256-9a41If9iQrWjzFwB2G/O9ZoLRPT/O/wm3PD9nZsjmO8=",
"ref": "refs/heads/master",
"rev": "64dbf31d70497d6a66f89fdd86ac1884e28f7bc8",
"revCount": 10685,
"lastModified": 1649089964,
"narHash": "sha256-ybuVI8rnpMyBUoyoIXJ1e3QBMBIOoEgKTiFzIPfzy8A=",
"ref": "master",
"rev": "b3833baee96d7bce2c54295110b40c646468a1ff",
"revCount": 10500,
"type": "git",
"url": "https://cgit.lassul.us/stockholm"
},
@@ -243,11 +242,11 @@
"tinc-graph": {
"flake": false,
"locked": {
"lastModified": 1653080212,
"narHash": "sha256-BcfppAuVNp0hMcrMG/ZxE4juSrdQbJSUIA0eHS1/Wxo=",
"lastModified": 1639820904,
"narHash": "sha256-d4s2PulBGIIQXtX7blZz+Wnmij5dK/IrBcilNGjqZC4=",
"owner": "kmein",
"repo": "tinc-graph",
"rev": "ea0ef2e5542684d1d8e34a626cb9295dec33e70d",
"rev": "1b9c69ffdbdab82d30a23e44f739feea63d94163",
"type": "github"
},
"original": {
@@ -287,21 +286,6 @@
"repo": "tuna",
"type": "github"
}
},
"utils": {
"locked": {
"lastModified": 1653893745,
"narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
}
},
"root": "root",

View File

@@ -2,17 +2,16 @@
description = "niveum: packages, modules, systems";
inputs = {
nixos-stable.url = "github:NixOS/nixpkgs/nixos-22.05";
nixos-unstable.url = "github:NixOS/nixpkgs/nixos-unstable";
nixpkgs.url = "github:NixOS/nixpkgs/nixos-21.11";
nixpkgs-unstable.url = "github:NixOS/nixpkgs/master";
flake-utils.url = "github:numtide/flake-utils";
home-manager = {
url = "github:nix-community/home-manager/master";
inputs.nixpkgs.follows = "nixos-unstable";
url = "github:nix-community/home-manager/release-21.11";
inputs.nixpkgs.follows = "nixpkgs";
};
krops = {
url = "github:Mic92/krops";
inputs.nixpkgs.follows = "nixos-stable";
inputs.nixpkgs.follows = "nixpkgs";
inputs.flake-utils.follows = "flake-utils";
};
@@ -71,8 +70,8 @@
menstruation-backend,
menstruation-telegram,
nix-writers,
nixos-unstable,
nixos-stable,
nixpkgs,
nixpkgs-unstable,
recht,
retiolum,
scripts,
@@ -83,75 +82,44 @@
tuna,
} @ inputs: let
system = "x86_64-linux";
pkgs = nixos-stable.legacyPackages.${system};
home =
if nixos-stable.lib.inPureEvalMode or false
then _: /nonexistent
else import lib/home.nix;
source = {
sources,
unstable,
name,
}:
pkgs = nixpkgs.legacyPackages.${system};
source = name:
{
niveum.file = toString ./.;
nixos-config.symlink = "niveum/systems/${name}/configuration.nix";
system-secrets.pass = {
dir = toString (home /.password-store);
dir = toString ~/.password-store;
name = "systems/${name}";
};
secrets.pass = {
dir = toString (home /.password-store);
dir = toString ~/.password-store;
name = "shared";
};
nixpkgs.file = toString (
if unstable
then inputs.nixos-unstable
else inputs.nixos-stable
);
}
// nixos-stable.lib.mapAttrs' (name: value: {
// nixpkgs.lib.mapAttrs' (name: value: {
inherit name;
value.file = toString value;
}) (nixos-stable.lib.filterAttrs (name: _: builtins.elem name sources) inputs);
}) (nixpkgs.lib.filterAttrs (name: _: !builtins.elem name ["flake-utils" "krops" "self"]) inputs);
deployScriptFor = {
name,
user ? "root",
host,
unstable ? false,
sshPort ? (import ./lib/default.nix).sshPort,
sources,
}:
}: let
inherit (import ./lib/default.nix) sshPort;
in
toString (krops.packages.${system}.writeDeploy "deploy-${name}" {
source = krops.lib.evalSource [(source {inherit sources unstable name;})];
target = "${user}@${host}:${toString sshPort}";
source = krops.lib.evalSource [(source name)];
target = "root@${host}:${toString sshPort}";
});
in {
apps.${system} = let
forSystems = f: builtins.listToAttrs (map f (builtins.attrNames (builtins.readDir ./systems)));
externalNetwork = import ./lib/external-network.nix;
deployScripts = forSystems (name: {
name = "deploy-${name}";
value = {
type = "app";
program = deployScriptFor {
inherit name;
host =
if externalNetwork ? name
then externalNetwork.${name}
else "${name}.r";
unstable = name == "kabsa" || name == "manakish";
sources =
["nix-writers" "nixpkgs" "retiolum" "stockholm"]
++ {
zaatar = ["traadfri"];
ful = [];
tahina = [];
kabsa = ["traadfri" "nixos-unstable" "home-manager" "menstruation-backend" "recht"];
manakish = ["traadfri" "nixos-unstable" "home-manager" "menstruation-backend" "recht"];
makanek = ["nixos-unstable" "menstruation-telegram" "menstruation-backend" "scripts" "telebots" "tinc-graph"];
}
.${name};
host = "${name}.r";
};
};
});

View File

@@ -1,37 +0,0 @@
{
black = {
dark = "#000000";
bright = "#323232";
};
red = {
dark = "#ff3333";
bright = "#ff6565";
};
green = {
dark = "#b8cc52";
bright = "#e9fe83";
};
yellow = {
dark = "#e6c446";
bright = "#fff778";
};
blue = {
dark = "#36a3d9";
bright = "#68d4ff";
};
magenta = {
dark = "#f07078";
bright = "#ffa3aa";
};
cyan = {
dark = "#95e5cb";
bright = "#c7fffc";
};
white = {
dark = "#ffffff";
bright = "#ffffff";
};
background = "#0e1419";
foreground = "#e5e1cf";
cursor = "#f19618";
}

View File

@@ -1,37 +0,0 @@
{
black = {
dark = "#000000";
bright = "#323232";
};
red = {
dark = "#ff3333";
bright = "#ff6565";
};
green = {
dark = "#86b200";
bright = "#b8e532";
};
yellow = {
dark = "#f19618";
bright = "#ffc849";
};
blue = {
dark = "#41a6d9";
bright = "#73d7ff";
};
magenta = {
dark = "#f07078";
bright = "#ffa3aa";
};
cyan = {
dark = "#4cbe99";
bright = "#7ff0cb";
};
white = {
dark = "#ffffff";
bright = "#ffffff";
};
background = "#fafafa";
foreground = "#5b6673";
cursor = "#ff6900";
}

View File

@@ -1,5 +1,5 @@
pkgs: rec {
terminal = "alacritty";
terminal = "${pkgs.alacritty}/bin/alacritty";
browser = "${pkgs.brave}/bin/brave";
fileManager = "${terminal} -e ${pkgs.ranger}/bin/ranger";
}

View File

@@ -28,7 +28,7 @@ rec {
serveHtml = file: pkgs: ''
default_type "text/html";
root ${
pkgs.linkFarm "www" [
pkgs.linkFarm "fahrplan" [
{
name = "index.html";
path = file;

View File

@@ -1,4 +0,0 @@
{
ful = "130.61.217.114";
makanek = "88.99.83.173";
}

View File

@@ -1,2 +0,0 @@
# https://github.com/hercules-ci/gitignore.nix/pull/58/files
path: ~/. + path

View File

@@ -47,7 +47,7 @@
}
</style>
<script>
const newsEndpoint = "http://radio-news.r";
const newsEndpoint = "http://prism.r:7999";
function isoString(date) {
return date.toISOString().slice(0, -5) + "Z";
@@ -75,19 +75,15 @@
const startDate = document.createElement("time");
startDate.className = "start";
startDate.title = isoString(start);
startDate.title = start.toString();
startDate.setAttribute("datetime", isoString(start));
startDate.appendChild(
document.createTextNode(start.toLocaleString())
);
startDate.appendChild(document.createTextNode(isoString(start)));
const endDate = document.createElement("time");
endDate.className = "end";
endDate.title = isoString(end);
endDate.title = end.toString();
endDate.setAttribute("datetime", isoString(end));
endDate.appendChild(
document.createTextNode(end.toLocaleString())
);
endDate.appendChild(document.createTextNode(isoString(end)));
li.appendChild(document.createTextNode(newsItem.text));
li.appendChild(startDate);
@@ -115,23 +111,7 @@
location.reload();
}
const pad2 = (int) => (int < 10 ? `0${int}` : int.toString());
const localIsoString = (date) =>
`${date.getFullYear()}-${pad2(date.getMonth() + 1)}-${pad2(
date.getDate()
)}T${pad2(date.getHours())}:${pad2(date.getMinutes())}`;
function setDate() {
let now = new Date();
document.getElementById("time-from").value = localIsoString(now);
now.setHours(now.getHours() + 1);
document.getElementById("time-to").value = localIsoString(now);
}
window.onload = () => {
setDate();
setNextNews();
fetchNews();
};
@@ -142,10 +122,10 @@
<section>
<h1>Submit news</h1>
<form onsubmit="sendNews(event)">
<label>Start time</label>
<input type="datetime-local" id="time-from" name="from" required />
<label>End time</label>
<input type="datetime-local" id="time-to" name="to" required />
<label>Start date</label>
<input type="datetime-local" name="from" required />
<label>End date</label>
<input type="datetime-local" name="to" required />
<label>News text</label>
<textarea name="text" rows="10" required></textarea>
<input type="submit" />

View File

@@ -4,11 +4,6 @@
ipv6 = "42:0:3c46:861f:a118:8e9a:82c9:3d";
};
ful = {
ipv4 = "10.243.2.107";
ipv6 = "42:0:3c46:2c8b:a564:1213:9fb4:1bc4";
};
zaatar = {
ipv4 = "10.243.2.34";
ipv6 = "42:0:3c46:156e:10b6:3bd6:6e82:b2cd";

View File

@@ -7,7 +7,7 @@ nnoremap <C-p> :FZF<CR>
nnoremap <C-l> :Rg<CR>
let g:fzf_layout = { 'down': '~15%' }
colorscheme dim
colorscheme paramount
" transparent background
hi Normal guibg=NONE ctermbg=NONE

View File

@@ -1,135 +0,0 @@
{
config,
lib,
pkgs,
...
}: let
cfg = config.niveum.passport;
sortOn = a: lib.sort (as1: as2: lib.lessThan (lib.getAttr a as1) (lib.getAttr a as2));
css = ''
body {
margin: 0;
font-family: "Fira Sans Condensed", sans-serif;
}
main {
margin: 0 auto;
display: grid;
grid-template-columns: 1fr 3fr;
grid-gap: 2em;
}
@media only screen and (max-width: 768px) {
main {
grid-template-columns: 1fr;
}
}
footer, section {
padding: 1em;
}
footer {
text-align: center;
}
dl {
border: 3px double #ccc;
padding: 0.5em;
}
dt {
float: left;
clear: left;
width: 200px;
text-align: right;
font-weight: bold;
margin-right: 1em;
margin-bottom: 1em;
}
dd {
margin: 0 0 0 110px;
padding: 0 0 0.5em 0;
margin-bottom: 1em;
}
'';
in
with lib; {
options.niveum.passport = {
enable = mkEnableOption "server passport";
introductionHTML = mkOption {type = types.str;};
virtualHost = mkOption {
type = types.str;
};
services = mkOption {
type = types.listOf (types.submodule {
options = {
title = mkOption {type = types.str;};
link = mkOption {
type = types.nullOr types.str;
default = null;
};
description = mkOption {
type = types.str;
default = "";
};
};
});
default = [];
};
};
config = mkIf cfg.enable {
services.nginx.enable = true;
services.nginx.virtualHosts."${cfg.virtualHost}".locations."/passport".extraConfig = ''
default_type "text/html";
root ${
pkgs.linkFarm "www" [
{
name = "passport/index.html";
path = pkgs.writeText "index.html" ''
<!doctype html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>${config.networking.hostName} passport</title>
<style>${css}</style>
</head>
<body>
<main>
<section id="server">
<h1>${config.networking.hostName}</h1>
${cfg.introductionHTML}
</section>
<section id="services">
<h2>Services</h2>
<dl>
${lib.strings.concatMapStringsSep "\n" (service: ''
<dt>
${lib.optionalString (service.link != null) "<a href=\"${service.link}\">"}
${service.title}
${lib.optionalString (service.link != null) "</a>"}
</dt>
<dd>
${service.description}
</dd>
'') (sortOn "title" cfg.services)}
</dl>
</section>
</main>
<footer>
<tt>${config.networking.hostName}</tt> is part of the <i><a href="https://github.com/kmein/niveum/tree/master/systems/${config.networking.hostName}">niveum</a></i> network.
</footer>
</body>
'';
}
]
};
index index.html;
'';
};
}

View File

@@ -39,15 +39,5 @@ in
GFS_Pyrsos = "0y0dv7y3n01bbhhnczflx1zcc7by56cffmr2xqixj2rd1nvchx0j";
GFS_Solomos = "1mpx9mw566awvfjdfx5sbz3wz5gbnjjw56gz30mk1lw06vxf0dxz";
GFS_Theokritos = "0haasx819x8c8yvna6pqywgi4060av2570jm34cddnz1fgnhv1b8";
# Heraklit
# Galatea
# Georgiou
# Ambrosia
# Fleischman
# Eustace
# Nicefore
# Jackson
# Garaldus
# Ignacio
};
}

View File

@@ -10,7 +10,7 @@ stdenv.mkDerivation {
src = fetchgit {
url = "https://github.com/jgm/pandoc";
rev = pandoc.version;
sha256 = "sha256-AY9GarrU7PBFgoYxqQkE2ghoUy7+0Gu6/Mwa+fdQM2U=";
sha256 = "0s4mczbql35wh6bhyi542yln24f530rlsw6akcv7lmp083rrlpy4";
};
buildPhase = ''
mkdir -p $out/man/man1

View File

@@ -1,54 +0,0 @@
#!/usr/bin/env -S sed -f
s/ā̊/𐬃/g
s//𐬝/g
s/ṣ̌/𐬴/g
s/š́/𐬳/g
s/ą̄/𐬅/g
s/ŋᵛ/𐬤/g
s/ə̄/𐬇/g
s/ŋ́/𐬣/g
s//𐬒/g
s/xᵛ/𐬓/g
s/a/𐬀/g
s/ā/𐬁/g
s/å/𐬂/g
s/ą/𐬄/g
s/ə/𐬆/g
s/e/𐬈/g
s/ē/𐬉/g
s/o/𐬊/g
s/ō/𐬋/g
s/i/𐬌/g
s/ī/𐬍/g
s/u/𐬎/g
s/ū/𐬏/g
s/k/𐬐/g
s/x/𐬑/g
s/g/𐬔/g
s/ġ/𐬕/g
s/γ/𐬖/g
s/c/𐬗/g
s/j/𐬘/g
s/t/𐬙/g
s/θ/𐬚/g
s/d/𐬛/g
s/δ/𐬜/g
s/p/𐬞/g
s/f/𐬟/g
s/b/𐬠/g
s/β/𐬡/g
s/ŋ/𐬢/g
s/n/𐬥/g
s/ń/𐬦/g
s//𐬧/g
s/m/𐬨/g
s//𐬩/g
s//𐬫/g
s/y/𐬪/g
s/v/𐬬/g
s/r/𐬭/g
s/s/𐬯/g
s/z/𐬰/g
s/š/𐬱/g
s/ž/𐬲/g
s/h/𐬵/g

View File

@@ -117,7 +117,7 @@ in
'';
tag = wrapScript {
packages = [pkgs.vorbis-tools pkgs.python3Packages.eyeD3 opustags];
packages = [pkgs.vorbisTools pkgs.python3Packages.eyeD3 opustags];
script = "${voidrice}/.local/bin/tag";
name = "tag";
};
@@ -307,11 +307,16 @@ in
packages = [pkgs.xdo];
};
ipa = wrapScript {
script = ./ipa.py;
name = "ipa";
packages = [pkgs.python3];
};
ipa =
pkgs.writers.writeHaskellBin "ipa" {
libraries = with pkgs; [haskellPackages.text haskellPackages.ipa];
} ''
import Data.Maybe (fromJust)
import Language.IPA
import qualified Data.Text as T
import qualified Data.Text.IO as T
main = T.interact (T.unwords . map (unIPA . fromJust . (xSampaToIpa =<<) . mkXSampa) . T.words)
'';
default-gateway = pkgs.writers.writeDashBin "default-gateway" ''
${pkgs.iproute}/bin/ip -json route | ${pkgs.jq}/bin/jq --raw-output '.[0].gateway'

View File

@@ -1,17 +1,17 @@
[[package]]
name = "click"
version = "8.1.3"
version = "8.0.3"
description = "Composable command line interface toolkit"
category = "main"
optional = false
python-versions = ">=3.7"
python-versions = ">=3.6"
[package.dependencies]
colorama = {version = "*", markers = "platform_system == \"Windows\""}
[[package]]
name = "colorama"
version = "0.4.5"
version = "0.4.4"
description = "Cross-platform colored terminal text."
category = "main"
optional = false
@@ -30,11 +30,11 @@ pyswisseph = "2.08.00-1"
[[package]]
name = "numpy"
version = "1.23.1"
version = "1.21.1"
description = "NumPy is the fundamental package for array computing with Python."
category = "main"
optional = false
python-versions = ">=3.8"
python-versions = ">=3.7"
[[package]]
name = "pyswisseph"
@@ -72,10 +72,56 @@ python-versions = "^3.8"
content-hash = "657742383232643f2fa13df5686de0cc79c624f9ae9bdb2f0fc96c7a94b5b8bf"
[metadata.files]
click = []
colorama = []
flatlib = []
numpy = []
pyswisseph = []
pytz = []
timezonefinder = []
click = [
{file = "click-8.0.3-py3-none-any.whl", hash = "sha256:353f466495adaeb40b6b5f592f9f91cb22372351c84caeb068132442a4518ef3"},
{file = "click-8.0.3.tar.gz", hash = "sha256:410e932b050f5eed773c4cda94de75971c89cdb3155a72a0831139a79e5ecb5b"},
]
colorama = [
{file = "colorama-0.4.4-py2.py3-none-any.whl", hash = "sha256:9f47eda37229f68eee03b24b9748937c7dc3868f906e8ba69fbcbdd3bc5dc3e2"},
{file = "colorama-0.4.4.tar.gz", hash = "sha256:5941b2b48a20143d2267e95b1c2a7603ce057ee39fd88e7329b0c292aa16869b"},
]
flatlib = [
{file = "flatlib-0.2.3-py3-none-any.whl", hash = "sha256:c846d83c965db7588581bb65ac9a6668b9a190afcad5027269f7e9c75f467bcd"},
{file = "flatlib-0.2.3.tar.gz", hash = "sha256:46cc956b936aa31a96082cff23448a5c27dd6e5e434a6293bc9265336c00dd5d"},
]
numpy = [
{file = "numpy-1.21.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:38e8648f9449a549a7dfe8d8755a5979b45b3538520d1e735637ef28e8c2dc50"},
{file = "numpy-1.21.1-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:fd7d7409fa643a91d0a05c7554dd68aa9c9bb16e186f6ccfe40d6e003156e33a"},
{file = "numpy-1.21.1-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:a75b4498b1e93d8b700282dc8e655b8bd559c0904b3910b144646dbbbc03e062"},
{file = "numpy-1.21.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1412aa0aec3e00bc23fbb8664d76552b4efde98fb71f60737c83efbac24112f1"},
{file = "numpy-1.21.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e46ceaff65609b5399163de5893d8f2a82d3c77d5e56d976c8b5fb01faa6b671"},
{file = "numpy-1.21.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:c6a2324085dd52f96498419ba95b5777e40b6bcbc20088fddb9e8cbb58885e8e"},
{file = "numpy-1.21.1-cp37-cp37m-win32.whl", hash = "sha256:73101b2a1fef16602696d133db402a7e7586654682244344b8329cdcbbb82172"},
{file = "numpy-1.21.1-cp37-cp37m-win_amd64.whl", hash = "sha256:7a708a79c9a9d26904d1cca8d383bf869edf6f8e7650d85dbc77b041e8c5a0f8"},
{file = "numpy-1.21.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:95b995d0c413f5d0428b3f880e8fe1660ff9396dcd1f9eedbc311f37b5652e16"},
{file = "numpy-1.21.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:635e6bd31c9fb3d475c8f44a089569070d10a9ef18ed13738b03049280281267"},
{file = "numpy-1.21.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4a3d5fb89bfe21be2ef47c0614b9c9c707b7362386c9a3ff1feae63e0267ccb6"},
{file = "numpy-1.21.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:8a326af80e86d0e9ce92bcc1e65c8ff88297de4fa14ee936cb2293d414c9ec63"},
{file = "numpy-1.21.1-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:791492091744b0fe390a6ce85cc1bf5149968ac7d5f0477288f78c89b385d9af"},
{file = "numpy-1.21.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0318c465786c1f63ac05d7c4dbcecd4d2d7e13f0959b01b534ea1e92202235c5"},
{file = "numpy-1.21.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9a513bd9c1551894ee3d31369f9b07460ef223694098cf27d399513415855b68"},
{file = "numpy-1.21.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:91c6f5fc58df1e0a3cc0c3a717bb3308ff850abdaa6d2d802573ee2b11f674a8"},
{file = "numpy-1.21.1-cp38-cp38-win32.whl", hash = "sha256:978010b68e17150db8765355d1ccdd450f9fc916824e8c4e35ee620590e234cd"},
{file = "numpy-1.21.1-cp38-cp38-win_amd64.whl", hash = "sha256:9749a40a5b22333467f02fe11edc98f022133ee1bfa8ab99bda5e5437b831214"},
{file = "numpy-1.21.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:d7a4aeac3b94af92a9373d6e77b37691b86411f9745190d2c351f410ab3a791f"},
{file = "numpy-1.21.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:d9e7912a56108aba9b31df688a4c4f5cb0d9d3787386b87d504762b6754fbb1b"},
{file = "numpy-1.21.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:25b40b98ebdd272bc3020935427a4530b7d60dfbe1ab9381a39147834e985eac"},
{file = "numpy-1.21.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:8a92c5aea763d14ba9d6475803fc7904bda7decc2a0a68153f587ad82941fec1"},
{file = "numpy-1.21.1-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:05a0f648eb28bae4bcb204e6fd14603de2908de982e761a2fc78efe0f19e96e1"},
{file = "numpy-1.21.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f01f28075a92eede918b965e86e8f0ba7b7797a95aa8d35e1cc8821f5fc3ad6a"},
{file = "numpy-1.21.1-cp39-cp39-win32.whl", hash = "sha256:88c0b89ad1cc24a5efbb99ff9ab5db0f9a86e9cc50240177a571fbe9c2860ac2"},
{file = "numpy-1.21.1-cp39-cp39-win_amd64.whl", hash = "sha256:01721eefe70544d548425a07c80be8377096a54118070b8a62476866d5208e33"},
{file = "numpy-1.21.1-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:2d4d1de6e6fb3d28781c73fbde702ac97f03d79e4ffd6598b880b2d95d62ead4"},
{file = "numpy-1.21.1.zip", hash = "sha256:dff4af63638afcc57a3dfb9e4b26d434a7a602d225b42d746ea7fe2edf1342fd"},
]
pyswisseph = [
{file = "pyswisseph-2.08.00-1.tar.gz", hash = "sha256:6b4818c0224d309c0b01f3c52df2432900dddcde345364408d99eafc9cdd1e71"},
]
pytz = [
{file = "pytz-2021.3-py2.py3-none-any.whl", hash = "sha256:3672058bc3453457b622aab7a1c3bfd5ab0bdae451512f6cf25f64ed37f5b87c"},
{file = "pytz-2021.3.tar.gz", hash = "sha256:acad2d8b20a1af07d4e4c9d2e9285c5ed9104354062f275f3fcd88dcef4f1326"},
]
timezonefinder = [
{file = "timezonefinder-5.2.0-py36.py37.py38-none-any.whl", hash = "sha256:4545533086eb25cd7ba10b97785059acbababf4577ab1b4d5c2ab56642eadfea"},
{file = "timezonefinder-5.2.0.tar.gz", hash = "sha256:a374570295a8dbd923630ce85f754e52578e288cb0a9cf575834415e84758352"},
]

View File

@@ -1,6 +0,0 @@
#!/bin/sh
curl -sSL 'https://diac.alsharekh.org/Diac/DiacText' \
-H "Content-Type: application/json" \
--data-raw "$(jq --raw-input '{word: ., type: 1}')" \
--compressed \
| jq -r .diacWord

View File

@@ -39,12 +39,6 @@
"make it stooop"
"noooo"
];
messages.neutral = [
"meh"
"i have no opinion about this song"
"idk man"
];
in
pkgs.writers.writeDashBin "pls" ''
case "$1" in
@@ -56,9 +50,6 @@ in
${pkgs.curl}/bin/curl -sS -XPOST "${playlistAPI}/skip"
echo ${lib.escapeShellArg (lib.concatStringsSep "\n" messages.bad)} | shuf -n1 | ${sendIRC}
;;
0|meh|neutral)
echo ${lib.escapeShellArg (lib.concatStringsSep "\n" messages.neutral)} | shuf -n1 | ${sendIRC}
;;
say|msg)
shift
echo "$@" | ${sendIRC}

View File

@@ -75,9 +75,8 @@
in
# ref https://github.com/LukeSmithxyz/voidrice/blob/9fe6802122f6e0392c7fe20eefd30437771d7f8e/.local/bin/dmenuunicode
writers.writeDashBin "unicodmenu" ''
history_file=$HOME/.cache/unicodmenu
PATH=${lib.makeBinPath [coreutils dmenu gnused libnotify xclip xdotool]}
chosen=$(cat "$history_file" ${kaomoji-file} ${unicode-file} | dmenu -p unicode -i -l 10 | tee --append "$history_file" | sed "s/ .*//")
chosen=$(cat ${kaomoji-file} ${unicode-file} | dmenu -p unicode -i -l 10 | sed "s/ .*//")
[ "$chosen" != "" ] || exit

View File

@@ -1,48 +0,0 @@
{
lib,
config,
pkgs,
...
}: let
inherit (import <niveum/lib>) kieran retiolumAddresses;
in {
imports = [
./hardware-configuration.nix
# <niveum/configs/monitoring.nix>
<niveum/configs/nix.nix>
<niveum/configs/save-space.nix>
<niveum/configs/spacetime.nix>
<niveum/configs/sshd.nix>
<niveum/modules/retiolum.nix>
];
nix.nixPath = ["/var/src"];
networking = {
firewall.allowedTCPPorts = [80 443];
hostName = "ful";
interfaces.enp0s3.useDHCP = true;
retiolum = retiolumAddresses.ful;
useDHCP = false;
};
system.stateVersion = "21.11";
services.nginx = {
enable = true;
recommendedGzipSettings = true;
recommendedOptimisation = true;
recommendedProxySettings = true;
recommendedTlsSettings = true;
sslCiphers = "AES256+EECDH:AES256+EDH:!aNULL";
};
security.acme = {
acceptTerms = true;
email = kieran.email;
};
users.users.root.passwordFile = toString <system-secrets/root.password>;
environment.systemPackages = [pkgs.vim pkgs.git pkgs.tmux pkgs.python3];
}

View File

@@ -1,40 +0,0 @@
{
config,
lib,
pkgs,
...
}: {
imports = [<nixpkgs/nixos/modules/profiles/qemu-guest.nix>];
boot = {
loader = {
systemd-boot = {
enable = true;
configurationLimit = 1;
};
efi.canTouchEfiVariables = true;
};
initrd = {
availableKernelModules = ["virtio_pci" "usbhid"];
};
kernelModules = [
"console=ttyS0"
"console=tty1"
"nvme.shutdown_timeout=10"
"libiscsi.debug_libiscsi_eh=1"
];
extraModulePackages = [];
};
fileSystems."/" = {
device = "/dev/disk/by-uuid/9bf751c7-cf32-49fb-9354-17694c7a46e0";
fsType = "ext4";
};
fileSystems."/boot" = {
device = "/dev/disk/by-uuid/7817-285D";
fsType = "vfat";
};
swapDevices = [];
}

View File

@@ -31,7 +31,6 @@ in {
<niveum/configs/sshd.nix>
<niveum/configs/telegram-bots>
<niveum/modules/retiolum.nix>
<niveum/modules/passport.nix>
];
services.restic.backups.niveum = {
@@ -53,30 +52,6 @@ in {
];
};
niveum.passport = {
enable = true;
introductionHTML = ''
<p>
The machine <tt>makanek</tt> is named after a Levantine type of <a href="https://en.wikipedia.org/wiki/Makanek">sausage</a> (مقانق <i>maqāniq</i>).
</p>
<p>
It runs on <a href="https://www.hetzner.com/cloud">Hetzner cloud</a>.
</p>
<figure>
<img width="200" src="https://www.albawaba.com/sites/default/files/2019-08/makanek-BeFunky-project.jpg" alt="Makanek sausages"/>
<figcaption>Makanek</figcaption>
</figure>
'';
virtualHost = "makanek.r";
services = [
{
title = "restic backup";
description = "This machine backups its state via restic backup.";
}
];
};
nix.nixPath = ["/var/src"];
networking = {

View File

@@ -1,25 +1,13 @@
let
inherit (import <niveum/lib>) sshPort;
domain = "https://code.kmein.de";
in {
{
services.gitea = {
enable = true;
disableRegistration = true;
rootUrl = domain;
rootUrl = "https://code.kmein.de";
appName = "code.kmein.de";
ssh.clonePort = sshPort;
};
services.nginx.virtualHosts."code.kmein.de" = {
forceSSL = true;
enableACME = true;
locations."/".extraConfig = "proxy_pass http://localhost:3000;";
};
niveum.passport.services = [
{
link = domain;
title = "Gitea";
description = "hosts a couple of <tt>git</tt> repos. Registration is disabled.";
}
];
}

View File

@@ -17,7 +17,6 @@
enable = true;
version = 2;
devices = ["/dev/sda"];
configurationLimit = 3;
};
};

View File

@@ -5,6 +5,7 @@
}: let
backupLocation = "/var/lib/codimd-backup";
stateLocation = "/var/lib/codimd/state.sqlite";
nixpkgs-unstable = import <nixpkgs-unstable> {};
domain = "pad.kmein.de";
inherit (import <niveum/lib>) tmpfilesConfig;
in {
@@ -47,14 +48,6 @@ in {
};
};
niveum.passport.services = [
{
title = "Hedgedoc";
link = "https://${domain}";
description = "lets you collaborate on Markdown documents.";
}
];
systemd.tmpfiles.rules = [
(tmpfilesConfig {
user = "codimd";
@@ -68,7 +61,7 @@ in {
systemd.services.hedgedoc-backup = {
description = "Hedgedoc backup service";
script = ''
${pkgs.sqlite}/bin/sqlite3 -json ${stateLocation} "select shortid, alias, ownerId, content from Notes" \
${nixpkgs-unstable.sqlite}/bin/sqlite3 -json ${stateLocation} "select shortid, alias, ownerId, content from Notes" \
| ${
pkgs.writers.writePython3 "hedgedoc-json-to-fs.py" {} ''
import json

View File

@@ -4,16 +4,16 @@
...
}: {
services.matterbridge = {
enable = false;
enable = true;
configPath = let
bridgeBotToken = lib.strings.fileContents <system-secrets/telegram/krebs.token>;
bridgeBotToken = lib.strings.fileContents <system-secrets/telegram/kmein.token>;
in
toString ((pkgs.formats.toml {}).generate "config.toml" {
general = {
RemoteNickFormat = "[{NICK}] ";
Charset = "utf-8";
};
telegram.krebs.Token = bridgeBotToken;
telegram.kmein.Token = bridgeBotToken;
irc = let
Nick = "ponte";
in {
@@ -38,7 +38,7 @@
channel = "#krebs";
}
{
account = "telegram.krebs";
account = "telegram.kmein";
channel = "-330372458";
}
{

View File

@@ -11,14 +11,6 @@ in {
environment.systemPackages = [pkgs.redis];
niveum.passport.services = [
{
title = "Tischlein, deck dich!";
description = "serves you with Berlin canteen menus via Telegram.";
link = "https://t.me/TischleinDeckDichBot";
}
];
systemd.services.menstruation-telegram = {
wants = [
"network-online.target"

View File

@@ -12,12 +12,5 @@
serviceConfig.DynamicUser = true;
};
niveum.passport.services = [
{
title = "moinbot";
description = "greets #hsmr:hackint.org daily.";
}
];
systemd.timers.moinbot.timerConfig.RandomizedDelaySec = "14h";
}

View File

@@ -22,26 +22,6 @@ in {
};
};
niveum.passport.services = [
{
title = "Prometheus";
description = "collects metrics from devices in the <i>niveum</i> network, blackbox monitors some websites.";
}
{
title = "Loki";
description = "aggregates logs of the <i>niveum</i> network.";
}
{
title = "Grafana";
link = "http://${config.services.grafana.domain}";
description = "displays metrics from devices in the <i>niveum</i> network.";
}
{
title = "Alertmanager bot";
description = "notifies me when something goes wrong.";
}
];
services.prometheus.rules = let
diskFreeThreshold = 10;
in [
@@ -240,7 +220,7 @@ in {
"tarot.kmein.de"
"cloud.xn--kiern-0qa.de"
"grafana.kmein.r"
# "names.kmein.r"
"names.kmein.r"
"rrm.r"
"graph.r"
];

View File

@@ -12,13 +12,6 @@
in {
imports = [<niveum/modules/moodle-dl.nix>];
niveum.passport.services = [
{
title = "MoodleDL";
description = "notifies about changes on Moodle.";
}
];
services.moodle-dl = {
enable = true;
startAt = "hourly";

View File

@@ -4,8 +4,8 @@
...
}: let
port = 5703;
onomap-src = "${<scripts>}/onomastics-ng";
onomap = pkgs.haskellPackages.callCabal2nix "onomap" onomap-src {};
geogen-src = "${<scripts>}/onomastics";
geogen = pkgs.callPackage geogen-src {};
in {
systemd.services.names = {
wants = ["network-online.target"];
@@ -13,11 +13,12 @@ in {
description = "Better clone of geogen.stoepel.net";
serviceConfig = {
DynamicUser = true;
ExecStart = "${onomap}/bin/onomap-web";
Restart = "on-failure";
RestartSec = "15s";
};
environment.PORT = toString port;
script = ''
cd $(mktemp -d)
ln -s "${geogen-src}/wsgi.py" wsgi.py
${geogen.dependencyEnv}/bin/gunicorn wsgi:app -b :${toString port}
'';
};
services.nginx = {
@@ -28,14 +29,6 @@ in {
recommendedTlsSettings = true;
};
niveum.passport.services = [
{
link = "http://names.kmein.r";
title = "Onomap";
description = "maps surnames within Germany.";
}
];
services.nginx.virtualHosts."names.kmein.r" = {
locations."/".proxyPass = "http://127.0.0.1:${toString port}";
};

View File

@@ -1,6 +1,5 @@
{
pkgs,
config,
lib,
...
}: let
@@ -9,7 +8,7 @@
in {
services.nextcloud = {
enable = true;
package = pkgs.nextcloud24;
package = pkgs.nextcloud22;
https = true;
@@ -34,14 +33,6 @@ in {
};
};
niveum.passport.services = [
{
title = "Nextcloud";
link = "https://${config.services.nextcloud.hostName}";
description = "manages calendars, to-do lists, files, and recipes.";
}
];
services.postgresql = {
enable = true;
ensureDatabases = ["nextcloud"];

View File

@@ -8,16 +8,8 @@
in {
services.nginx.virtualHosts."redaktion.r".locations."/".extraConfig = serveHtml <niveum/lib/radio-news.html> pkgs;
niveum.passport.services = [
{
title = "Retiolum Radio News";
link = "http://redaktion.r";
description = "supplies git history news to radio lassulus and lets you enter your own.";
}
];
systemd.services.stockholm-history = {
startAt = "*:58:00";
startAt = "hourly";
script = ''
stockholm=$(mktemp -d)
trap clean EXIT
@@ -25,9 +17,9 @@ in {
rm -rf "$stockholm"
}
${pkgs.git}/bin/git clone ${remote} "$stockholm"
${pkgs.git}/bin/git --git-dir "$stockholm"/.git log --pretty='"%s" by %an, %ar.' --since "$(${pkgs.coreutils}/bin/date -I -d "yesterday")" \
${pkgs.git}/bin/git --git-dir "$stockholm"/.git log --pretty='"%s" by %an, %ar' --since "$(${pkgs.coreutils}/bin/date -I -d "yesterday")" \
| ${pkgs.jq}/bin/jq -R '{text: ., from: now | todateiso8601, to: (now + (60 * 60)) | todateiso8601}' \
| ${pkgs.curl}/bin/curl -Ssfd @- http://radio-news.r/
| ${pkgs.curl}/bin/curl -Ssfd @- http://prism.r:7999/
'';
};
}

View File

@@ -126,12 +126,4 @@ in {
forceSSL = true;
locations."/".proxyPass = "http://127.0.0.1:${toString config.services.icecast.listen.port}";
};
niveum.passport.services = [
{
title = "Radio";
link = "https://radio.kmein.de";
description = "broadcasts a few little (and mostly useless) web-radio stations.";
}
];
}

View File

@@ -44,19 +44,6 @@ in {
};
};
niveum.passport.services = [
{
link = "http://graph.r";
title = "Retiolum Realtime Map";
description = "displays geographical information about the retiolum network. <a href=\"http://graph.r/graph.html\">Graph</a> info also available.";
}
{
link = "http://c.r/${geo-ip-database}";
title = "GeoIP";
description = "shares MaxMind's GeoIP database with the krebs world. Updated weekly.";
}
];
services.nginx = {
enable = true;
recommendedGzipSettings = true;
@@ -70,7 +57,6 @@ in {
systemd.services.geoip-share = {
after = ["geoipupdate.service"];
wantedBy = ["geoipupdate.service"];
script = let
cyberlocker-tools = pkgs.callPackage <stockholm/krebs/5pkgs/simple/cyberlocker-tools> {};
in "${cyberlocker-tools}/bin/cput ${geo-ip-database} < ${geo-ip-database-path}";

View File

@@ -48,14 +48,6 @@ in {
}'';
};
niveum.passport.services = [
rec {
link = "https://tarot.kmein.de";
title = "Tarot";
description = "draws Tarot cards for you. See <a href=\"${link}/files/key.pdf\">here</a> for information on how to interpret them.";
}
];
services.nginx.virtualHosts."tarot.kmein.de" = {
enableACME = true;
forceSSL = true;

View File

@@ -204,11 +204,4 @@ in {
Type = "oneshot";
};
};
niveum.passport.services = [
{
description = "keeps me up-to-date on sites that have no RSS feed (shame be upon them!).";
title = "urlwatch";
}
];
}

View File

@@ -55,26 +55,26 @@ in {
server = {
hackint = {
autoconnect = true;
addresses = "irc.hackint.org/6697";
address = "irc.hackint.org/6697";
ipv6 = true;
ssl = true;
autojoin = ["#eloop" "#krebs" "#hsmr" "#nixos" "#the_playlist" "#flipdot-berlin" "#hackint"];
autojoin = ["#krebs" "#hsmr" "#nixos" "#the_playlist" "#flipdot-berlin" "#hackint"];
sasl_mechanism = "plain";
sasl_username = nick;
sasl_password = lib.strings.fileContents <system-secrets/irc/hackint>;
};
libera = {
autoconnect = true;
addresses = "irc.libera.chat/6697";
address = "irc.libera.chat/6697";
ssl = true;
autojoin = ["#flipdot" "#haskell" "#nixos" "#fysi" "#binaergewitter" "#vim" "#newsboat"];
autojoin = ["#flipdot" "#haskell" "#nixos" "#fysi" "#binaergewitter" "#neovim" "#lojban" "#vim" "#newsboat"];
sasl_mechanism = "plain";
sasl_username = nick;
sasl_password = lib.strings.fileContents <system-secrets/irc/libera>;
};
oftc = {
autoconnect = true;
addresses = "irc.oftc.net/6697";
address = "irc.oftc.net/6697";
ssl = true;
ipv6 = true;
command = lib.concatStringsSep "\\;" [
@@ -85,8 +85,8 @@ in {
};
retiolum = {
autoconnect = true;
addresses = "irc.r";
autojoin = ["#xxx" "#brockman" "#flix"];
address = "irc.r";
autojoin = ["#xxx" "#brockman" "#flix" "#mukke"];
command = lib.concatStringsSep "\\;" [
"/oper admin aidsballs"
"/msg nickserv always-on true"
@@ -99,7 +99,7 @@ in {
};
news = {
autoconnect = true;
addresses = "news.r";
address = "news.r";
autojoin = ["#cook" "#drachengame" "#oepnv" "#kmeinung" "#memes"];
command = "/oper aids balls";
};
@@ -119,7 +119,7 @@ in {
};
filters = {
zerocovid = {
buffer = "irc.news.*";
buffer = "*";
tags = "*";
regex = "[kc]orona|💉|🤒|😷|[kc]ovid|virus|lockdown|va[kc][sc]in|vaxx|mutante|mutation|impf|pandemi|κορ[ωο]ν[αο]ϊό|корона|expert|infe[ck]t|infizi|in[cz]iden[cz]|sars-cov|drosten|virolog|lauterbach|delta|omi[ck]ron|epidemi|booster|r-wert";
};
@@ -150,11 +150,7 @@ in {
};
};
};
extraCommands = ''
/save
/matrix connect nibbana
/connect -all
'';
extraCommands = ''/matrix connect nibbana'';
};
};
in {
@@ -189,11 +185,4 @@ in {
isSystemUser = true;
packages = [pkgs.tmux];
};
niveum.passport.services = [
{
title = "weechat bouncer";
description = "keeps me logged in on IRC.";
}
];
}

View File

@@ -21,7 +21,6 @@
efiSupport = true;
efiInstallAsRemovable = true;
device = "/dev/sda";
configurationLimit = 5;
};
};

View File

@@ -7,6 +7,7 @@
in {
imports = [
./hardware-configuration.nix
<niveum/configs/battery.nix>
<niveum/configs/spacetime.nix>
<niveum/modules/retiolum.nix>
<niveum/configs/sshd.nix>

View File

@@ -15,8 +15,10 @@ in {
./pulseaudio.nix
./home-assistant.nix
./tuna.nix
./mympd.nix
./grocy.nix
./spotifyd.nix
<home-manager/nixos>
<niveum/configs/keyboard.nix>
<niveum/configs/monitoring.nix>
<niveum/configs/nix.nix>
@@ -66,9 +68,6 @@ in {
pkgs.ncmpcpp
];
# since 22.05 timeout fails?
systemd.services.systemd-networkd-wait-online.enable = false;
networking = {
hostName = "zaatar";
wireless.interfaces = ["wlp2s0"];

View File

@@ -69,16 +69,6 @@ in {
108283 # Digital Classicist
109211 # Altlitauisch
109185 # Etymologie
# SS 2022
112606 # Avestisch
111761 # Griechische Wissenschaftsliteratur
111515 # H. Furens
110914 # Apostelgeschichte
112225 # Gr. Paläographie
113275 # ALEW
112783 # Akzent und Silbenstruktur
113493 # Papyrologie
];
download_submissions = true;
download_descriptions = true;

57
systems/zaatar/mympd.nix Normal file
View File

@@ -0,0 +1,57 @@
{pkgs, ...}: let
inherit (import <niveum/lib>) tmpfilesConfig;
in {
systemd.tmpfiles.rules = [
(tmpfilesConfig {
type = "d";
mode = "0755";
user = "mympd";
group = "mympd";
path = "/var/lib/mympd";
})
(tmpfilesConfig {
type = "d";
mode = "0755";
user = "mympd";
group = "mympd";
age = "1d";
path = "/var/cache/mympd";
})
(tmpfilesConfig {
type = "L+";
mode = "0644";
user = "mympd";
group = "mympd";
path = "/var/lib/mympd/config/http_port";
argument = pkgs.writeText "port" "8764";
})
(tmpfilesConfig {
type = "L+";
mode = "0644";
user = "mympd";
group = "mympd";
path = "/var/lib/mympd/config/ssl";
argument = pkgs.writeText "ssl" "false";
})
];
users.users.mympd = {
isSystemUser = true;
group = "mympd";
};
users.groups.mympd = {};
systemd.services.mympd = {
wantedBy = ["multi-user.target"];
after = ["mpd.service"];
script = "${pkgs.mympd}/bin/mympd";
environment = {
MYMPD_HTTP_PORT = "8764";
};
serviceConfig = {
Restart = "always";
User = "mympd";
Group = "mympd";
};
};
}

View File

@@ -1,8 +1,7 @@
{pkgs, ...}: {
{
sound.enable = true;
hardware.pulseaudio = {
package = pkgs.pulseaudioFull;
enable = true;
systemWide = true;
tcp = {