reformat
Nix build / nix-build (nixosConfigurations.apollo.config.system.build.toplevel) (push) Successful in 43s Details
Nix build / nix-build (nixosConfigurations.athene.config.system.build.toplevel) (push) Successful in 29s Details
Nix build / nix-build (nixosConfigurations.hephaistos.config.system.build.toplevel) (push) Successful in 43s Details
Nix build / nix-build (nixosConfigurations.hera.config.system.build.toplevel) (push) Successful in 28s Details
Nix build / nix-build (nixosConfigurations.zeus.config.system.build.toplevel) (push) Successful in 47s Details
Nix build / nix-flake-check (push) Successful in 1m5s Details

This commit is contained in:
maralorn 2023-11-15 00:43:09 +01:00
parent 4b1e47911e
commit d555af1d4c
No known key found for this signature in database
51 changed files with 115 additions and 284 deletions

View File

@ -8,17 +8,14 @@
path = "${path}/${name}";
devices = hosts;
};
devices =
pkgs.lib.mapAttrs
(name: conf: conf // { addresses = [ "tcp6://${name}.vpn.m-0.eu" ]; })
{
apollo.id = "BOTTTGS-QQUHWAK-IFBT3T2-HGHHUZ7-QHRZXC7-JC42VT7-67ZOJBE-WHDWEQX";
zeus.id = "5BUZIS5-ESTYAJO-IQQD7EA-O3VGONJ-E74OHUJ-ZSLF4JK-6HS3UHG-4CQ5OAO";
pegasus.id = "BISYPNZ-54VKBKS-LBND4AS-JNWVOW7-BTW2UMV-QHYM5TZ-GE3AK3E-PGSXPQE";
hera.id = "TJHVUM6-RTB6V3D-JF4GIB2-TVDF2ST-5MTN6N2-ZDIWGF7-XZUCCFG-EQG5WA6";
hephaistos.id = "M6QOG65-2VIL4IF-IP2IGHW-QAT7VSC-3V3244M-UQ7Y5A6-T2TJEAL-BP427QR";
athene.id = "7EMUMTN-NQATI52-B67EUJP-DVB6OLE-KQSM5LJ-2HI3KX5-UJAKUTL-PAV6HQ3";
};
devices = pkgs.lib.mapAttrs (name: conf: conf // { addresses = [ "tcp6://${name}.vpn.m-0.eu" ]; }) {
apollo.id = "BOTTTGS-QQUHWAK-IFBT3T2-HGHHUZ7-QHRZXC7-JC42VT7-67ZOJBE-WHDWEQX";
zeus.id = "5BUZIS5-ESTYAJO-IQQD7EA-O3VGONJ-E74OHUJ-ZSLF4JK-6HS3UHG-4CQ5OAO";
pegasus.id = "BISYPNZ-54VKBKS-LBND4AS-JNWVOW7-BTW2UMV-QHYM5TZ-GE3AK3E-PGSXPQE";
hera.id = "TJHVUM6-RTB6V3D-JF4GIB2-TVDF2ST-5MTN6N2-ZDIWGF7-XZUCCFG-EQG5WA6";
hephaistos.id = "M6QOG65-2VIL4IF-IP2IGHW-QAT7VSC-3V3244M-UQ7Y5A6-T2TJEAL-BP427QR";
athene.id = "7EMUMTN-NQATI52-B67EUJP-DVB6OLE-KQSM5LJ-2HI3KX5-UJAKUTL-PAV6HQ3";
};
in
{
devices = pkgs.lib.getAttrs hosts devices;

View File

@ -74,9 +74,7 @@
...
}:
{
devShells.default = pkgs.mkShell {
shellHook = config.pre-commit.installationScript;
};
devShells.default = pkgs.mkShell { shellHook = config.pre-commit.installationScript; };
pre-commit =
let

View File

@ -68,7 +68,5 @@
nixos-hardware.url = "nixos-hardware";
};
outputs =
inputs:
inputs.flake-parts.lib.mkFlake { inherit inputs; } (import ./flake-module.nix);
outputs = inputs: inputs.flake-parts.lib.mkFlake { inherit inputs; } (import ./flake-module.nix);
}

View File

