initial commit

This commit is contained in:
sid 2026-02-23 20:50:47 +01:00
commit c094b5770c
113 changed files with 6879 additions and 0 deletions

16
users/sid/default.nix Normal file
View file

@ -0,0 +1,16 @@
{ inputs, ... }:
{
imports = [
inputs.synix.nixosModules.normalUsers
];
normalUsers = {
sid = {
extraGroups = [ "wheel" ];
sshKeyFiles = [
./pubkeys/gpg.pub
];
};
};
}

View file

@ -0,0 +1,18 @@
{
inputs,
outputs,
...
}:
{
imports = [
./git.nix
./home.nix
./nixvim.nix
./secrets
inputs.synix.homeModules.common
outputs.homeModules.common
];
}

9
users/sid/home/git.nix Normal file
View file

@ -0,0 +1,9 @@
{
programs.git = {
enable = true;
settings.user = {
name = "sid";
email = "sid@sid.ovh";
};
};
}

12
users/sid/home/home.nix Normal file
View file

@ -0,0 +1,12 @@
{
home = {
username = "sid";
shellAliases = {
gpr = "git remote prune origin";
search-store = "find /nix/store -maxdepth 1 -type d | rg -i";
};
stateVersion = "24.11";
};
}

View file

@ -0,0 +1,48 @@
{ pkgs, ... }:
{
imports = [ ../../hyprland ];
wayland.windowManager.hyprland.settings.monitor = [
"eDP-1, 2560x1600@120, 0x0, 1.25"
"desc:LG Electronics 34GL750 0x000417A0, 2560x1080@60, auto, 1"
"desc:Eizo Nanao Corporation S2433W 24885089, 1920x1200, auto, 1" # , transform, 1"
];
programs.waybar.settings.mainBar.output = "eDP-1";
programs.ssh.matchBlocks = {
arch = {
host = "a arch";
hostname = "192.168.122.105";
port = 22;
user = "sid";
};
pc = {
host = "pc";
hostname = "192.168.178.140";
port = 2299;
user = "sid";
};
};
programs.sftpman.mounts = {
arch = {
host = "192.168.122.105";
user = "sid";
port = 22;
mountPoint = "/home/sid";
};
};
home.shellAliases = {
vbox-up = "VBoxManage startvm ubuntu-sopc --type headless";
vbox-down = "VBoxManage controlvm ubuntu-sopc poweroff";
vbox-list = "VBoxManage list vms --long | grep -e '^Name:' -e '^State:'";
dock-on = "hyprctl keyword monitor eDP-1, disable";
dock-off = "hyprctl keyword monitor eDP-1, enable";
};
services.spotifyd.settings.device_name = "16ach6";
}

View file

@ -0,0 +1,40 @@
{
imports = [ ../../hyprland ];
wayland.windowManager.hyprland.settings.monitor = [
"desc:Eizo Nanao Corporation S2433W 24885089, 1920x1200, 0x0, 1"
"desc:Eizo Nanao Corporation S1921 C9188037, 1280x1024, 1920x0, 1, transform, 1"
];
home.sessionVariables = {
AQ_NO_MODIFIERS = 1;
};
programs.waybar.settings.mainBar.output = "DP-2";
programs.ssh.matchBlocks = {
arch = {
host = "a arch";
hostname = "192.168.122.210";
port = 22;
user = "sid";
};
vde = {
host = "v vde";
hostname = "192.168.188.22";
port = 2299;
user = "sid";
};
};
programs.sftpman.mounts = {
vde = {
host = "192.168.188.22";
user = "sid";
port = 2299;
mountPoint = "/home/sid/.config/nixos";
};
};
services.spotifyd.settings.device_name = "nuc8";
}

View file

@ -0,0 +1,14 @@
{ lib, ... }:
{
imports = [ ../../hyprland ];
wayland.windowManager.hyprland.settings.monitor = [
"DP-3, 2560x1080@144, 1920x0, 1"
"HDMI-A-1, 1920x1080@144, 0x0, 1"
];
programs.waybar.settings.mainBar.output = "DP-3";
home.stateVersion = lib.mkForce "25.11";
}

View file

