summaryrefslogtreecommitdiffstats
path: root/krebs
diff options
context:
space:
mode:
Diffstat (limited to 'krebs')
-rw-r--r--krebs/1systems/hotdog/config.nix1
-rw-r--r--krebs/2configs/mud.nix171
-rw-r--r--krebs/3modules/external/default.nix4
-rw-r--r--krebs/3modules/external/mic92.nix2
-rw-r--r--krebs/3modules/external/ssh/kmein.pub3
-rw-r--r--krebs/3modules/makefu/default.nix6
-rw-r--r--krebs/3modules/makefu/retiolum/cake_ed25519.pub1
-rw-r--r--krebs/3modules/makefu/retiolum/crapi.pub1
-rw-r--r--krebs/3modules/makefu/retiolum/crapi_ed25519.pub1
-rw-r--r--krebs/3modules/makefu/retiolum/fileleech_ed25519.pub1
-rw-r--r--krebs/3modules/makefu/retiolum/filepimp_ed25519.pub1
-rw-r--r--krebs/3modules/makefu/retiolum/firecracker_ed25519.pub1
-rw-r--r--krebs/3modules/makefu/retiolum/flap_ed25519.pub1
-rw-r--r--krebs/3modules/makefu/retiolum/gum_ed25519.pub1
-rw-r--r--krebs/3modules/makefu/retiolum/nukular_ed25519.pub1
-rw-r--r--krebs/3modules/makefu/retiolum/omo_ed25519.pub1
-rw-r--r--krebs/3modules/makefu/retiolum/sdev_ed25519.pub1
-rw-r--r--krebs/3modules/makefu/retiolum/senderechner_ed25519.pub1
-rw-r--r--krebs/3modules/makefu/retiolum/studio_ed25519.pub1
-rw-r--r--krebs/3modules/makefu/retiolum/tsp_ed25519.pub1
-rw-r--r--krebs/3modules/makefu/retiolum/vbob.pub8
-rw-r--r--krebs/3modules/makefu/retiolum/vbob_ed25519.pub1
-rw-r--r--krebs/3modules/makefu/retiolum/wbob_ed25519.pub1
-rw-r--r--krebs/3modules/makefu/retiolum/x_ed25519.pub1
-rw-r--r--krebs/5pkgs/simple/weechat-declarative/default.nix153
-rw-r--r--krebs/nixpkgs-unstable.json8
-rw-r--r--krebs/nixpkgs.json8
27 files changed, 368 insertions, 13 deletions
diff --git a/krebs/1systems/hotdog/config.nix b/krebs/1systems/hotdog/config.nix
index 1ade23876..6a51bf45f 100644
--- a/krebs/1systems/hotdog/config.nix
+++ b/krebs/1systems/hotdog/config.nix
@@ -11,6 +11,7 @@
<stockholm/krebs/2configs/reaktor2.nix>
<stockholm/krebs/2configs/wiki.nix>
<stockholm/krebs/2configs/acme.nix>
+ <stockholm/krebs/2configs/mud.nix>
## shackie irc bot
<stockholm/krebs/2configs/shack/reaktor.nix>
diff --git a/krebs/2configs/mud.nix b/krebs/2configs/mud.nix
new file mode 100644
index 000000000..d5e4c89c1
--- /dev/null
+++ b/krebs/2configs/mud.nix
@@ -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
+ ];
+ };
+}
diff --git a/krebs/3modules/external/default.nix b/krebs/3modules/external/default.nix
index 4a87c3501..4c4e53f2f 100644
--- a/krebs/3modules/external/default.nix
+++ b/krebs/3modules/external/default.nix
@@ -253,12 +253,12 @@ in {
};
};
- pinpox-ahorn = {
+ ahorn = {
owner = config.krebs.users.pinpox;
nets = {
retiolum = {
ip4.addr = "10.243.100.100";
- aliases = [ "pinpox-ahorn.r" ];
+ aliases = [ "ahorn.r" ];
tinc.pubkey = ''
-----BEGIN RSA PUBLIC KEY-----
MIICCgKCAgEAyfCuWUYEqp4vEt+a6DRvFpIrBu+GlkpNs/mE4OHzATQLNnWooOXQ
diff --git a/krebs/3modules/external/mic92.nix b/krebs/3modules/external/mic92.nix
index b1e11b452..9a3c855f4 100644
--- a/krebs/3modules/external/mic92.nix
+++ b/krebs/3modules/external/mic92.nix
@@ -173,7 +173,7 @@ in {
};
retiolum = {
via = internet;
- aliases = [ "eve.r" ];
+ aliases = [ "eve.r" "tts.r" ];
tinc.pubkey = ''
-----BEGIN RSA PUBLIC KEY-----
MIICCgKCAgEAw5cxGjnWCG8dcuhTddvGHzH0/VjxHA5V8qJXH2R5k8ki8dsM5FRH
diff --git a/krebs/3modules/external/ssh/kmein.pub b/krebs/3modules/external/ssh/kmein.pub
index 5711a2c1c..8eade3498 100644
--- a/krebs/3modules/external/ssh/kmein.pub
+++ b/krebs/3modules/external/ssh/kmein.pub
@@ -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
diff --git a/krebs/3modules/makefu/default.nix b/krebs/3modules/makefu/default.nix
index 7780863a3..51c38b899 100644
--- a/krebs/3modules/makefu/default.nix
+++ b/krebs/3modules/makefu/default.nix
@@ -22,6 +22,12 @@ with import <stockholm/lib>;
(krebs.genipv6 "retiolum" "makefu" { inherit hostName; }).address;
};
})
+ # Retiolum ed25519 keys
+ (let
+ pubkey-path = ./retiolum + "/${hostName}_ed25519.pub";
+ in optionalAttrs (pathExists pubkey-path) {
+ nets.retiolum.tinc.pubkey_ed25519 = builtins.trace "using ed25519 key for host ${hostName}" (readFile pubkey-path);
+ })
# Wiregrill defaults
(let
pubkey-path = ./wiregrill + "/${hostName}.pub";
diff --git a/krebs/3modules/makefu/retiolum/cake_ed25519.pub b/krebs/3modules/makefu/retiolum/cake_ed25519.pub
new file mode 100644
index 000000000..6c6bf2b33
--- /dev/null
+++ b/krebs/3modules/makefu/retiolum/cake_ed25519.pub
@@ -0,0 +1 @@
+zlfSyJdG7vJmvkk1Ul3ZXUix2YduFYUMhM89nRdy8aE
diff --git a/krebs/3modules/makefu/retiolum/crapi.pub b/krebs/3modules/makefu/retiolum/crapi.pub
index 2b6104468..c66f24882 100644
--- a/krebs/3modules/makefu/retiolum/crapi.pub
+++ b/krebs/3modules/makefu/retiolum/crapi.pub
@@ -1,4 +1,3 @@
-Ed25519PublicKey = Zkh6vtSNBvKYUjCPsMyAFJmxzueglCDoawVPCezKy4F
-----BEGIN RSA PUBLIC KEY-----
MIIBCgKCAQEAloXLBfZQEVW9mJ7uwOoa+DfV4ek/SG+JQuexJMugei/iNy0NjY66
OVIkzFmED32c3D7S1+Q+5Mc3eR02k1o7XERpZeZhCtJOBlS4xMzCKH62E4USvH5L
diff --git a/krebs/3modules/makefu/retiolum/crapi_ed25519.pub b/krebs/3modules/makefu/retiolum/crapi_ed25519.pub
new file mode 100644
index 000000000..ce5a6f05a
--- /dev/null
+++ b/krebs/3modules/makefu/retiolum/crapi_ed25519.pub
@@ -0,0 +1 @@
+Zkh6vtSNBvKYUjCPsMyAFJmxzueglCDoawVPCezKy4F
diff --git a/krebs/3modules/makefu/retiolum/fileleech_ed25519.pub b/krebs/3modules/makefu/retiolum/fileleech_ed25519.pub
new file mode 100644
index 000000000..ea93cfddb
--- /dev/null
+++ b/krebs/3modules/makefu/retiolum/fileleech_ed25519.pub
@@ -0,0 +1 @@
+2YSzoLSQN3k4HC8uozPb/nMmbrTa9eKOD2Ka9Iq8iXM
diff --git a/krebs/3modules/makefu/retiolum/filepimp_ed25519.pub b/krebs/3modules/makefu/retiolum/filepimp_ed25519.pub
new file mode 100644
index 000000000..7a62ff46f
--- /dev/null
+++ b/krebs/3modules/makefu/retiolum/filepimp_ed25519.pub
@@ -0,0 +1 @@
+aQDHnUzOhf8zhMOB/ufTaP4rQLrizfN135PVgfTLkaC
diff --git a/krebs/3modules/makefu/retiolum/firecracker_ed25519.pub b/krebs/3modules/makefu/retiolum/firecracker_ed25519.pub
new file mode 100644
index 000000000..76e6def7c
--- /dev/null
+++ b/krebs/3modules/makefu/retiolum/firecracker_ed25519.pub
@@ -0,0 +1 @@
+3QIlv3vsykhMlsrsHUbU/vneVbYiE6G1U7HPzK2AbRI
diff --git a/krebs/3modules/makefu/retiolum/flap_ed25519.pub b/krebs/3modules/makefu/retiolum/flap_ed25519.pub
new file mode 100644
index 000000000..47da38477
--- /dev/null
+++ b/krebs/3modules/makefu/retiolum/flap_ed25519.pub
@@ -0,0 +1 @@
+1o7+d8jjitc1vJB1sYFY8qvbcePssD6c+sgfxqq+BXD
diff --git a/krebs/3modules/makefu/retiolum/gum_ed25519.pub b/krebs/3modules/makefu/retiolum/gum_ed25519.pub
new file mode 100644
index 000000000..5b6f2426e
--- /dev/null
+++ b/krebs/3modules/makefu/retiolum/gum_ed25519.pub
@@ -0,0 +1 @@
+6M/fxVpfUCpbWvOXR9eHjt3o7sgjAEoIT/hXcDN970E
diff --git a/krebs/3modules/makefu/retiolum/nukular_ed25519.pub b/krebs/3modules/makefu/retiolum/nukular_ed25519.pub
new file mode 100644
index 000000000..0cae03b83
--- /dev/null
+++ b/krebs/3modules/makefu/retiolum/nukular_ed25519.pub
@@ -0,0 +1 @@
+nL4hL0aJvufqdSvTafAnc/g0wjznIwuHlEq/h/OxEsF
diff --git a/krebs/3modules/makefu/retiolum/omo_ed25519.pub b/krebs/3modules/makefu/retiolum/omo_ed25519.pub
new file mode 100644
index 000000000..dd11ab7dd
--- /dev/null
+++ b/krebs/3modules/makefu/retiolum/omo_ed25519.pub
@@ -0,0 +1 @@
+SVuxrF4CQGRl3evQurw0wh44g72/0qwRACF+/n2i2rE
diff --git a/krebs/3modules/makefu/retiolum/sdev_ed25519.pub b/krebs/3modules/makefu/retiolum/sdev_ed25519.pub
new file mode 100644
index 000000000..fef79aa68
--- /dev/null
+++ b/krebs/3modules/makefu/retiolum/sdev_ed25519.pub
@@ -0,0 +1 @@
+OxXCkjs3OzIsMXcSVcr7dJD55iRFRjUc0eERPdU1OjO
diff --git a/krebs/3modules/makefu/retiolum/senderechner_ed25519.pub b/krebs/3modules/makefu/retiolum/senderechner_ed25519.pub
new file mode 100644
index 000000000..f0968aa12
--- /dev/null
+++ b/krebs/3modules/makefu/retiolum/senderechner_ed25519.pub
@@ -0,0 +1 @@
+LegGLszL9hZXoanCQnv0VxuoLviT2K/yvQGYuCsloUH
diff --git a/krebs/3modules/makefu/retiolum/studio_ed25519.pub b/krebs/3modules/makefu/retiolum/studio_ed25519.pub
new file mode 100644
index 000000000..13a09ad1b
--- /dev/null
+++ b/krebs/3modules/makefu/retiolum/studio_ed25519.pub
@@ -0,0 +1 @@
+WLUvBME38jEpXIEFniyVIjyvMw7JTNJBQb/NIXcxmzL
diff --git a/krebs/3modules/makefu/retiolum/tsp_ed25519.pub b/krebs/3modules/makefu/retiolum/tsp_ed25519.pub
new file mode 100644
index 000000000..c7baf9067
--- /dev/null
+++ b/krebs/3modules/makefu/retiolum/tsp_ed25519.pub
@@ -0,0 +1 @@
+gzMYJY6/6sgG4ZgYWzeDs6svTvsDIeJEAGxPbrJUFVN
diff --git a/krebs/3modules/makefu/retiolum/vbob.pub b/krebs/3modules/makefu/retiolum/vbob.pub
new file mode 100644
index 000000000..168437e78
--- /dev/null
+++ b/krebs/3modules/makefu/retiolum/vbob.pub
@@ -0,0 +1,8 @@
+-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEA+0TIo0dS9LtSdrmH0ClPHLO7dHtV9Dj7gaBAsbyuwxAI5cQgYKwr
+4G6t7IcJW+Gu2bh+LKtPP91+zYXq4Qr1nAaKw4ajsify6kpxsCBzknmwi6ibIJMI
+AK114dr/XSk/Pc6hOSA8kqDP4c0MZXwitRBiNjrWbTrQh6GJ3CXhmpZ2lJkoAyNP
+hjdPerbTUrhQlNW8FanyQQzOgN5I7/PXsZShmb3iNKz1Ban5yWKFCVpn8fjWQs5o
+Un2AKowH4Y+/g8faGemL8uy/k5xrHSrn05L92TPDUpAXrcZXzo6ao1OBiwJJVl7s
+AVduOY18FU82GUw7edR0e/b2UC6hUONflwIDAQAB
+-----END RSA PUBLIC KEY-----
diff --git a/krebs/3modules/makefu/retiolum/vbob_ed25519.pub b/krebs/3modules/makefu/retiolum/vbob_ed25519.pub
new file mode 100644
index 000000000..5e287f36b
--- /dev/null
+++ b/krebs/3modules/makefu/retiolum/vbob_ed25519.pub
@@ -0,0 +1 @@
+fRPhdsYqwPuYgL2p/CmAUCVykU9GbiRfHQ8SULPQNGE
diff --git a/krebs/3modules/makefu/retiolum/wbob_ed25519.pub b/krebs/3modules/makefu/retiolum/wbob_ed25519.pub
new file mode 100644
index 000000000..eeef652e2
--- /dev/null
+++ b/krebs/3modules/makefu/retiolum/wbob_ed25519.pub
@@ -0,0 +1 @@
+b3uia4Sns0ljQrccLE0QxzeAB4APTiJEB98neQQosdF
diff --git a/krebs/3modules/makefu/retiolum/x_ed25519.pub b/krebs/3modules/makefu/retiolum/x_ed25519.pub
new file mode 100644
index 000000000..fbf63d08e
--- /dev/null
+++ b/krebs/3modules/makefu/retiolum/x_ed25519.pub
@@ -0,0 +1 @@
+81FOjlXXS22WWZzLnL4sDCuXmvMoYkbhy0wlBlr60zM
diff --git a/krebs/5pkgs/simple/weechat-declarative/default.nix b/krebs/5pkgs/simple/weechat-declarative/default.nix
new file mode 100644
index 000000000..e6ecfd631
--- /dev/null
+++ b/krebs/5pkgs/simple/weechat-declarative/default.nix
@@ -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 "$@"
+''
diff --git a/krebs/nixpkgs-unstable.json b/krebs/nixpkgs-unstable.json
index babaad004..cab3ab115 100644
--- a/krebs/nixpkgs-unstable.json
+++ b/krebs/nixpkgs-unstable.json
@@ -1,9 +1,9 @@
{
"url": "https://github.com/NixOS/nixpkgs",
- "rev": "ac169ec6371f0d835542db654a65e0f2feb07838",
- "date": "2021-12-26T18:43:05+01:00",
- "path": "/nix/store/l1qmvpx4pj24ijsm44n64vw2fnl9dpc7-nixpkgs",
- "sha256": "0bwjyz15sr5f7z0niwls9127hikp2b6fggisysk0cnk3l6fa8abh",
+ "rev": "59bfda72480496f32787cec8c557182738b1bd3f",
+ "date": "2021-12-31T15:09:52+01:00",
+ "path": "/nix/store/wy2iidg15nwgmn8xir8fbr1lfz1hqphb-nixpkgs",
+ "sha256": "18akd1chfvniq1q774rigfxgmxwi0wyjljpa1j9ls59szpzr316d",
"fetchLFS": false,
"fetchSubmodules": false,
"deepClone": false,
diff --git a/krebs/nixpkgs.json b/krebs/nixpkgs.json
index f90e6b08c..43f298973 100644
--- a/krebs/nixpkgs.json
+++ b/krebs/nixpkgs.json
@@ -1,9 +1,9 @@
{
"url": "https://github.com/NixOS/nixpkgs",
- "rev": "573095944e7c1d58d30fc679c81af63668b54056",
- "date": "2021-12-10T10:33:46-08:00",
- "path": "/nix/store/c0bvhzf1xsjrmzrda8jasa1da76x0zyk-nixpkgs",
- "sha256": "07s5cwhskqvy82b4rld9b14ljc0013pig23i3jx3l3f957rk95pg",
+ "rev": "d1e59cfc49961e121583abe32e2f3db1550fbcff",
+ "date": "2022-01-01T22:20:39+08:00",
+ "path": "/nix/store/azrxsxpszjwgg75jk1pkzlzjcj0qnw8d-nixpkgs",
+ "sha256": "03ldf1dlxqf3g8qh9x5vp6vd9zvvr481fyjds111imll69y60wpm",
"fetchLFS": false,
"fetchSubmodules": false,
"deepClone": false,