@ -76,9 +76,7 @@
++ [
(pkgs.writeShellScriptBin "unlock-keys" ''
ssh-add ~/.ssh/id_ed25519_sk-nitro-1
${
lib.getBin pkgs.dbus
}/bin/dbus-update-activation-environment --systemd SSH_AUTH_SOCK
${lib.getBin pkgs.dbus}/bin/dbus-update-activation-environment --systemd SSH_AUTH_SOCK
if ! rbw unlocked; then killall rbw-agent; fi
rbw unlock
'')

View File

@ -43,14 +43,12 @@ in
};
systemd.user.timers.mbsync.Timer.RandomizedDelaySec = "10m";
accounts.email.accounts =
lib.recursiveUpdate (pkgs.privateValue { } "mail/accounts")
{
hera = {
passwordCommand = "${pkgs.coreutils}/bin/cat /run/agenix/mail-password";
imapnotify.onNotify = lib.getExe quick-mail-sync;
};
};
accounts.email.accounts = lib.recursiveUpdate (pkgs.privateValue { } "mail/accounts") {
hera = {
passwordCommand = "${pkgs.coreutils}/bin/cat /run/agenix/mail-password";
imapnotify.onNotify = lib.getExe quick-mail-sync;
};
};
systemd.user.services =
let
@ -75,9 +73,7 @@ in
};
};
in
lib.mapAttrs' mkWatchService (
lib.filterAttrs hasImapHost config.accounts.email.accounts
)
lib.mapAttrs' mkWatchService (lib.filterAttrs hasImapHost config.accounts.email.accounts)
// {
mbsync.Service = {
Environment = "PATH=${

View File

@ -29,9 +29,7 @@ in
pkgs.gnugrep
]
}
if [[ -z "$(${
lib.getExe pkgs.taskwarrior
} show taskd.credentials | grep maralorn)" ]]; then
if [[ -z "$(${lib.getExe pkgs.taskwarrior} show taskd.credentials | grep maralorn)" ]]; then
yes | /bin/sh /run/agenix/taskwarrior-creds-script
fi
'').outPath;

View File

@ -12,7 +12,5 @@
pkgs.writeShellScriptBin "weechat"
"ssh -t hera 'TMUX_TMPDIR=/run/user/1000 tmux -L weechat attach'";
};
xdg.configFile."Element/config.json".text = builtins.toJSON {
showLabsSettings = true;
};
xdg.configFile."Element/config.json".text = builtins.toJSON { showLabsSettings = true; };
}

View File

@ -35,9 +35,7 @@
config.programs.rbw.package
]
}";
ExecStart = "${
lib.getExe config.programs.eww.package
} daemon --no-daemonize --restart";
ExecStart = "${lib.getExe config.programs.eww.package} daemon --no-daemonize --restart";
ExecStartPost = [
"${lib.getExe config.programs.eww.package} open-many bar bg"
"${lib.getExe pkgs.set-timer} foo"

View File

@ -9,8 +9,7 @@ let
term = cmd: fork "foot ${cmd}";
edit_dir = dir: term (shell "cd ${dir}; hx ${dir}");
shell = cmd: "sh -c '${cmd}'";
with-mic-check =
cmd: fork (shell "${config.home.sessionVariables.TERMINAL} mic-check; ${cmd}");
with-mic-check = cmd: fork (shell "${config.home.sessionVariables.TERMINAL} mic-check; ${cmd}");
hotkeys = [
{
Orga = [
@ -71,12 +70,8 @@ let
in
[
{ "Play/Pause" = "${pkgs.playerctl}/bin/playerctl play-pause"; }
{
"Toggle Output Mute" = "${pkgs.pulseaudio}/bin/pactl set-sink-mute @DEFAULT_SINK@ toggle";
}
{
"Toggle Input Mute" = "${pkgs.pulseaudio}/bin/pactl set-source-mute @DEFAULT_SOURCE@ toggle";
}
{ "Toggle Output Mute" = "${pkgs.pulseaudio}/bin/pactl set-sink-mute @DEFAULT_SINK@ toggle"; }
{ "Toggle Input Mute" = "${pkgs.pulseaudio}/bin/pactl set-source-mute @DEFAULT_SOURCE@ toggle"; }
{ "MPD lokal" = mpdclient "::"; }
{ "Athene MPD" = mpdclient "athene"; }
{ "Lautstärke" = fork "pavucontrol"; }
@ -112,9 +107,7 @@ let
"Steam Lanucher" = fork "steam";
"The Witcher 3" = fork "xdg-open heroic://launch/gog/1495134320";
"Baldurs Gate 3" = fork "steam steam://rungameid/1086940";
"Guild Wars 2" =
fork
"xdg-open heroic://launch/sideload/9gC1jhFqE9cV2xNz43ciaE";
"Guild Wars 2" = fork "xdg-open heroic://launch/sideload/9gC1jhFqE9cV2xNz43ciaE";
"Minecraft" = fork "prismlauncher";
"Factorio" = fork "factorio";
};

View File

@ -7,9 +7,7 @@
let
inject_exec = lib.mapAttrs (
lib.const (
lib.recursiveUpdate {
exec = [ "${mylib.getExe' pkgs.systemd "systemctl"} --user restart eww" ];
}
lib.recursiveUpdate { exec = [ "${mylib.getExe' pkgs.systemd "systemctl"} --user restart eww" ]; }
)
);
in

View File

@ -20,9 +20,7 @@ in
home.packages = [
(pkgs.writeShellScriptBin "switch-mpd" ''
mkdir -p ${config.xdg.configHome}/mpDris2
${
lib.getExe pkgs.sd
} -p ${replace_string} "$1" ${mprisCfg.source} > $HOME/${mprisCfg.target}
${lib.getExe pkgs.sd} -p ${replace_string} "$1" ${mprisCfg.source} > $HOME/${mprisCfg.target}
${pkgs.systemd}/bin/systemctl --user restart mpdris2.service
'')
];

View File

@ -1,9 +1,7 @@
{ pkgs, ... }:
let
script =
(pkgs.recursiveLinkFarm "autosave.lua" {
"share/mpv/scripts/autosave.lua" = ./autosave.lua;
})
(pkgs.recursiveLinkFarm "autosave.lua" { "share/mpv/scripts/autosave.lua" = ./autosave.lua; })
// {
scriptName = "autosave.lua";
};

View File

@ -5,7 +5,6 @@
Timer.OnCalendar = "23:00";
Install.WantedBy = [ "timers.target" ];
};
services.night-warn.Service.ExecStart = ''
${lib.getExe pkgs.set-timer} Wecker "tomorrow 8:45"'';
services.night-warn.Service.ExecStart = ''${lib.getExe pkgs.set-timer} Wecker "tomorrow 8:45"'';
};
}