@ -0,0 +1,34 @@
{
imports = [ ../../hyprland ];
wayland.windowManager.hyprland.settings.monitor = [
"DVI-D-1, 1920x1200, 0x0, 1"
"DVI-I-1, 1280x1024, 1920x0, 1, transform, 1"
];
programs.waybar.settings.mainBar.output = "DVI-D-1";
programs.ssh.matchBlocks = {
arch = {
host = "a arch";
hostname = "192.168.122.12";
port = 22;
user = "sid";
};
vde = {
host = "v vde";
hostname = "192.168.1.224";
port = 2299;
user = "sid";
};
};
programs.sftpman.mounts = {
arch = {
host = "192.168.122.12";
user = "sid";
port = 22;
mountPoint = "/home/sid";
};
};
}

View file

@ -0,0 +1,128 @@
# Manual configuration
The following things are not (yet) automated by Nix. Follow these steps after finishing the installation (including Home Manager).
## Import secrets
It is assumed that your secrets are stored on a LUKS encrypted USB drive partition (sda3 in this case).
```bash
USB=/dev/sda
USER=$(whoami)
HOST=$(cat /etc/hostname)
# Open crypt
sudo mkdir -p /mnt/crypt
sudo cryptsetup open "$USB"3 crypt
sudo mount /dev/mapper/crypt /mnt/crypt
# Copy secrets
sudo rsync -vP /mnt/crypt/gpg-backup.sec.asc /tmp
sudo rsync -vP /mnt/crypt/$HOST/keys.txt /tmp
sudo chown $USER:$USER /tmp/gpg-backup.sec.asc
sudo chown $USER:$USER /tmp/keys.txt
# Import secrets
mkdir -p ~/.config/sops/age && mv /tmp/keys.txt ~/.config/sops/age && chmod 0400 ~/.config/sops/age/keys.txt
gpg --decrypt /tmp/gpg-backup.sec.asc | gpg --import
gpg --edit-key D371C8E7D58F9D1E # replace with your key ID
gpg> trust
Your decision? 5
Do you really want to set this key to ultimate trust? (y/N) y
gpg> q
# Close crypt
sudo umount -lf /mnt/crypt
sudo cryptsetup close crypt
```
## Clone password store repository
```bash
git clone ssh://git.portuus.de:2299/home/sid/git/password-store $PASSWORD_STORE_DIR
```
## Librewolf
Librewolf is handled through its Home Manager module. Extensions do not need to be installed, just activated.
- Extensions (allow every extension to run in private windows)
- PassFF
- Preferences
- Behavior of Enter key: Fill and submit
- Behavior of Shift-Enter key: Goto, fill and submit
- floccus
- Add profile
- Nextcloud Bookmarks
- Bookmarks folder: Bookmarks Toolbar
TODO
- all custom search bookmarks lost their keywords
- set Searx as the default search engine
## Element Desktop
- Authentication via username, password and security key
- Settings
- Appearance
- Theme: Dark
- Preferences
- Allow spell check
- Add: German (Germany)
- Keyboard shortcuts
- Use Ctrl + F to search timeline: true
## Thunderbird
The account setup must be done manually, as the `accounts.email` HM module requires setting personal information that would end up being public on the Git web frontend.
- Spelling
- Add Dictionaries...
- German: Download Dictionary
## Spotify
- Authentication via username and password
## Jellyfin Media Player
- Add server
- Authentication via username and password
## OBS-Studio
- Scenes
- Scene
- Sources
- Add: Screen Capture (PipeWire) > OK > Screen 0 (or a window or a region) > OK
- Audio Mixer
- Mic/Aux: Mute
- File
- Settings
- Output
- Recording
- Recording Path: /home/sid/vid/recordings
- Generate File Name without Space
- Video
- Base Resolution: 2560x1600
- Output Resolution: 2560x1600
- Common FPS Values: 60
> TODO: adjust video and audio codecs/quality
> TODO: keyboard shortcuts (currently using waybar tray icon)
## Eduroam
Download the eduroam configuration script [here](https://cat.eduroam.org/?idp=5134&profile=8268).
Execute it:
```bash
nix-shell -p python3 python3Packages.dbus-python --run 'python eduroam-linux-THK-members_of_TH_Koln.py'
```
## Zoom
- Authentication via username and password
- Check "Keep me signed in"

View file

@ -0,0 +1,103 @@
{
inputs,
config,
pkgs,
...
}:
let
mkDir = dir: {
path = config.home.homeDirectory + "/" + dir;
recurse = true;
};
mkDirs = dirs: map mkDir dirs;
dirs = [
"aud"
"dls"
"doc"
"img"
"src"
"vid"
];
inherit (pkgs.stdenv.hostPlatform) system;
in
{
imports = [
inputs.kidex.homeModules.kidex
];
programs.anyrun = {
enable = true;
package = inputs.anyrun.packages."${system}".anyrun-with-all-plugins;
config = {
x = {
fraction = 0.5;
};
y = {
fraction = 0.3;
};
width = {
fraction = 0.3;
};
hideIcons = true;
layer = "overlay";
hidePluginInfo = true;
showResultsImmediately = true;
plugins = with inputs.anyrun.packages."${system}"; [
applications
dictionary
kidex
randr
rink
translate
websearch
];
};
extraCss = ''
#window {
background-color: rgba(0, 0, 0, 0);
}
'';
extraConfigFiles = {
"dictionary.ron".text = ''
Config(
prefix: ":def",
max_entries: 5,
)
'';
"translate.ron".text = ''
Config(
prefix: ":t",
language_delimiter: ">",
max_entries: 3,
)
'';
"randr.ron".text = ''
Config(
prefix: ":dp",
max_entries: 5,
)
'';
# TODO: websearch.ron: set custom search engine
};
};
services.kidex = {
enable = true;
settings = {
ignored = [
"*/.git/*"
"*/.cache/*"
"*/.direnv/*"
];
directories = mkDirs dirs;
};
};
wayland.windowManager.hyprland.settings.bind = [
"$mod, space, exec, anyrun"
];
}

