all recent config changes

This commit is contained in:
Sebastian Moser
2026-09-16 21:34:44 +00:00
parent 8898b126cd
commit 28986507c9
109 changed files with 10715 additions and 8859 deletions

View File

@@ -38,6 +38,7 @@ in {
options v4l2loopback devices=1 video_nr=1 card_label="OBS Cam" exclusive_caps=1 kvm_intel nested=1
'';
security.polkit.enable = true;
programs.obs-studio.enableVirtualCamera = true;
#services.pid-fan-controller.enable = true;
@@ -220,7 +221,8 @@ in {
newerUnstableSrc = builtins.getFlake "nixpkgs/d0fc30899600b9b3466ddb260fd83deb486c32f1";
newerUnstable = import newerUnstableSrc.outPath {};
mySway = newerUnstable.sway.override {
mySway = newerUnstable.sway;
myOtherSway = newerUnstable.sway.override {
sway-unwrapped = (newerUnstable.sway-unwrapped.overrideAttrs (prev: {
/*
src = pkgs.fetchFromGitHub {

108
hosts/main/alacritty.toml Normal file
View File

@@ -0,0 +1,108 @@
[colors.bright]
black = "#6272a4"
blue = "#d6acff"
cyan = "#a4ffff"
green = "#69ff94"
magenta = "#ff92df"
red = "#ff6e6e"
white = "#ffffff"
yellow = "#ffffa5"
[colors.cursor]
cursor = "CellForeground"
text = "CellBackground"
[colors.footer_bar]
background = "#282a36"
foreground = "#f8f8f2"
[colors.hints.end]
background = "#282a36"
foreground = "#f1fa8c"
[colors.hints.start]
background = "#f1fa8c"
foreground = "#282a36"
[colors.line_indicator]
background = "None"
foreground = "None"
[colors.normal]
black = "#21222c"
blue = "#bd93f9"
cyan = "#8be9fd"
green = "#50fa7b"
magenta = "#ff79c6"
red = "#ff5555"
white = "#f8f8f2"
yellow = "#f1fa8c"
[colors.primary]
background = "#282a36"
bright_foreground = "#ffffff"
foreground = "#f8f8f2"
[colors.search.focused_match]
background = "#ffb86c"
foreground = "#44475a"
[colors.search.matches]
background = "#50fa7b"
foreground = "#44475a"
[colors.selection]
background = "#44475a"
text = "CellForeground"
[colors.vi_mode_cursor]
cursor = "CellForeground"
text = "CellBackground"
[font]
size = 22
#[font.bold]
#family = "Hack"
#style = "Bold"
#[font.bold_italic]
#family = "Hack"
#style = "Bold Italic"
#[font.italic]
#family = "Hack"
#style = "Italic"
#[font.normal]
#family = "Hack"
#style = "Regular"
[[keyboard.bindings]]
action = "Paste"
key = "V"
mods = "Control|Shift"
[[keyboard.bindings]]
action = "Copy"
key = "C"
mods = "Control|Shift"
[[keyboard.bindings]]
chars = "\u001b\u005b\u0042"
key = "J"
mods = "Control"
[[keyboard.bindings]]
chars = "\u001b\u005b\u0041"
key = "K"
mods = "Control"
[[keyboard.bindings]]
chars = "\u001b\u005b\u0044"
key = "H"
mods = "Control"
[[keyboard.bindings]]
chars = "\u001b\u005b\u0043"
key = "L"
mods = "Control"

100
hosts/main/bashrc Normal file
View File

@@ -0,0 +1,100 @@
export CONFIG_DIR=/home/me/work/config
export DATA_DIR=/home/me/work/app-data
export HERE_DIR=/home/me/here
export LOG_DIR=/tmp/mlog
export SVDIR=$CONFIG_DIR/hosts/main/services
export BASH_ENV=$CONFIG_DIR/hosts/main/bashrc
export HOSTNAME=main
mkdir -p $LOG_DIR
# arch path
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
export PATH=$PATH:$HOME/.nix-profile/bin:/nix/var/nix/profiles/default/bin # nix path
# main stuff
export PATH=$CONFIG_DIR/hosts/main/bin:$PATH
export SECRETS_DIR=/home/me/secrets
# nix lock
export NIXPKGS_REV=04e1ec9c5dbf94ab78b6b755b5ec28c1d6dd5392 # nix eval ${CONFIG_DIR}#inputs.nixpkgs.rev
export NIXPKGS_UNSTABLE_REV=ac6b2166e7a9375683b8e98f860f273222337b16 # nix eval ${CONFIG_DIR}#inputs.nixpkgs.rev
export NIX_PATH=nixpkgs=/nix/store/jpf38g508p4njqzbfkvdfjj7v3s795k9-source # nix flake prefetch nixpkgs/$(nix eval $CONFIG_DIR#inputs.nixpkgs.rev --raw) --json | jq '.storePath' -r
# bin paths
if [ -d /run/current-system ]; then # in case of nixos
export BIN_ZED=~/work/path-extra/zed
else
export BIN_ZED=/usr/sbin/zeditor
fi
## #### detect distro
detect_distro() {
local -n reply_distro=$1
local line key value
reply_distro="unknown"
# Read file line by line without spawning external commands
if [[ -f /etc/os-release ]]; then
while IFS='=' read -r key value; do
# Clean up the key name
key="${key##*([[:space:]])}"
key="${key%%*([[:space:]])}"
if [[ "$key" == "ID" ]]; then
# Strip potential surrounding quotes from the value
value="${value#\"}"
value="${value%\"}"
value="${value#\'}"
value="${value%\'}"
reply_distro="$value"
return 0
fi
done < /etc/os-release
fi
}
# get_config
function get_config() {
if [[ "$2" == "" ]]; then
local -n reply_config=OUT
else
local -n reply_config=$2
fi
declare -A myconfig
detect_distro DISTRO
myconfig["hyprland.bin"]="~/work/src/hyprland/build/Hyprland"
myconfig["prismlauncher.bin"]="/usr/sbin/prismlauncher"
myconfig["hyprland.configFile"]="$CONFIG_DIR/hosts/main/hyprland.lua"
myconfig["steam.homeDir"]="$HERE_DIR/steam-home"
myconfig["steam.bin"]="/home/me/.nix-profile/bin/steam"
myconfig["git.bin"]="/bin/git"
myconfig["ssh.bin"]="/bin/ssh"
myconfig["mize.configFile"]="$CONFIG_DIR/hosts/main/"
myconfig["mize.secretsFile"]="~/secrets/mize-config.toml"
# nixos case
if [[ "$DISTRO" == "nixos" ]]; then
myconfig["zed.bin"]="~/work/path-extra/zed"
fi
# arch case
if [[ "$DISTRO" == "arch" ]]; then
myconfig["zed.bin"]="/usr/sbin/zeditor"
fi
reply_config=${myconfig["$1"]}
}
# auto start hyprland in tty
if [[ $TERM == "linux" ]]; then
sudo loadkeys de
fi
if [[ $- == *i* ]]; then
source $CONFIG_DIR/mods/bashrc-common
fi

3
hosts/main/bin/alacritty Executable file
View File

@@ -0,0 +1,3 @@
#!/bin/sh
exec /usr/sbin/alacritty --config-file $CONFIG_DIR/hosts/main/alacritty.toml

7
hosts/main/bin/config-zed Executable file
View File

@@ -0,0 +1,7 @@
#!/bin/sh
#export RA_LOG_FILE="/home/me/rust-analyzer.log"
export XDG_DATA_HOME=~/work/app-data/config-zed
export WAYLAND_DISPLAY=
sudo renice -n -5 -p $$
exec $BIN_ZED ~/work/config ~/work/things
#zed "$@"

3
hosts/main/bin/dms Executable file
View File

@@ -0,0 +1,3 @@
#!/bin/sh
/usr/bin/dms -c /home/me/work/config/hosts/main/ "$@"

8
hosts/main/bin/elephant Executable file
View File

@@ -0,0 +1,8 @@
#!/bin/sh
if [[ -v IS_RUNIT ]]; then
exec 2>$LOG_DIR/elephant
exec 1>$LOG_DIR/elephant
fi
exec /usr/sbin/elephant -c $CONFIG_DIR/hosts/main/elephant "$@"

5
hosts/main/bin/git Executable file
View File

@@ -0,0 +1,5 @@
#!/bin/bash
export GIT_CONFIG_GLOBAL=$CONFIG_DIR/hosts/main/git_config
get_config git.bin BIN
exec $BIN "$@"

19
hosts/main/bin/hyprland Executable file
View File

@@ -0,0 +1,19 @@
#!/bin/bash
if [[ -v IS_RUNIT ]]; then
exec 2>$LOG_DIR/hyprland
exec 1>$LOG_DIR/hyprland
sudo renice -n -10 -p $$
fi
export XDG_CURRENT_DESKTOP=hyprland
export XDG_SESSION_TYPE=wayland
export XDG_SESSION_DESKTOP=hyprland
systemctl --user import-environment XDG_CURRENT_DESKTOP XDG_SESSION_TYPE XDG_SESSION_DESKTOP PATH
dbus-update-activation-environment --systemd XDG_CURRENT_DESKTOP XDG_SESSION_TYPE XDG_SESSION_DESKTOP PATH
get_config hyprland.bin BIN
get_config hyprland.configFile CONFIG
exec $BIN --config $CONFIG "$@"

3
hosts/main/bin/lan-mouse Executable file
View File

@@ -0,0 +1,3 @@
#!/bin/sh
exec $HOME/.nix-profile/bin/lan-mouse --config $CONFIG_DIR/hosts/main/lan-mouse.toml "$@"

10
hosts/main/bin/mize Executable file
View File

@@ -0,0 +1,10 @@
#!/bin/bash
if [[ -v IS_RUNIT ]]; then
exec 2>$LOG_DIR/mize
exec 1>$LOG_DIR/mize
exec /home/me/work/config/mize/target/debug/mize --config $CONFIG_DIR/hosts/main/mize.toml --secrets $SECRETS_DIR/mize-secrets.toml run
exit 0
fi
exec /home/me/work/config/mize/target/debug/mize --config $CONFIG_DIR/hosts/main/mize.toml --secrets $SECRETS_DIR/mize-secrets.toml "$@"

4
hosts/main/bin/msession Executable file
View File

@@ -0,0 +1,4 @@
#!/bin/sh
export IS_RUNIT=1
exec runsvdir $CONFIG_DIR/hosts/main/services

3
hosts/main/bin/nix Executable file
View File

@@ -0,0 +1,3 @@
#!/bin/sh
exec /nix/var/nix/profiles/default/bin/nix --option experimental-features "nix-command flakes" "$@" --option flake-registry $CONFIG_DIR/hosts/main/flake-registry.json

3
hosts/main/bin/nwg-displays Executable file
View File

@@ -0,0 +1,3 @@
#!/bin/sh
exec /usr/sbin/nwg-displays -m $CONFIG_DIR/hosts/main/hypr-monitors.lua

3
hosts/main/bin/pacman Executable file
View File

@@ -0,0 +1,3 @@
#!/bin/sh
exec sudo /usr/sbin/pacman "$@"

4
hosts/main/bin/prismlauncher Executable file
View File

@@ -0,0 +1,4 @@
#!/bin/bash
get_config prismlauncher.bin BIN
exec nixGL $BIN -d ~/work/app-data/prism-launcher "$@"

3
hosts/main/bin/scp Executable file
View File

@@ -0,0 +1,3 @@
#!/bin/bash
exec /bin/scp -F $CONFIG_DIR/hosts/main/ssh_config "$@"

4
hosts/main/bin/ssh Executable file
View File

@@ -0,0 +1,4 @@
#!/bin/bash
get_config ssh.bin BIN
exec $BIN -F $CONFIG_DIR/hosts/main/ssh_config "$@"

7
hosts/main/bin/steam Executable file
View File

@@ -0,0 +1,7 @@
#!/bin/bash
get_config steam.homeDir HOME
export HOME
get_config steam.bin BIN
exec $BIN

1
hosts/main/bin/wireshark Symbolic link
View File

@@ -0,0 +1 @@
../../../apps/wireshark

24
hosts/main/bin/zmk Executable file
View File

@@ -0,0 +1,24 @@
#!/bin/bash
export ZMK_CLI_CONFIG=$CONFIG_DIR/hosts/main/zmk-config
if [[ "$1" == "docker" ]] || [[ "$1" == "d" ]];
then
if [ ! $(docker ps -a -q -f name=my-zmk-builder) ]; then
docker build -t my-zmk-builder $CONFIG_DIR/zmk-config
fi
docker run -v $CONFIG_DIR:/config -it --rm my-zmk-builder
# build cmd: west build -- -DBOARD=nice_nano_v2 -DSHIELD=charybdis_left -DZMK_CONFIG=/config/zmk-config/config/ -DZMK_EXTRA_MODULES=/config/zmk-config
exit 0
fi
if [[ "$1" == "flash" ]] || [[ "$1" == "f" ]];
then
if [ ! $(docker ps -a -q -f name=my-zmk-builder) ]; then
docker build -t my-zmk-builder $CONFIG_DIR/zmk-config
fi
docker run -v $CONFIG_DIR:/config --workdir /config/src/zmk/app -it --rm my-zmk-builder --entrypoint /bin/bash -c 'west build -- -DBOARD=nice_nano_v2 -DSHIELD=charybdis_left -DZMK_CONFIG=/config/zmk-config/config/ -DZMK_EXTRA_MODULES=/config/zmk-config'
exit 0
fi
exec /home/me/work/src/zmk-cli/.venv/bin/zmk "$@"

View File

@@ -0,0 +1 @@
[{"socket":"/path/to/bw.socket","contents":[],"aliases":["default"]}]

View File

@@ -48,10 +48,57 @@
documentation.enable = true;
documentation.man.enable = true;
fileSystems."/home/me/nico" = {
device = "100.88.28.123:/data/incus/default-pool/containers/nico/rootfs/root/work/";
fsType = "nfs";
options = [ "x-systemd.automount" "noauto" "x-systemd.idle-timeout=600" ];
#fileSystems."/home/me/nico" = {
#device = "100.88.28.123:/data/incus/default-pool/containers/nico/rootfs/root/work/";
#fsType = "nfs";
#options = [ "x-systemd.automount" "noauto" "x-systemd.idle-timeout=600" "nofail" ];
#};
fileSystems."/" = {
device = "/dev/disk/by-label/main-root";
fsType = "btrfs";
options = [ "subvol=nixos" ];
};
fileSystems."/nix" = {
device = "/dev/disk/by-label/main-root";
fsType = "btrfs";
options = [ "subvol=nix" ];
};
fileSystems."/home/me/work" = {
device = "/dev/disk/by-label/main-root";
fsType = "btrfs";
options = [ "subvol=work" ];
};
fileSystems."/home/me/secrets" = {
device = "/dev/disk/by-label/main-root";
fsType = "btrfs";
options = [ "subvol=secrets" ];
};
fileSystems."/cachy" = {
device = "/dev/disk/by-label/main-root";
fsType = "btrfs";
options = [ "subvol=cachy" ];
};
fileSystems."/swap" = {
device = "/dev/disk/by-label/main-root";
fsType = "btrfs";
options = [ "subvol=swap" ];
};
fileSystems."/boot" = {
device = "/dev/disk/by-label/MAIN-BOOT";
fsType = "vfat";
};
boot.loader.grub = {
enable = true;
#default = "cachy";
extraEntries = ''
menuentry 'cachy' {
linux /vmlinuz-linux rootflags=subvol=cachy rw rd.luks.name=f93d0e0c-c620-4d39-bd6a-a7c0c90fb850=root root=/dev/mapper/root systemd.setenv=SYSTEMD_SULOGIN_FORCE=1
initrd /initramfs-linux.img
}
'';
};
@@ -177,6 +224,7 @@ fileSystems."/home/me/nico" = {
/*
home-manager.users.me.programs.lan-mouse = {
enable = true;
settings = {
@@ -194,6 +242,7 @@ fileSystems."/home/me/nico" = {
};
};
home-manager.users.me.systemd.user.services.lan-mouse.Service.Environment = "PATH=/bin";
*/
@@ -247,18 +296,18 @@ fileSystems."/home/me/nico" = {
imports = [
../common/all.nix
../common/nixos-headless.nix
../../common/all.nix
../../common/nixos-headless.nix
#../common/nixos-graphical.nix
../common/nixos-wayland.nix
../common/building.nix
../common/nixos.nix
../mods/battery_monitor.nix
../../common/nixos-wayland.nix
../../common/building.nix
../../common/nixos.nix
../../mods/battery_monitor.nix
inputs.networkmanager.nixosModules.networkmanager
inputs.home-manager.nixosModules.home-manager
../users/me/gui.nix
../users/root/default.nix
../../users/me/gui.nix
../../users/root/default.nix
# see: https://github.com/NixOS/nixpkgs/issues/300081
#"${inputs.nixpkgs-unstable}/nixos/modules/virtualisation/incus.nix"
@@ -298,7 +347,7 @@ fileSystems."/home/me/nico" = {
((builtins.getFlake "nixpkgs/96bc8fec15133d6056410ed3abae2fb9419fb545").legacyPackages.${system}.affine.overrideAttrs {
patches = [
../overlays/patches/affin-edgeless-right-click-drag.patch
../../overlays/patches/affin-edgeless-right-click-drag.patch
];
})

View File

@@ -0,0 +1,9 @@
auto_detect_launch_prefix = true
before_load = []
git_on_demand = true
ignored_providers = []
launch_prefix = ''
overload_local_env = false
terminal_cmd = ''
[provider_hosts]

View File

@@ -0,0 +1,10 @@
explicits = []
generic_text = 'run: '
history = true
history_when_empty = false
[Config]
hide_from_providerlist = false
icon = 'utilities-terminal'
min_score = 50
name_pretty = ''

View File

@@ -0,0 +1,519 @@
{
"flakes": [
{
"from": {
"id": "agda",
"type": "indirect"
},
"to": {
"owner": "agda",
"repo": "agda",
"type": "github"
}
},
{
"from": {
"id": "agenix",
"type": "indirect"
},
"to": {
"owner": "ryantm",
"repo": "agenix",
"type": "github"
}
},
{
"from": {
"id": "arion",
"type": "indirect"
},
"to": {
"owner": "hercules-ci",
"repo": "arion",
"type": "github"
}
},
{
"from": {
"id": "blender-bin",
"type": "indirect"
},
"to": {
"dir": "blender",
"owner": "edolstra",
"repo": "nix-warez",
"type": "github"
}
},
{
"from": {
"id": "bundlers",
"type": "indirect"
},
"to": {
"owner": "NixOS",
"repo": "bundlers",
"type": "github"
}
},
{
"from": {
"id": "cachix",
"type": "indirect"
},
"to": {
"owner": "cachix",
"repo": "cachix",
"type": "github"
}
},
{
"from": {
"id": "composable",
"type": "indirect"
},
"to": {
"owner": "ComposableFi",
"repo": "composable",
"type": "github"
}
},
{
"from": {
"id": "disko",
"type": "indirect"
},
"to": {
"owner": "nix-community",
"repo": "disko",
"type": "github"
}
},
{
"from": {
"id": "dreampkgs",
"type": "indirect"
},
"to": {
"owner": "nix-community",
"repo": "dreampkgs",
"type": "github"
}
},
{
"from": {
"id": "dwarffs",
"type": "indirect"
},
"to": {
"owner": "edolstra",
"repo": "dwarffs",
"type": "github"
}
},
{
"from": {
"id": "emacs-overlay",
"type": "indirect"
},
"to": {
"owner": "nix-community",
"repo": "emacs-overlay",
"type": "github"
}
},
{
"from": {
"id": "fenix",
"type": "indirect"
},
"to": {
"owner": "nix-community",
"repo": "fenix",
"type": "github"
}
},
{
"from": {
"id": "flake-parts",
"type": "indirect"
},
"to": {
"owner": "hercules-ci",
"repo": "flake-parts",
"type": "github"
}
},
{
"from": {
"id": "flake-utils",
"type": "indirect"
},
"to": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
{
"from": {
"id": "helix",
"type": "indirect"
},
"to": {
"owner": "helix-editor",
"repo": "helix",
"type": "github"
}
},
{
"from": {
"id": "hercules-ci-agent",
"type": "indirect"
},
"to": {
"owner": "hercules-ci",
"repo": "hercules-ci-agent",
"type": "github"
}
},
{
"from": {
"id": "hercules-ci-effects",
"type": "indirect"
},
"to": {
"owner": "hercules-ci",
"repo": "hercules-ci-effects",
"type": "github"
}
},
{
"from": {
"id": "home-manager",
"type": "indirect"
},
"to": {
"owner": "nix-community",
"repo": "home-manager",
"type": "github"
}
},
{
"from": {
"id": "hydra",
"type": "indirect"
},
"to": {
"owner": "NixOS",
"repo": "hydra",
"type": "github"
}
},
{
"from": {
"id": "mach-nix",
"type": "indirect"
},
"to": {
"owner": "DavHau",
"repo": "mach-nix",
"type": "github"
}
},
{
"from": {
"id": "ngipkgs",
"type": "indirect"
},
"to": {
"owner": "ngi-nix",
"repo": "ngipkgs",
"type": "github"
}
},
{
"from": {
"id": "nickel",
"type": "indirect"
},
"to": {
"owner": "tweag",
"repo": "nickel",
"type": "github"
}
},
{
"from": {
"id": "nix",
"type": "indirect"
},
"to": {
"owner": "NixOS",
"repo": "nix",
"type": "github"
}
},
{
"from": {
"id": "nix-darwin",
"type": "indirect"
},
"to": {
"owner": "nix-darwin",
"repo": "nix-darwin",
"type": "github"
}
},
{
"from": {
"id": "nix-serve",
"type": "indirect"
},
"to": {
"owner": "edolstra",
"repo": "nix-serve",
"type": "github"
}
},
{
"from": {
"id": "nixops",
"type": "indirect"
},
"to": {
"owner": "NixOS",
"repo": "nixops",
"type": "github"
}
},
{
"from": {
"id": "nixos-anywhere",
"type": "indirect"
},
"to": {
"owner": "nix-community",
"repo": "nixos-anywhere",
"type": "github"
}
},
{
"from": {
"id": "nixos-hardware",
"type": "indirect"
},
"to": {
"owner": "NixOS",
"repo": "nixos-hardware",
"type": "github"
}
},
{
"from": {
"id": "nixos-homepage",
"type": "indirect"
},
"to": {
"owner": "NixOS",
"repo": "nixos-homepage",
"type": "github"
}
},
{
"from": {
"id": "nixos-search",
"type": "indirect"
},
"to": {
"owner": "NixOS",
"repo": "nixos-search",
"type": "github"
}
},
{
"from": {
"id": "nixpkgs",
"type": "indirect"
},
"exact": true,
"to": {
"type": "tarball",
"url": "https://channels.nixos.org/nixpkgs-unstable/nixexprs.tar.xz"
}
},
{
"from": {
"id": "nixpkgs",
"type": "indirect",
"ref": "nixpkgs-unstable"
},
"exact": true,
"to": {
"type": "tarball",
"url": "https://channels.nixos.org/nixpkgs-unstable/nixexprs.tar.xz"
}
},
{
"from": {
"id": "nixpkgs",
"type": "indirect",
"ref": "nixos-unstable"
},
"exact": true,
"to": {
"type": "tarball",
"url": "https://channels.nixos.org/nixos-unstable/nixexprs.tar.xz"
}
},
{
"from": {
"id": "nixpkgs",
"type": "indirect",
"ref": "nixos-unstable-small"
},
"exact": true,
"to": {
"type": "tarball",
"url": "https://channels.nixos.org/nixos-unstable-small/nixexprs.tar.xz"
}
},
{
"from": {
"id": "nixpkgs",
"type": "indirect",
"ref": "nixos-26.05"
},
"exact": true,
"to": {
"type": "tarball",
"url": "https://channels.nixos.org/nixos-26.05/nixexprs.tar.xz"
}
},
{
"from": {
"id": "nixpkgs",
"type": "indirect",
"ref": "nixos-26.05-small"
},
"exact": true,
"to": {
"type": "tarball",
"url": "https://channels.nixos.org/nixos-26.05-small/nixexprs.tar.xz"
}
},
{
"from": {
"id": "nixpkgs",
"type": "indirect",
"ref": "nixpkgs-26.05-darwin"
},
"exact": true,
"to": {
"type": "tarball",
"url": "https://channels.nixos.org/nixpkgs-26.05-darwin/nixexprs.tar.xz"
}
},
{
"from": {
"id": "nixpkgs",
"type": "indirect"
},
"to": {
"owner": "NixOS",
"ref": "nixpkgs-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
{
"from": {
"id": "nixvim",
"type": "indirect"
},
"to": {
"owner": "nix-community",
"repo": "nixvim",
"type": "github"
}
},
{
"from": {
"id": "nur",
"type": "indirect"
},
"to": {
"owner": "nix-community",
"repo": "NUR",
"type": "github"
}
},
{
"from": {
"id": "patchelf",
"type": "indirect"
},
"to": {
"owner": "NixOS",
"repo": "patchelf",
"type": "github"
}
},
{
"from": {
"id": "poetry2nix",
"type": "indirect"
},
"to": {
"owner": "nix-community",
"repo": "poetry2nix",
"type": "github"
}
},
{
"from": {
"id": "pridefetch",
"type": "indirect"
},
"to": {
"owner": "SpyHoodle",
"repo": "pridefetch",
"type": "github"
}
},
{
"from": {
"id": "sops-nix",
"type": "indirect"
},
"to": {
"owner": "Mic92",
"repo": "sops-nix",
"type": "github"
}
},
{
"from": {
"id": "systems",
"type": "indirect"
},
"to": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
{
"from": {
"id": "templates",
"type": "indirect"
},
"to": {
"owner": "NixOS",
"repo": "templates",
"type": "github"
}
}
],
"version": 2
}

20
hosts/main/git_config Normal file
View File

@@ -0,0 +1,20 @@
[core]
editor = "nvim"
pager = "delta"
[core "color"]
ui = true
[credential]
credentialStore = "cache"
helper = "manager"
[gpg]
format = "openpgp"
[gpg "openpgp"]
program = "gpg"
[user]
email = "me@c2vi.dev"
name = "Sebastian Moser"

18
hosts/main/hosts Normal file
View File

@@ -0,0 +1,18 @@
127.0.0.1 localhost
192.168.3.1 gw.c2vi.dev
192.168.0.3 gw
192.168.0.3 gw.c2vi.dev
# netbird
100.88.137.49 te
100.93.225.52 fasu
100.88.42.194 fwin
100.88.28.123 fe
100.88.79.207 fusu
100.88.79.207 files
100.88.164.39 lush
100.88.112.181 mac
100.88.116.225 nico
100.88.245.227 phone
100.88.69.32 ti

View File

@@ -0,0 +1,3 @@
# Generated by nwg-displays on 2026-08-28 at 16:00:58. Do not edit manually.
monitor=eDP-1,1920x1080@60.0,0x0,0.9999999999999997

243
hosts/main/hyprland.lua Normal file
View File

@@ -0,0 +1,243 @@
--#### vars
local mod = "SUPER"
--### idk
--hl.bind(mod .. "+p", hl.dsp.exec_cmd("nc -U /run/user/1000/walker/walker.sock"))
hl.bind(mod .. "+p", hl.dsp.exec_cmd("rofi -show run"))
hl.bind(mod .. "+space", hl.dsp.window.fullscreen_state({ internal=2, client=0, action="toggle", layout_aware=false, }))
hl.bind(mod .. "+SHIFT+c", hl.dsp.window.close())
hl.bind(mod .. "+ SHIFT + Return", hl.dsp.exec_cmd("alacritty"))
hl.config({
dwindle = {
preserve_split = true,
},
misc = {
},
input = {
touchpad = {
tap_to_click = false,
disable_while_typing = true, -- Highly recommended to prevent palm jumps
}
}
})
hl.config({
general = {
layout = "dwindle",
border_size = 2,
gaps_in = 0,
gaps_out = 0,
col = {
active_border = { colors = {"rgba(33ccffee)", "rgba(00ff99ee)"}, angle = 45 },
inactive_border = "rgba(595959aa)",
},
},
decoration = {
-- Change transparency of focused and unfocused windows
active_opacity = 1.0,
inactive_opacity = 1.0,
},
})
--#### focus movement
-- refullscreens window when the old window was fullscreen
hl.on("window.active", function (new_window, reason)
if REDO_FULLSCREEN then
REDO_FULLSCREEN = false
hl.dispatch(hl.dsp.window.fullscreen_state({ action="set", internal=2, client=0 }))
end
end)
function my_move_focus(direction)
return function()
local window = hl.get_active_window()
if window == nil then return end
REDO_FULLSCREEN = window.fullscreen ~= 0
if REDO_FULLSCREEN then
hl.dispatch(hl.dsp.window.fullscreen_state({ action="unset", internal=2, client=0 }))
end
return hl.dispatch(hl.dsp.focus({ direction = direction }))
end
end
hl.bind(mod .. " + h", my_move_focus("left"))
hl.bind(mod .. " + l", my_move_focus("right"))
hl.bind(mod .. " + j", my_move_focus("down"))
hl.bind(mod .. " + k", my_move_focus("up"))
--#### brightnes controls
hl.bind("F1", hl.dsp.exec_cmd("brightnessctl set 5%-"), { repeating = true })
hl.bind("F2", hl.dsp.exec_cmd("brightnessctl set +5%"), { repeating = true })
--#### volume controls
hl.bind("F3", hl.dsp.exec_cmd("wpctl set-volume @DEFAULT_AUDIO_SINK@ 2%-"), { repeating = true })
hl.bind("F4", hl.dsp.exec_cmd("wpctl set-volume @DEFAULT_AUDIO_SINK@ 2%+ -l 1.0"), { repeating = true })
--#### playback controls
hl.bind("F5", hl.dsp.exec_cmd("playerctl previous"), { locked = true })
hl.bind("F6", hl.dsp.exec_cmd("playerctl play-pause"), { locked = true })
hl.bind("F7", hl.dsp.exec_cmd("playerctl next"), { locked = true })
--#### disable background
hl.config({
misc = {
force_default_wallpaper = 0,
disable_hyprland_logo = false,
disable_splash_rendering = true,
},
})
--#### workspaces
-- Workspaces (1,7,8,9,0)
--for _, i in ipairs({1, 7, 8, 9, 0}) do
for _, i in ipairs({1,2, 3, 4, 5, 6, 7, 8, 9, 0}) do
hl.bind(mod .. "+" .. tostring(i), hl.dsp.focus({ workspace = i, }))
hl.bind(mod .. "+SHIFT+" .. tostring(i), hl.dsp.window.move({ workspace = i, }))
end
hl.workspace_rule({ workspace = "0", monitor = "eDP-1"})
--hl.workspace_rule({ workspace = "1", monitor = "eDP-1"})
hl.workspace_rule({ workspace = "1", monitor = "HDMI-A-1"})
hl.workspace_rule({ workspace = "7", monitor = "eDP-1", default = true, layout = "scrolling"})
hl.workspace_rule({ workspace = "9", monitor = "DP-1"})
hl.workspace_rule({ workspace = "2", monitor = "DP-1", default = true})
hl.workspace_rule({ workspace = "3", monitor = "DP-1"})
hl.workspace_rule({ workspace = "4", monitor = "DP-1"})
hl.workspace_rule({ workspace = "5", monitor = "DP-1"})
hl.workspace_rule({ workspace = "6", monitor = "DP-1"})
hl.workspace_rule({ workspace = "8", monitor = "DP-1"})
hl.workspace_rule({ workspace = "2", monitor = "HDMI-A-1", default = true})
hl.workspace_rule({ workspace = "3", monitor = "HDMI-A-1"})
hl.workspace_rule({ workspace = "4", monitor = "HDMI-A-1"})
hl.workspace_rule({ workspace = "5", monitor = "HDMI-A-1"})
hl.workspace_rule({ workspace = "6", monitor = "HDMI-A-1"})
hl.workspace_rule({ workspace = "8", monitor = "HDMI-A-1"})
hl.workspace_rule({
workspace = "7",
layout = "scrolling",
layout_opts = {
direction = "down",
fullscreen_on_one_column = true,
column_width = 1,
},
})
hl.config({
scrolling = {
column_width = 1;
fullscreen_on_one_column = true,
},
binds = {
movefocus_cycles_fullscreen = false,
},
misc = {
on_focus_under_fullscreen = 1,
},
render = {
direct_scanout = false,
},
})
-- Workrooms (2–6 on d, m, a, b, c)
--[[
local workrooms = {"d", "m", "a", "b", "c"}
for _, prefix in ipairs(workrooms) do
for i = 2, 6 do
local ws = prefix .. tostring(i)
hl.bind(mod .. "+" .. tostring(i), function()
hl.dsp.workspace.change_id(ws)
end)
hl.bind(mod .. "+SHIFT+" .. tostring(i), function()
hl.dsp.window.move(ws)
end)
end
end
]]
--#### keyboard layout
hl.config({ input = {
kb_layout = "de",
}})
--#### keyboard repeat
hl.config({ input = {
repeat_delay = 130,
repeat_rate = 90,
}})
--#### disable all animations
hl.config({
animations = {
enabled = false,
},
})
--#### autostart dms
hl.on("hyprland.start", function ()
hl.exec_cmd("dms run")
end)
--#### move windows
hl.bind(mod .. " + SHIFT + H", hl.dsp.window.move({ direction = "left" }))
hl.bind(mod .. " + SHIFT + J", hl.dsp.window.move({ direction = "down" }))
hl.bind(mod .. " + SHIFT + K", hl.dsp.window.move({ direction = "up" }))
hl.bind(mod .. " + SHIFT + L", hl.dsp.window.move({ direction = "right" }))
-- resize
hl.bind(mod .. " + mouse:273", hl.dsp.window.resize(), { mouse = true })
hl.bind(mod .. " + mouse:272", hl.dsp.window.drag(), { mouse = true })
--#### animation settings
hl.curve("easeOutQuint", { type = "bezier", points = { {0.23, 1}, {0.32, 1} } })
hl.curve("easeInOutCubic", { type = "bezier", points = { {0.65, 0.05}, {0.36, 1} } })
hl.curve("linear", { type = "bezier", points = { {0, 0}, {1, 1} } })
hl.curve("almostLinear", { type = "bezier", points = { {0.5, 0.5}, {0.75, 1} } })
hl.curve("quick", { type = "bezier", points = { {0.15, 0}, {0.1, 1} } })
-- Default springs
hl.curve("easy", { type = "spring", mass = 1, stiffness = 238.1191, dampening = 24.21279333 })
--#### end stuff
--require("hypr-monitors")
hl.monitor({
output = "eDP-1",
scale = 1,
})
-- ppc ne
hl.bind("F12", hl.dsp.exec_cmd("ppc ne"))
hl.bind("F11", hl.dsp.exec_cmd("ppc ne -b"))
hl.bind("XF86AudioRaiseVolume", hl.dsp.exec_cmd("ppc ne"))
hl.bind("XF86AudioLowerVolume", hl.dsp.exec_cmd("ppc ne -b"))
-- Layout toggles
-- hl.bind(mod .. "+comma", hl.dsp.layout)
-- hl.bind(mod .. "+period", hl.dsp.layout.toggle_split)
-- scratchpad
--hl.bind(mod .. "+SHIFT+tab", hl.dsp.window.)
--hl.bind(mod .. "+tab", hl.dsp.scratchpad.show)
-- ### Scratchpad terminal (super+f)
--[[
hl.on("hyprland.start", function()
hl.exec_cmd("alacritty --class scratchterm")
end)
hl.window_rule({
match = { class = "scratchterm" },
float = true,
move = "center",
size = "2400 1400",
workspace = "special:scratch",
})
hl.bind(mod .. "+f", function()
hl.dsp.workspace.toggle_special("scratch")
end)
]]

48
hosts/main/installing.sh Normal file
View File

@@ -0,0 +1,48 @@
# empty nix based chroot... install variant
function inst_create_dir() {
mkdir -p /cachy
}
function inst_mount() {
if findmnt /cachy/nix; then
return
fi
mkdir -p /cachy/nix
mkdir -p /cachy/proc
mkdir -p /cachy/sys
mkdir -p /cachy/out
mkdir -p /cachy/dev
mount -o bind /nix /cachy/nix
mount -o bind /proc /cachy/proc
mount -o bind /sys /cachy/sys
mount -o bind /dev /cachy/dev
mount -o bind / /cachy/out
}
function inst_enter() {
NIX=$(realpath $(which nix))
SHELL=$(realpath $(which bash))
CHROOT=$(which chroot)
ENV=$(dirname $(realpath $(which env)))/env
PATH=$(nix eval --impure --raw --expr 'let pkgs = import <nixpkgs> {}; in with pkgs; lib.makeBinPath [ vim nix pacman busybox curl bash gawk ]')
echo -en 'source /to-source; echo hooooooo; rm /rcfile' > /cachy/rcfile
$CHROOT /cachy $ENV -i PATH="$PATH" $SHELL --rcfile /rcfile
# export SSL_CERT_FILE=/out/etc/static/ssl/certs/ca-certificates.crt
mkdir -p /etc
echo "nameserver 1.1.1.1" > /etc/resolv.conf
}
function inst_setup() {
curl https://mirror.cachyos.org/cachyos-repo.tar.xz -o cachyos-repo.tar.xz
tar -xf cachyos-repo.tar.xz
touch /etc/pacman.conf
pacman-key --init
mkdir -p /var/lib/pacman
bash ./cachyos-repo/cachyos-repo.sh
mkdir -p /lib
ln -fs $(nix eval --extra-experimental-features nix-command --extra-experimental-features flakes nixpkgs#glibc.out --raw)/lib64/ld-linux-x86-64.so.2 /lib/ld-linux-x86-64.so.2
}

View File

@@ -0,0 +1,15 @@
[Unit]
Description=Bitwarden keyring daemon
After=graphical-session.target
PartOf=graphical-session.target
[Service]
Type=simple
# initialize the default working directory
ExecStartPre=mkdir -p %h/snap/bw/common/bw-keyring-daemon/
ExecStartPre=chmod 700 %h/snap/bw/common/bw-keyring-daemon/
# start the keyring
ExecStart=%h/work/src/bw-keyring-daemon/target/release/bw-keyring-daemon -c %h/work/config/hosts/main/bw-keyring.json -d
[Install]
WantedBy=graphical-session.target

View File

@@ -0,0 +1,10 @@
[Unit]
Description=Systemd service for Lan Mouse
[Service]
Environment=PATH=/bin:/home/me/work/config/hosts/main/bin
ExecStart=lan-mouse daemon
Type=simple
[Install]
WantedBy=graphical-session.target

View File

@@ -0,0 +1,7 @@
port = 4410
[[clients]]
position = "right"
hostname = "mac"
activate_on_startup = true
ips = ["192.168.4.3"]

22
hosts/main/run Executable file
View File

@@ -0,0 +1,22 @@
#!/bin/sh
qemu-system-x86_64 \
-enable-kvm \
-kernel /cachy/boot/vmlinuz-linux-cachyos \
-initrd /cachy/boot/initramfs-linux-cachyos.img \
-fsdev local,id=rootfs,path=/cachy,security_model=none \
-device virtio-9p-pci,fsdev=rootfs,mount_tag=rootfstype \
-append "rootfstype=9p root=arch_root rootflags=trans=virtio,version=9p2000.L,msize=1048576 rw console=ttyS0 console=tty loglevel=7 " \
-device virtio-9p-pci,fsdev=rootfs,mount_tag=arch_root \
-fsdev local,id=workfs,path=/home/me/work,security_model=none \
-device virtio-9p-pci,fsdev=workfs,mount_tag=work_share \
-netdev user,id=vmnat,hostfwd=tcp::2222-:22 -device e1000,netdev=vmnat \
-m 4G -cpu host "$@"\
#-append "console=ttyS0 console=tty rootflags=subvol=cachy rw rd.luks.name=f93d0e0c-c620-4d39-bd6a-a7c0c90fb850=root root=/dev/mapper/root systemd.setenv=SYSTEMD_SULOGIN_FORCE=1" \
#-append "init=/bin/bash systemd.setenv=SYSTEMD_SULOGIN_FORCE=1 rootfstype=9p root=arch_root rootflags=trans=virtio,version=9p2000.L,msize=1048576 rw console=ttyS0 loglevel=7" \
#-nographic \
#-device virtio-scsi-pci,id=scsi0 \
#-drive file=/dev/disk/by-id/nvme-CT2000T500SSD8_240446CB0BC2,format=raw,if=none,id=hd0,cache=none,aio=native \
#-device scsi-hd,drive=hd0,bus=scsi0.0 \

View File

@@ -0,0 +1 @@
../../bin/elephant

View File

@@ -0,0 +1 @@
949

View File

@@ -0,0 +1 @@
run

Binary file not shown.

View File

@@ -0,0 +1 @@
../../bin/hyprland

View File

@@ -0,0 +1 @@
950

View File

@@ -0,0 +1 @@
run

Binary file not shown.

148
hosts/main/setup.md Normal file
View File

@@ -0,0 +1,148 @@
## chroot on host
```bash
btrfs subvolume create /cachy
mkdir -p /cachy/nix
mkdir -p /cachy/proc
mkdir -p /cachy/sys
mkdir -p /cachy/dev
mkdir -p /cachy/out
mkdir -p /cachy/home/me/work
mount -o bind /proc /cachy/proc
mount -o bind /sys /cachy/sys
mount -o bind /dev /cachy/dev
mount -o bind /nix /cachy/nix
mount -o bind / /cachy/out
mount -o bind /home/me/work /cachy/home/me/work
mount -o bind /run/user/1000 /cachy/run/user/1000
mount -t devpts -o gid=5,mode=620 devpts /cachy/dev/pts
docker run -it -v /cachy:/cachy -v /:/out --privileged cachyos/cachyos /bin/bash
```
## in container:
```bash
pacstrap -K /cachy base base-devel vim nix less direnv nvim
pacstrap -K /cachy wayland firefox alacritty dms-shell git cmake paru
pacstrap -K /cachy freerdp remmina
pacstrap -K /cachy brightnessctl playerctl nm-connection-editor ttf-hack zenity prismlauncher docker inetutils
```
## chroot
```bash
SHELL=/bin/bash chroot /cachy
unset XDG_CONFIG_DIR XDG_DATA_DIRS
export WAYLAND_DISPLAY=wayland-1
```
## in chroot
```bash
# you sometimes need to .... so that df -h can find /
mount /
ln -sf /proc/self/mounts /etc/mtab
```
## link and copy stuff
```bash
echo "export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" > /root/.bashrc
echo "me ALL=(ALL:ALL) NOPASSWD: ALL" >> /etc/sudoers
echo "experimental-features = nix-command flakes" >> /etc/nix/nix.conf
ln -sf /home/me/work/config/hosts/main/bashrc /home/me/.bashrc
ln -sf /home/me/work/config/hosts/main/bashrc /root/.bashrc
ln -fs ~/work/app-data/firefox-data/places.sqlite ~/.mozilla/firefox/me/places.sqlite
ln -fs ~/work/app-data/firefox-data/places.sqlite-wal ~/.mozilla/firefox/me/places.sqlite-wal
ln -fs ~/work/app-data/firefox-data/onetab-folder ~/.mozilla/firefox/me/storage/default/moz-extension+++e2297551-90b4-4da0-92c8-1d00cda2d080^userContextId=4294967295
ln -fs $CONFIG_DIR/hosts/main/firefox-user.js ~/.mozilla/firefox/me/user.js
sd ln -fs $CONFIG_DIR/hosts/main/lan-mouse.service /lib/systemd/user/lan-mouse.service
sd ln -fs $CONFIG_DIR/hosts/main/elephant.service /lib/systemd/user/elephant.service
mkdir -p ~/.config/walker
sd ln -fs $CONFIG_DIR/hosts/main/walker.toml ~/.config/walker/config.toml
sudo ln -sf /home/me/work/app-data/network-manager /etc/NetworkManager
sudo ln -sf $HERE_DIR/waydroid-lib /var/lib/waydroid
sudo ln -sf $HERE_DIR/waydroid-data $HOME/.local/share/waydroid
ln -s ~/work/app-data/thunderbird ~/.mozilla/thunderbird
sudo ln -sf $CONFIG_DIR/hosts/main/hosts /etc/hosts
# docker
sudo pacman -S docker
sudo systemctl enable --now docker
sudo usermod -a -G docker me
# screencast
pacman -S xdg-desktop-portal-hyprland pipewire wireplumber qt6-wayland
# netbird
curl -fsSL https://pkgs.netbird.io/install.sh | sh
# move over /var/lib/netbird
# nixpkgs
nix profile add ni#rustdesk ni#yt-dlp ni#delta
```
## fstab
```
# Static information about the filesystems.
# See fstab(5) for details.
# <file system> <dir> <type> <options> <dump> <pass>
#arch_root / 9p trans=virtio,version=9p2000.L,msize=1048576,rw 0 0
#work_share /home/me/work 9p trans=virtio,version=9p2000.L,msize=1048576,rw 0 0
/dev/mapper/root / btrfs rw,relatime,ssd,discard=async,space_cache=v2,compress=zstd:3,subvol=cachy 0 0
/dev/mapper/root /home/me/work btrfs rw,relatime,ssd,discard=async,space_cache=v2,compress=zstd:3,subvol=work 0 0
/dev/mapper/root /home/me/secrets btrfs rw,relatime,ssd,discard=async,space_cache=v2,compress=zstd:3,subvol=secrets 0 0
/dev/mapper/root /home/me/here btrfs rw,relatime,ssd,discard=async,space_cache=v2,compress=zstd:3,subvol=here 0 0
/dev/mapper/root /out btrfs rw,relatime,ssd,discard=async,space_cache=v2,compress=zstd:3,subvol=nixos 0 0
/dev/mapper/root /nix btrfs rw,relatime,ssd,discard=async,space_cache=v2,compress=zstd:3,subvol=nix 0 0
/dev/mapper/root /swap btrfs rw,relatime,ssd,discard=async,space_cache=v2,compress=zstd:3,subvol=swap 0 0
LABEL=MAIN-BOOT /boot vfat rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro 0 2
/swapfile none swap defaults 0 0
/home/me/work/app-data/network-manager /etc/NetworkManager none bind 0 0
```
# VM
```bash
sudo systemctl edit getty@tty1 # and put the following in the correct place (read comments)
#[Service]
#ExecStart=
#ExecStart=-/sbin/agetty -o '-p -f -- \\u' --noclear --autologin your_username %I $TERM
```
## parts
- mounts/disk setup
- keyd
- lan-mouse
- keyring service
```
sudo ln -fs $CONFIG_DIR/hosts/main/bw.service /lib/systemd/user/bw.service
sudo ln -fs $CONFIG_DIR/hosts/main/keyring.service /lib/systemd/user/keyring.service
systemctl --user enable --now bw
systemctl --user enable --now keyring
sudo ln -fs $CONFIG_DIR/zed ~/.config/
```
## log
- first tried to run the pacman from nixpkgs (problems)
- then a nixpkgs basic chroot see ./install.sh (problems)
- then had the idea to use the cachyos docker container (worked)
- there are some finicky things with chroot
- you need to mount / from in the chroot again... so that df -h can diaplay usage of / (required by pacman)
- you need to mount /dev/pts for sudo to work
- and this: ln -sf /proc/self/mounts /etc/mtab
- hyprland can not run in the chroot as it wants the xdg shell wayland proto v6 and the sway outside only has 5
- so let's go VM

30
hosts/main/shell.qml Normal file
View File

@@ -0,0 +1,30 @@
import Quickshell
import QtQuick
ShellRoot {
Variants {
model: Quickshell.screens
PanelWindow {
required property var modelData
screen: modelData
anchors {
top: true
left: true
right: true
}
implicitHeight: 32
color: "#202020"
Text {
anchors.centerIn: parent
text: "DMS test shell"
color: "white"
}
}
}
}

119
hosts/main/ssh_config Normal file
View File

@@ -0,0 +1,119 @@
Host *
IdentityFile /home/me/secrets/private-key
Host gw
User root
Host acern
Port 2222
User me
Host fasu
User me
HostName fasu
Host fasus
User server
HostName fasu
Host fe
Port 22
User me
HostName fe
Host feh
Port 9000
User root
HostName 100.88.93.24
Host fes
Port 22
User server
HostName fe
Host files
Port 49388
User files
Host fusu
Port 49388
User me
HostName fusu
Host fusus
Port 49388
User server
HostName fusu
Host fwin
User me
HostName fwin
Host github.com
HostName github.com
Host hec-builder
User root
HostName 10.5.5.72
Host here
Port 8888
User me
HostName 127.0.0.1
Host hetzner2
Port 2222
User c2vi
HostName hetzner2.ecbb.cc
Host hpm
User me
Host ligai
User s_01j7xkk335kbnr7r19zhssxn29
HostName ssh.lightning.ai
IdentityFile ~/secrets/lightning-ai-key
Host mac
Port 22
User me
Host mandroid
Port 4401
User u0_a77
HostName mac
Host mosatop
Port 2222
User me
Host nico
User root
Host ocib
User ubuntu
HostName 140.238.213.48
Host ocih
User ubuntu
HostName 152.67.70.13
Host old-hec-builder
User root
HostName 10.5.5.56
Host ouranos
User root
HostName 195.201.148.94
Host pcmc
Port 9000
User root
HostName 100.88.33.187
Host phone
Port 8022
User u0_a345
Host ppc-hosting
Port 9000
User root
HostName 100.88.46.87
Host rpis
Port 49388
User server
HostName rpi
Host storage
User root
HostName 10.5.5.50
Host tab
Port 8022
User nix-on-droid
Host ti
Port 2222
User root
HostName localhost
Host *
ForwardAgent no
AddKeysToAgent no
Compression no
ServerAliveInterval 0
ServerAliveCountMax 3
HashKnownHosts no
UserKnownHostsFile ~/.ssh/known_hosts
ControlMaster no
ControlPath ~/.ssh/master-%r@%n:%p
ControlPersist no

63
hosts/main/user.js Normal file
View File

@@ -0,0 +1,63 @@
// Generated by Home Manager.
user_pref("browser.aboutConfig.showWarning", false);
user_pref("browser.cache.check_doc_frequency", 2);
user_pref("browser.cache.disk.capacity", 4560000);
user_pref("browser.cache.disk.smart_size.enabled", false);
user_pref("browser.download.autohideButton", false);
user_pref("browser.download.dir", "/home/me/work/downloads");
user_pref("browser.download.folderList", 1);
user_pref("browser.eme.ui.firstContentShown", true);
user_pref("browser.engagement.ctrlTab.has-used", true);
user_pref("browser.engagement.downloads-button.has-used", true);
user_pref("browser.engagement.fxa-toolbar-menu-button.has-used", true);
user_pref("browser.engagement.home-button.has-used", true);
user_pref("browser.engagement.library-button.has-used", true);
user_pref("browser.engagement.sidebar-button.has-used", true);
user_pref("browser.firefox-view.feature-tour", "{\"message\":\"FIREFOX_VIEW_FEATURE_TOUR\",\"screen\":\"\",\"complete\":true}");
user_pref("browser.low_commit_space_threshold_mb", 3000);
user_pref("browser.search.region", "AT");
user_pref("browser.shell.checkDefaultBrowser", false);
user_pref("browser.startup.couldRestoreSession.count", 5);
user_pref("browser.tabs.inTitlebar", 0);
user_pref("browser.tabs.insertAfterCurrent", true);
user_pref("browser.tabs.unloadOnLowMemory", true);
user_pref("browser.theme.content-theme", 0);
user_pref("browser.theme.toolbar-theme", 0);
user_pref("browser.toolbars.bookmarks.visibility", "never");
user_pref("browser.uiCustomization.state", "{\"placements\":{\"widget-overflow-fixed-list\":[\"sync-button\"],\"unified-extensions-area\":[\"jid1-93cwpmrbvpjrqa_jetpack-browser-action\",\"_react-devtools-browser-action\",\"grepper_codegrepper_com-browser-action\",\"simple-translate_sienori-browser-action\",\"_d04b0b40-3dab-4f0b-97a6-04ec3eddbfb0_-browser-action\",\"_b0721213-dc0b-4ae0-8436-8c14f0022a37_-browser-action\"],\"nav-bar\":[\"back-button\",\"forward-button\",\"stop-reload-button\",\"home-button\",\"customizableui-special-spring1\",\"urlbar-container\",\"zoom-controls\",\"customizableui-special-spring7\",\"screenshot-button\",\"fullscreen-button\",\"developer-button\",\"bookmarks-menu-button\",\"downloads-button\",\"_446900e4-71c2-419f-a6a7-df9c091e268b_-browser-action\",\"adguardadblocker_adguard_com-browser-action\",\"extension_one-tab_com-browser-action\",\"side-view_mozilla_org-browser-action\",\"unified-extensions-button\",\"reset-pbm-toolbar-button\"],\"toolbar-menubar\":[\"menubar-items\"],\"TabsToolbar\":[\"tabbrowser-tabs\",\"new-tab-button\",\"alltabs-button\"],\"PersonalToolbar\":[\"preferences-button\",\"personal-bookmarks\"]},\"seen\":[\"developer-button\",\"_446900e4-71c2-419f-a6a7-df9c091e268b_-browser-action\",\"extension_one-tab_com-browser-action\",\"_d04b0b40-3dab-4f0b-97a6-04ec3eddbfb0_-browser-action\",\"grepper_codegrepper_com-browser-action\",\"save-to-pocket-button\",\"_react-devtools-browser-action\",\"jid1-93cwpmrbvpjrqa_jetpack-browser-action\",\"adguardadblocker_adguard_com-browser-action\",\"side-view_mozilla_org-browser-action\",\"simple-translate_sienori-browser-action\",\"profiler-button\",\"reset-pbm-toolbar-button\",\"_b0721213-dc0b-4ae0-8436-8c14f0022a37_-browser-action\"],\"dirtyAreaCache\":[\"nav-bar\",\"PersonalToolbar\",\"toolbar-menubar\",\"TabsToolbar\",\"widget-overflow-fixed-list\",\"unified-extensions-area\"],\"currentVersion\":20,\"newElementCount\":26}");
user_pref("devtools.chrome.enabled", true);
user_pref("devtools.everOpened", true);
user_pref("distribution.archlinux.bookmarksProcessed", true);
user_pref("distribution.canonical.bookmarksProcessed", true);
user_pref("distribution.iniFile.exists.appversion", "122.0a1");
user_pref("distribution.iniFile.exists.value", false);
user_pref("distribution.nixos.bookmarksProcessed", true);
user_pref("extensions.activeThemeID", "{8d38d24a-dd1b-4142-8873-bbaa32e4e44f}");
user_pref("extensions.autoDisableScopes", 0);
user_pref("extensions.enabledScopes", 15);
user_pref("extensions.langpacks.signatures.required", false);
user_pref("extensions.webextensions.ExtensionStorageIDB.migrated.adguardadblocker@adguard.com", true);
user_pref("extensions.webextensions.ExtensionStorageIDB.migrated.extension@one-tab.com", true);
user_pref("extensions.webextensions.ExtensionStorageIDB.migrated.grepper@codegrepper.com", true);
user_pref("extensions.webextensions.ExtensionStorageIDB.migrated.screenshots@mozilla.org", true);
user_pref("extensions.webextensions.ExtensionStorageIDB.migrated.{446900e4-71c2-419f-a6a7-df9c091e268b}", true);
user_pref("extensions.webextensions.uuids", "{\"adguardadblocker@adguard.com\":\"b73239bf-cb93-4985-8f3b-71b32a3b3527\",\"extension@one-tab.com\":\"e2297551-90b4-4da0-92c8-1d00cda2d080\",\"grepper@codegrepper.com\":\"7cfa9e68-fba7-4eb9-8f3b-d4562a31b476\",\"{446900e4-71c2-419f-a6a7-df9c091e268b}\":\"e563a533-4e66-4b75-bbec-176bb803d96c\"}");
user_pref("javascript.options.mem.gc_parallel_marking", true);
user_pref("middlemouse.paste", false);
user_pref("network.dnsCacheExpiration", 0);
user_pref("services.sync.prefs.sync.extensions.activeThemeID", false);
user_pref("signon.autofillForms", false);
user_pref("signon.firefoxRelay.feature", "offered");
user_pref("signon.generation.enabled", false);
user_pref("signon.management.page.breach-alerts.enabled", false);
user_pref("signon.rememberSignons", false);
user_pref("trailhead.firstrun.didSeeAboutWelcome", true);
user_pref("xpinstall.signatures.required", false);
user_pref("xpinstall.whitelist.required", true);
lockPref("browser.theme.content-theme", 0)

298
hosts/main/walker.toml Normal file
View File

@@ -0,0 +1,298 @@
force_keyboard_focus = false # forces keyboard forcus to stay in Walker
close_when_open = true # close walker when invoking while already opened
click_to_close = true # closes walker if clicking outside of the main content area
as_window = false # launch walker as a regular window instead of layer shell application
single_click_activation = true # activate items with a single click opposed to a double click
selection_wrap = false # wrap list if at bottom or top
global_argument_delimiter = "#" # query: firefox#https://benz.dev => part after delimiter will be ignored when querying. this should be the same as in the elephant config
exact_search_prefix = "'" # disable fuzzy searching
theme = "default" # theme to use
disable_mouse = false # disable mouse (on input and list only)
debug = false # enables debug printing for some stuff, f.e. keybinds
page_jump_items = 10 # number of items to skip with Page Up/Down
hide_quick_activation = false # globally hide the quick activation buttons
hide_action_hints = false # globally hide the action hints
hide_action_hints_dmenu = true # hide the actions hints for dmenu
hide_return_action = false # hide actions that are bound to Return
keybind_symbols = true # render keybind hints with key symbols (e.g. ⌃+⏎) instead of plain text ("ctrl Return")
resume_last_query = false # open walker with the last query in place
actions_as_menu = false # display all possible actions in a submenu
autoplay_videos = false # auto-play video previews
ext_background_effect_blur = false # request the compositor to blur behind the box-wrapper via ext-background-effect-v1 (compositor must support it)
[shell]
exclusive_zone = -1
layer = "overlay"
anchor_top = true
anchor_bottom = true
anchor_left = true
anchor_right = true
[columns]
"symbols" = 3
[placeholders]
"default" = { input = "hi", list = "No Results" } # placeholders for input and empty list, key is the providers name, so f.e. "desktopapplications" or "menus:other"
[keybinds]
close = ["Escape"]
next = ["Down"]
previous = ["Up"]
left = ["Left"]
right = ["Right"]
down = ["Down"]
up = ["Up"]
toggle_exact = ["ctrl e"]
resume_last_query = ["ctrl r"]
quick_activate = ["F1", "F2", "F3", "F4"]
page_down = ["Page_Down"]
page_up = ["Page_Up"]
show_actions = ["alt j"]
[providers]
default = [
"desktopapplications",
"calc",
"runner",
"websearch",
] # providers to be queried by default
empty = ["runner"] # providers to be queried when query is empty
ignore_preview = [] # providers that should not show previews
max_results = 50 # global max results
[providers.argument_delimiter] # define the argument delimiter per provider
# runner = " "
[providers.sets] # define your own defaults/empty sets of providers
[providers.max_results_provider] # define max results per provider in here
[[providers.prefixes]]
prefix = ";"
provider = "providerlist"
#[[providers.prefixes]]
#prefix = ">"
#provider = "runner"
[[providers.prefixes]]
prefix = "/"
provider = "files"
[[providers.prefixes]]
prefix = "."
provider = "symbols"
[[providers.prefixes]]
prefix = "!"
provider = "todo"
[[providers.prefixes]]
prefix = "%"
provider = "bookmarks"
[[providers.prefixes]]
prefix = "="
provider = "calc"
[[providers.prefixes]]
prefix = "@"
provider = "websearch"
[[providers.prefixes]]
prefix = ":"
provider = "clipboard"
[[providers.prefixes]]
prefix = "$"
provider = "windows"
[providers.clipboard]
time_format = "relative" # format for the clipboard item date
[providers.actions] # This will be MERGED/OVERWRITTEN with what the user specifies
fallback = [
{ action = "menus:open", label = "open", after = "Nothing" },
{ action = "menus:default", label = "run", after = "Close" },
{ action = "menus:parent", label = "back", bind = "Escape", after = "Nothing" },
{ action = "erase_history", label = "clear hist", bind = "ctrl h", after = "AsyncReload" },
]
dmenu = [{ action = "select", default = true, bind = "Return" }]
providerlist = [
{ action = "activate", default = true, bind = "Return", after = "ClearReload" },
]
bluetooth = [
{ action = "find", bind = "ctrl f", after = "AsyncClearReload" },
{ action = "remove", bind = "ctrl d", after = "AsyncReload" },
{ action = "trust", bind = "ctrl t", after = "AsyncReload" },
{ action = "untrust", bind = "ctrl t", after = "AsyncReload" },
{ action = "pair", bind = "Return", after = "AsyncReload" },
{ action = "connect", default = true, bind = "Return", after = "AsyncReload" },
{ action = "disconnect", default = true, bind = "Return", after = "AsyncReload" },
{ action = "power_on", label = "Power On", bind = "ctrl e", after = "AsyncReload" },
{ action = "power_off", label = "Power Off", bind = "ctrl e", after = "AsyncReload" },
]
archlinuxpkgs = [
{ action = "install", bind = "Return", default = true },
{ action = "remove", bind = "Return", default = true },
{ action = "show_all", label = "show all", bind = "ctrl i", after = "AsyncClearReload" },
{ action = "refresh", label = "refresh", bind = "ctrl r", after = "AsyncReload" },
{ action = "visit_url", label = "open URL", bind = "ctrl o" },
{ action = "show_installed", label = "show installed", bind = "ctrl i", after = "AsyncClearReload" },
]
calc = [
{ action = "copy", default = true, bind = "Return" },
{ action = "delete", bind = "ctrl d", after = "AsyncReload" },
{ action = "delete_all", bind = "ctrl shift d", after = "AsyncReload" },
{ action = "save", bind = "ctrl s", after = "AsyncClearReload" },
]
websearch = [
{ action = "search", default = true, bind = "Return" },
{ action = "open_url", label = "open url", default = true, bind = "Return" },
]
desktopapplications = [
{ action = "start", default = true, bind = "Return" },
{ action = "start:keep", label = "open+next", bind = "shift Return", after = "KeepOpen" },
{ action = "new_instance", label = "new instance", bind = "ctrl Return" },
{ action = "new_instance:keep", label = "new+next", bind = "ctrl alt Return", after = "KeepOpen" },
{ action = "pin", bind = "ctrl p", after = "AsyncReload" },
{ action = "unpin", bind = "ctrl p", after = "AsyncReload" },
{ action = "pinup", bind = "ctrl n", after = "AsyncReload" },
{ action = "pindown", bind = "ctrl m", after = "AsyncReload" },
]
dnfpackages = [
{ action = "install", label = "Install Package", bind = "Return", default = true },
{ action = "remove", label = "Remove Package", bind = "Return", default = true },
{ action = "show_all", label = "Show All", bind = "ctrl i", after = "AsyncClearReload" },
{ action = "show_installed", label = "Show Installed", bind = "ctrl i", after = "AsyncClearReload" },
{ action = "refresh", label = "Refresh", bind = "ctrl r", after = "AsyncClearReload" },
{ action = "visit_url", label = "Open URL", bind = "ctrl o" },
]
files = [
{ action = "open", default = true, bind = "Return" },
{ action = "opendir", label = "open dir", bind = "ctrl Return" },
{ action = "copypath", label = "copy path", bind = "ctrl shift c" },
{ action = "copyfile", label = "copy file", bind = "ctrl c" },
{ action = "localsend", label = "localsend", bind = "ctrl l" },
{ action = "refresh_index", label = "reload", bind = "ctrl r", after = "AsyncReload" },
]
1password = [
{ action = "copy_password", label = "copy password", default = true, bind = "Return" },
{ action = "copy_username", label = "copy username", bind = "shift Return" },
{ action = "copy_2fa", label = "copy 2fa", bind = "ctrl Return" },
]
protonpass = [
{ action = "copy_password", label = "copy password", default = true, bind = "Return" },
{ action = "copy_username", label = "copy username", bind = "shift Return" },
{ action = "copy_2fa", label = "copy 2fa", bind = "ctrl Return" },
]
bitwarden = [
{ action = "copypassword", label = "copy password", default = true, bind = "Return" },
{ action = "typepassword", label = "type password", default = true, bind = "ctrl p" },
{ action = "copyusername", label = "copy username", bind = "shift Return" },
{ action = "typeusername", label = "type username", bind = "ctrl u" },
{ action = "copytotp", label = "copy 2fa", bind = "ctrl Return" },
{ action = "typetotp", label = "type 2fa", bind = "ctrl t" },
{ action = "syncvault", label = "sync", bind = "ctrl s" },
]
todo = [
{ action = "save", default = true, bind = "Return", after = "AsyncClearReload" },
{ action = "save_next", label = "save & new", bind = "shift Return", after = "AsyncClearReload" },
{ action = "delete", bind = "ctrl d", after = "AsyncClearReload" },
{ action = "active", default = true, bind = "Return", after = "Nothing" },
{ action = "inactive", default = true, bind = "Return", after = "Nothing" },
{ action = "done", bind = "ctrl f", after = "Nothing" },
{ action = "change_category", bind = "ctrl y", label = "change category", after = "Nothing" },
{ action = "clear", bind = "ctrl x", after = "AsyncClearReload" },
{ action = "create", bind = "ctrl a", after = "AsyncClearReload" },
{ action = "search", bind = "ctrl a", after = "AsyncClearReload" },
]
runner = [
{ action = "run", default = true, bind = "Return" },
{ action = "runterminal", label = "run in terminal", bind = "shift Return" },
]
symbols = [
{ action = "run_cmd", label = "select", default = true, bind = "Return" },
]
unicode = [
{ action = "run_cmd", label = "select", default = true, bind = "Return" },
]
nirisessions = [
{ action = "start", label = "start", default = true, bind = "Return" },
{ action = "start_new", label = "start blank", bind = "ctrl Return" },
]
clipboard = [
{ action = "copy", default = true, bind = "Return" },
{ action = "remove", bind = "ctrl d", after = "AsyncClearReload" },
{ action = "remove_all", label = "clear", bind = "ctrl shift d", after = "AsyncClearReload" },
{ action = "show_images_only", label = "only images", bind = "ctrl i", after = "AsyncClearReload" },
{ action = "show_pinned_only", label = "only pinned", bind = "ctrl i", after = "AsyncClearReload" },
{ action = "show_text_only", label = "only text", bind = "ctrl i", after = "AsyncClearReload" },
{ action = "show_combined", label = "show all", bind = "ctrl i", after = "AsyncClearReload" },
{ action = "pause", bind = "ctrl shift p" },
{ action = "unpause", bind = "ctrl shift p" },
{ action = "unpin", bind = "ctrl p", after = "AsyncClearReload" },
{ action = "pin", bind = "ctrl p", after = "AsyncClearReload" },
{ action = "edit", bind = "ctrl o" },
{ action = "localsend", bind = "ctrl l" },
]
bookmarks = [
{ action = "save", bind = "Return", after = "AsyncClearReload" },
{ action = "open", default = true, bind = "Return" },
{ action = "delete", bind = "ctrl d", after = "AsyncClearReload" },
{ action = "change_category", label = "Change category", bind = "ctrl y", after = "Nothing" },
{ action = "change_browser", label = "Change browser", bind = "ctrl b", after = "Nothing" },
{ action = "import", label = "Import", bind = "ctrl i", after = "AsyncClearReload" },
{ action = "create", bind = "ctrl a", after = "AsyncClearReload" },
{ action = "search", bind = "ctrl a", after = "AsyncClearReload" },
]
wireplumber = [
{ action = "increase_volume", label = "+volume", bind = "ctrl y", after = "Nothing" },
{ action = "decrease_volume", label = "-volume", bind = "ctrl n", after = "Nothing" },
{ action = "mute", bind = "ctrl m", after = "Nothing" },
{ action = "unmute", bind = "ctrl m", after = "Nothing" },
{ action = "set_default_device", label = "set default", bind = "ctrl d", after = "Nothing" },
]
playerctl = [
{ action = "pause", label = "pause", bind = "Return", after = "Nothing", default = true },
{ action = "play", label = "play", bind = "Return", after = "Nothing", default = true },
{ action = "prev", label = "prev", bind = "ctrl p", after = "Nothing" },
{ action = "next", label = "next", bind = "ctrl n", after = "Nothing" },
{ action = "vol_up", label = "vol+", bind = "ctrl y", after = "Nothing" },
{ action = "vol_down", label = "vol-", bind = "ctrl h", after = "Nothing" },
{ action = "mute", label = "mute", bind = "ctrl m", after = "Nothing" },
{ action = "unmute", label = "unmute", bind = "ctrl m", after = "Nothing" },
{ action = "seek_back", label = "backward", bind = "ctrl b", after = "Nothing" },
{ action = "seek_forward", label = "forward", bind = "ctrl f", after = "Nothing" },
]
niriactions = [{ action = "execute", bind = "Return" }]
aptpackages = [
{ action = "install", label = "Install Package", bind = "Return", default = true },
{ action = "remove", label = "Remove Package", bind = "Return", default = true },
{ action = "show_all", label = "Show All", bind = "ctrl i", after = "AsyncClearReload" },
{ action = "show_installed", label = "Show Installed", bind = "ctrl i", after = "AsyncClearReload" },
{ action = "refresh", label = "Refresh", bind = "ctrl r", after = "AsyncClearReload" },
{ action = "visit_url", label = "Open URL", bind = "ctrl o" },
]

3
hosts/main/zmk-config Normal file
View File

@@ -0,0 +1,3 @@
[user]
home = /home/me/work/config/zmk-config