View File

@ -13,9 +13,7 @@ let
link="''${1:-`${lib.getBin pkgs.wl-clipboard}/bin/wl-paste`}"
filename="`${lib.getExe pkgs.yt-dlp} -j $link | ${
lib.getExe pkgs.jq
} -r .filename`"
filename="`${lib.getExe pkgs.yt-dlp} -j $link | ${lib.getExe pkgs.jq} -r .filename`"
if [[ ! -f "$filename" ]]; then
echo "Prefetching file "
# --user to use the user daemon
@ -24,9 +22,7 @@ let
${lib.getBin pkgs.systemd}/bin/systemd-run --user --no-block -G \
${lib.getExe pkgs.foot} -D "${video_dir}" \
/bin/sh -c \
"${
lib.getExe pkgs.yt-dlp
} --embed-subs --embed-metadata --embed-chapters \"$1\""
"${lib.getExe pkgs.yt-dlp} --embed-subs --embed-metadata --embed-chapters \"$1\""
else
echo "File already fetched. Playing "
${lib.getExe config.programs.mpv.finalPackage} "$filename"
@ -58,10 +54,7 @@ let
'';
in
pkgs.writeShellScriptBin name
''
${
lib.getExe pkgs.newsboat
} -r -C ${configFile} -c ~/.local/share/newsboat/${name}-cache.db "$@"''
''${lib.getExe pkgs.newsboat} -r -C ${configFile} -c ~/.local/share/newsboat/${name}-cache.db "$@"''
)
{
news = {

View File

@ -29,16 +29,12 @@ let
unsorted = "${maildir}/${unsortedSuffix}";
archive = "${maildir}/${archiveSuffix}";
filter = rec {
mailToFolder =
name: toFolder (lib.concatStringsSep "." (lib.splitString "@" name));
toFolder =
name: lib.concatStringsSep "/" (lib.reverseList (lib.splitString "." name));
mailToFolder = name: toFolder (lib.concatStringsSep "." (lib.splitString "@" name));
toFolder = name: lib.concatStringsSep "/" (lib.reverseList (lib.splitString "." name));
simple = filter: target: { inherit filter target; };
notifications =
notify: simple "from:${notify}" "notifications/${mailToFolder notify}";
notifications = notify: simple "from:${notify}" "notifications/${mailToFolder notify}";
stupidList = list: simple "to:${list}" "list/${mailToFolder list}";
simpleSortList =
listName: simple "List:${listName}" "list/${toFolder listName}";
simpleSortList = listName: simple "List:${listName}" "list/${toFolder listName}";
};
myFilters =
builtins.map filter.simpleSortList lists.sortLists
@ -108,9 +104,7 @@ let
main = do
setEnv "MBLAZE_PAGER" "cat"
setEnv "NOTMUCH_CONFIG" "${
config.home.sessionVariables.NOTMUCH_CONFIG or ""
}"
setEnv "NOTMUCH_CONFIG" "${config.home.sessionVariables.NOTMUCH_CONFIG or ""}"
reScan
(listIDs,tos) <- concurrently (mhdr "-h" "List-ID" "-d" "${unsorted}" |> capture) (mhdr "-h" "To" "-d" "${unsorted}" "-A" |> capture)
let listFilters = mapMaybe filtersFromListIDs . sortNub . mapMaybe (parseMaybe listId) . lines . decodeUtf8 $ listIDs

View File

@ -19,9 +19,7 @@ let
}
''
main = do
setEnv "NOTMUCH_CONFIG" "${
config.home.sessionVariables.NOTMUCH_CONFIG or ""
}"
setEnv "NOTMUCH_CONFIG" "${config.home.sessionVariables.NOTMUCH_CONFIG or ""}"
mbsync "hera:Move/readlater,Archiv/unsortiert"
notmuch "new" "--quiet"
mail2rss "${config.accounts.email.maildirBasePath}" "hera/Move/readlater" &> Truncate "/var/www/rss/mails.xml"

View File

@ -12,9 +12,7 @@ let
plugins = builtins.attrValues (
availablePlugins
// {
python = availablePlugins.python.withPackages (
_: [ pkgs.weechatScripts.weechat-matrix ]
);
python = availablePlugins.python.withPackages (_: [ pkgs.weechatScripts.weechat-matrix ]);
}
);
scripts = [ pkgs.weechatScripts.weechat-matrix ];
@ -110,9 +108,7 @@ in
log2rss = {
Unit.Description = "weechat2rss";
Service = {
ExecStart = "${
lib.getBin pkgs.rssfeeds
}/bin/weechat2rss /var/www/rss/chats.xml";
ExecStart = "${lib.getBin pkgs.rssfeeds}/bin/weechat2rss /var/www/rss/chats.xml";
Type = "oneshot";
};
};

View File

@ -4,8 +4,6 @@
".volatile".source =
config.lib.file.mkOutOfStoreSymlink
"/disk/volatile${config.home.homeDirectory}";
".persist".source =
config.lib.file.mkOutOfStoreSymlink
"/disk/persist${config.home.homeDirectory}";
".persist".source = config.lib.file.mkOutOfStoreSymlink "/disk/persist${config.home.homeDirectory}";
};
}

View File

@ -29,10 +29,7 @@ in
"media/audio/playlists" = {
source = pkgs.recursiveLinkFarm "mpd-playlists" (
lib.mapAttrs'
(
name: content:
lib.nameValuePair "${name}.m3u" (builtins.toFile "${name}.m3u" content)
)
(name: content: lib.nameValuePair "${name}.m3u" (builtins.toFile "${name}.m3u" content))
{
"athene" = "http://athene.vpn.m-0.eu:8666";
"radio-swiss-classic" = "https://stream.srg-ssr.ch/m/rsc_de/aacp_96";

View File

@ -1,4 +1 @@
{ pkgs, ... }:
{
home.packages = builtins.attrValues { inherit (pkgs) heroic gogdl; };
}
{ pkgs, ... }: { home.packages = builtins.attrValues { inherit (pkgs) heroic gogdl; }; }

View File

@ -1,4 +1 @@
{ pkgs, ... }:
{
home.packages = builtins.attrValues { inherit (pkgs) gamemode mangohud; };
}
{ pkgs, ... }: { home.packages = builtins.attrValues { inherit (pkgs) gamemode mangohud; }; }

View File

@ -9,9 +9,7 @@ flake-inputs:
let
inherit (import ../../../common/common.nix { inherit pkgs; }) syncthing;
backupJobs = pkgs.privateValue { } "borgbackup";
backupJobNames = map (name: "borgbackup-job-${name}") (
lib.attrNames backupJobs
);
backupJobNames = map (name: "borgbackup-job-${name}") (lib.attrNames backupJobs);
in
{
imports =
@ -74,8 +72,7 @@ in
script =
lib.concatMapStringsSep "\n"
(
name:
"${config.services.postgresql.package}/bin/pg_dump ${name} > /var/lib/db-backup-dumps/${name}"
name: "${config.services.postgresql.package}/bin/pg_dump ${name} > /var/lib/db-backup-dumps/${name}"
)
config.services.postgresql.ensureDatabases;
serviceConfig = {

View File

@ -85,14 +85,11 @@ in
virtualMapType = "regexp";
config = {
# Allow TLSv1 because we need to be able to receive mail from legacy servers.
smtpd_tls_protocols =
lib.mkForce
"TLSv1.3, TLSv1.2, TLSv1.1, TLSv1, !SSLv2, !SSLv3";
smtpd_tls_protocols = lib.mkForce "TLSv1.3, TLSv1.2, TLSv1.1, TLSv1, !SSLv2, !SSLv3";
virtual_mailbox_domains = lib.mkForce (
builtins.toFile "vhosts" (
lib.concatStringsSep "\n" (
builtins.filter (x: !builtins.elem x nonMailboxDomains)
config.mailserver.domains
builtins.filter (x: !builtins.elem x nonMailboxDomains) config.mailserver.domains
)
)
);

View File

@ -15,8 +15,7 @@
users.maralorn = {
imports = [
pkgs.flake-inputs.nix-index-database.hmModules.nix-index
(import ./../../../home-manager/machines.nix mylib)
.${config.networking.hostName}
(import ./../../../home-manager/machines.nix mylib).${config.networking.hostName}
];
};
};

View File

@ -1,7 +1,6 @@
{ lib, config, ... }:
{
programs.ssh.knownHosts =
lib.mapAttrs
(_: aliases: { extraHostNames = map (alias: "${alias}.maralorn.de") aliases; })
lib.mapAttrs (_: aliases: { extraHostNames = map (alias: "${alias}.maralorn.de") aliases; })
config.m-0.hosts.aliases;
}

View File

@ -44,17 +44,14 @@
# have the job run this shell script
script =
let
options = ''
--accept-routes --advertise-routes "${config.m-0.tailscale-routes}"'';
options = ''--accept-routes --advertise-routes "${config.m-0.tailscale-routes}"'';
in
''
# wait for tailscaled to settle
sleep 2
# check if we are already authenticated to tailscale
status="$(${lib.getExe pkgs.tailscale} status -json | ${
lib.getExe pkgs.jq
} -r .BackendState)"
status="$(${lib.getExe pkgs.tailscale} status -json | ${lib.getExe pkgs.jq} -r .BackendState)"
if [ $status = "Running" ]; then # if so, then do nothing
${lib.getExe pkgs.tailscale} set ${options}
else

View File

@ -10,9 +10,7 @@ in
{
environment.persistence.snapshoted.directories = [ "/var/www/5etools" ];
services.nginx.virtualHosts.${
virtualHosts."5e"
}.locations."/".root = "/var/www/5etools";
services.nginx.virtualHosts.${virtualHosts."5e"}.locations."/".root = "/var/www/5etools";
systemd.services.update-5etools = {
script = ''
@ -22,9 +20,7 @@ in
if [[ -d ".git" ]]; then
${lib.getExe pkgs.git} pull -r
else
${
lib.getExe pkgs.git
} clone https://github.com/5etools-mirror-1/5etools-mirror-1.github.io.git .
${lib.getExe pkgs.git} clone https://github.com/5etools-mirror-1/5etools-mirror-1.github.io.git .
fi
'';
startAt = "daily";

View File

@ -68,9 +68,7 @@ in
url = "localhost:5432";
user = "grafana";
uid = "accounting";
secureJsonData.password = "$__file{${
config.age.secrets."grafana-postgres-pw".path
}}";
secureJsonData.password = "$__file{${config.age.secrets."grafana-postgres-pw".path}}";
jsonData = {
database = "accounting";
sslmode = "disable";

View File

@ -1,4 +1 @@
{ config, ... }:
{
users.users.maralorn.passwordFile = config.age.secrets.pam-short-password.path;
}
{ config, ... }: { users.users.maralorn.passwordFile = config.age.secrets.pam-short-password.path; }

View File

@ -8,16 +8,14 @@
dataDir = "/home/maralorn/media";
openDefaultPorts = true;
devices = lib.filterAttrs (name: _: name != config.networking.hostName) (
lib.mapAttrs
(name: conf: conf // { addresses = [ "tcp6://${name}.vpn.m-0.eu" ]; })
{
apollo.id = "BOTTTGS-QQUHWAK-IFBT3T2-HGHHUZ7-QHRZXC7-JC42VT7-67ZOJBE-WHDWEQX";
zeus.id = "5BUZIS5-ESTYAJO-IQQD7EA-O3VGONJ-E74OHUJ-ZSLF4JK-6HS3UHG-4CQ5OAO";
pegasus.id = "BISYPNZ-54VKBKS-LBND4AS-JNWVOW7-BTW2UMV-QHYM5TZ-GE3AK3E-PGSXPQE";
hera.id = "TJHVUM6-RTB6V3D-JF4GIB2-TVDF2ST-5MTN6N2-ZDIWGF7-XZUCCFG-EQG5WA6";
hephaistos.id = "M6QOG65-2VIL4IF-IP2IGHW-QAT7VSC-3V3244M-UQ7Y5A6-T2TJEAL-BP427QR";
athene.id = "7EMUMTN-NQATI52-B67EUJP-DVB6OLE-KQSM5LJ-2HI3KX5-UJAKUTL-PAV6HQ3";
}
lib.mapAttrs (name: conf: conf // { addresses = [ "tcp6://${name}.vpn.m-0.eu" ]; }) {
apollo.id = "BOTTTGS-QQUHWAK-IFBT3T2-HGHHUZ7-QHRZXC7-JC42VT7-67ZOJBE-WHDWEQX";
zeus.id = "5BUZIS5-ESTYAJO-IQQD7EA-O3VGONJ-E74OHUJ-ZSLF4JK-6HS3UHG-4CQ5OAO";
pegasus.id = "BISYPNZ-54VKBKS-LBND4AS-JNWVOW7-BTW2UMV-QHYM5TZ-GE3AK3E-PGSXPQE";
hera.id = "TJHVUM6-RTB6V3D-JF4GIB2-TVDF2ST-5MTN6N2-ZDIWGF7-XZUCCFG-EQG5WA6";
hephaistos.id = "M6QOG65-2VIL4IF-IP2IGHW-QAT7VSC-3V3244M-UQ7Y5A6-T2TJEAL-BP427QR";
athene.id = "7EMUMTN-NQATI52-B67EUJP-DVB6OLE-KQSM5LJ-2HI3KX5-UJAKUTL-PAV6HQ3";
}
);
folders =
lib.genAttrs

View File

@ -63,16 +63,12 @@ in
);
};
m-0.virtualHosts = lib.genAttrs (hosts.aliases.${hostName} or [ ]) (
name: "${name}.maralorn.de"
);
m-0.virtualHosts = lib.genAttrs (hosts.aliases.${hostName} or [ ]) (name: "${name}.maralorn.de");
nix = {
# Extra Option which is on by default: allow-import-from-derivation = true
settings = {
trusted-public-keys = [
"cache.maralorn.de:nul5zddJUyqgWvtcailq5WMdnqWXMmSY/JOxumIvTdU="
];
trusted-public-keys = [ "cache.maralorn.de:nul5zddJUyqgWvtcailq5WMdnqWXMmSY/JOxumIvTdU=" ];
experimental-features = [
"nix-command"
"flakes"
@ -233,14 +229,11 @@ in
value = {
forceSSL = true;
enableACME = true;
extraConfig =
lib.mkIf (!(builtins.elem name (hosts.publicAliases.${hostName} or [ ])))
''
satisfy any;
${lib.concatMapStringsSep "\n" (ip_range: "allow ${ip_range};")
config.m-0.headscaleIPs}
deny all;
'';
extraConfig = lib.mkIf (!(builtins.elem name (hosts.publicAliases.${hostName} or [ ]))) ''
satisfy any;
${lib.concatMapStringsSep "\n" (ip_range: "allow ${ip_range};") config.m-0.headscaleIPs}
deny all;
'';
};
})
config.m-0.virtualHosts;

View File

@ -87,10 +87,7 @@
font_sources = map (v: v.src) (lib.filter (v: v ? src) config.fonts.fonts);
in
builtins.listToAttrs (
lib.imap0
(
n: source: lib.nameValuePair "src-cache/fonts/${toString n}" { inherit source; }
)
lib.imap0 (n: source: lib.nameValuePair "src-cache/fonts/${toString n}" { inherit source; })
font_sources
);
}

View File

@ -14,9 +14,7 @@ let
minifyStaticFiles = true;
updateChannel = "release";
};
declarativeConfigFile = builtins.toFile "foundry-options.json" (
builtins.toJSON config
);
declarativeConfigFile = builtins.toFile "foundry-options.json" (builtins.toJSON config);
in
{
config = {
@ -28,9 +26,7 @@ in
if [[ -f "${configFile}" ]]; then
tempfile=$(mktemp)
cp "${configFile}" "$tempfile"
${
lib.getExe pkgs.jq
} ".[0] * .[1]" -s "$tempfile" "${declarativeConfigFile}" > "${configFile}"
${lib.getExe pkgs.jq} ".[0] * .[1]" -s "$tempfile" "${declarativeConfigFile}" > "${configFile}"
else
cp "${declarativeConfigFile}" "${configFile}"
fi
@ -45,9 +41,7 @@ in
Restart = "always";
Environment = "HOME=${stateDir}";
ExecStart = ''
${
lib.getExe pkgs.nodejs
} ${stateDir}/app/resources/app/main.js --dataPath="${dataDir}"'';
${lib.getExe pkgs.nodejs} ${stateDir}/app/resources/app/main.js --dataPath="${dataDir}"'';
};
};
services = {
@ -69,9 +63,7 @@ in
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
if ($query_string ~ "pw=([A-Za-z]*)") {
add_header Set-Cookie "password=$1; path=/; Max-Age=${
toString (365 * 24 * 60 * 60)
}; Secure";
add_header Set-Cookie "password=$1; path=/; Max-Age=${toString (365 * 24 * 60 * 60)}; Secure";
return 303 /;
}
if ($http_cookie !~ "password=${pkgs.privateValue "" "foundry-pw"}") {

View File

@ -401,11 +401,7 @@ in
2500
3000
];
action = [
(actions.notify
"{{ trigger.to_state.name }} ist {{ trigger.to_state.state }} ppm."
)
];
action = [ (actions.notify "{{ trigger.to_state.name }} ist {{ trigger.to_state.state }} ppm.") ];
}
{
alias = "Warnung bei niedrigem Akkustand";
@ -428,11 +424,7 @@ in
1
0
];
action = [
(actions.notify
"{{ trigger.to_state.name }} ist {{ trigger.to_state.state }}%."
)
];
action = [ (actions.notify "{{ trigger.to_state.name }} ist {{ trigger.to_state.state }}%.") ];
}
{
alias = "Abend";
@ -482,9 +474,7 @@ in
to = "unavailable";
for = "01:00:00";
};
action = [
(actions.notify "{{ trigger.to_state.name }} ist seit 1h unerreichbar.")
];
action = [ (actions.notify "{{ trigger.to_state.name }} ist seit 1h unerreichbar.") ];
})
[
"switch.luftentfeuchter"
@ -514,9 +504,7 @@ in
below = 16;
};
action = [
(actions.notify
"{{ trigger.to_state.name }} ist seit mehr als ${minutes} Minuten offen."
)
(actions.notify "{{ trigger.to_state.name }} ist seit mehr als ${minutes} Minuten offen.")
];
})
(

View File

@ -43,8 +43,7 @@ rec {
modeSelectEntity = mode: "input_select.${modeSelectName mode}";
modeSelectName = mode: "mode_${mode.name}";
modeBinarySensorName = mode: option: "${modeSelectName mode}_is_${option}";
modeBinarySensorEntity =
mode: option: "binary_sensor.${modeBinarySensorName mode option}";
modeBinarySensorEntity = mode: option: "binary_sensor.${modeBinarySensorName mode option}";
};
triggers = rec {
stateTrigger = entity_id: {
@ -96,11 +95,8 @@ rec {
};
};
templates = rec {
binarySensor = state: attrs: {
binary_sensor = [ ({ inherit state; } // attrs) ];
};
binarySensorFromCondition =
condition: binarySensor (jinja.if' condition "1" "0");
binarySensor = state: attrs: { binary_sensor = [ ({ inherit state; } // attrs) ]; };
binarySensorFromCondition = condition: binarySensor (jinja.if' condition "1" "0");
binarySensorForMode =
mode: option:
binarySensorFromCondition (jinja.isState (util.modeSelectEntity mode) option) {

View File

@ -9,9 +9,7 @@ in
systemd.services.mailman.postStart = lib.concatStringsSep "\n" (
map
(x: ''
${
(pkgs.mailmanPackages.buildEnvs { }).mailmanEnv
}/bin/mailman syncmembers -W -G - "${x}" << EOF
${(pkgs.mailmanPackages.buildEnvs { }).mailmanEnv}/bin/mailman syncmembers -W -G - "${x}" << EOF
${lib.concatStringsSep "\n" lists."${x}"}
EOF
'')

View File

@ -9,9 +9,7 @@ let
hostName = "matrix.${server_name}";
in
{
environment.systemPackages = [
pkgs.matrix-synapse-tools.rust-synapse-compress-state
];
environment.systemPackages = [ pkgs.matrix-synapse-tools.rust-synapse-compress-state ];
systemd.services = {
# use jemalloc to improve the memory situation with synapse
matrix-synapse.environment = {

View File

@ -45,18 +45,12 @@ in
${
lib.getExe pkgs.mastodon_digest
} -o /var/www/rss/mastodon/$now-read-all-list -n 24 -t all --theme no-boosts -f list:3811
${
lib.getExe pkgs.mastodon_digest
} -o /var/www/rss/mastodon/$now-tags -n 24 -t all -f list:4160
${
lib.getBin pkgs.rssfeeds
}/bin/mastodon2rss /var/www/rss/mastodon.xml /var/www/rss/mastodon
${lib.getExe pkgs.mastodon_digest} -o /var/www/rss/mastodon/$now-tags -n 24 -t all -f list:4160
${lib.getBin pkgs.rssfeeds}/bin/mastodon2rss /var/www/rss/mastodon.xml /var/www/rss/mastodon
'';
serviceConfig = {
Type = "oneshot";
LoadCredential = [
"mastodon-auth-env:${config.age.secrets.mastodon-auth-env.path}"
];
LoadCredential = [ "mastodon-auth-env:${config.age.secrets.mastodon-auth-env.path}" ];
};
};
refresh-miniflux = {

View File

@ -2,9 +2,7 @@
{
services = {
prometheus = {
alertmanagers = [
{ static_configs = [ { targets = [ "localhost:9093" ]; } ]; }
];
alertmanagers = [ { static_configs = [ { targets = [ "localhost:9093" ]; } ]; } ];
alertmanager = {
enable = true;
listenAddress = "0.0.0.0";

View File

@ -2,33 +2,25 @@
let
heading = name: link: ''<h2><a href=\"${link}\">${name}</a></h2>'';
badge = src: link: ''<a href=\"${link}\">\n <img src=\"${src}\">\n</a>'';
job =
name:
badge "https://ci.maralorn.de/badge/${name}.svg"
"https://ci.maralorn.de/jobs/${name}";
job = name: badge "https://ci.maralorn.de/badge/${name}.svg" "https://ci.maralorn.de/jobs/${name}";
badges = lib.concatStringsSep "\\n" [
(heading "ci.maralorn.de" "https://ci.maralorn.de")
(job "test-config")
(job "blog")
(heading "haskell-taskwarrior"
"https://hackage.haskell.org/package/taskwarrior"
)
(badge
"https://github.com/maralorn/haskell-taskwarrior/actions/workflows/haskell.yml/badge.svg"
(heading "haskell-taskwarrior" "https://hackage.haskell.org/package/taskwarrior")
(badge "https://github.com/maralorn/haskell-taskwarrior/actions/workflows/haskell.yml/badge.svg"
"https://github.com/maralorn/haskell-taskwarrior/actions"
)
(badge "https://img.shields.io/hackage-deps/v/taskwarrior.svg"
"http://packdeps.haskellers.com/reverse/taskwarrior"
)
(badge
"https://repology.org/badge/vertical-allrepos/haskell:taskwarrior.svg?columns=3&header="
(badge "https://repology.org/badge/vertical-allrepos/haskell:taskwarrior.svg?columns=3&header="
"https://repology.org/project/haskell:taskwarrior/versions"
)
(heading "nix-output-monitor" "https://github.com/maralorn/nix-output-monitor")
(badge
"https://repology.org/badge/vertical-allrepos/nix-output-monitor.svg?columns=3&header="
(badge "https://repology.org/badge/vertical-allrepos/nix-output-monitor.svg?columns=3&header="
"https://repology.org/project/nix-output-monitor/versions"
)
];

View File

@ -2,12 +2,8 @@ _final: prev: {
element-web = prev.element-web.overrideAttrs (
_: {
postConfigure = ''
patch node_modules/matrix-react-sdk/src/components/views/rooms/RoomList.tsx ${
./RoomList.tsx.patch
}
cp ${
./orville_communicator.opus
} node_modules/matrix-react-sdk/res/media/message.ogg
patch node_modules/matrix-react-sdk/src/components/views/rooms/RoomList.tsx ${./RoomList.tsx.patch}
cp ${./orville_communicator.opus} node_modules/matrix-react-sdk/res/media/message.ogg
'';
preInstall = ''
find . -name 'bundle.css'

View File

@ -12,9 +12,7 @@ let
}
]
else
lib.concatLists (
lib.mapAttrsToList (dirName: linkToPath (path ++ [ dirName ])) fileOrDir
)
lib.concatLists (lib.mapAttrsToList (dirName: linkToPath (path ++ [ dirName ])) fileOrDir)
);
in
{

View File

@ -11,19 +11,13 @@ let
packages = p: builtins.attrValues (self.lib.selectHaskellPackages p);
extraDependencies = p: {
libraryHaskellDepends = builtins.attrValues (
myPkgs.makeHaskellScriptPackages p
// selectHaskellPackages p
// {
inherit (p) ghc-debug-client;
}
myPkgs.makeHaskellScriptPackages p // selectHaskellPackages p // { inherit (p) ghc-debug-client; }
);
};
};
in
{
myHaskellScriptPackages =
myPkgs.makeHaskellScriptPackages
final.haskellPackages;
myHaskellScriptPackages = myPkgs.makeHaskellScriptPackages final.haskellPackages;
ghcWithPackages = builtins.head shell.nativeBuildInputs;
}
// selectHaskellPackages hpkgs

View File

@ -1,3 +1 @@
_final: prev: {
nerdfonts = prev.nerdfonts.override { fonts = [ "NerdFontsSymbolsOnly" ]; };
}
_final: prev: { nerdfonts = prev.nerdfonts.override { fonts = [ "NerdFontsSymbolsOnly" ]; }; }

View File

@ -23,9 +23,7 @@ let
if [[ "$2" == "" ]]; then
new_timers=`${lib.getExe pkgs.jq} "map(select(.name != \"$1\"))" ~/.timers`
else
new_timers=`${
lib.getExe pkgs.jq
} "map(select(.name != \"$1\")) + [{name: \"$1\", at:$(${
new_timers=`${lib.getExe pkgs.jq} "map(select(.name != \"$1\")) + [{name: \"$1\", at:$(${
lib.getBin pkgs.coreutils
}/bin/date +%s -d "$2")}]" ~/.timers`
fi

View File

@ -29,13 +29,9 @@ in
in
''
cp $contentPath ${filename}.hs
${
lib.concatStringsSep " " (
lib.mapAttrsToList (key: val: ''${key}="${val}"'') ghcEnv
)
} ${ghc.withPackages (_: libraries)}/bin/ghc ${
lib.escapeShellArgs ghcArgs
} ${filename}.hs
${lib.concatStringsSep " " (lib.mapAttrsToList (key: val: ''${key}="${val}"'') ghcEnv)} ${
ghc.withPackages (_: libraries)
}/bin/ghc ${lib.escapeShellArgs ghcArgs} ${filename}.hs
mv ${filename} $out
${pkgs.binutils-unwrapped}/bin/strip --strip-unneeded "$out"
'';

View File

@ -22,11 +22,11 @@ executable builders-configurator
import: warnings
main-is: Main.hs
default-extensions:
NoImplicitPrelude
BlockArguments
DataKinds
ExtendedDefaultRules
LambdaCase
NoImplicitPrelude
OverloadedRecordDot
OverloadedStrings
QuasiQuotes