View file

@ -0,0 +1,34 @@
{
inputs,
lib,
pkgs,
...
}:
{
imports = [
# ./anyrun.nix
./flatpak.nix
./fzf-open.nix
./gpg.nix
./hyprland.nix
./librewolf.nix
./newsboat.nix
# ./nextcloud-sync.nix
./obs-studio.nix
./opencode.nix
./packages.nix
./rclone.nix
# ./recoll.nix
./shell-aliases.nix
./spotify-player.nix
./ssh-hosts.nix
./stylix.nix
./vscode.nix
./waybar.nix
./xdg.nix
./yazi.nix
inputs.synix.homeModules.virtualisation
];
}

View file

@ -0,0 +1,38 @@
{ inputs, pkgs, ... }:
{
imports = [
inputs.nix-flatpak.homeManagerModules.nix-flatpak
];
services.flatpak = {
enable = true;
update = {
onActivation = false;
auto = {
enable = true;
onCalendar = "weekly";
};
};
packages = [
{
appId = "org.mypaint.MyPaint";
origin = "flathub";
}
# FIXME: does not start. installed `chat.commet.commetapp.flatpak` manually
{
appId = "im.riot.Riot";
origin = "flathub";
}
{
appId = "us.zoom.Zoom";
origin = "flathub";
}
];
};
home.packages = with pkgs; [
flatpak
flatpak-builder
];
}

View file

@ -0,0 +1,35 @@
{ pkgs, ... }:
let
fzf-dirs = "~/doc ~/img ~/aud ~/dls ~/src ~/.config ~/.local";
fzf-open = pkgs.writeShellScriptBin "fzf-open" ''
fzf --preview="pistol {}" --bind "enter:execute(hyprctl dispatch togglespecialworkspace fzf-open && xdg-open {} > /dev/null 2>&1 &)"
'';
in
{
wayland.windowManager.hyprland = {
settings = {
bind = [
"$mod, Space, togglespecialworkspace, fzf-open"
];
windowrulev2 = [
"float, class:floating"
"size 50% 50%, title:fzf-open"
];
};
extraConfig = ''
workspace = special:fzf-open, on-created-empty:kitty --class=floating -e ${fzf-open}/bin/fzf-open
'';
};
home = {
sessionVariables = {
# FZF_DEFAULT_COMMAND = "rg --files --hidden --glob '!.git/**' ${fzf-dirs}";
FZF_DEFAULT_COMMAND = "rg --files ${fzf-dirs}";
};
packages = [
fzf-open
];
};
}

View file

