flake parts, migrated modules
This commit is contained in:
143
parts/core.nix
143
parts/core.nix
@@ -49,6 +49,149 @@ in
|
||||
|> builtins.attrNames
|
||||
|> map (file: baseNameOf file |> builtins.replaceStrings [ ".nix" ] [ "" ])
|
||||
|> builtins.filter (name: name != "emacs");
|
||||
autoImport =
|
||||
dir: filterFn:
|
||||
builtins.readDir dir
|
||||
|> builtins.attrNames
|
||||
|> builtins.filter (file: builtins.match ".*\\.nix" file != null && filterFn file)
|
||||
|> map (file: dir + "/${file}");
|
||||
mkServerOptions = name: subdomain: port: lib: {
|
||||
enable = lib.mkEnableOption "this server service";
|
||||
enableCron = lib.mkEnableOption "enable cronjob";
|
||||
enableProxy = lib.mkEnableOption "enable reverse proxy";
|
||||
port = lib.mkOption {
|
||||
type = lib.types.int;
|
||||
default = port;
|
||||
};
|
||||
name = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = name;
|
||||
};
|
||||
domain = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "servidos.lat";
|
||||
};
|
||||
host = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "${subdomain}.servidos.lat";
|
||||
};
|
||||
hostName = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "miniserver";
|
||||
};
|
||||
url = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "https://${subdomain}.servidos.lat";
|
||||
};
|
||||
ip = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "127.0.0.1";
|
||||
};
|
||||
local = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "http://127.0.0.1:${toString port}";
|
||||
};
|
||||
isLocal = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = true;
|
||||
};
|
||||
enableSocket = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = false;
|
||||
};
|
||||
certPath = lib.mkOption {
|
||||
type = lib.types.nullOr lib.types.path;
|
||||
default = null;
|
||||
};
|
||||
};
|
||||
proxy = locations: {
|
||||
inherit locations;
|
||||
forceSSL = true;
|
||||
enableACME = true;
|
||||
http2 = true;
|
||||
};
|
||||
proxyReverse =
|
||||
cfg:
|
||||
inputs.self.lib.proxy {
|
||||
"/" = {
|
||||
proxyPass = "http://${cfg.ip}:${toString cfg.port}/";
|
||||
proxyWebsockets = cfg.enableSocket or false;
|
||||
};
|
||||
};
|
||||
proxyReverseFix =
|
||||
cfg:
|
||||
let
|
||||
useLocalhost = cfg.hostName == cfg.hostName;
|
||||
localHeaders = ''
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
'';
|
||||
in
|
||||
inputs.self.lib.proxyReverse cfg
|
||||
// {
|
||||
extraConfig = ''
|
||||
${if useLocalhost then localHeaders else ""}
|
||||
proxy_set_header X-Forwarded-Host $host;
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection $http_connection;
|
||||
proxy_redirect off;
|
||||
proxy_http_version 1.1;
|
||||
'';
|
||||
};
|
||||
proxyReversePrivate =
|
||||
cfg:
|
||||
inputs.self.lib.proxyReverse cfg
|
||||
// {
|
||||
extraConfig = ''
|
||||
ssl_verify_client on;
|
||||
ssl_client_certificate ${cfg.certPath};
|
||||
error_page 403 /403.html;
|
||||
'';
|
||||
};
|
||||
commonAliases = {
|
||||
cp = "cp -i";
|
||||
mv = "mv -i";
|
||||
mkdir = "mkdir -p";
|
||||
mkcd = "(){ mkdir -p \"$1\" && cd \"$1\" }";
|
||||
copy = "xclip -selection clipboard";
|
||||
cdp = "pwd | copy";
|
||||
cfp = "(){ readlink -f \"$1\" | copy }";
|
||||
".." = "cd ..";
|
||||
"..." = "cd ../..";
|
||||
".3" = "cd ../../..";
|
||||
".4" = "cd ../../../..";
|
||||
".5" = "cd ../../../../..";
|
||||
c = "cat";
|
||||
sc = "systemctl --user";
|
||||
jc = "journalctl --user -xefu";
|
||||
};
|
||||
xdgEnvironment =
|
||||
let
|
||||
XDG_DATA_HOME = "\${HOME}/.local/share";
|
||||
XDG_CONFIG_HOME = "\${HOME}/.config";
|
||||
XDG_CACHE_HOME = "\${HOME}/.cache";
|
||||
in
|
||||
{
|
||||
inherit XDG_DATA_HOME XDG_CONFIG_HOME XDG_CACHE_HOME;
|
||||
XDG_BIN_HOME = "\${HOME}/.local/bin";
|
||||
XDG_STATE_HOME = "\${HOME}/.local/state";
|
||||
PSQL_HISTORY = "${XDG_DATA_HOME}/psql_history";
|
||||
REDISCLI_HISTFILE = "${XDG_DATA_HOME}/redis/rediscli_history";
|
||||
WINEPREFIX = "${XDG_DATA_HOME}/wine";
|
||||
ELECTRUMDIR = "${XDG_DATA_HOME}/electrum";
|
||||
WGETRC = "${XDG_CONFIG_HOME}/wgetrc";
|
||||
XCOMPOSECACHE = "${XDG_CACHE_HOME}/X11/xcompose";
|
||||
"_JAVA_OPTIONS" = "-Djava.util.prefs.userRoot=${XDG_CONFIG_HOME}/java";
|
||||
ORG_DEVICE = "workstation";
|
||||
PATH = [ "\${HOME}/.local/bin" ];
|
||||
};
|
||||
getNixosHosts =
|
||||
ips: hostName: lib:
|
||||
builtins.attrNames ips
|
||||
|> builtins.filter (
|
||||
name: !(lib.hasPrefix "wg-" name) && name != "vps" && name != "router" && name != hostName
|
||||
);
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user