working on home-manager migration
This commit is contained in:
parent
45a4de7b78
commit
ab7d500fab
22 changed files with 470 additions and 574 deletions
|
@ -1,3 +1,4 @@
|
||||||
|
{ lib, ... }:
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./gui
|
./gui
|
||||||
|
@ -8,4 +9,12 @@
|
||||||
./terminal
|
./terminal
|
||||||
./yubikey.nix
|
./yubikey.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
|
# some system stuff
|
||||||
|
# -----------------
|
||||||
|
time.timeZone = lib.mkDefault "Europe/Berlin";
|
||||||
|
#time.timeZone = lib.mkDefault "Pacific/Auckland";
|
||||||
|
#time.timeZone = lib.mkDefault "Asia/Singapore";
|
||||||
|
#time.timeZone = lib.mkDefault "Asia/Makassar";
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,6 +15,8 @@ with types;
|
||||||
./hosts.nix
|
./hosts.nix
|
||||||
./wifi.nix
|
./wifi.nix
|
||||||
#./avahi.nix
|
#./avahi.nix
|
||||||
|
./syncthing.nix
|
||||||
|
./nginx.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
config = mkIf config.components.network.enable { };
|
config = mkIf config.components.network.enable { };
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
#networking.extraHosts = ''
|
networking.extraHosts = ''
|
||||||
# 144.76.13.147 robi
|
144.76.13.147 robi
|
||||||
#'';
|
'';
|
||||||
}
|
}
|
||||||
|
|
260
nixos/components/network/nginx.nix
Normal file
260
nixos/components/network/nginx.nix
Normal file
|
@ -0,0 +1,260 @@
|
||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
with lib;
|
||||||
|
{
|
||||||
|
options.components.network.nginx.enable = mkOption {
|
||||||
|
type = lib.types.bool;
|
||||||
|
default = config.components.network.enable;
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf (config.components.network.nginx.enable) {
|
||||||
|
|
||||||
|
security.acme.defaults.email = "contact@ingolf-wagner.de";
|
||||||
|
security.acme.acceptTerms = true;
|
||||||
|
|
||||||
|
services.nginx = {
|
||||||
|
|
||||||
|
# Use recommended settings
|
||||||
|
recommendedGzipSettings = lib.mkDefault true;
|
||||||
|
recommendedOptimisation = lib.mkDefault true;
|
||||||
|
recommendedProxySettings = lib.mkDefault true;
|
||||||
|
recommendedTlsSettings = lib.mkDefault true;
|
||||||
|
|
||||||
|
# for loki logging
|
||||||
|
commonHttpConfig = ''
|
||||||
|
log_format logfmt escape=json 'timestamp=$time_iso8601 '
|
||||||
|
'facility=nginx '
|
||||||
|
'src_addr=$remote_addr '
|
||||||
|
'body_bytes_sent=$body_bytes_sent '
|
||||||
|
'request_time=$request_time '
|
||||||
|
'response_status=$status '
|
||||||
|
'request="$request" '
|
||||||
|
'request_method="$request_method" '
|
||||||
|
'host="$host" '
|
||||||
|
'upstream_cache_status="$upstream_cache_status" '
|
||||||
|
'upstream_addr="$upstream_addr" '
|
||||||
|
'http_x_forwarded_for="$http_x_forwarded_for" '
|
||||||
|
'http_referrer="$http_referer" '
|
||||||
|
'http_user_agent="$http_user_agent"';
|
||||||
|
|
||||||
|
# log to local journald
|
||||||
|
access_log syslog:server=unix:/dev/log logfmt;
|
||||||
|
'';
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
services.nginx.package = pkgs.nginxMainline;
|
||||||
|
services.nginx.virtualHosts."${config.networking.hostName}.private" = {
|
||||||
|
default = true;
|
||||||
|
locations."/" = {
|
||||||
|
root = pkgs.landingpage.override {
|
||||||
|
jsonConfig = [
|
||||||
|
{ title = "System Links"; }
|
||||||
|
{
|
||||||
|
text = "Syncthings";
|
||||||
|
items = map
|
||||||
|
({ name, host ? "${name}.private", ... }: {
|
||||||
|
label = name;
|
||||||
|
href = "http://${host}:8384/";
|
||||||
|
image = "https://media.giphy.com/media/JoyU4vuzwj6ZA7Ging/giphy.gif";
|
||||||
|
})
|
||||||
|
(lib.flatten (lib.mapAttrsToList (name: { ... }: { inherit name; })
|
||||||
|
config.services.tinc.networks."private".hostSettings));
|
||||||
|
}
|
||||||
|
{
|
||||||
|
text = "robi";
|
||||||
|
items = [
|
||||||
|
{
|
||||||
|
label = "Jellyfin";
|
||||||
|
href = "http://flix.ingolf-wagner.de/";
|
||||||
|
image = "https://media.giphy.com/media/fyLi0OuWysotq/giphy.gif";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
label = "netdata";
|
||||||
|
href = "http://robi.private:19999/";
|
||||||
|
image = "https://media.giphy.com/media/BkjdN6MQCDPaw/giphy.gif";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
label = "logs";
|
||||||
|
href = "http://grafana.robi.private/explore";
|
||||||
|
image = "https://raw.githubusercontent.com/cncf/landscape/master/hosted_logos/grafana-loki.svg";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
label = "grafana";
|
||||||
|
href = "http://grafana.robi.private/";
|
||||||
|
image = "https://www.vectorlogo.zone/logos/grafana/grafana-icon.svg";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
label = "prometheus";
|
||||||
|
href = "http://prometheus.robi.private/";
|
||||||
|
image = "https://www.vectorlogo.zone/logos/prometheusio/prometheusio-icon.svg";
|
||||||
|
}
|
||||||
|
|
||||||
|
];
|
||||||
|
}
|
||||||
|
{
|
||||||
|
text = "chungus";
|
||||||
|
items = [
|
||||||
|
{
|
||||||
|
label = "HomeAssistant";
|
||||||
|
href = "http://chungus.private:8123/";
|
||||||
|
image = "https://media.giphy.com/media/fyLi0OuWysotq/giphy.gif";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
label = "Zigbee2Mqtt";
|
||||||
|
href = "http://chungus.private:9666/";
|
||||||
|
image = "https://media.giphy.com/media/fyLi0OuWysotq/giphy.gif";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
label = "Tdarr";
|
||||||
|
href = "http://tdarr.chungus.private/";
|
||||||
|
image = "https://media.giphy.com/media/fyLi0OuWysotq/giphy.gif";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
label = "Jellyfin";
|
||||||
|
href = "http://chungus:8096/";
|
||||||
|
image = "https://media.giphy.com/media/fyLi0OuWysotq/giphy.gif";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
label = "netdata";
|
||||||
|
href = "http://chungus.private:19999/";
|
||||||
|
image = "https://media.giphy.com/media/BkjdN6MQCDPaw/giphy.gif";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
label = "logs";
|
||||||
|
href = "http://grafana.chungus.private/explore";
|
||||||
|
image = "https://raw.githubusercontent.com/cncf/landscape/master/hosted_logos/grafana-loki.svg";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
label = "grafana";
|
||||||
|
href = "http://grafana.chungus.private/";
|
||||||
|
image = "https://www.vectorlogo.zone/logos/grafana/grafana-icon.svg";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
label = "prometheus";
|
||||||
|
href = "http://prometheus.chungus.private/";
|
||||||
|
image = "https://www.vectorlogo.zone/logos/prometheusio/prometheusio-icon.svg";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
{
|
||||||
|
text = "pepe";
|
||||||
|
items = [
|
||||||
|
{
|
||||||
|
label = "netdata";
|
||||||
|
href = "http://pepe.private:19999/";
|
||||||
|
image = "https://media.giphy.com/media/BkjdN6MQCDPaw/giphy.gif";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
label = "logs";
|
||||||
|
href = "http://grafana.pepe.private/explore";
|
||||||
|
image = "https://raw.githubusercontent.com/cncf/landscape/master/hosted_logos/grafana-loki.svg";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
label = "grafana";
|
||||||
|
href = "http://grafana.pepe.private/";
|
||||||
|
image = "https://www.vectorlogo.zone/logos/grafana/grafana-icon.svg";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
label = "prometheus";
|
||||||
|
href = "http://prometheus.pepe.private/";
|
||||||
|
image = "https://www.vectorlogo.zone/logos/prometheusio/prometheusio-icon.svg";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
title = "Various Links";
|
||||||
|
items = [
|
||||||
|
{
|
||||||
|
label = "NeverSSL";
|
||||||
|
href = "https://oldslowfreshlight.neverssl.com/";
|
||||||
|
image = "https://media.giphy.com/media/fyLi0OuWysotq/giphy.gif";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
label = "Hetzner Cloud";
|
||||||
|
href = "https://console.hetzner.cloud/projects";
|
||||||
|
image =
|
||||||
|
"https://media.giphy.com/media/NECZ8crkbXR0k/giphy.gif";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
label = "Pass the Popcorn";
|
||||||
|
href = "https://passthepopcorn.me/";
|
||||||
|
image =
|
||||||
|
"https://media.giphy.com/media/NipFetnQOuKhW/giphy.gif";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
label = "redacted";
|
||||||
|
href = "https://redacted.ch/";
|
||||||
|
image =
|
||||||
|
"https://media.giphy.com/media/ku5EcFe4PNGWA/giphy.gif";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
label = "Cups";
|
||||||
|
href = "http://localhost:631/";
|
||||||
|
image =
|
||||||
|
"https://media.giphy.com/media/7hU7x4GPurk2c/giphy.gif";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
{
|
||||||
|
text = "NixOS Links";
|
||||||
|
items = [
|
||||||
|
{
|
||||||
|
label = "NixOS Manual";
|
||||||
|
href = "https://nixos.org/nixos/manual/";
|
||||||
|
image =
|
||||||
|
"https://media.giphy.com/media/dsdVyKkSqccEzoPufX/giphy.gif";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
label = "Nixpkgs Manual";
|
||||||
|
href = "https://nixos.org/nixpkgs/manual/";
|
||||||
|
image =
|
||||||
|
"https://media.giphy.com/media/dsdVyKkSqccEzoPufX/giphy.gif";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
label = "NixOS Reference";
|
||||||
|
href =
|
||||||
|
"https://storage.googleapis.com/files.tazj.in/nixdoc/manual.html#sec-functions-library";
|
||||||
|
image =
|
||||||
|
"https://media.giphy.com/media/LkjlH3rVETgsg/giphy.gif";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
label = "Nix Packages";
|
||||||
|
href = "https://nixos.org/nixos/packages.html";
|
||||||
|
image =
|
||||||
|
"https://media.giphy.com/media/l2YWlohvjPnsvkdEc/giphy.gif";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
label = "NixOS Language specific helpers";
|
||||||
|
href =
|
||||||
|
"https://nixos.wiki/wiki/Language-specific_package_helpers";
|
||||||
|
image =
|
||||||
|
"https://media.giphy.com/media/LkjlH3rVETgsg/giphy.gif";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
label = "NixOS Weekly";
|
||||||
|
href = "https://weekly.nixos.org/";
|
||||||
|
image =
|
||||||
|
"https://media.giphy.com/media/lXiRLb0xFzmreM8k8/giphy.gif";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
label = "NixOS Security";
|
||||||
|
href = "https://broken.sh/";
|
||||||
|
image =
|
||||||
|
"https://media.giphy.com/media/BqILAHjH1Ttm0/giphy.gif";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
label = "NixOS RFCs";
|
||||||
|
href = "https://github.com/NixOS/rfcs/";
|
||||||
|
image =
|
||||||
|
"https://media.giphy.com/media/Uq9bGjGKg08M0/giphy.gif";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
{ urlEncode = true; }
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
|
@ -47,31 +47,10 @@ with lib; {
|
||||||
|
|
||||||
# needs to be on encrypted drives
|
# needs to be on encrypted drives
|
||||||
# -------------------------------
|
# -------------------------------
|
||||||
private = {
|
|
||||||
enable = lib.mkDefault false;
|
|
||||||
#watch = lib.mkDefault false;
|
|
||||||
path = lib.mkDefault "/tmp/private";
|
|
||||||
devices = [ "chungus" "pepe" "cream" "sterni" "mobi" "bobi" ];
|
|
||||||
versioning = {
|
|
||||||
type = "simple";
|
|
||||||
params.keep = "10";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
art = {
|
|
||||||
enable = lib.mkDefault false;
|
|
||||||
#watch = lib.mkDefault false;
|
|
||||||
path = lib.mkDefault "/tmp/art";
|
|
||||||
devices = [ "chungus" "pepe" "cream" "sterni" "bumba" ];
|
|
||||||
versioning = {
|
|
||||||
type = "simple";
|
|
||||||
params.keep = "2";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
books = {
|
books = {
|
||||||
enable = lib.mkDefault false;
|
enable = lib.mkDefault false;
|
||||||
#watch = lib.mkDefault false;
|
|
||||||
path = lib.mkDefault "/tmp/books";
|
path = lib.mkDefault "/tmp/books";
|
||||||
devices = [ "chungus" "robi" ];
|
devices = [ "chungus" "robi" "cream" "cherry" ];
|
||||||
versioning = {
|
versioning = {
|
||||||
type = "simple";
|
type = "simple";
|
||||||
params.keep = "2";
|
params.keep = "2";
|
||||||
|
@ -79,9 +58,8 @@ with lib; {
|
||||||
};
|
};
|
||||||
password-store = {
|
password-store = {
|
||||||
enable = lib.mkDefault false;
|
enable = lib.mkDefault false;
|
||||||
#watch = lib.mkDefault false;
|
|
||||||
path = lib.mkDefault "/tmp/password-store";
|
path = lib.mkDefault "/tmp/password-store";
|
||||||
devices = [ "chungus" "pepe" "cream" "sterni" "mobi" "bobi" "cherry" ];
|
devices = [ "chungus" "cream" "sterni" "mobi" "bobi" "cherry" ];
|
||||||
versioning = {
|
versioning = {
|
||||||
type = "simple";
|
type = "simple";
|
||||||
params.keep = "10";
|
params.keep = "10";
|
||||||
|
@ -89,64 +67,23 @@ with lib; {
|
||||||
};
|
};
|
||||||
desktop = {
|
desktop = {
|
||||||
enable = lib.mkDefault false;
|
enable = lib.mkDefault false;
|
||||||
#watch = lib.mkDefault false;
|
|
||||||
path = lib.mkDefault "/tmp/desktop";
|
path = lib.mkDefault "/tmp/desktop";
|
||||||
devices = [ "chungus" "pepe" "cream" "sterni" "mobi" "bobi" "cherry" ];
|
devices = [ "chungus" "cream" "sterni" "mobi" "bobi" "cherry" ];
|
||||||
};
|
};
|
||||||
finance = {
|
finance = {
|
||||||
enable = lib.mkDefault false;
|
enable = lib.mkDefault false;
|
||||||
#watch = lib.mkDefault false;
|
|
||||||
path = lib.mkDefault "/tmp/finance";
|
path = lib.mkDefault "/tmp/finance";
|
||||||
devices = [ "chungus" "pepe" "cream" "sterni" "mobi" "bobi" ];
|
devices = [ "chungus" "cream" "sterni" "mobi" "bobi" ];
|
||||||
versioning = {
|
|
||||||
type = "simple";
|
|
||||||
params.keep = "10";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
fotos = {
|
|
||||||
enable = lib.mkDefault false;
|
|
||||||
#watch = lib.mkDefault false;
|
|
||||||
path = lib.mkDefault "/tmp/fotos";
|
|
||||||
devices = [ "chungus" "pepe" ];
|
|
||||||
versioning = {
|
|
||||||
type = "simple";
|
|
||||||
params.keep = "10";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# no need to be stored on encrypted drives
|
|
||||||
# ----------------------------------------
|
|
||||||
lost-fotos = {
|
|
||||||
enable = lib.mkDefault false;
|
|
||||||
#watch = lib.mkDefault false;
|
|
||||||
path = lib.mkDefault "/tmp/lost-fotos";
|
|
||||||
devices = [ "chungus" "pepe" "robi" ];
|
|
||||||
versioning = {
|
|
||||||
type = "simple";
|
|
||||||
params.keep = "10";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
#media = {
|
|
||||||
# enable = lib.mkDefault false;
|
|
||||||
# watch = lib.mkDefault false;
|
|
||||||
# devices = [ "chungus" "pepe" "robi" ];
|
|
||||||
#};
|
|
||||||
music-projects = {
|
|
||||||
enable = lib.mkDefault false;
|
|
||||||
id = "acfhu-r4t4f";
|
|
||||||
path = lib.mkDefault "/tmp/lost-fotos";
|
|
||||||
#watch = lib.mkDefault false;
|
|
||||||
devices = [ "chungus" "pepe" "cream" "sterni" "robi" ];
|
|
||||||
versioning = {
|
versioning = {
|
||||||
type = "simple";
|
type = "simple";
|
||||||
params.keep = "10";
|
params.keep = "10";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
# todo remove if zfs is is used
|
||||||
nextcloud_backup = {
|
nextcloud_backup = {
|
||||||
enable = lib.mkDefault false;
|
enable = lib.mkDefault false;
|
||||||
#watch = lib.mkDefault false;
|
|
||||||
path = lib.mkDefault "/tmp/lost-fotos";
|
path = lib.mkDefault "/tmp/lost-fotos";
|
||||||
devices = [ "chungus" "pepe" "robi" ];
|
devices = [ "chungus" "robi" ];
|
||||||
versioning = {
|
versioning = {
|
||||||
type = "simple";
|
type = "simple";
|
||||||
params.keep = "2";
|
params.keep = "2";
|
|
@ -23,6 +23,8 @@ with lib;
|
||||||
environment.systemPackages = [
|
environment.systemPackages = [
|
||||||
pkgs.ranger # datei browser
|
pkgs.ranger # datei browser
|
||||||
pkgs.retry # retry command till success
|
pkgs.retry # retry command till success
|
||||||
|
pkgs.silver-searcher
|
||||||
|
pkgs.treefmt
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,6 +8,7 @@ with lib;
|
||||||
bind.dnsutils
|
bind.dnsutils
|
||||||
nmap
|
nmap
|
||||||
hexyl
|
hexyl
|
||||||
|
ipcalc
|
||||||
|
|
||||||
units
|
units
|
||||||
];
|
];
|
||||||
|
@ -25,7 +26,7 @@ with lib;
|
||||||
|
|
||||||
joplin-desktop
|
joplin-desktop
|
||||||
|
|
||||||
#yt-dlp
|
evince
|
||||||
];
|
];
|
||||||
})
|
})
|
||||||
];
|
];
|
||||||
|
|
|
@ -15,6 +15,7 @@ with pkgs;
|
||||||
init.defaultBranch = "main";
|
init.defaultBranch = "main";
|
||||||
pull.ff = "only";
|
pull.ff = "only";
|
||||||
};
|
};
|
||||||
|
diff-so-fancy.enable = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -27,13 +28,6 @@ with pkgs;
|
||||||
gitAndTools.gitflow
|
gitAndTools.gitflow
|
||||||
gitAndTools.gitSVN
|
gitAndTools.gitSVN
|
||||||
gitAndTools.git2cl
|
gitAndTools.git2cl
|
||||||
|
|
||||||
# merge tools
|
|
||||||
meld
|
|
||||||
|
|
||||||
# activate using :
|
|
||||||
# git config --global core.pager "diff-so-fancy | less --tabs=4 -RFX"
|
|
||||||
gitAndTools.diff-so-fancy
|
|
||||||
];
|
];
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,7 +16,7 @@ let
|
||||||
/dev/shm/background.png && \
|
/dev/shm/background.png && \
|
||||||
${pkgs.imagemagick}/bin/convert /dev/shm/background.png \
|
${pkgs.imagemagick}/bin/convert /dev/shm/background.png \
|
||||||
-font ${pkgs.ubuntu_font_family}/share/fonts/ubuntu/UbuntuMono-B.ttf \
|
-font ${pkgs.ubuntu_font_family}/share/fonts/ubuntu/UbuntuMono-B.ttf \
|
||||||
-gravity Center -pointsize 30 -annotate 0 '+${osConfig.networking.hostName}' \
|
-gravity Center -pointsize 30 -annotate 0 '${osConfig.networking.hostName}' \
|
||||||
/dev/shm/background_with_text.png && \
|
/dev/shm/background_with_text.png && \
|
||||||
${pkgs.feh}/bin/feh --bg-scale /dev/shm/background_with_text.png
|
${pkgs.feh}/bin/feh --bg-scale /dev/shm/background_with_text.png
|
||||||
'';
|
'';
|
||||||
|
@ -126,7 +126,9 @@ in
|
||||||
enable = true;
|
enable = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
xsession.windowManager.i3 = {
|
xsession = {
|
||||||
|
enable = true;
|
||||||
|
windowManager.i3 = {
|
||||||
enable = true;
|
enable = true;
|
||||||
extraConfig = ''
|
extraConfig = ''
|
||||||
default_border pixel
|
default_border pixel
|
||||||
|
@ -299,6 +301,7 @@ in
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
};
|
||||||
|
|
||||||
# notification tool
|
# notification tool
|
||||||
services.dunst = {
|
services.dunst = {
|
||||||
|
|
|
@ -143,8 +143,15 @@ with lib;
|
||||||
|
|
||||||
unstable.mdbook
|
unstable.mdbook
|
||||||
|
|
||||||
|
nodePackages.prettier
|
||||||
|
shfmt
|
||||||
|
black
|
||||||
|
pre-commit
|
||||||
|
nixpkgs-fmt
|
||||||
|
treefmt
|
||||||
|
|
||||||
] ++ (map pandocScript (lib.cartesianProductOfSets {
|
] ++ (map pandocScript (lib.cartesianProductOfSets {
|
||||||
inputFormat = [ "man" "markdown" "mediawiki" ];
|
inputFormat = [ "man" "markdown" "mediawiki" "asciidoc" ];
|
||||||
outputFormat = [ "mediawiki" "docbook5" "html5" "man" "jira" "markdown" ];
|
outputFormat = [ "mediawiki" "docbook5" "html5" "man" "jira" "markdown" ];
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
|
|
@ -20,6 +20,7 @@ in
|
||||||
(nextcloudSync "Pictures")
|
(nextcloudSync "Pictures")
|
||||||
(nextcloudSync "Unterlagen")
|
(nextcloudSync "Unterlagen")
|
||||||
(nextcloudSync "Nähen")
|
(nextcloudSync "Nähen")
|
||||||
|
(nextcloudSync "NähenTina")
|
||||||
(nextcloudSync "Video")
|
(nextcloudSync "Video")
|
||||||
(nextcloudSync "Kunstbuch")
|
(nextcloudSync "Kunstbuch")
|
||||||
(nextcloudSync "AWS-SolutionArchitect-Professional")
|
(nextcloudSync "AWS-SolutionArchitect-Professional")
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
|
|
||||||
# last system packages that need to be migrated to components
|
# last system packages that need to be migrated to components
|
||||||
../../system/all/borg-jobs.nix
|
../../system/all/borg-jobs.nix
|
||||||
../../system/all/syncthing.nix
|
#../../system/all/syncthing.nix
|
||||||
../../system/server/netdata.nix
|
../../system/server/netdata.nix
|
||||||
../../modules
|
../../modules
|
||||||
|
|
||||||
|
|
|
@ -3,9 +3,13 @@
|
||||||
|
|
||||||
imports = [
|
imports = [
|
||||||
|
|
||||||
../../components
|
# last system packages that need to be migrated to components
|
||||||
../../system/desktop
|
../../system/all/borg-jobs.nix
|
||||||
|
#../../system/all/syncthing.nix
|
||||||
../../system/server/netdata.nix
|
../../system/server/netdata.nix
|
||||||
|
../../modules
|
||||||
|
|
||||||
|
../../components
|
||||||
|
|
||||||
./hardware-configuration.nix
|
./hardware-configuration.nix
|
||||||
|
|
||||||
|
|
|
@ -10,4 +10,18 @@
|
||||||
ed25519PrivateKeyFile = config.sops.secrets.tinc_retiolum_ed25519_key.path;
|
ed25519PrivateKeyFile = config.sops.secrets.tinc_retiolum_ed25519_key.path;
|
||||||
rsaPrivateKeyFile = config.sops.secrets.tinc_retiolum_rsa_key.path;
|
rsaPrivateKeyFile = config.sops.secrets.tinc_retiolum_rsa_key.path;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
fileSystems."/retiolum/sicily" = {
|
||||||
|
device = "//sicily.r/tonne";
|
||||||
|
fsType = "cifs";
|
||||||
|
options = [
|
||||||
|
"guest"
|
||||||
|
"nofail"
|
||||||
|
"noauto"
|
||||||
|
"ro"
|
||||||
|
"rsize=16777216"
|
||||||
|
"cache=loose"
|
||||||
|
"x-systemd.after=network.target"
|
||||||
|
];
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
../../system/all/nginx.nix
|
../../system/all/nginx.nix
|
||||||
../../system/all/borg-jobs.nix
|
../../system/all/borg-jobs.nix
|
||||||
../../system/all/defaults.nix
|
../../system/all/defaults.nix
|
||||||
../../system/all/syncthing.nix
|
#../../system/all/syncthing.nix
|
||||||
../../system/server/netdata.nix
|
../../system/server/netdata.nix
|
||||||
../../system/server/packages.nix
|
../../system/server/packages.nix
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{ config, pkgs, lib, ... }: {
|
{ config, pkgs, lib, ... }: {
|
||||||
|
|
||||||
imports = [ ../../system/all/syncthing.nix ];
|
#imports = [ ../../system/all/syncthing.nix ];
|
||||||
|
|
||||||
sops.secrets.syncthing_cert = { };
|
sops.secrets.syncthing_cert = { };
|
||||||
sops.secrets.syncthing_key = { };
|
sops.secrets.syncthing_key = { };
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
../../system/all/nginx.nix
|
../../system/all/nginx.nix
|
||||||
../../system/all/borg-jobs.nix
|
../../system/all/borg-jobs.nix
|
||||||
../../system/all/defaults.nix
|
../../system/all/defaults.nix
|
||||||
../../system/all/syncthing.nix
|
#../../system/all/syncthing.nix
|
||||||
../../system/server/netdata.nix
|
../../system/server/netdata.nix
|
||||||
../../system/server/packages.nix
|
../../system/server/packages.nix
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{ config, pkgs, lib, ... }: {
|
{ config, pkgs, lib, ... }: {
|
||||||
|
|
||||||
imports = [ ../../system/all/syncthing.nix ];
|
# imports = [ ../../system/all/syncthing.nix ];
|
||||||
|
|
||||||
sops.secrets.syncthing_cert = { };
|
sops.secrets.syncthing_cert = { };
|
||||||
sops.secrets.syncthing_key = { };
|
sops.secrets.syncthing_key = { };
|
||||||
|
|
|
@ -7,21 +7,12 @@
|
||||||
|
|
||||||
./defaults.nix
|
./defaults.nix
|
||||||
|
|
||||||
# needed
|
|
||||||
#<home-manager/nixos>
|
|
||||||
|
|
||||||
# cross-compiling
|
|
||||||
#<cleverca22/qemu.nix>
|
|
||||||
|
|
||||||
./grub.nix
|
./grub.nix
|
||||||
#./networking-qos.nix
|
|
||||||
./nginx-landingpage.nix
|
./nginx-landingpage.nix
|
||||||
./nginx.nix
|
./nginx.nix
|
||||||
./packages.nix
|
./packages.nix
|
||||||
./borg-jobs.nix
|
./borg-jobs.nix
|
||||||
./borg-scripts.nix
|
./borg-scripts.nix
|
||||||
./syncthing.nix
|
|
||||||
./on-failure.nix
|
|
||||||
|
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
|
@ -1,14 +1,9 @@
|
||||||
{ config, pkgs, lib, ... }: {
|
{ config, pkgs, lib, ... }: {
|
||||||
|
|
||||||
imports = [
|
imports = [
|
||||||
|
|
||||||
../all
|
../all
|
||||||
#./packages.nix
|
|
||||||
#./yubikey.nix
|
|
||||||
];
|
];
|
||||||
|
|
||||||
#components.network.sshd.onlyTincAccess = lib.mkDefault true;
|
|
||||||
|
|
||||||
backup.dirs = [
|
backup.dirs = [
|
||||||
"${config.users.users.mainUser.home}/.config/noti"
|
"${config.users.users.mainUser.home}/.config/noti"
|
||||||
"${config.users.users.mainUser.home}/.password-store"
|
"${config.users.users.mainUser.home}/.password-store"
|
||||||
|
|
|
@ -1,313 +0,0 @@
|
||||||
{ pkgs, config, lib, ... }:
|
|
||||||
|
|
||||||
with lib;
|
|
||||||
|
|
||||||
let
|
|
||||||
|
|
||||||
library = import ../../library { inherit pkgs lib; };
|
|
||||||
|
|
||||||
allLicenses =
|
|
||||||
let
|
|
||||||
licenses = builtins.map
|
|
||||||
(license: "echo '${license.shortName} : ${license.fullName}'")
|
|
||||||
(builtins.attrValues pkgs.lib.licenses);
|
|
||||||
in
|
|
||||||
pkgs.writers.writeBashBin "all-licenses"
|
|
||||||
(lib.concatStringsSep "\n" licenses);
|
|
||||||
|
|
||||||
#joplin = pkgs.joplin-desktop;
|
|
||||||
joplin = pkgs.unstable.joplin-desktop;
|
|
||||||
#joplin = pkgs.writers.writeBashBin "joplin" ''
|
|
||||||
# if [[ ! -x "$HOME/programs/Joplin.AppImage" ]]
|
|
||||||
# then
|
|
||||||
# echo "$HOME/programs/Joplin.AppImage does not exist or is not executable";
|
|
||||||
# exit 1
|
|
||||||
# fi
|
|
||||||
# exec ${pkgs.appimage-run}/bin/appimage-run "$HOME/programs/Joplin.AppImage"
|
|
||||||
#'';
|
|
||||||
|
|
||||||
parseUrl = pkgs.writers.writeBashBin "parseUrl" ''
|
|
||||||
echo "$@" | \
|
|
||||||
${pkgs.jq}/bin/jq --raw-input --raw-output '
|
|
||||||
def parseURL: capture( "^((?<scheme>[^:/?#]+):)?(//(?<authority>(?<domain>[^/?#:]*)(:(?<port>[0-9]*))?))?((?<path>[^?#]*)\\?)?((?<query>([^#]*)))?(#(?<fragment>(.*)))?");
|
|
||||||
parseURL
|
|
||||||
'
|
|
||||||
'';
|
|
||||||
|
|
||||||
parseAndCopyLink = pkgs.writers.writeBashBin "parseAndCopyLink" ''
|
|
||||||
${parseUrl}/bin/parseUrl "$@" | \
|
|
||||||
${pkgs.jq}/bin/jq --raw-output '"\(.scheme)://\(.domain)\(.path)"' | \
|
|
||||||
${pkgs.xclip}/bin/xclip
|
|
||||||
'';
|
|
||||||
|
|
||||||
replaceLinks = pkgs.writers.writeBashBin "replace-link-with-content" # sh
|
|
||||||
''
|
|
||||||
if [ ! -L "$1" ]
|
|
||||||
then
|
|
||||||
echo "$1 does not exist or is not a file"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
cp -rL "$1" "$1.backup"
|
|
||||||
unlink "$1"
|
|
||||||
mv "$1.backup" "$1"
|
|
||||||
'';
|
|
||||||
|
|
||||||
connectToSpeaker = name: id:
|
|
||||||
pkgs.writeShellScriptBin "connect-to-speaker-${name}" # sh
|
|
||||||
''
|
|
||||||
# hacky script because I have problems with
|
|
||||||
# automatically connecting to trusted bluetooth devices.
|
|
||||||
|
|
||||||
echo "Connect to Speaker ${name}"
|
|
||||||
|
|
||||||
bluetoothctl <<EOF
|
|
||||||
power on
|
|
||||||
agent on
|
|
||||||
scan on
|
|
||||||
connect ${id}
|
|
||||||
EOF
|
|
||||||
'';
|
|
||||||
|
|
||||||
disconnectToSpeaker = name: id:
|
|
||||||
pkgs.writeShellScriptBin "disconnect-from-speaker-${name}" # sh
|
|
||||||
''
|
|
||||||
# hacky script because I have problems with
|
|
||||||
# automatically connecting to trusted bluetooth devices.
|
|
||||||
|
|
||||||
echo "Disconnect from Speaker ${name}"
|
|
||||||
|
|
||||||
bluetoothctl <<EOF
|
|
||||||
disconnect ${id}
|
|
||||||
scan off
|
|
||||||
agent off
|
|
||||||
power off
|
|
||||||
EOF
|
|
||||||
'';
|
|
||||||
|
|
||||||
borrow = pkgs.writers.writeDashBin "borrow" # sh
|
|
||||||
''
|
|
||||||
TERM=xterm-mono ${pkgs.hledger-ui}/bin/hledger-ui --file ~/finance/.hledger-borrow "$@"
|
|
||||||
'';
|
|
||||||
|
|
||||||
bank-report = pkgs.writers.writeDashBin "bank-report" # sh
|
|
||||||
''
|
|
||||||
${pkgs.hledger}/bin/hledger --file ~/finance/hledger/all.journal balance -M -B date:$(date +%Y-%m -d 'last year')..
|
|
||||||
${pkgs.hledger}/bin/hledger --file ~/finance/hledger/all.journal balance -M -B date:$(date +%Y-%m -d 'last year').. --depth 1
|
|
||||||
'';
|
|
||||||
|
|
||||||
bank = pkgs.writers.writeDashBin "bank" # sh
|
|
||||||
''
|
|
||||||
${pkgs.hledger-ui}/bin/hledger-ui --color=never --file ~/finance/hledger/all.journal
|
|
||||||
'';
|
|
||||||
|
|
||||||
bank-old = year:
|
|
||||||
pkgs.writers.writeDashBin "bank-${year}" # sh
|
|
||||||
''
|
|
||||||
TERM=xterm-mono ${pkgs.hledger-ui}/bin/hledger-ui --color=never --file ~/finance/hledger/${year}.journal "$@"
|
|
||||||
'';
|
|
||||||
|
|
||||||
irc = pkgs.writers.writeDashBin "irc" # sh
|
|
||||||
''
|
|
||||||
${pkgs.mosh}/bin/mosh workhorse.private -- sudo -u weechat -- screen -rd
|
|
||||||
'';
|
|
||||||
|
|
||||||
insertCopyq = pkgs.writers.writeDashBin "insertCopyq" # sh
|
|
||||||
''
|
|
||||||
${pkgs.copyq}/bin/copyq read 0 | ${pkgs.xdotool}/bin/xdotool type -f -
|
|
||||||
'';
|
|
||||||
|
|
||||||
isoToUtf8 = pkgs.writers.writeBashBin "iso-to-utf8" ''
|
|
||||||
input="$1"
|
|
||||||
TMP=$(mktemp)
|
|
||||||
|
|
||||||
${pkgs.glibc.bin}/bin/iconv -f ISO-8859-1 "$input" -t UTF-8 -o "$TMP"
|
|
||||||
mv "$TMP" "$input"
|
|
||||||
'';
|
|
||||||
|
|
||||||
in
|
|
||||||
{
|
|
||||||
|
|
||||||
# gnupg setup
|
|
||||||
#programs.gnupg.agent.enable = true;
|
|
||||||
#programs.gnupg.agent.enableSSHSupport = true;
|
|
||||||
#programs.gnupg.agent.enableExtraSocket = true;
|
|
||||||
|
|
||||||
environment.systemPackages = with pkgs;
|
|
||||||
[
|
|
||||||
|
|
||||||
uget
|
|
||||||
joplin
|
|
||||||
(library.desktopFile joplin { longName = "Joplin"; })
|
|
||||||
zim
|
|
||||||
|
|
||||||
#antimony
|
|
||||||
#(library.desktopFile antimony { longName = "CAD Software"; command = "antimony"; })
|
|
||||||
parted
|
|
||||||
|
|
||||||
insertCopyq
|
|
||||||
(library.desktopFile insertCopyq {
|
|
||||||
longName = "type what is on top of the copyq";
|
|
||||||
command = "insertCopyq";
|
|
||||||
})
|
|
||||||
|
|
||||||
isoToUtf8
|
|
||||||
hledger
|
|
||||||
hledger-ui
|
|
||||||
|
|
||||||
borrow
|
|
||||||
bank
|
|
||||||
bank-report
|
|
||||||
(bank-old "2021")
|
|
||||||
(bank-old "2020")
|
|
||||||
|
|
||||||
irc
|
|
||||||
|
|
||||||
man-pages
|
|
||||||
|
|
||||||
emo
|
|
||||||
(library.desktopFile emo {
|
|
||||||
longName = "Emoji Inserter";
|
|
||||||
command = "emoticons";
|
|
||||||
})
|
|
||||||
|
|
||||||
bat
|
|
||||||
|
|
||||||
zlib # ???
|
|
||||||
cabal-install
|
|
||||||
ghc
|
|
||||||
cabal2nix
|
|
||||||
|
|
||||||
psmisc # contains killall
|
|
||||||
pmount
|
|
||||||
nix-prefetch-scripts
|
|
||||||
ipcalc
|
|
||||||
nmap
|
|
||||||
|
|
||||||
libreoffice
|
|
||||||
hunspell
|
|
||||||
hunspellDicts.de-de
|
|
||||||
hunspellDicts.en-us
|
|
||||||
aspell
|
|
||||||
aspellDicts.de
|
|
||||||
aspellDicts.en
|
|
||||||
aspellDicts.es
|
|
||||||
translate-shell
|
|
||||||
|
|
||||||
borgbackup
|
|
||||||
gpa
|
|
||||||
gnupg
|
|
||||||
|
|
||||||
sshuttle
|
|
||||||
sshfs
|
|
||||||
mosh
|
|
||||||
|
|
||||||
dosfstools
|
|
||||||
copyq
|
|
||||||
|
|
||||||
# radio-dj
|
|
||||||
|
|
||||||
cups
|
|
||||||
xfe # filemanager
|
|
||||||
evince
|
|
||||||
nsxiv
|
|
||||||
(library.desktopFile sxiv {
|
|
||||||
longName = "Image Viewer";
|
|
||||||
command = "sxiv";
|
|
||||||
})
|
|
||||||
|
|
||||||
calibre
|
|
||||||
|
|
||||||
transmission-remote-gtk
|
|
||||||
mpv
|
|
||||||
# cantata
|
|
||||||
ncmpcpp
|
|
||||||
|
|
||||||
# dino # jabber client
|
|
||||||
|
|
||||||
nixos-generators
|
|
||||||
shellcheck
|
|
||||||
|
|
||||||
bind.dnsutils
|
|
||||||
usbutils
|
|
||||||
|
|
||||||
hexyl
|
|
||||||
testssl
|
|
||||||
|
|
||||||
trash-cli
|
|
||||||
|
|
||||||
nixpkgs-review
|
|
||||||
units
|
|
||||||
|
|
||||||
hub # for github
|
|
||||||
|
|
||||||
(writeShellScriptBin "ingdiba-security" ''
|
|
||||||
first=$1
|
|
||||||
second=$2
|
|
||||||
|
|
||||||
if [[ $# -ne 2 ]]
|
|
||||||
then
|
|
||||||
echo "need 2 arguments"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
pass bank/ingdiba/security_key | cut -c$first,$second
|
|
||||||
'')
|
|
||||||
|
|
||||||
(writeShellScriptBin "ingdiba-tans" ''
|
|
||||||
first=$1
|
|
||||||
|
|
||||||
if [[ $# -ne 1 ]]
|
|
||||||
then
|
|
||||||
echo "need 1 arguments"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
pass bank/ingdiba/tans-01 | cut -f$first -d '
|
|
||||||
'
|
|
||||||
'')
|
|
||||||
|
|
||||||
nix-index
|
|
||||||
|
|
||||||
ffmpeg
|
|
||||||
(writeShellScriptBin "shrink-exports"
|
|
||||||
(fileContents ../../assets/shrink_exports))
|
|
||||||
(writeShellScriptBin "music-making"
|
|
||||||
(fileContents ../../assets/music-making.sh))
|
|
||||||
|
|
||||||
replaceLinks
|
|
||||||
youtube-dl
|
|
||||||
|
|
||||||
# temperature
|
|
||||||
s-tui
|
|
||||||
(pkgs.writers.writeDashBin "temperature" ''
|
|
||||||
${pkgs.s-tui}/bin/s-tui
|
|
||||||
'')
|
|
||||||
powertop
|
|
||||||
|
|
||||||
(pkgs.writers.writeBashBin "youtube-download-music" ''
|
|
||||||
${pkgs.youtube-dl}/bin/youtube-dl \
|
|
||||||
--extract-audio \
|
|
||||||
--audio-format vorbis \
|
|
||||||
--audio-quality 0 \
|
|
||||||
"$@"
|
|
||||||
'')
|
|
||||||
|
|
||||||
allLicenses
|
|
||||||
|
|
||||||
dogdns
|
|
||||||
|
|
||||||
memo
|
|
||||||
nixfmt
|
|
||||||
dateutils
|
|
||||||
parseUrl
|
|
||||||
parseAndCopyLink
|
|
||||||
|
|
||||||
# needed for pycairo (in venv)
|
|
||||||
pkgconf
|
|
||||||
cairo
|
|
||||||
|
|
||||||
wireshark
|
|
||||||
|
|
||||||
];
|
|
||||||
}
|
|
|
@ -1,11 +0,0 @@
|
||||||
{ config, lib, pkgs, ... }: {
|
|
||||||
programs.custom.zsh.mainUser = config.users.users.mainUser.name;
|
|
||||||
|
|
||||||
system.custom.mainUser = {
|
|
||||||
enable = true;
|
|
||||||
userName = lib.mkDefault "palo";
|
|
||||||
authorizedKeyFiles =
|
|
||||||
config.users.users.root.openssh.authorizedKeys.keyFiles;
|
|
||||||
};
|
|
||||||
|
|
||||||
}
|
|
Loading…
Reference in a new issue