Merge remote-tracking branch 'lass/master'
This commit is contained in:
commit
2313e962e2
@ -7,10 +7,11 @@
|
|||||||
|
|
||||||
<stockholm/krebs/2configs/buildbot-stockholm.nix>
|
<stockholm/krebs/2configs/buildbot-stockholm.nix>
|
||||||
<stockholm/krebs/2configs/binary-cache/nixos.nix>
|
<stockholm/krebs/2configs/binary-cache/nixos.nix>
|
||||||
<stockholm/krebs/2configs/ircd.nix>
|
<stockholm/krebs/2configs/ergo.nix>
|
||||||
<stockholm/krebs/2configs/reaktor2.nix>
|
<stockholm/krebs/2configs/reaktor2.nix>
|
||||||
<stockholm/krebs/2configs/wiki.nix>
|
<stockholm/krebs/2configs/wiki.nix>
|
||||||
<stockholm/krebs/2configs/acme.nix>
|
<stockholm/krebs/2configs/acme.nix>
|
||||||
|
<stockholm/krebs/2configs/mud.nix>
|
||||||
|
|
||||||
## shackie irc bot
|
## shackie irc bot
|
||||||
<stockholm/krebs/2configs/shack/reaktor.nix>
|
<stockholm/krebs/2configs/shack/reaktor.nix>
|
||||||
|
171
krebs/2configs/mud.nix
Normal file
171
krebs/2configs/mud.nix
Normal file
@ -0,0 +1,171 @@
|
|||||||
|
{ config, lib, pkgs, ... }: let
|
||||||
|
mud = pkgs.writers.writeDashBin "mud" ''
|
||||||
|
set -efux
|
||||||
|
MUD_NICKNAME=''${MUD_NICKNAME:-$(head -1 /dev/urandom | md5sum | cut -c -2)}
|
||||||
|
MUD_SERVER=''${MUD_SERVER:-127.0.0.1}
|
||||||
|
MUD_PORT=''${MUD_PORT:-8080}
|
||||||
|
|
||||||
|
if $(${pkgs.netcat-openbsd}/bin/nc -z "$MUD_SERVER" "$MUD_PORT"); then
|
||||||
|
${nvim}/bin/nvim \
|
||||||
|
+"let g:instant_username = \"$MUD_NICKNAME\"" \
|
||||||
|
+":InstantJoinSession $MUD_SERVER $MUD_PORT" \
|
||||||
|
"$@"
|
||||||
|
else
|
||||||
|
${nvim}/bin/nvim \
|
||||||
|
+"let g:instant_username = \"$MUD_NICKNAME\"" \
|
||||||
|
+":InstantStartServer $MUD_SERVER $MUD_PORT" \
|
||||||
|
+":InstantStartSession $MUD_SERVER $MUD_PORT" \
|
||||||
|
"$@"
|
||||||
|
fi
|
||||||
|
'';
|
||||||
|
nvim = pkgs.neovim.override {
|
||||||
|
# vimAlias = true;
|
||||||
|
configure = {
|
||||||
|
customRC = vimrc;
|
||||||
|
packages.myPlugins = with pkgs.vimPlugins; {
|
||||||
|
start = [
|
||||||
|
vim-surround # Shortcuts for setting () {} etc.
|
||||||
|
# coc-nvim coc-git coc-highlight coc-python coc-rls coc-vetur coc-vimtex coc-yaml coc-html coc-json # auto completion
|
||||||
|
vim-nix # nix highlight
|
||||||
|
fzf-vim # fuzzy finder through vim
|
||||||
|
nerdtree # file structure inside nvim
|
||||||
|
rainbow # Color parenthesis
|
||||||
|
customPlugins.hack-color
|
||||||
|
customPlugins.instant
|
||||||
|
];
|
||||||
|
opt = [];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
vimrc = /* vim */ ''
|
||||||
|
set nocompatible
|
||||||
|
|
||||||
|
set autoindent
|
||||||
|
set backspace=indent,eol,start
|
||||||
|
set backup
|
||||||
|
set backupdir=$HOME/.cache/nvim/backup/
|
||||||
|
set directory=$HOME/.cache/nvim/swap"//
|
||||||
|
set hlsearch
|
||||||
|
set incsearch
|
||||||
|
set mouse=a
|
||||||
|
set ruler
|
||||||
|
set pastetoggle=<INS>
|
||||||
|
set shortmess+=I
|
||||||
|
set showcmd
|
||||||
|
set showmatch
|
||||||
|
set ttimeoutlen=0
|
||||||
|
set undodir=$HOME/.cache/nvim/undo
|
||||||
|
set undofile
|
||||||
|
set undolevels=1000000
|
||||||
|
set undoreload=1000000
|
||||||
|
set viminfo='20,<1000,s100,h,n$HOME/.cache/nvim/info
|
||||||
|
set visualbell
|
||||||
|
set wildignore+=*.o,*.class,*.hi,*.dyn_hi,*.dyn_o
|
||||||
|
set wildmenu
|
||||||
|
set wildmode=longest,full
|
||||||
|
|
||||||
|
set title
|
||||||
|
set titleold=
|
||||||
|
set titlestring=(vim)\ %t%(\ %M%)%(\ (%{expand(\"%:p:h\")})%)%(\ %a%)\ -\ %{v:servername}
|
||||||
|
|
||||||
|
set et ts=2 sts=2 sw=2
|
||||||
|
|
||||||
|
filetype plugin indent on
|
||||||
|
|
||||||
|
set t_Co=256
|
||||||
|
colorscheme hack
|
||||||
|
syntax on
|
||||||
|
|
||||||
|
au Syntax * syn match Garbage containedin=ALL /\s\+$/
|
||||||
|
\ | syn match TabStop containedin=ALL /\t\+/
|
||||||
|
\ | syn keyword Todo containedin=ALL TODO
|
||||||
|
|
||||||
|
au BufRead,BufNewFile /dev/shm/* set nobackup nowritebackup noswapfile
|
||||||
|
|
||||||
|
nmap <esc>q :buffer
|
||||||
|
nmap <M-q> :buffer
|
||||||
|
|
||||||
|
cnoremap <C-A> <Home>
|
||||||
|
|
||||||
|
noremap <C-c> :q<cr>
|
||||||
|
vnoremap < <gv
|
||||||
|
vnoremap > >gv
|
||||||
|
|
||||||
|
nnoremap <f1> :tabp<cr>
|
||||||
|
nnoremap <f2> :tabn<cr>
|
||||||
|
inoremap <f1> <esc>:tabp<cr>
|
||||||
|
inoremap <f2> <esc>:tabn<cr>
|
||||||
|
'';
|
||||||
|
customPlugins = {
|
||||||
|
instant = pkgs.vimUtils.buildVimPlugin {
|
||||||
|
name = "instant";
|
||||||
|
src = pkgs.fetchFromGitHub {
|
||||||
|
owner = "jbyuki";
|
||||||
|
repo = "instant.nvim";
|
||||||
|
rev = "c02d72267b12130609b7ad39b76cf7f4a3bc9554";
|
||||||
|
sha256 = "sha256-7Pr2Au/oGKp5kMXuLsQY4BK5Wny9L1EBdXtyS5EaZPI=";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
hack-color = (rtp: rtp // { inherit rtp; }) (pkgs.writeTextFile (let
|
||||||
|
name = "hack";
|
||||||
|
in {
|
||||||
|
name = "vim-color-${name}-1.0.2";
|
||||||
|
destination = "/colors/${name}.vim";
|
||||||
|
text = /* vim */ ''
|
||||||
|
set background=dark
|
||||||
|
hi clear
|
||||||
|
if exists("syntax_on")
|
||||||
|
syntax clear
|
||||||
|
endif
|
||||||
|
|
||||||
|
let colors_name = ${builtins.toJSON name}
|
||||||
|
|
||||||
|
hi Normal ctermbg=016
|
||||||
|
hi Comment ctermfg=255
|
||||||
|
hi Constant ctermfg=229
|
||||||
|
hi Identifier ctermfg=123
|
||||||
|
hi Function ctermfg=041
|
||||||
|
hi Statement ctermfg=167
|
||||||
|
hi PreProc ctermfg=167
|
||||||
|
hi Type ctermfg=046
|
||||||
|
hi Delimiter ctermfg=251
|
||||||
|
hi Special ctermfg=146
|
||||||
|
|
||||||
|
hi Garbage ctermbg=124
|
||||||
|
hi TabStop ctermbg=020
|
||||||
|
hi NBSP ctermbg=056
|
||||||
|
hi NarrowNBSP ctermbg=097
|
||||||
|
hi Todo ctermfg=174 ctermbg=NONE
|
||||||
|
|
||||||
|
hi NixCode ctermfg=190
|
||||||
|
hi NixData ctermfg=149
|
||||||
|
hi NixQuote ctermfg=119
|
||||||
|
|
||||||
|
hi diffNewFile ctermfg=207
|
||||||
|
hi diffFile ctermfg=207
|
||||||
|
hi diffLine ctermfg=207
|
||||||
|
hi diffSubname ctermfg=207
|
||||||
|
hi diffAdded ctermfg=010
|
||||||
|
hi diffRemoved ctermfg=009
|
||||||
|
'';
|
||||||
|
}));
|
||||||
|
};
|
||||||
|
in {
|
||||||
|
users.users.mud = {
|
||||||
|
isNormalUser = true;
|
||||||
|
openssh.authorizedKeys.keys = with config.krebs.users; [
|
||||||
|
lass.pubkey
|
||||||
|
makefu.pubkey
|
||||||
|
kmein.pubkey
|
||||||
|
tv.pubkey
|
||||||
|
];
|
||||||
|
packages = with pkgs; [
|
||||||
|
tmux
|
||||||
|
(pkgs.writers.writeDashBin "instant_server" ''
|
||||||
|
find ${customPlugins.instant}
|
||||||
|
find ${customPlugins.instant.src}
|
||||||
|
'')
|
||||||
|
mud
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
@ -6,6 +6,7 @@
|
|||||||
type = (pkgs.formats.json {}).type;
|
type = (pkgs.formats.json {}).type;
|
||||||
description = ''
|
description = ''
|
||||||
Ergo IRC daemon configuration file.
|
Ergo IRC daemon configuration file.
|
||||||
|
https://raw.githubusercontent.com/ergochat/ergo/master/default.yaml
|
||||||
'';
|
'';
|
||||||
default = {
|
default = {
|
||||||
network = {
|
network = {
|
||||||
@ -34,19 +35,34 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
datastore = {
|
datastore = {
|
||||||
|
autoupgrade = true;
|
||||||
path = "/var/lib/ergo/ircd.db";
|
path = "/var/lib/ergo/ircd.db";
|
||||||
};
|
};
|
||||||
accounts = {
|
accounts = {
|
||||||
authentication-enabled = true;
|
authentication-enabled = true;
|
||||||
registration = {
|
registration = {
|
||||||
enabled = true;
|
enabled = true;
|
||||||
email-verification = {
|
allow-before-connect = true;
|
||||||
enabled = false;
|
throttling = {
|
||||||
|
enabled = true;
|
||||||
|
duration = "10m";
|
||||||
|
max-attempts = 30;
|
||||||
};
|
};
|
||||||
|
bcrypt-cost = 4;
|
||||||
|
email-verification.enabled = false;
|
||||||
|
};
|
||||||
|
multiclient = {
|
||||||
|
enabled = true;
|
||||||
|
allowed-by-default = true;
|
||||||
|
always-on = "opt-in";
|
||||||
|
auto-away = "opt-in";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
channels = {
|
channels = {
|
||||||
default-modes = "+nt";
|
default-modes = "+ntC";
|
||||||
|
registration = {
|
||||||
|
enabled = true;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
limits = {
|
limits = {
|
||||||
nicklen = 32;
|
nicklen = 32;
|
||||||
@ -56,6 +72,31 @@
|
|||||||
kicklen = 390;
|
kicklen = 390;
|
||||||
topiclen = 390;
|
topiclen = 390;
|
||||||
};
|
};
|
||||||
|
history = {
|
||||||
|
enabled = true;
|
||||||
|
channel-length = 2048;
|
||||||
|
client-length = 256;
|
||||||
|
autoresize-window = "3d";
|
||||||
|
autoreplay-on-join = 0;
|
||||||
|
chathistory-maxmessages = 100;
|
||||||
|
znc-maxmessages = 2048;
|
||||||
|
restrictions = {
|
||||||
|
expire-time = "1w";
|
||||||
|
query-cutoff = "none";
|
||||||
|
grace-period = "1h";
|
||||||
|
};
|
||||||
|
retention = {
|
||||||
|
allow-individual-delete = false;
|
||||||
|
enable-account-indexing = false;
|
||||||
|
};
|
||||||
|
tagmsg-storage = {
|
||||||
|
default = false;
|
||||||
|
whitelist = [
|
||||||
|
"+draft/react"
|
||||||
|
"+react"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@ -64,13 +105,17 @@
|
|||||||
cfg = config.krebs.ergo;
|
cfg = config.krebs.ergo;
|
||||||
configFile = pkgs.writeJSON "ergo.conf" cfg.config;
|
configFile = pkgs.writeJSON "ergo.conf" cfg.config;
|
||||||
in lib.mkIf cfg.enable ({
|
in lib.mkIf cfg.enable ({
|
||||||
|
environment.etc."ergo.yaml".source = configFile;
|
||||||
krebs.ergo.config =
|
krebs.ergo.config =
|
||||||
lib.mapAttrsRecursive (_: lib.mkDefault) options.krebs.ergo.config.default;
|
lib.mapAttrsRecursive (_: lib.mkDefault) options.krebs.ergo.config.default;
|
||||||
systemd.services.ergo = {
|
systemd.services.ergo = {
|
||||||
description = "Ergo IRC daemon";
|
description = "Ergo IRC daemon";
|
||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
reloadIfChanged = true;
|
||||||
|
restartTriggers = [ configFile ];
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
ExecStart = "${pkgs.ergo}/bin/ergo run --conf ${configFile}";
|
ExecStart = "${pkgs.ergo}/bin/ergo run --conf /etc/ergo.yaml";
|
||||||
|
ExecReload = "${pkgs.util-linux}/bin/kill -HUP $MAINPID";
|
||||||
DynamicUser = true;
|
DynamicUser = true;
|
||||||
StateDirectory = "ergo";
|
StateDirectory = "ergo";
|
||||||
};
|
};
|
||||||
|
4
krebs/3modules/external/default.nix
vendored
4
krebs/3modules/external/default.nix
vendored
@ -253,12 +253,12 @@ in {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
pinpox-ahorn = {
|
ahorn = {
|
||||||
owner = config.krebs.users.pinpox;
|
owner = config.krebs.users.pinpox;
|
||||||
nets = {
|
nets = {
|
||||||
retiolum = {
|
retiolum = {
|
||||||
ip4.addr = "10.243.100.100";
|
ip4.addr = "10.243.100.100";
|
||||||
aliases = [ "pinpox-ahorn.r" ];
|
aliases = [ "ahorn.r" ];
|
||||||
tinc.pubkey = ''
|
tinc.pubkey = ''
|
||||||
-----BEGIN RSA PUBLIC KEY-----
|
-----BEGIN RSA PUBLIC KEY-----
|
||||||
MIICCgKCAgEAyfCuWUYEqp4vEt+a6DRvFpIrBu+GlkpNs/mE4OHzATQLNnWooOXQ
|
MIICCgKCAgEAyfCuWUYEqp4vEt+a6DRvFpIrBu+GlkpNs/mE4OHzATQLNnWooOXQ
|
||||||
|
8
krebs/3modules/external/mic92.nix
vendored
8
krebs/3modules/external/mic92.nix
vendored
@ -173,7 +173,7 @@ in {
|
|||||||
};
|
};
|
||||||
retiolum = {
|
retiolum = {
|
||||||
via = internet;
|
via = internet;
|
||||||
aliases = [ "eve.r" ];
|
aliases = [ "eve.r" "tts.r" ];
|
||||||
tinc.pubkey = ''
|
tinc.pubkey = ''
|
||||||
-----BEGIN RSA PUBLIC KEY-----
|
-----BEGIN RSA PUBLIC KEY-----
|
||||||
MIICCgKCAgEAw5cxGjnWCG8dcuhTddvGHzH0/VjxHA5V8qJXH2R5k8ki8dsM5FRH
|
MIICCgKCAgEAw5cxGjnWCG8dcuhTddvGHzH0/VjxHA5V8qJXH2R5k8ki8dsM5FRH
|
||||||
@ -300,6 +300,11 @@ in {
|
|||||||
};
|
};
|
||||||
yasmin = {
|
yasmin = {
|
||||||
owner = config.krebs.users.mic92;
|
owner = config.krebs.users.mic92;
|
||||||
|
nets.internet = {
|
||||||
|
ip4.addr = "131.159.102.7";
|
||||||
|
ip6.addr = "2a09:80c0:102::7";
|
||||||
|
aliases = [ "yasmin.i" ];
|
||||||
|
};
|
||||||
nets.retiolum = {
|
nets.retiolum = {
|
||||||
ip4.addr = "10.243.29.197";
|
ip4.addr = "10.243.29.197";
|
||||||
aliases = [
|
aliases = [
|
||||||
@ -674,7 +679,6 @@ in {
|
|||||||
owner = config.krebs.users.mic92;
|
owner = config.krebs.users.mic92;
|
||||||
nets = rec {
|
nets = rec {
|
||||||
retiolum = {
|
retiolum = {
|
||||||
ip4.addr = "10.243.29.169";
|
|
||||||
aliases = [ "bernie.r" ];
|
aliases = [ "bernie.r" ];
|
||||||
tinc.pubkey = ''
|
tinc.pubkey = ''
|
||||||
-----BEGIN RSA PUBLIC KEY-----
|
-----BEGIN RSA PUBLIC KEY-----
|
||||||
|
3
krebs/3modules/external/ssh/kmein.pub
vendored
3
krebs/3modules/external/ssh/kmein.pub
vendored
@ -1 +1,2 @@
|
|||||||
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC19H0FhSNWcfBRPKzbTVSMJikIWZl0CoM8zCm+/3fdMgoaLRpeZWe/AfDK6b4qOjk/sez/J0JUFCGr+JbMwjsduoazsuQowu9L9DLP9Q5UkJje4BD7MHznaeu9/XfVng/MvyaEWArA/VUJeKQesHe76tR511/+n3+bdzlIh8Zw/3wfFxmg1OTNA99/vLkXrQzHDTuV/yj1pxykL4xFtN0OIssW1IKncJeKtkO/OHGT55ypz52Daj6bNKqvxiTuzeEhv5M+5ppyIPcRf1uj/7IaPKttCgZAntEqBTIR9MbyXFeAZVayzaFnLl2okeam5XreeZbj+Y1h2ZjxiIuWoab3MLndSekVfLtfa63gtcWIf8CIvZO2wJoH8v73y0U78JsfWVaTM09ZCfFlHHA/bWqZ6laAjW+mWLO/c77DcYkB3IBzaMVNfc6mfTcGFIC+biWeYpKgA0zC6rByUPbmbIoMueP9zqJwqUaM90Nwd6559inBB107/BK3Ktb3b+37mMCstetIPB9e4EFpGMjhmnL/G81jS53ACWLXJYzt7mKU/fEsiW93MtaB+Le46OEC18y/4G8F7p/nnH7i0kO74ukxbnc4PlpiM7iWT6ra2Cyy+nzEgdXCNXywIxr05TbCQDwX6/NY8k7Hokgdfyz+1Pq3sX0yCcWRPaoB26YF12KYFQ== kieran.meinhardt@gmail.com
|
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDyTnGhFq0Q+vghNhrqNrAyY+CsN7nNz8bPfiwIwNpjk
|
||||||
|
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOiQEc8rTr7C7xVLYV7tQ99BDDBLrJsy5hslxtCEatkB
|
||||||
|
@ -92,6 +92,7 @@ in {
|
|||||||
h5ZUzfd1r1pTzQ0nYD5aRtlDd7zP7y5tUwIDAQAB
|
h5ZUzfd1r1pTzQ0nYD5aRtlDd7zP7y5tUwIDAQAB
|
||||||
-----END RSA PUBLIC KEY-----
|
-----END RSA PUBLIC KEY-----
|
||||||
'';
|
'';
|
||||||
|
tinc.pubkey_ed25519 = "ugy/sGReVro3YzjDuroV/5hdeBdqD18no9dMhTy9DYL";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
ssh.privkey.path = <secrets/ssh.id_ed25519>;
|
ssh.privkey.path = <secrets/ssh.id_ed25519>;
|
||||||
|
@ -5,18 +5,18 @@
|
|||||||
default = {};
|
default = {};
|
||||||
type = lib.types.attrsOf (lib.types.submodule {
|
type = lib.types.attrsOf (lib.types.submodule {
|
||||||
options = {
|
options = {
|
||||||
ifCredentialsChange = lib.mkOption {
|
restartIfCredentialsChange = lib.mkOption {
|
||||||
default = "restart";
|
# Enabling this by default only makes sense here as the user already
|
||||||
|
# bothered to write down krebs.systemd.services.* = {}. If this
|
||||||
|
# functionality gets upstreamed to systemd.services, restarting
|
||||||
|
# should be disabled by default.
|
||||||
|
default = true;
|
||||||
description = ''
|
description = ''
|
||||||
Whether to reload or restart the service whenever any its
|
Whether to restart the service whenever any of its credentials
|
||||||
credentials change. Only credentials with an absolute path in
|
change. Only credentials with an absolute path in LoadCredential=
|
||||||
LoadCredential= are supported.
|
are supported.
|
||||||
'';
|
'';
|
||||||
type = lib.types.enum [
|
type = lib.types.bool;
|
||||||
"reload"
|
|
||||||
"restart"
|
|
||||||
null
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
@ -40,7 +40,7 @@
|
|||||||
lib.nameValuePair "trigger-${lib.systemd.encodeName serviceName}" {
|
lib.nameValuePair "trigger-${lib.systemd.encodeName serviceName}" {
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
Type = "oneshot";
|
Type = "oneshot";
|
||||||
ExecStart = "${pkgs.systemd}/bin/systemctl ${cfg.ifCredentialsChange} ${lib.shell.escape serviceName}";
|
ExecStart = "${pkgs.systemd}/bin/systemctl restart ${lib.shell.escape serviceName}";
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
) config.krebs.systemd.services;
|
) config.krebs.systemd.services;
|
||||||
|
@ -222,12 +222,6 @@ with import <stockholm/lib>;
|
|||||||
nameValuePair netname {}
|
nameValuePair netname {}
|
||||||
) config.krebs.tinc;
|
) config.krebs.tinc;
|
||||||
|
|
||||||
environment.etc = mapAttrs' (netname: cfg:
|
|
||||||
nameValuePair "tinc/${netname}" {
|
|
||||||
source = cfg.confDir;
|
|
||||||
}
|
|
||||||
) config.krebs.tinc;
|
|
||||||
|
|
||||||
krebs.systemd.services = mapAttrs (netname: cfg: {
|
krebs.systemd.services = mapAttrs (netname: cfg: {
|
||||||
}) config.krebs.tinc;
|
}) config.krebs.tinc;
|
||||||
|
|
||||||
@ -239,8 +233,6 @@ with import <stockholm/lib>;
|
|||||||
cfg.iproutePackage
|
cfg.iproutePackage
|
||||||
cfg.tincPackage
|
cfg.tincPackage
|
||||||
];
|
];
|
||||||
reloadIfChanged = true;
|
|
||||||
restartTriggers = [ cfg.confDir ];
|
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
Restart = "always";
|
Restart = "always";
|
||||||
LoadCredential = filter (x: x != "") [
|
LoadCredential = filter (x: x != "") [
|
||||||
@ -249,6 +241,13 @@ with import <stockholm/lib>;
|
|||||||
)
|
)
|
||||||
"rsa_key:${cfg.privkey}"
|
"rsa_key:${cfg.privkey}"
|
||||||
];
|
];
|
||||||
|
ExecStartPre = pkgs.writers.writeDash "init-tinc-${netname}" ''
|
||||||
|
${pkgs.coreutils}/bin/mkdir -p /etc/tinc
|
||||||
|
${pkgs.rsync}/bin/rsync -vaL --delete \
|
||||||
|
--chown ${cfg.user.name} \
|
||||||
|
--chmod u=rwX,g=rX \
|
||||||
|
${cfg.confDir}/ /etc/tinc/${netname}/
|
||||||
|
'';
|
||||||
ExecStart = toString [
|
ExecStart = toString [
|
||||||
"${cfg.tincPackage}/sbin/tincd"
|
"${cfg.tincPackage}/sbin/tincd"
|
||||||
"-D"
|
"-D"
|
||||||
|
@ -2,12 +2,12 @@
|
|||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "ircaids";
|
pname = "ircaids";
|
||||||
version = "1.2.0";
|
version = "1.3.0";
|
||||||
|
|
||||||
src = pkgs.fetchgit {
|
src = pkgs.fetchgit {
|
||||||
url = "https://cgit.krebsco.de/ircaids";
|
url = "https://cgit.krebsco.de/ircaids";
|
||||||
rev = "refs/tags/${version}";
|
rev = "refs/tags/${version}";
|
||||||
sha256 = "049ln54llfrn99q0pzwlb7iaz4igd4f3n4rb6mpc9irsy32bv3qg";
|
sha256 = "128ryfl0prpc1789hhqw2mq16zy3jd82a24k6hkw7nj71hifzr3a";
|
||||||
};
|
};
|
||||||
|
|
||||||
buildPhase = null;
|
buildPhase = null;
|
||||||
|
153
krebs/5pkgs/simple/weechat-declarative/default.nix
Normal file
153
krebs/5pkgs/simple/weechat-declarative/default.nix
Normal file
@ -0,0 +1,153 @@
|
|||||||
|
{ pkgs, lib, ... }@args:
|
||||||
|
|
||||||
|
let
|
||||||
|
# config cannot be declared in the input attribute set because that would
|
||||||
|
# cause callPackage to inject the wrong config. Instead, get it from ...
|
||||||
|
# via args.
|
||||||
|
config = args.config or {};
|
||||||
|
|
||||||
|
lib = args.lib // rec {
|
||||||
|
attrPaths = let
|
||||||
|
recurse = path: value:
|
||||||
|
if builtins.isAttrs value then
|
||||||
|
lib.mapAttrsToList (name: recurse (path ++ [ name ])) value
|
||||||
|
else [ (lib.nameValuePair path value) ];
|
||||||
|
in attrs: lib.flatten (recurse [] attrs);
|
||||||
|
|
||||||
|
attrPathsSep = sep: attrs: lib.listToAttrs (map (x: x // { name = lib.concatStringsSep sep x.name; }) (attrPaths attrs));
|
||||||
|
|
||||||
|
toWeechatValue = x: {
|
||||||
|
bool = builtins.toJSON x;
|
||||||
|
string = x;
|
||||||
|
list = lib.concatMapStringsSep "," toWeechatValue x;
|
||||||
|
int = toString x;
|
||||||
|
}.${builtins.typeOf x};
|
||||||
|
|
||||||
|
setCommand = name: value: "/set ${name} \"${toWeechatValue value}\"";
|
||||||
|
|
||||||
|
filterAddreplace = name: filter:
|
||||||
|
"/filter addreplace ${name} ${filter.buffer} ${toWeechatValue filter.tags} ${filter.regex}";
|
||||||
|
};
|
||||||
|
|
||||||
|
cfg = eval.config;
|
||||||
|
|
||||||
|
eval = lib.evalModules {
|
||||||
|
modules = lib.singleton {
|
||||||
|
_file = toString ./weechat-declarative.nix;
|
||||||
|
imports = lib.singleton config;
|
||||||
|
options = {
|
||||||
|
scripts = lib.mkOption {
|
||||||
|
type = lib.types.listOf lib.types.package;
|
||||||
|
default = [];
|
||||||
|
description = ''
|
||||||
|
some stuff from pkgs.weechatScripts
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
settings = lib.mkOption {
|
||||||
|
type = (pkgs.formats.json {}).type;
|
||||||
|
description = ''
|
||||||
|
your weechat config in nix-style syntax.
|
||||||
|
secrets can be defined with \''${my.secret.value}
|
||||||
|
'';
|
||||||
|
default = {};
|
||||||
|
example = {
|
||||||
|
irc.server_default.nicks = "rick_\\\${sec.data.foo}";
|
||||||
|
irc.server_default.msg_part = "ciao kakao";
|
||||||
|
irc.server_default.msg_quit = "tschö mit \\\${sec.data.foo}";
|
||||||
|
irc.look.color_nicks_in_nicklist = true;
|
||||||
|
matrix.server.nibbana = {
|
||||||
|
address = "nibbana.jp";
|
||||||
|
};
|
||||||
|
irc.server.hackint = {
|
||||||
|
address = "irc.hackint.org/6697";
|
||||||
|
ssl = true;
|
||||||
|
autoconnect = true;
|
||||||
|
autojoin = [ "#krebs" ];
|
||||||
|
};
|
||||||
|
weechat.bar.buflist.hidden = true;
|
||||||
|
irc.server.hackint.command = lib.concatStringsSep "\\;" [
|
||||||
|
"/msg nickserv IDENTIFY \\\${sec.data.hackint_password}"
|
||||||
|
"/msg nickserv SET CLOAK ON"
|
||||||
|
];
|
||||||
|
filters.playlist_topic = {
|
||||||
|
buffer = "irc.*.#the_playlist";
|
||||||
|
tags = [ "irc_topic" ];
|
||||||
|
regex = "*";
|
||||||
|
};
|
||||||
|
relay = {
|
||||||
|
port.weechat = 9000;
|
||||||
|
network.password = "hunter2";
|
||||||
|
};
|
||||||
|
alias.cmd.mod = "quote omode $channel +o $nick";
|
||||||
|
secure.test.passphrase_command = "echo lol1234123124";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
extraCommands = lib.mkOption {
|
||||||
|
type = lib.types.lines;
|
||||||
|
default = "";
|
||||||
|
};
|
||||||
|
files = lib.mkOption {
|
||||||
|
type = lib.types.attrsOf lib.types.str;
|
||||||
|
default = {};
|
||||||
|
example = lib.literalExpression ''
|
||||||
|
{
|
||||||
|
"sec.conf" = toString (pkgs.writeText "sec.conf" '''
|
||||||
|
[crypt]
|
||||||
|
cipher = aes256
|
||||||
|
hash_algo = sha256
|
||||||
|
passphrase_command = ""
|
||||||
|
salt = on
|
||||||
|
|
||||||
|
[data]
|
||||||
|
__passphrase__ = off
|
||||||
|
foo = "bar"
|
||||||
|
''');
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
weechat = pkgs.weechat.override {
|
||||||
|
configure = _: {
|
||||||
|
init = lib.optionalString (cfg.settings != {})
|
||||||
|
(lib.concatStringsSep "\n" (
|
||||||
|
lib.optionals
|
||||||
|
(cfg.settings.irc or {} != {})
|
||||||
|
(lib.mapAttrsToList
|
||||||
|
(name: server: "/server add ${name} ${server.address}")
|
||||||
|
cfg.settings.irc.server)
|
||||||
|
++
|
||||||
|
lib.optionals
|
||||||
|
(cfg.settings.matrix or {} != {})
|
||||||
|
(lib.mapAttrsToList
|
||||||
|
(name: server: "/matrix server add ${name} ${server.address}")
|
||||||
|
cfg.settings.matrix.server)
|
||||||
|
++
|
||||||
|
lib.mapAttrsToList lib.setCommand (lib.attrPathsSep "." cfg.settings)
|
||||||
|
++
|
||||||
|
lib.optionals
|
||||||
|
(cfg.settings.filters or {} != {})
|
||||||
|
(lib.mapAttrsToList lib.filterAddreplace cfg.settings.filters)
|
||||||
|
++
|
||||||
|
lib.singleton cfg.extraCommands
|
||||||
|
));
|
||||||
|
|
||||||
|
scripts = cfg.scripts;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
in pkgs.writers.writeDashBin "weechat" ''
|
||||||
|
CONFDIR=''${XDG_CONFIG_HOME:-$HOME/.config}/weechat
|
||||||
|
${pkgs.coreutils}/bin/mkdir -p "$CONFDIR"
|
||||||
|
${lib.concatStringsSep "\n"
|
||||||
|
(lib.mapAttrsToList
|
||||||
|
(name: target: /* sh */ ''
|
||||||
|
${pkgs.coreutils}/bin/ln -s ${lib.escapeShellArg target} "$CONFDIR"/${lib.escapeShellArg name}
|
||||||
|
'')
|
||||||
|
cfg.files
|
||||||
|
)
|
||||||
|
}
|
||||||
|
exec ${weechat}/bin/weechat "$@"
|
||||||
|
''
|
@ -1,9 +1,9 @@
|
|||||||
{
|
{
|
||||||
"url": "https://github.com/NixOS/nixpkgs",
|
"url": "https://github.com/NixOS/nixpkgs",
|
||||||
"rev": "ac169ec6371f0d835542db654a65e0f2feb07838",
|
"rev": "59bfda72480496f32787cec8c557182738b1bd3f",
|
||||||
"date": "2021-12-26T18:43:05+01:00",
|
"date": "2021-12-31T15:09:52+01:00",
|
||||||
"path": "/nix/store/l1qmvpx4pj24ijsm44n64vw2fnl9dpc7-nixpkgs",
|
"path": "/nix/store/wy2iidg15nwgmn8xir8fbr1lfz1hqphb-nixpkgs",
|
||||||
"sha256": "0bwjyz15sr5f7z0niwls9127hikp2b6fggisysk0cnk3l6fa8abh",
|
"sha256": "18akd1chfvniq1q774rigfxgmxwi0wyjljpa1j9ls59szpzr316d",
|
||||||
"fetchLFS": false,
|
"fetchLFS": false,
|
||||||
"fetchSubmodules": false,
|
"fetchSubmodules": false,
|
||||||
"deepClone": false,
|
"deepClone": false,
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
{
|
{
|
||||||
"url": "https://github.com/NixOS/nixpkgs",
|
"url": "https://github.com/NixOS/nixpkgs",
|
||||||
"rev": "d887ac7aee92e8fc54dde9060d60d927afae9d69",
|
"rev": "d1e59cfc49961e121583abe32e2f3db1550fbcff",
|
||||||
"date": "2021-12-26T21:39:36-05:00",
|
"date": "2022-01-01T22:20:39+08:00",
|
||||||
"path": "/nix/store/6rczi6lazq369qw1hl4mhnx30pi74vjl-nixpkgs",
|
"path": "/nix/store/azrxsxpszjwgg75jk1pkzlzjcj0qnw8d-nixpkgs",
|
||||||
"sha256": "1bpgfv45b1yvrgpwdgc4fm4a6sav198yd41bsrvlmm3jn2wi6qx5",
|
"sha256": "03ldf1dlxqf3g8qh9x5vp6vd9zvvr481fyjds111imll69y60wpm",
|
||||||
"fetchLFS": false,
|
"fetchLFS": false,
|
||||||
"fetchSubmodules": false,
|
"fetchSubmodules": false,
|
||||||
"deepClone": false,
|
"deepClone": false,
|
||||||
|
Loading…
Reference in New Issue
Block a user