@ -0,0 +1,12 @@
{ inputs, ... }:
let
key.a.grip = "F8BCC76BE2E55D52C3E92B963ADD3FDD8C153911";
key.e.id = "97BEF39E76001BC0";
in
{
imports = [ inputs.synix.homeModules.gpg ];
services.gpg-agent.sshKeys = [ key.a.grip ];
programs.passwordManager.key = key.e.id;
}

View file

@ -0,0 +1,49 @@
{
inputs,
config,
pkgs,
...
}:
{
imports = [ inputs.synix.homeModules.hyprland ];
wayland.windowManager.hyprland = {
enable = true;
autostart = true;
settings = {
bind =
let
flatpakRun = "${pkgs.flatpak}/bin/flatpak --user run";
wineRun = "wine ${config.home.homeDirectory}/.wine/drive_c";
in
[
"$mod, g, exec, gimp"
"$mod, s, exec, kitty -T spotify -e spotify_player"
"$mod, t, exec, teams-for-linux"
"$mod, v, exec, virt-manager"
"$mod, z, exec, ${flatpakRun} us.zoom.Zoom"
"$mod CTRL, i, exec, ${wineRun}/Program\\ Files/AccessData/FTK\\ Imager/FTK\\ Imager.exe"
"$mod CTRL, m, exec, ${flatpakRun} org.mypaint.MyPaint"
"$mod CTRL, o, exec, obs"
"$mod CTRL, p, exec, otp"
"$mod SHIFT, a, exec, chromium --app=https://ai.portuus.de"
];
windowrule = [
"workspace 4, title:^newsboat$"
"workspace 6, class:^thunderbird$, title:Thunderbird$"
"workspace 7, title:^Jellyfin Media Player$"
"workspace 7, title:^spotify$"
"workspace 8, class:^Element$, title:^Element"
"workspace 9, class:^chrome-ai.portuus.de"
"workspace 10, class:^zoom$, title:^Zoom"
"workspace 10, class:^org.qbittorrent.qBittorrent$"
"workspace 10, title:^Virtual Machine Manager$"
];
exec-once = [
"[workspace 5 silent] librewolf"
"[workspace 6 silent] thunderbird"
];
};
};
}

View file

@ -0,0 +1,13 @@
{ inputs, pkgs, ... }:
let
inherit (pkgs.stdenv.hostPlatform) system;
in
{
programs.librewolf = {
profiles.default.extensions.packages =
with inputs.nur.legacyPackages."${system}".repos.rycee.firefox-addons; [
zotero-connector
];
};
}

View file

@ -0,0 +1,12 @@
{ config, ... }:
{
programs.newsboat = {
extraConfig = ''
urls-source "miniflux"
miniflux-url "https://miniflux.portuus.de/"
miniflux-login "sid"
miniflux-passwordfile "${config.sops.secrets.miniflux.path}"
'';
};
}

View file

@ -0,0 +1,29 @@
{ inputs, config, ... }:
let
mkConnection = dir: {
local = config.home.homeDirectory + "/" + dir;
remote = "/" + dir;
};
mkConnections = dirs: map mkConnection dirs;
connections = [
"aud"
"doc"
"img"
"vid"
];
in
{
imports = [
inputs.synix.homeModules.nextcloud-sync
];
services.nextcloud-sync = {
enable = true;
remote = "cloud.portuus.de";
passwordFile = config.sops.secrets.nextcloud.path;
connections = mkConnections connections;
};
}

View file

@ -0,0 +1,9 @@
{ pkgs, ... }:
{
programs.obs-studio = {
enable = true;
package = pkgs.obs-studio;
plugins = [ pkgs.obs-studio-plugins.wlrobs ];
};
}

View file

@ -0,0 +1,10 @@
{
programs.opencode = {
enable = true;
settings = {
model = "openrouter/qwen/qwen3-coder";
autoshare = false;
autoupdate = false;
};
};
}

View file

