This commit is contained in:
Sebastian Moser
2026-05-18 18:22:45 +02:00
parent 4a62c235f1
commit 5b895c54dc
31 changed files with 9569 additions and 323 deletions

1
.direnv/flake-profile Symbolic link
View File

@@ -0,0 +1 @@
flake-profile-1-link

View File

@@ -0,0 +1 @@
/nix/store/3s8w643mwrfiwd3n4bg45m142bdiibcc-nix-shell-env

1
.envrc Normal file
View File

@@ -0,0 +1 @@
use flake ./mize --impure

5
.gitignore vendored
View File

@@ -1,3 +1,8 @@
gitignore
result*
build
# Added by cargo
/target

3
.gitmodules vendored Normal file
View File

@@ -0,0 +1,3 @@
[submodule "mize"]
path = mize
url = git@git.ppc.social:ppc/ppc.git

8167
Cargo.lock generated Normal file

File diff suppressed because it is too large Load Diff

12
Cargo.toml Normal file
View File

@@ -0,0 +1,12 @@
[package]
name = "c2vi-part"
version = "0.1.0"
edition = "2024"
[lib]
name = "c2vi_part"
path = "c2vi-part.rs"
[dependencies]
mize = { path = "./mize/packages/mize" }
marts = { path = "./mize/packages/marts" }

0
c2vi-part.rs Normal file
View File

View File