@ -0,0 +1,84 @@
{ inputs, pkgs, ... }:
let
inherit (pkgs.stdenv.hostPlatform) system;
in
{
home.packages =
with pkgs;
[
prismlauncher
audacity
drawio
gimp
inkscape
kicad
mermaid-cli
octaveFull
pdfarranger
remmina
spotify
syncthingtray
teams-for-linux
texliveFull
xournalpp
zotero
# inputs.gen-dmc.packages."${system}".gen-dmc
# angryipscanner # FIXME
# autopsy # gradle-7.6.6 is marked as insecure
# jellyfin-media-player # qtwebengine-5.15.19 is marked as insecure
]
# tools
++ [
aichat
compose2nix
duden
ftx-prog
gf
glab
gtkterm
localsend
magic-wormhole
naabu
ocrmypdf
rpi-imager
rustfmt
showmethekey
songrec
speedtest-cli
subfinder
synadm
yt-dlp
inputs.multios-usb.packages."${system}".default
(instaloader.overridePythonAttrs (oldAttrs: {
propagatedBuildInputs = (oldAttrs.propagatedBuildInputs or [ ]) ++ [
python3Packages.browser-cookie3
];
}))
local.gitingest # TODO: PR Nixpkgs
local.otp
local.pdf2printable
local.transcribe
local.yt2rss
synix.bulk-rename
# synix.marker-pdf # FIXME
]
# reverse engineering
# ++ [
# checksec
# ghidra-bin
# ida-free
# ]
# android
++ [
adbfs-rootless
android-tools
scrcpy
];
}

View file

@ -0,0 +1,23 @@
{ config, ... }:
let
sops = config.sops;
in
{
sops.templates.rclone.path = config.xdg.configHome + "/rclone/rclone.conf";
sops.templates.rclone.content = ''
[portuus]
type = webdav
url = https://cloud.portuus.de/remote.php/dav/files/sid/
vendor = nextcloud
user = sid
pass = ${sops.placeholder."rclone/portuus/pass"}
[sciebo]
type = webdav
url = ${sops.placeholder."rclone/sciebo/url"}
vendor = owncloud
user = ${sops.placeholder."rclone/sciebo/user"}
pass = ${sops.placeholder."rclone/sciebo/pass"}
'';
}

View file

@ -0,0 +1,31 @@
{ config, ... }:
{
services.recoll = {
enable = true;
configDir = "${config.xdg.configHome}/recoll";
settings = {
nocjk = true;
loglevel = 5;
topdirs = [
"~/aud"
"~/dls"
"~/doc"
"~/img"
"~/src"
];
"~/dls" = {
"skippedNames+" = [ "*.iso" ];
};
"~/src" = {
"skippedNames+" = [
"node_modules"
"target"
"result"
];
};
};
};
}

View file

@ -0,0 +1,11 @@
{ pkgs, ... }:
{
home.shellAliases = {
bt = "bluetoothctl";
ff = "find . -type f -name";
dd-iso = "dd bs=4M status=progress oflag=sync";
nc-sync = "nextcloud-sync-all";
synapse_change_display_name = "${pkgs.synix.synapse_change_display_name}/bin/synapse_change_display_name -t $(${pkgs.pass}/bin/pass sid.ovh/matrix/access-token) -r sid.ovh";
};
}

View file

@ -0,0 +1,47 @@
{ config, ... }:
{
programs.spotify-player = {
enable = true;
# package = pkgs.spotify-player.override {
# withImage = false;
# withSixel = false;
# };
settings = {
actions = [
{
command = "GoToArtist";
key_sequence = "g A";
}
{
command = "GoToAlbum";
key_sequence = "g B";
target = "PlayingTrack";
}
];
pause_icon = " ";
play_icon = " ";
device = {
audio_cache = true;
autoplay = true;
normalization = true;
volume = 100;
};
layout = {
playback_window_position = "Bottom";
library = {
playlist_percent = 80;
album_percent = 0;
};
};
};
};
services.spotifyd = {
enable = true;
settings = {
username = "zephyrius17";
password_cmd = "cat ${config.sops.secrets.spotify.path}";
};
};
}

View file

@ -0,0 +1,54 @@
{ pkgs, ... }:
{
programs.ssh.matchBlocks = {
edge = {
host = "e edge";
hostname = "49.12.227.10";
port = 2299;
user = "sid";
};
uvm = {
host = "u uvm";
hostname = "localhost";
port = 2222;
user = "root";
checkHostIP = false;
};
portuus = {
host = "p portuus *.portuus.de";
hostname = "portuus.de";
port = 2299;
user = "sid";
};
sid = {
host = "s sid *.sid.ovh";
hostname = "sid.ovh";
port = 2299;
user = "sid";
};
X99S = {
host = "X X99S";
hostname = "steffen.fail";
port = 2299;
user = "sid";
};
};
# setup: sudo mkdir -p /mnt/sshfs && sudo chown sid:sid /mnt/sshfs
programs.sftpman = {
enable = true;
# gpg --export-ssh-key <auth key id> > ~/.ssh/id_rsa.pub
defaultSshKey = "/home/sid/.ssh/id_rsa.pub";
mounts = {
portuus = {
host = "portuus.de";
user = "sid";
port = 2299;
mountPoint = "/home/sid/.config/nixos";
};
};
};
home.shellAliases.sm = "sftpman";
home.packages = [ pkgs.sshfs ];
}

View file

@ -0,0 +1,16 @@
{ inputs, ... }:
{
imports = [
inputs.synix.homeModules.stylix
];
stylix = {
enable = true;
scheme = "moonfly";
targets = {
waybar'.enable = true;
bemenu'.enable = true;
};
};
}

View file

@ -0,0 +1,19 @@
{ pkgs, ... }:
{
programs = {
vscode = {
enable = true;
package = pkgs.vscodium;
profiles.default.extensions = with pkgs.vscode-extensions; [
mkhl.direnv
ms-vscode.cmake-tools
ms-vscode.cpptools
];
};
direnv = {
enable = true;
nix-direnv.enable = true;
};
};
}

View file

@ -0,0 +1,19 @@
{
programs.waybar.settings = {
mainBar = {
modules-right = [
"custom/timer"
"custom/newsboat"
"network"
"bluetooth"
"cpu"
"memory"
"disk"
"pulseaudio#input"
"pulseaudio#output"
"battery"
"tray"
];
};
};
}

View file

@ -0,0 +1,18 @@
{ config, ... }:
{
xdg.userDirs =
let
homeDir = config.home.homeDirectory;
in
{
desktop = "${homeDir}";
documents = "${homeDir}/doc";
download = "${homeDir}/dls";
music = "${homeDir}/aud/music";
pictures = "${homeDir}/img";
publicShare = "${homeDir}";
templates = "${homeDir}";
videos = "${homeDir}/vid";
};
}

View file

@ -0,0 +1,33 @@
{ pkgs, lib, ... }:
{
programs.yazi =
let
hide-yazi-workspace = pkgs.writeShellScript "hide-yazi-workspace.sh" ''
(hyprctl monitors -j | ${lib.getExe pkgs.jq} -e 'any(.specialWorkspace.name == "special:yazi")' > /dev/null) && hyprctl dispatch togglespecialworkspace yazi
'';
in
{
keymap = {
mgr.prepend_keymap = [
{
on = "o";
run = [
"shell --orphan ${hide-yazi-workspace}"
"open"
];
desc = "";
}
];
};
};
wayland.windowManager.hyprland = {
extraConfig = ''
workspace = special:yazi, on-created-empty:kitty -T yazi -e yazi
bind = $mod, x, togglespecialworkspace, yazi
windowrule = float, title:^yazi$
windowrule = size 50% 50%, title:^yazi$
'';
};
}

113
users/sid/home/nixvim.nix Normal file
View file