@@ -73,6 +73,7 @@ in {
};
};
systemd.user.services.xdg-desktop-portal-wlr.enable = true;
systemd.user.services.xdg-desktop-portal-wlr.serviceConfig.ExecStart = let
settingsFormat = pkgs.formats.ini { };
configFile = settingsFormat.generate "xdg-desktop-portal-wlr.ini" {
@@ -111,6 +112,17 @@ in {
};
};
xdg.portal = {
wlr.enable = true;
wlr.settings = {
screencast = {
output_name = "eDP-1";
# to make streaming of individual windows work
chooser_type = "dmenu";
chooser_cmd = "${lib.getExe pkgs.bemenu}";
};
};
enable = true;
config = {
common = {
@@ -360,6 +372,9 @@ output "HDMI-A-1" {
### Key bindings
# ppc ne
bindsym F12 exec ppc ne
# QuickLaunch
bindsym $mod+i mode "QuickLaunch"
mode QuickLaunch {

View File

@@ -1,4 +1,4 @@
{ lib, self, pkgsUnstable, ... }:
{ lib, self, pkgsUnstable, pkgs, ... }:
# config that i use on all my hosts, that run native nixos
# excluding for example my phone phone
@@ -37,6 +37,10 @@
ln -nsf /run/current-system/sw/bin/bash /bin/bash
'';
environment.systemPackages = with pkgs; [
waypipe
];
# the hosts file
networking.extraHosts = ''
${builtins.readFile "${self}/misc/my-hosts"}

746
flake.lock generated

File diff suppressed because it is too large Load Diff

View File

@@ -20,6 +20,8 @@
inputs.nixpkgs.follows = "nixpkgs";
};
mize.url = "git+https://git.ppc.social/ppc/ppc";
zed.url = "github:zed-industries/zed";
#zed.inputs.nixpkgs.follows = "nixpkgs";

View File

@@ -50,18 +50,7 @@ in {
services.resilio = {
enable = true;
enableWebUI = true;
httpListenAddr = "100.70.54.18";
checkForUpdates = false;
listeningPort = 44444;
};
networking.firewall.interfaces."br0".allowedTCPPorts = [
44444 # resilio sync
9000 # resilio webui
9001 # fwin vnc
9002 # fwin rdp
9003 # fwin ssh

View File

@@ -1,4 +1,4 @@
{ lib, pkgs, inputs, secretsDir, config, ... }:
{ lib, pkgs, inputs, secretsDir, config, system, ... }:
{
#system.stateVersion = "23.05"; # Did you read the comment?
@@ -22,6 +22,8 @@
# labor nas project
# with this moduel it does not boot, it waits for /dev/disk/by-label/nas-storage
# "${workDir}/htl/labor/nas/nixos/lush-module.nix"
inputs.mize.nixosModules.default
];
# fix bluetooth
@@ -104,7 +106,7 @@ swapDevices = [ { device = "/swapfile"; } ];
settings.PermitRootLogin = "no";
settings.X11Forwarding = true;
extraConfig = ''
X11UseLocalhost no
X11UseLocalhost yes
'';
};
@@ -120,8 +122,79 @@ swapDevices = [ { device = "/swapfile"; } ];
services.udisks2.enable = false;
hardware.opengl.enable = true;
systemd.services."cage@" = {
enable = false;
services.greetd = {
enable = true;
settings = rec {
initial_session = {
#command = "${pkgs.greetd.tuigreet}/bin/tuigreet --time -d --env WLR_RENDERER_ALLOW_SOFTWARE=1 --cmd sway";
command = "${pkgs.writeScriptBin "run-sway" ''
export WLR_RENDERER_ALLOW_SOFTWARE=1
export SDL_VIDEODRIVER=wayland
export _JAVA_AWT_WM_NONREPARENTING=1
export QT_QPA_PLATFORM=wayland
export XDG_CURRENT_DESKTOP=sway
export XDG_SESSION_DESKTOP=sway
exec ${pkgs.lib.getExe pkgs.sway}
''}/bin/run-sway";
user = "me";
};
default_session = initial_session;
};
};
####################### MIZE ###########################
mize.enable = true;
mize.debugConfigFile = "/home/me/host/mize-config.toml";
mize.debugBinary = "/home/me/here/mize/target/debug/mize";
systemd.user.services.mize.environment.LOG= "trace";
home-manager.users.me.home.file = {
".config/sway/config".text = ''
# Set modifier key (optional, useful for admin maintenance)
set $mod Mod4
# Disable all window borders and titles
default_border none
default_floating_border none
# Hide the status bar completely
bar {
mode invisible
}
# Remove gaps between windows
gaps inner 0
gaps outer 0
# hide mouse cursor
seat * hide_cursor 5000
'';
};
/*
services.cage = {
enable = true;
#program = "${pkgs.alacritty}/bin/alacritty";
program = "/home/me/host/start-ppc-dash";
#program = "/bin/sh -c 'echo hiiii > /home/me/p1 && /home/me/here/mize/target/debug/ppc c2vi-dash >/home/me/p1 2>/home/me/p1'";
user = "cage";
environment = {
MIZE_CONFIG_FILES = "/home/me/host/mize-config.toml";
};
};
users.users.cage = {
isNormalUser = true;
description = "FOOBAR";
extraGroups = [ "networkmanager" "wheel"];
password = "idk";
};
*/
/*
systemd.services."cage" = {
enable = true;
after = [ "systemd-user-sessions.service" "dbus.socket" "systemd-logind.service" "getty@%i.service" "plymouth-deactivate.service" "plymouth-quit.service" ];
before = [ "graphical.target" ];
wants = [ "dbus.socket" "systemd-logind.service" "plymouth-deactivate.service" ];
@@ -130,7 +203,9 @@ swapDevices = [ { device = "/swapfile"; } ];
restartIfChanged = false;
serviceConfig = {
ExecStart = "${pkgs.cage}/bin/cage -d -- /home/me/here/mize/target/debug/ppc c2vi-dash";
#ExecStart = "${pkgs.cage}/bin/cage -d -- /home/me/here/mize/target/debug/ppc c2vi-dash";
#ExecStart = "${pkgs.cage}/bin/cage -d -- ${inputs.ppc.packages.${system}.ppc}/bin/ppc c2vi-dash";
ExecStart = "${pkgs.cage}/bin/cage -d -- ${pkgs.alacritty}/bin/alacritty";
User = "root";
# ConditionPathExists = "/dev/tty0";
@@ -164,6 +239,7 @@ swapDevices = [ { device = "/swapfile"; } ];
systemd.targets.graphical.wants = [ "cage@tty1.service" ];
systemd.defaultUnit = "graphical.target";
*/
####################################### networking ##########################

View File

@@ -21,7 +21,12 @@ in {
../users/me/gui.nix
../users/root/default.nix
../common/nixos-wayland.nix
inputs.mize.nixosModules.default
];
mize.enable = true;
mize.debugBinary = "/home/me/here/mize/target/debug/mize";
mize.debugConfigFile = "/home/me/host/mize-config.toml";
systemd.user.services.mize.environment.LOG= "trace";
programs.nix-ld.enable = true;
#services.pid-fan-controller.enable = true;

View File

@@ -33,7 +33,7 @@
};
*/
#services.openssh.enable = true;
services.openssh.enable = true;
programs.obs-studio = {
enable = true;
@@ -265,8 +265,15 @@ fileSystems."/home/me/nico" = {
# add waveforms flake module
#inputs.waveforms.nixosModule
inputs.mize.nixosModules.default
];
####################### MIZE ###########################
mize.enable = true;
mize.debugConfigFile = "/home/me/secrets/mize-config.toml";
mize.debugBinary = "/home/me/work/path-extra/mize";
systemd.user.services.mize.environment.LOG= "trace";
#services.udev.packages = [ inputs.waveforms.packages.${system}.adept2-runtime ];
#users.users.rslsync.extraGroups = ["users"];
@@ -293,6 +300,11 @@ fileSystems."/home/me/nico" = {
];
})
(inputs.nixpkgs-unstable.legacyPackages.${system}.factorio.override {
username = "c2vi";
token = builtins.readFile "${secretsDir}/factorio-token";
})
#inputs.waveforms.packages.${system}.waveforms
intel-compute-runtime-legacy1
ffmpeg-full

1
mize Submodule

Submodule mize added at 19573502d2

View File

@@ -42,6 +42,7 @@
- 8001 affine
- 8002 git
- 8003 git ssh
- 8004 matrix http
## hosting container ips (on the interface br-proxy)
- fusu 192.168.1.2
@@ -284,6 +285,8 @@ in {
users.users.root = {
openssh.authorizedKeys.keys = [
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICuH2ilZeIQrr9wYtBtQyRD5oaVkuLImjm9EIGfn+wqw" # Mr3DAlien
"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDU8OZxpeEuwVYFQC1ZYOECfU8fVg0BhNIYk5tK6aNeUe4JBJezwBWIQLsxuo1YgUX1CwbP5IAAj0JyoYUzWT5H4Qyev6rj3JWvBl+kVTnJyiipRccasXD/3IuRK2GBpMcK67sUoHtgiq1kS8myuAtGh2dVeukCp196pCZC9VI0NiEmk2M6/pCiuKmaeaeyKEpkzd2wcdvqyXu3OKtq/qZyw+N8eLk8hC8wQK5lq/Syg8aZh7OV2jqe7CnRLnybybrVy3wRNI4DdoP51YEv+Q3eMlOpOdc7SGTyDPUMnTDNbBFL8u7o7xeLs/+v3neWOz/+rNkQbAoqEvN741lCozTcAxSTT8gnTOdrf+ClMFRpFMUkl3Z6JNymw0Zx2JFibhxQJWIKJq6Wh1YuDJXenIZka0sN5ut5W0KJMmCfzeyAXHy3qruYktbmUFz8iUm1ywbURZZNCmRlzESL2lE7iuTM06SxSYw4YxQHYIC4P6leMyN3hfrr4RUPtO8wJ1lALUs= kilix@epimetheus"
"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDrQUmZtpxDx669VjACdtLSLcIFZ5uJl4xsj49yJW6A39IglJ4S9ViPtp/kQhGZ3jJMCCFzwDLNNJBf8XfcAtio57cucUQxtRMnY57pKH284eucCanpCq8z9KgBYtrIdzYwRVQZo2tjxdAwKS5mHSOstUnqH8CzcG0kbq7k3s31MKQhzKWXx7lZEn3osQx/aIpt0eWB/SNAS4DWhx+mdGSqO2ryBqbZKaJuH90MEWyd5MKu25+h0ELbHrkkPYOwq0EnpGqvr0mps8AjEV4iExb28E+GGtS+R7yg2tw0QWM1m4PI4XF5JRAuLqt187YvgQe9DIKTuhu2BT/EN2Os7jx9r14Pq2P/IhrR0hVloSTn2/r3geUuFYNvYiL64dkZIRxBOlC3SKut/lB3cir0FPdDkxoIuRHICrsvdSC5wFfYJfhrf0ivkEk5Jgj+lS1QlC40Xw7e0ixKILo6uiriQor02bFY4ngQHTnBLKgjNsB3K23MN80vd8V6DVZdFB+XWr8= kilia@nomos"
];
};
systemd.services.ppc = {
@@ -487,6 +490,7 @@ in {
{ name = "affine"; domain = "affine.ppc.social"; host = "ppc-hosting"; port = 8001; }
{ name = "gitea"; domain = "git.ppc.social"; host = "ppc-hosting"; port = 8002; }
{ name = "nico"; domain = "nico.ppc.social"; host = "192.168.1.14"; port = 18789; middlewares = [ "oidc-nico" ]; }
{ name = "ppc-matrix"; domain = "matrix.ppc.social"; host = "ppc-hosting"; port = 8004; }
#{ name = "spacetime"; domain = "spacetime.ppc.social"; host = "ppc-hosting"; port = 8005; extraRouterConfig = {
# rule = "Host(`spacetime.ppc.social`) && PathPrefix(`/v1/database`)";
# };

View File

@@ -9,6 +9,7 @@
# 9001 fwin vnc
# 9002 fwin rdp
# 9003 fwin ssh
# 61333 c2vi private matrix
/**
thanks: @melektron
@@ -60,8 +61,16 @@ in {
virtualisation.docker.enable = false;
virtualisation.podman.enable = true;
virtualisation.podman.dockerSocket.enable = true;
# https://github.com/containers/netavark/issues/274#issuecomment-4215665765
virtualisation.containers.containersConf.settings = {
network = {
network_backend = "netavark";
firewall_driver = "none";
};
};
users.extraUsers.me.extraGroups = ["podman"];
users.extraUsers.server.extraGroups = ["podman"];
virtualisation.arion = {

View File

@@ -43,9 +43,9 @@
#zed="WAYLAND_DISPLAY= zeditor";
npm="pnpm";
md="~/work/mize/md";
mize="~/work/mize/mize";
m="~/work/mize/mize";
md="~/here/mize/md";
mize="~/work/path-extra/mize";
m="~/work/path-extra/mize";
c2="~/work/c2-system/cli/target/debug/system-c2-cli";

120
screen-cast.py Normal file
View File

@@ -0,0 +1,120 @@
#!/usr/bin/python3
import re
import signal
import dbus
from gi.repository import GLib
from dbus.mainloop.glib import DBusGMainLoop
import gi
gi.require_version('Gst', '1.0')
from gi.repository import GObject, Gst
DBusGMainLoop(set_as_default=True)
Gst.init(None)
loop = GLib.MainLoop()
bus = dbus.SessionBus()
request_iface = 'org.freedesktop.portal.Request'
screen_cast_iface = 'org.freedesktop.portal.ScreenCast'
pipeline = None
def terminate():
if pipeline is not None:
self.player.set_state(Gst.State.NULL)
loop.quit()
request_token_counter = 0
session_token_counter = 0
sender_name = re.sub(r'\.', r'_', bus.get_unique_name()[1:])
def new_request_path():
global request_token_counter
request_token_counter = request_token_counter + 1
token = 'u%d'%request_token_counter
path = '/org/freedesktop/portal/desktop/request/%s/%s'%(sender_name, token)
return (path, token)
def new_session_path():
global session_token_counter
session_token_counter = session_token_counter + 1
token = 'u%d'%session_token_counter
path = '/org/freedesktop/portal/desktop/session/%s/%s'%(sender_name, token)
return (path, token)
def screen_cast_call(method, callback, *args, options={}):
(request_path, request_token) = new_request_path()
bus.add_signal_receiver(callback,
'Response',
request_iface,
'org.freedesktop.portal.Desktop',
request_path)
options['handle_token'] = request_token
method(*(args + (options, )),
dbus_interface=screen_cast_iface)
def on_gst_message(bus, message):
type = message.type
if type == Gst.MessageType.EOS or type == Gst.MessageType.ERROR:
terminate()
def play_pipewire_stream(node_id):
empty_dict = dbus.Dictionary(signature="sv")
fd_object = portal.OpenPipeWireRemote(session, empty_dict,
dbus_interface=screen_cast_iface)
fd = fd_object.take()
pipeline = Gst.parse_launch('pipewiresrc fd=%d path=%u ! videoconvert ! xvimagesink'%(fd, node_id))
pipeline.set_state(Gst.State.PLAYING)
pipeline.get_bus().connect('message', on_gst_message)
def on_start_response(response, results):
if response != 0:
print("Failed to start: %s"%response)
terminate()
return
print("streams:")
for (node_id, stream_properties) in results['streams']:
print("stream {}".format(node_id))
play_pipewire_stream(node_id)
def on_select_sources_response(response, results):
if response != 0:
print("Failed to select sources: %d"%response)
terminate()
return
print("sources selected")
global session
screen_cast_call(portal.Start, on_start_response,
session, '')
def on_create_session_response(response, results):
if response != 0:
print("Failed to create session: %d"%response)
terminate()
return
global session
session = results['session_handle']
print("session %s created"%session)
screen_cast_call(portal.SelectSources, on_select_sources_response,
session,
options={ 'multiple': False,
'types': dbus.UInt32(1|2) })
portal = bus.get_object('org.freedesktop.portal.Desktop',
'/org/freedesktop/portal/desktop')
(session_path, session_token) = new_session_path()
screen_cast_call(portal.CreateSession, on_create_session_response,
options={ 'session_handle_token': session_token })
try:
loop.run()
except KeyboardInterrupt:
terminate()

3
src/main.rs Normal file
View File

@@ -0,0 +1,3 @@
fn main() {
println!("Hello, world!");
}

View File

@@ -77,6 +77,7 @@
home.file = {
".config/zed".source = config.lib.file.mkOutOfStoreSymlink "${workDir}/config/zed";
".davfs2/secrets".source = config.lib.file.mkOutOfStoreSymlink "${secretsDir}/davfs2-secrets";
#".mozilla/firefox".source = config.lib.file.mkOutOfStoreSymlink "${persistentDir}/firefox";

View File

@@ -4,7 +4,7 @@
isNormalUser = true;
#passwordFile = "${secretsDir}/me-pwd";
password = "changeme";
extraGroups = [ "networkmanager" "wheel" "libvirtd" ]; # Enable sudo for the user.
extraGroups = [ "networkmanager" "wheel" "libvirtd" "plugdev" "video" "render" ];
};
home-manager.extraSpecialArgs = {

View File

@@ -4,7 +4,7 @@
isNormalUser = true;
#passwordFile = "${secretsDir}/me-pwd";
password = "changeme";
extraGroups = [ "networkmanager" "wheel" "libvirtd" "plugdev" ]; # Enable sudo for the user.
extraGroups = [ "networkmanager" "wheel" "libvirtd" "plugdev" "video" "render" ];
};
home-manager.extraSpecialArgs = {

View File

@@ -1,10 +1,10 @@
{ self, config, inputs, pkgs, ... }:
{ self, config, inputs, pkgs, secretsDir, ... }:
{
users.users.server = {
isNormalUser = true;
#passwordFile = "${secretsDir}/me-pwd";
passwordFile = "${secretsDir}/fusu-server-pwd";
group = "server";
password = "changeme";
#password = "changeme";
};
users.groups.server = {};
@@ -29,11 +29,6 @@
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAII/mCDzCBE2J1jGnEhhtttIRMKkXMi1pKCAEkxu+FAim me@main"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGw5kYmBQl8oolNg2VUlptvvSrFSESfeuWpsXRovny0x me@phone"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIKF/79W6y/g26xGGPHQJwLtrmaDUb24Hd5D+WD59nzE borgs@fusu"
"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDU8OZxpeEuwVYFQC1ZYOECfU8fVg0BhNIYk5tK6aNeUe4JBJezwBWIQLsxuo1YgUX1CwbP5IAAj0JyoYUzWT5H4Qyev6rj3JWvBl+kVTnJyiipRccasXD/3IuRK2GBpMcK67sUoHtgiq1kS8myuAtGh2dVeukCp196pCZC9VI0NiEmk2M6/pCiuKmaeaeyKEpkzd2wcdvqyXu3OKtq/qZyw+N8eLk8hC8wQK5lq/Syg8aZh7OV2jqe7CnRLnybybrVy3wRNI4DdoP51YEv+Q3eMlOpOdc7SGTyDPUMnTDNbBFL8u7o7xeLs/+v3neWOz/+rNkQbAoqEvN741lCozTcAxSTT8gnTOdrf+ClMFRpFMUkl3Z6JNymw0Zx2JFibhxQJWIKJq6Wh1YuDJXenIZka0sN5ut5W0KJMmCfzeyAXHy3qruYktbmUFz8iUm1ywbURZZNCmRlzESL2lE7iuTM06SxSYw4YxQHYIC4P6leMyN3hfrr4RUPtO8wJ1lALUs= kilix@epimetheus"
"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDrQUmZtpxDx669VjACdtLSLcIFZ5uJl4xsj49yJW6A39IglJ4S9ViPtp/kQhGZ3jJMCCFzwDLNNJBf8XfcAtio57cucUQxtRMnY57pKH284eucCanpCq8z9KgBYtrIdzYwRVQZo2tjxdAwKS5mHSOstUnqH8CzcG0kbq7k3s31MKQhzKWXx7lZEn3osQx/aIpt0eWB/SNAS4DWhx+mdGSqO2ryBqbZKaJuH90MEWyd5MKu25+h0ELbHrkkPYOwq0EnpGqvr0mps8AjEV4iExb28E+GGtS+R7yg2tw0QWM1m4PI4XF5JRAuLqt187YvgQe9DIKTuhu2BT/EN2Os7jx9r14Pq2P/IhrR0hVloSTn2/r3geUuFYNvYiL64dkZIRxBOlC3SKut/lB3cir0FPdDkxoIuRHICrsvdSC5wFfYJfhrf0ivkEk5Jgj+lS1QlC40Xw7e0ixKILo6uiriQor02bFY4ngQHTnBLKgjNsB3K23MN80vd8V6DVZdFB+XWr8= kilia@nomos"
];

29
zed/debug.json Normal file
View File

@@ -0,0 +1,29 @@
// Some example tasks for common languages.
//
// For more documentation on how to configure debug tasks,
// see: https://zed.dev/docs/debugger
[
{
"label": "Debug active Python file",
"adapter": "Debugpy",
"program": "$ZED_FILE",
"request": "launch",
"cwd": "$ZED_WORKTREE_ROOT",
},
{
"label": "Debug active JavaScript file",
"adapter": "JavaScript",
"program": "$ZED_FILE",
"request": "launch",
"cwd": "$ZED_WORKTREE_ROOT",
"type": "pwa-node",
},
{
"label": "JavaScript debug terminal",
"adapter": "JavaScript",
"request": "launch",
"cwd": "$ZED_WORKTREE_ROOT",
"console": "integratedTerminal",
"type": "pwa-node",
},
]

209
zed/keymap.json Normal file
View File

@@ -0,0 +1,209 @@
// Zed keymap
//
// For information on binding keys, see the Zed
// documentation: https://zed.dev/docs/key-bindings
//
// To see the default key bindings run `zed: open default keymap`
// from the command palette.
[
{
"bindings": {
"ctrl-f": "diagnostics::ToggleDiagnosticsRefresh",
"ctrl-e": "file_finder::Toggle",
"ctrl-p": "command_palette::Toggle",
"ctrl-k": "menu::SelectPrevious",
"ctrl-j": "menu::SelectNext",
"ctrl-tab": "pane::ActivateNextItem",
"ctrl-shift-tab": "pane::ActivatePreviousItem",
"ctrl-w": "pane::CloseActiveItem",
"ctrl-shift-w": "pane::ReopenClosedItem",
"ctrl-v": "editor::Paste",
"ctrl-c": "editor::Copy",
"ctrl-t": ["workspace::SendKeystrokes", "ctrl-# ctrl-e"],
"ctrl-shift-p": "pane::RevealInProjectPanel",
"ctrl-shift-a": "workspace::ToggleRightDock",
"ctrl-shift-t": "terminal_panel::Toggle",
// for send keystrokes
"ctrl-#": "pane::ActivateLastItem",
"ctrl-shift-#": "project_panel::Open",
"ctrl-shift-?": "workspace::ToggleLeftDock",
},
},
{
"context": "Editor",
"bindings": {
"ctrl-h": "outline::Toggle",
},
},
{
"context": "KeymapEditor",
"bindings": {
"ctrl-f": "keymap_editor::ToggleKeystrokeSearch",
},
},
{
"context": "ProjectPanel",
"bindings": {
//"l": "project_panel::Open",
"enter": ["workspace::SendKeystrokes", "ctrl-shift-# ctrl-shift-?"],
"ctrl-shift-p": "workspace::ToggleLeftDock",
//"a": "project_panel::UnfoldDirectory",
//"b": "project_panel:entry"
},
},
{
"context": "Editor && showing_completions",
"bindings": {
"ctrl-j": "editor::ContextMenuNext",
"ctrl-k": "editor::ContextMenuPrevious",
},
},
{
"context": "Workspace",
"bindings": {
//"ctrl-shift-tab": ["tab_switcher::Toggle", { "select_last": true }]
//"ctrl-shift-tab": ["tab_switcher::Toggle", { "select_last": true }]
},
},
{
"context": "Editor && vim_mode == insert",
"bindings": {
// "j k": "vim::NormalBefore"
},
},
{
"context": "vim_mode == insert",
"bindings": {
"ctrl-dead_acute ctrl-acute": "vim::InsertFromBelow",
},
},
{
"context": "(VimControl && !menu)",
"bindings": {
"ctrl-dead_acute ctrl-acute": "vim::LineDown",
},
},
{
"context": "showing_completions",
"bindings": {
"ctrl-dead_acute ctrl-acute": "vim::LineDown",
},
},
{
"context": "vim_mode == literal",
"bindings": {
"ctrl-dead_acute ctrl-acute": ["vim::Literal", ["ctrl-e", "\u0005"]],
},
},
{
"context": "Terminal",
"bindings": {
"ctrl-dead_acute ctrl-acute": ["terminal::SendKeystroke", "ctrl-e"],
"ctrl-j": ["terminal::SendKeystroke", "down"],
"ctrl-k": ["terminal::SendKeystroke", "up"],
"ctrl-h": ["terminal::SendKeystroke", "left"],
"ctrl-l": ["terminal::SendKeystroke", "right"],
"ctrl-t": "terminal_panel::ToggleFocus",
},
},
{
"context": "((os != macos && Editor) && edit_prediction_conflict)",
"bindings": {
//"ctrl-l": "editor::AcceptEditPrediction"
},
},
{
"context": "((os != macos && Editor) && edit_prediction_conflict)",
"bindings": {
"ctrl-i": "editor::AcceptEditPrediction",
},
},
{
"context": "(Editor && edit_prediction)",
"bindings": {
"ctrl-i": "editor::AcceptEditPrediction",
},
},
{
"context": "Editor",
"bindings": {
"ctrl-shift-b": "editor::ToggleBreakpoint",
},
},
{
"context": "vim_mode == visual",
"bindings": {
"#": [
"vim::MoveToNext",
{
"partial_word": true,
},
],
},
},
{
"context": "(VimControl && !menu)",
"bindings": {
"#": [
"vim::MoveToNext",
{
"partial_word": true,
},
],
},
},
{
"context": "(Diagnostics && Editor)",
"bindings": {},
},
{
"context": "(VimControl && !menu)",
"bindings": {
"g a": "editor::Hover"
}
},
{
"bindings": {
"ctrl-m ctrl-t": "pane::TogglePreviewTab"
}
},
{
"context": "Workspace",
"bindings": {
"ctrl-m ctrl-r": "task::Spawn"
}
},
{
"context": "(VimControl && !menu)",
"bindings": {
"j": [
"vim::Down",
{
"display_lines": true
}
]
}
},
{
"context": "(VimControl && !menu)",
"bindings": {
"k": [
"vim::Up",
{
"display_lines": true
}
]
}
},
{
"bindings": {
"ctrl-m ctrl-h": "editor::SwitchSourceHeader"
}
},
{
"bindings": {
"ctrl-m ctrl-s": "workspace::NewSearch"
}
}
]

182
zed/settings.json Normal file
View File

@@ -0,0 +1,182 @@
// Zed settings
//
// For information on how to configure Zed, see the Zed
// documentation: https://zed.dev/docs/configuring-zed
//
// To see all of Zed's default settings without changing your
// custom settings, run `zed: open default settings` from the
// command palette (cmd-shift-p / ctrl-shift-p)
{
"cli_default_open_behavior": "new_window",
"project_panel": {
"dock": "left"
},
"collaboration_panel": {
"dock": "left"
},
"git_panel": {
"dock": "left"
},
"ssh_connections": [
{
"host": "nico",
"args": [],
"projects": [
{
"paths": [
"/root/work/c2vi/a1-vibe"
]
},
{
"paths": [
"/root/work/mize"
]
}
]
},
{
"host": "nico",
"args": [],
"projects": []
},
{
"host": "nico",
"args": [],
"projects": []
}
],
"vim": {
"use_system_clipboard": "never"
},
"ui_font_weight": 250.0,
"agent_ui_font_size": 14.0,
"outline_panel": {
"dock": "left",
"button": true,
},
"file_scan_exclusions": ["/gitignore/**", "**/node_modules/**"],
"tab_size": 2,
"agent": {
"dock": "right",
"default_profile": "minimal",
"default_model": {
"provider": "perplexity",
"model": "sonar",
},
},
"language_models": {
"openai_compatible": {
"perplexity": {
"api_url": "https://api.perplexity.ai",
"available_models": [
{
"name": "sonar",
"display_name": null,
"max_tokens": 200000,
"max_output_tokens": 32000,
"max_completion_tokens": 200000,
"capabilities": {
"tools": false,
"images": false,
"parallel_tool_calls": false,
"prompt_cache_key": false,
},
},
],
},
},
},
"agent_servers": {
"your_agent": {
"type": "custom",
"command": "path_to_executable",
"args": [],
"env": {},
},
},
"vim_mode": true,
"ui_font_size": 16.0,
"buffer_font_size": 19.0,
"theme": {
"mode": "system",
"light": "Gruvbox Dark Hard",
"dark": "One Dark",
},
"toolbar": {
"breadcrumbs": false,
"code_actions": false,
"quick_actions": false,
"agent_review": false,
"selections_menu": false,
},
"title_bar": {
"show_user_menu": false,
"show_branch_name": false,
"show_onboarding_banner": false,
"show_project_items": false,
"show_sign_in": false,
"show_user_picture": false,
"show_menus": false,
},
"languages": {
"Nix": {
"enable_language_server": false,
"language_servers": ["nixd", "!nil"],
},
"C": {
"language_servers": ["clangd"],
},
},
"file_finder": {
"modal_max_width": "large",
},
"preview_tabs": {
"enable_preview_from_file_finder": true,
"enable_keep_preview_on_code_navigation": true,
},
"relative_line_numbers": "enabled",
"remove_trailing_whitespace_on_save": false,
"lsp": {
"clangd": {
"binary": {
"path": "/home/me/work/path-extra/clangd",
"arguments": [],
},
},
// https://github.com/zed-extensions/nix/tree/main?tab=readme-ov-file
"nixd": {
"settings": {
// see https://github.com/nix-community/nixd/blob/main/nixd/docs/configuration.md
// for what configuration is possible
"formatting": {
//"command": [ "nixpkgs-fmt" ],
//"command": [ "alejandra" ],
"command": ["nixfmt"],
},
"nixpkgs": {
"expr": "import <nixpkgs> { }",
},
"options": {
// If this is omitted, default search path (<nixpkgs>) will be used.
"nixos": {
// This name "nixos" could be arbitrary.
// The expression to eval, interpret it as option declarations.
"expr": "(builtins.getFlake \"/home/me/work/config\").nixosConfigurations._lsp_dummy.options",
},
// for home manager as nixos module we must get the suboptions
// https://discourse.nixos.org/t/nixd-home-manager-completion-and-standalone-home-manager-outputs/55610/2
"home-manager": {
// This name could be arbitrary.
"expr": "(builtins.getFlake \"/home/me/work/config\").nixosConfigurations._lsp_dummy.options.home-manager.users.type.getSubOptions []",
},
// By default there is no home-manager options completion, thus you can add this entry.
//"home-manager": {
// "expr": "(builtins.getFlake \"/home/melektron/goarnix\").homeConfigurations.\"lsp_dummy\".options"
//}
},
},
},
},
}

182
zed/settings_backup.json Normal file
View File

@@ -0,0 +1,182 @@
// Zed settings
//
// For information on how to configure Zed, see the Zed
// documentation: https://zed.dev/docs/configuring-zed
//
// To see all of Zed's default settings without changing your
// custom settings, run `zed: open default settings` from the
// command palette (cmd-shift-p / ctrl-shift-p)
{
"cli_default_open_behavior": "new_window",
"project_panel": {
"dock": "left"
},
"collaboration_panel": {
"dock": "left"
},
"git_panel": {
"dock": "left"
},
"ssh_connections": [
{
"host": "nico",
"args": [],
"projects": [
{
"paths": [
"/root/work/c2vi/a1-vibe"
]
},
{
"paths": [
"/root/work/mize"
]
}
]
},
{
"host": "nico",
"args": [],
"projects": []
},
{
"host": "nico",
"args": [],
"projects": []
}
],
"vim": {
"use_system_clipboard": "never"
},
"ui_font_weight": 250.0,
"agent_ui_font_size": 14.0,
"outline_panel": {
"dock": "left",
"button": true,
},
"file_scan_exclusions": ["/gitignore/**", "**/node_modules/**"],
"tab_size": 2,
"agent": {
"dock": "right",
"default_profile": "minimal",
"default_model": {
"provider": "perplexity",
"model": "sonar",
},
},
"language_models": {
"openai_compatible": {
"perplexity": {
"api_url": "https://api.perplexity.ai",
"available_models": [
{
"name": "sonar",
"display_name": null,
"max_tokens": 200000,
"max_output_tokens": 32000,
"max_completion_tokens": 200000,
"capabilities": {
"tools": false,
"images": false,
"parallel_tool_calls": false,
"prompt_cache_key": false,
},
},
],
},
},
},
"agent_servers": {
"your_agent": {
"type": "custom",
"command": "path_to_executable",
"args": [],
"env": {},
},
},
"vim_mode": true,
"ui_font_size": 16.0,
"buffer_font_size": 19.0,
"theme": {
"mode": "system",
"light": "Gruvbox Dark Hard",
"dark": "One Dark",
},
"toolbar": {
"breadcrumbs": false,
"code_actions": false,
"quick_actions": false,
"agent_review": false,
"selections_menu": false,
},
"title_bar": {
"show_user_menu": false,
"show_branch_name": false,
"show_onboarding_banner": false,
"show_project_items": false,
"show_sign_in": false,
"show_user_picture": false,
"show_branch_icon": false,
"show_menus": false,
},
"languages": {
"Nix": {
"language_servers": ["nixd", "!nil"],
},
"C": {
"language_servers": ["clangd"],
},
},
"file_finder": {
"modal_max_width": "large",
},
"preview_tabs": {
"enable_preview_from_file_finder": true,
"enable_keep_preview_on_code_navigation": true,
},
"relative_line_numbers": "enabled",
"remove_trailing_whitespace_on_save": false,
"lsp": {
"clangd": {
"binary": {
"path": "/home/me/work/path-extra/clangd",
"arguments": [],
},
},
// https://github.com/zed-extensions/nix/tree/main?tab=readme-ov-file
"nixd": {
"settings": {
// see https://github.com/nix-community/nixd/blob/main/nixd/docs/configuration.md
// for what configuration is possible
"formatting": {
//"command": [ "nixpkgs-fmt" ],
//"command": [ "alejandra" ],
"command": ["nixfmt"],
},
"nixpkgs": {
"expr": "import <nixpkgs> { }",
},
"options": {
// If this is omitted, default search path (<nixpkgs>) will be used.
"nixos": {
// This name "nixos" could be arbitrary.
// The expression to eval, interpret it as option declarations.
"expr": "(builtins.getFlake \"/home/me/work/config\").nixosConfigurations._lsp_dummy.options",
},
// for home manager as nixos module we must get the suboptions
// https://discourse.nixos.org/t/nixd-home-manager-completion-and-standalone-home-manager-outputs/55610/2
"home-manager": {
// This name could be arbitrary.
"expr": "(builtins.getFlake \"/home/me/work/config\").nixosConfigurations._lsp_dummy.options.home-manager.users.type.getSubOptions []",
},
// By default there is no home-manager options completion, thus you can add this entry.
//"home-manager": {
// "expr": "(builtins.getFlake \"/home/melektron/goarnix\").homeConfigurations.\"lsp_dummy\".options"
//}
},
},
},
},
}

54
zed/tasks.json Normal file
View File

@@ -0,0 +1,54 @@
// Project tasks configuration. See https://zed.dev/docs/tasks for documentation.
//
// Example:
[
{
"label": "Example task",
"command": "for i in {1..5}; do echo \"Hello $i/5\"; sleep 1; done",
//"args": [],
// Env overrides for the command, will be appended to the terminal's environment from the settings.
"env": { "foo": "bar" },
// Current working directory to spawn the command into, defaults to current project root.
//"cwd": "/path/to/working/directory",
// Whether to use a new terminal tab or reuse the existing one to spawn the process, defaults to `false`.
"use_new_terminal": false,
// Whether to allow multiple instances of the same task to be run, or rather wait for the existing ones to finish, defaults to `false`.
"allow_concurrent_runs": false,
// What to do with the terminal pane and tab, after the command was started:
// * `always` — always show the task's pane, and focus the corresponding tab in it (default)
// * `no_focus` — always show the task's pane, add the task's tab in it, but don't focus it
// * `never` — do not alter focus, but still add/reuse the task's tab in its pane
"reveal": "always",
// Where to place the task's terminal item after starting the task:
// * `dock` — in the terminal dock, "regular" terminal items' place (default)
// * `center` — in the central pane group, "main" editor area
"reveal_target": "dock",
// What to do with the terminal pane and tab, after the command had finished:
// * `never` — Do nothing when the command finishes (default)
// * `always` — always hide the terminal tab, hide the pane also if it was the last tab in it
// * `on_success` — hide the terminal tab on task success only, otherwise behaves similar to `always`
"hide": "never",
// Which shell to use when running a task inside the terminal.
// May take 3 values:
// 1. (default) Use the system's default terminal configuration in /etc/passwd
// "shell": "system"
// 2. A program:
// "shell": {
// "program": "sh"
// }
// 3. A program with arguments:
// "shell": {
// "with_arguments": {
// "program": "/bin/bash",
// "args": ["--login"]
// }
// }
"shell": "system",
// Whether to show the task line in the output of the spawned task, defaults to `true`.
"show_summary": true,
// Whether to show the command line in the output of the spawned task, defaults to `true`.
"show_command": true,
// Represents the tags for inline runnable indicators, or spawning multiple tasks at once.
// "tags": []
},
]