@ -0,0 +1,113 @@
{ inputs, config, ... }:
{
imports = [
inputs.synix.homeModules.nixvim
];
programs.nixvim = {
enable = true;
plugins = {
avante = {
enable = true;
settings = {
auto_suggestions_provider = null;
diff = {
autojump = true;
debug = false;
list_opener = "copen";
};
highlights = {
diff = {
current = "DiffText";
incoming = "DiffAdd";
};
};
hints = {
enabled = true;
};
selector = {
provider = "telescope";
};
provider = "openrouter";
providers = {
openrouter = {
__inherited_from = "openai";
endpoint = "https://openrouter.ai/api/v1";
api_key_name = "cmd:cat ${config.sops.secrets.openrouter-api-key.path}";
model = "google/gemini-3-flash-preview";
};
};
};
};
render-markdown = {
enable = true;
settings = {
file_types = [
"Avante"
];
};
};
};
extraConfigLua = ''
_G.cppman_picker = function(opts)
local pickers = require "telescope.pickers"
local finders = require "telescope.finders"
local conf = require("telescope.config").values
local actions = require "telescope.actions"
local action_state = require "telescope.actions.state"
local previewers = require "telescope.previewers"
opts = opts or {}
pickers.new(opts, {
prompt_title = "Cppman Search",
finder = finders.new_oneshot_job({ "cppman", "-l" }, opts),
sorter = conf.generic_sorter(opts),
previewer = previewers.new_buffer_previewer({
title = "Manual Page",
define_preview = function(self, entry, status)
return require("telescope.previewers.utils").job_maker(
{ "cppman", entry.value },
self.state.bufnr,
{
callback = function(bufnr, content)
if content then
vim.api.nvim_buf_set_option(bufnr, "filetype", "man")
end
end,
}
)
end,
}),
attach_mappings = function(prompt_bufnr, map)
actions.select_default:replace(function()
local selection = action_state.get_selected_entry()
if not selection then
return
end
actions.close(prompt_bufnr)
vim.cmd("terminal cppman " .. selection.value)
vim.cmd("startinsert")
end)
return true
end,
}):find()
end
'';
keymaps = [
{
mode = "n";
key = "<leader>fc";
action = "<cmd>lua cppman_picker()<CR>";
options = {
desc = "Search C/C++ Docs (cppman)";
silent = true;
};
}
];
};
}

View file

@ -0,0 +1,19 @@
{ inputs, ... }:
{
imports = [
inputs.synix.homeModules.sops
];
sops.secrets = {
"rclone/portuus/pass" = { };
"rclone/sciebo/pass" = { };
"rclone/sciebo/url" = { };
"rclone/sciebo/user" = { };
gemini-api-key = { };
miniflux = { };
nextcloud = { };
openrouter-api-key = { };
spotify = { };
};
}

View file

@ -0,0 +1,27 @@
miniflux: ENC[AES256_GCM,data:8AraKHhALBBJ5vzXc3t3UKX1DqA=,iv:VWv7MaTfDXZIr/dVWOMyRm6rFqLVhvTU0CYv5a2/PAM=,tag:nStt3Rn08KWadYVECRyObA==,type:str]
nextcloud: ENC[AES256_GCM,data:ge1GukFPmVe0vO1oL98loLpHkpE=,iv:7OTKSpxeKVmDFIvC8yd+c3TglZMIb6iLmXtUQgONWDE=,tag:1PYvJAYfSnZquyXz4eseDw==,type:str]
rclone:
portuus:
pass: ENC[AES256_GCM,data:QcI6y3AKEh0+PWT4a7NXxbt0te78BJeZT3JxRxGpfkjxhqFWGNHHs6I0pxBFuyAkFa8=,iv:qcMmuAI1odd32YWO8OB+CB2cMHHK2raFBWJ/dSbBSuA=,tag:uxD2CVq9i5quK7QuQuwQTQ==,type:str]
sciebo:
url: ENC[AES256_GCM,data:T8eSTFOYRu+dOF3wnOBSorIgeOs1VkZ8xqH5mh2/g2VeKnvjeLmUg6/4X+ZthsBpetPeiELkeg+XzzT+F5qxEaaV5OdTT8c=,iv:qmpvVJLJwE6CmIEdne9vgoP5H1GTiZYOXb5yR2DaS5k=,tag:QdTmUW+O2Z2Dpqcb/Ug2/A==,type:str]
user: ENC[AES256_GCM,data:FrZZtV05qq15bwZko/2qFhWLfn4=,iv:sddWcvc1K8J008bkqSrf22fCR9w+fD5uOykNVb0aBS8=,tag:XkwZtGtDskUBpbj0vJyHGg==,type:str]
pass: ENC[AES256_GCM,data:osKqEPF3MXzGSA3bziw6hx+5fQNXkXfrWKAUiK7yV+r48nTsJ+YYzUlIjYluioM0,iv:TANLg8RW2NUwj0RKUZW09U//l//ijOjRB3uRLITlu/E=,tag:yJxkCWL0Y0a8MPH57duOMw==,type:str]
spotify: ENC[AES256_GCM,data:PQ5eUxL/oi+SE6gbe5+XQYExHw0=,iv:vz5TCa6jS+LMZsxFOQZhC4EwetcHmu/zxK6JTVXucwA=,tag:+cyc2hdUsvfDwLbxzoeogg==,type:str]
gemini-api-key: ENC[AES256_GCM,data:UvLB1vq56Wv4MpL/KPJ4M4p5Lx1Se/dv/vT/Vim2HSxHiyXWoVow,iv:xepkGlDG4doKeskQTyzxVx7SE7veUQVrzZahLdDxVQg=,tag:ue6lphZcPovfrgyibhRkDA==,type:str]
openrouter-api-key: ENC[AES256_GCM,data:VGSlgUfEBwUKjEwdGqYTLvGlMJ3VSwApJexYZ4YVpKTE6oFQeZpsjMc6dymkSsLITVw2n92rfkhJi7e+MEvBCkNVNbb+KP5PnA==,iv:GvYq5+QhuONaPzHleGMuqzWQhhCcb9oxU9Pr/mWwKh4=,tag:iAlf173z7pW97LvkUPQgBA==,type:str]
sops:
age:
- recipient: age19yeqvv28fgrtk6jsh3xyaf0lch86kna6rcz4dwe962yyyyevu30sx474xy
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBSbXBZV3VlYy91MWs5eFpa
d1ZoTVlhbjNnaFZtTGtxQmpTTU1YcEJ1bTJjCndwMmNtZlBYWjJtQUl5QzVzNFhE
bGprbjV0T3Njd3NjdTZxeHlxYTNOREkKLS0tIFllbUluejZJOUlWTWhUWVV2NU4r
d0lFU3lCVHVxN2xveUE4V2VtanFBY2cKD4qYxFo7G6B0fsLcNeNZaK4k3DGwVocA
XYHwoqEZ58xspiuVkp3F+fFpgoysuVusB9ZimjLkt2D6phk+0SGKfA==
-----END AGE ENCRYPTED FILE-----
lastmodified: "2026-02-18T17:07:22Z"
mac: ENC[AES256_GCM,data:U3c9xDqKHIGFM9YCwR/1W2U2blWyXfFOljzyht+2aOA15v8Ys23vG5UJNO91frIRqZYnoSLTrJADlrW0S7zD4ft+7GHKK1XuriUXm5hzOl62HdB3pSX5nvWVdkPBdKE5e/se3HyQuiu0ZM9EHd0hepxLBh3YfQxGjhsaHZX2Q1g=,iv:r+1sC+MuONmFwEN935KJ0CFn9jsSGoI7rH+d6uDGYF8=,tag:2SNEFn1TNVQ2K/Jr9uIypQ==,type:str]
unencrypted_suffix: _unencrypted
version: 3.11.0

View file

@ -0,0 +1 @@
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDYeVnKDUk3SYN70qB6nVEqSCsCiUtObR2OHLexzinmdFU4xxSL76+9SCMFk7EHZpE5JouBBqVjCxEuZpCZUzCaKLFSL6KBQ+nFxqWTLJ2na7lbECXLrk6IlfGqnfPJzy0hcqszqy/MuZXAC2YgiNZfGxAJNY1UqOuaMAub18yHNo/mYfIS6ZDlRXdPEgsEzndTvE6znNQ2WsZk+jH4yRwKqkmEYqIiGRU8K4czCZchMH9vY/dGhi4kM/QJLmjj3pEZCt/d+tI88MkPzE0FagaNELcylmInLTbctv4eCwMn4waKLml53sRqhxkfVO1ZUfBPZq7pBNy90sqe7El3lKYM7n65T0Iry9pSJhvzMm7XkybpWZM834Y78okZEs1opsIZsCWVMXGInAmVs5bPPjrUNDKLqlfIb5fgUqclJiE4Hni5qF4iOSdQ2Xvex04GRwin4owmOKcpHAvAOHufLYjKxy+U4gd4VNzdYuRbr5Qs2kzPNl1JLWu8IKTUKzqpI5xZuDFOby8ZxhFqLZ1FWcIkFUiRVhVbz8GCtTLaMQeNV2ukkfIE4rK2u2UB+DBKEnQbBiRFbyCGhraEen2PvPi/wyE/71+AaOLM/JyYUt/S2+bz5lgugLFwNi9VJM4HgShcwwvzs7i//Hm2lj6Aj+dCPat8IquJ7QSVDUuu746Idw== (none)