Compare commits

...

9 Commits

Author SHA1 Message Date
Sebastian Moser
f4662022a8 added AGENTS.md 2026-10-22 11:04:52 +02:00
Sebastian Moser
318ed7da50 emacs stuff 2026-10-06 00:47:48 +02:00
Sebastian Moser
a78d55965c . 2026-10-05 02:01:03 +02:00
Sebastian Moser
2139920fbc changes 2026-10-02 22:09:50 +02:00
Sebastian Moser
28986507c9 all recent config changes 2026-09-16 21:34:44 +00:00
Sebastian Moser
8898b126cd remove misc folder, content was moved into mods folder 2026-07-31 00:51:25 +02:00
Sebastian Moser
180af16d35 many changes i made in the last weeks 2026-07-31 00:51:01 +02:00
Sebastian Moser
5b895c54dc .. 2026-05-18 18:22:45 +02:00
Sebastian Moser
4a62c235f1 screen capture no longer working 2026-04-14 19:10:25 +02:00
181 changed files with 14331 additions and 1457 deletions

1
.direnv/flake-profile Symbolic link
View File

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

View File

@@ -0,0 +1 @@
/nix/store/j6p36ni1qcnyj14ymix6x7744bbzxqpm-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

27
.gitmodules vendored Normal file
View File

@@ -0,0 +1,27 @@
[submodule "mize"]
path = mize
url = git@git.ppc.social:ppc/ppc.git
[submodule "element"]
path = element
url = git@github.com:c2vi/element-web.git
[submodule "grid"]
path = grid
url = git@github.com:theCheeseboard/theGrid.git
[submodule "marts"]
path = marts
url = https://git.ppc.social/ppc/marts.git
[submodule "forked-zed"]
path = forked-zed
url = git@github.com:c2vi/zed.git
[submodule "src/zmk"]
path = src/zmk
url = https://github.com/zmkfirmware/zmk.git
[submodule "doom"]
path = doom
url = https://github.com/doomemacs/core
[submodule "src/doom"]
path = src/doom
url = https://github.com/doomemacs/core
[submodule "src/vicinae"]
path = src/vicinae
url = git@github.com:ppc-social/vicinae.git

24
.zed/settings.json Normal file
View File

@@ -0,0 +1,24 @@
// Folder-specific settings
//
// For a full list of overridable settings, and general information on folder-specific settings,
// see the documentation: https://zed.dev/docs/configuring-zed#settings-files
{
"lsp": {
"rust-analyzer": {
"initialization_options": {
"linkedProjects": [
"mize/Cargo.toml",
//"forked-zed/Cargo.toml",
],
"cargo": {
"features": [ "target-js", "target-obsidian" ]
//"features": "all"
},
"check": {
"features": [ "target-js", "target-obsidian" ]
//"features": "all"
},
}
}
}
}

12
AGENTS.md Normal file
View File

@@ -0,0 +1,12 @@
# c2vi's dotfiles monorepo
this is c2vi's dotfiles repo and also monorepo where projects of active development are kept as submodules.
if you hear anything about parts refer to `mize/docs/part-system.md` for how Mize parts work.
also anything which adds new functionality should be made as a mize part, where possible.
make a new one in `./parts` using the following naming schema for the folder `c2vi.vibed.<name-of-part>` or expand an existing part. (but ask the user before doing that)
ask before making changes to anything which is outside of `./parts/c2vi.vibed.*`.
when developing a new part. present it's config options and methods to the human first.

View File

@@ -43,11 +43,6 @@
#zed="WAYLAND_DISPLAY= zeditor";
npm="pnpm";
md="~/work/modules/modules/dev/run";
mize="~/work/mize/mize";
m="~/work/mize/mize";
c2="~/work/c2-system/cli/target/debug/system-c2-cli";
ports = "${pkgs.lsof}/bin/lsof -i -P -n";
losetup = "${pkgs.util-linux}/bin/losetup";
@@ -60,7 +55,6 @@
#text = if system == "x86_64-linux" then ''${inputs.my-log.packages.${system}.pythonForLog}/bin/python ${workDir}/log/new/client.py "$@"'' else "echo system not x86_84-linux";
#};
#in "${log}/bin/log";
mi = "nix run ${workDir}/mize";
cdd = "/sdcard";
n = "${pkgs.python3} ${self}/scripts/nav/main.py";
shutdown = "echo try harder.... xD";
@@ -111,6 +105,7 @@
export nl="--log-format bar-with-logs"
export acern="ssh://acern x86_64-linux,aarch64-linux - 20 10 big-parallel - -"
export fe="ssh://fe x86_64-linux,aarch64-linux - 20 10 big-parallel - -"
export mac="ssh://mac x86_64-linux,aarch64-linux - 8 5 big-parallel - -"
export mosatop="ssh://mosatop x86_64-linux,aarch64-linux - 8 5 big-parallel - -"
export hpm="ssh://hpm x86_64-linux,aarch64-linux - 8 5 big-parallel - -"

View File

@@ -23,8 +23,10 @@
"github.com" = {
hostname = "github.com";
};
sepp = {
user = "seb";
hetzner2 = {
user = "c2vi";
port = 2222;
hostname = "hetzner2.ecbb.cc";
};
here = {
port = 8888;
@@ -35,6 +37,9 @@
port = 49388;
user = "files";
};
nico = {
user = "root";
};
rpis = {
hostname = "rpi";
port = 49388;
@@ -48,18 +53,23 @@
feh = {
user = "root";
hostname = "100.107.101.77";
port = 49001;
hostname = "100.88.93.24";
port = 9000;
};
ti = {
user = "root";
hostname = "localhost";
port = 2222;
};
ppc-hosting = {
user = "root";
hostname = "100.107.101.77";
port = 49002;
hostname = "100.88.46.87";
port = 9000;
};
pcmc = {
user = "root";
hostname = "100.107.101.77";
port = 49003;
hostname = "100.88.33.187";
port = 9000;
};

View File

@@ -2,7 +2,7 @@
## thunderbird settings
programs.thunderbird = {
enable = true;
enable = false;
profiles.me = {
isDefault = true;
@@ -33,4 +33,3 @@
*/
}

3
apps/wireshark Executable file
View File

@@ -0,0 +1,3 @@
#!/bin/bash
exec sudo -E /usr/sbin/wireshark -P "persconf:$CONFIG_DIR/apps/wireshark-config" -P "persdata:$DATA_DIR/wireshark" "$@"

View File

@@ -0,0 +1,10 @@
local config_dir = os.getenv("CONFIG_DIR")
critical("This is a critical issue message!")
print("hello world!")
global run_user_scripts_when_superuser=true
-- qmi plugin
dofile(config_dir .. "/apps/wireshark-config/qmi.lua")

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,155 @@
# Recent settings file for Wireshark 4.7.3.
#
# This file is regenerated each time Wireshark is quit
# and when changing configuration profile.
# So be careful, if you want to make manual changes here.
# Main Toolbar show (hide).
# true or false (case-insensitive).
gui.toolbar_main_show: true
# Filter Toolbar show (hide).
# true or false (case-insensitive).
gui.filter_toolbar_show: true
# Wireless Settings Toolbar show (hide).
# true or false (case-insensitive).
gui.wireless_toolbar_show: false
# Packet list show (hide).
# true or false (case-insensitive).
gui.packet_list_show: true
# Tree view show (hide).
# true or false (case-insensitive).
gui.tree_view_show: true
# Byte view show (hide).
# true or false (case-insensitive).
gui.byte_view_show: true
# Packet diagram show (hide).
# true or false (case-insensitive).
gui.packet_diagram_show: true
# Statusbar show (hide).
# true or false (case-insensitive).
gui.statusbar_show: true
# Packet list colorize (hide).
# true or false (case-insensitive).
gui.packet_list_colorize: true
# Auto scroll packet list when capturing.
# true or false (case-insensitive).
capture.auto_scroll: true
# use as aggregation view.
# true or false (case-insensitive).
capture.aggregation_view: false
# Timestamp display format.
# One of: RELATIVE, RELATIVE_CAP, ABSOLUTE, ABSOLUTE_WITH_YMD, ABSOLUTE_WITH_YDOY, ABSOLUTE_WITH_DATE, DELTA, DELTA_DIS, EPOCH, UTC, UTC_WITH_YMD, UTC_WITH_YDOY, UTC_WITH_DATE
gui.time_format: RELATIVE
# Timestamp display precision.
# One of: AUTO, SEC, DSEC, CSEC, MSEC, USEC, NSEC, or a number between 0 and 9
gui.time_precision: AUTO
# Seconds display format.
# One of: SECONDS, HOUR_MIN_SEC
gui.seconds_format: SECONDS
# Zoom level.
# A decimal number.
gui.zoom_level: 0
# Bytes view display type.
# One of: HEX, BITS, DEC, OCT
gui.bytes_view: HEX
# Bytes view text encoding.
# One of: FROM_PACKET, ASCII, EBCDIC
gui.bytes_encoding: FROM_PACKET
# Packet diagram field values show (hide).
# true or false (case-insensitive).
gui.packet_diagram_field_values: false
# Allow hover selection in byte view.
# true or false (case-insensitive).
gui.allow_hover_selection: true
# Follow stream show as.
# One of: ASCII, ASCII_CONTROL, C_ARRAYS, EBCDIC, HEX_DUMP, HTML, IMAGE, JSON, RAW, RUST_ARRAY, UTF-8, YAML
gui.follow_show: ASCII
# Follow stream delta times.
# One of: NONE, TURN, ALL
gui.follow_delta: NONE
# Show packet bytes decode as.
# One of: NONE, BASE64, COMPRESSED, HEX_DIGITS, PERCENT_ENCODING, QUOTED_PRINTABLE, ROT13
gui.show_bytes_decode: NONE
# Show packet bytes show as.
# One of: ASCII, ASCII_CONTROL, C_ARRAYS, EBCDIC, HEX_DUMP, HTML, IMAGE, JSON, RAW, RUST_ARRAY, UTF-8, YAML
gui.show_bytes_show: ASCII
# Main window upper (or leftmost) pane size.
# Decimal number.
# Main window middle pane size.
# Decimal number.
# Packet list column pixel widths.
# Each pair of strings consists of a column format and its pixel width.
column.width:
%m, -1,
%t, -1,
%Gt, -1,
%s, -1,
%d, -1,
%p, -1,
%L, -1,
%i, -1
# Open conversation dialog tabs.
# List of conversation names, e.g. "TCP", "IPv6".
gui.conversation_tabs:
# Conversation dialog tabs columns.
# List of conversation columns numbers.
gui.conversation_tabs_columns:
# Open endpoint dialog tabs.
# List of endpoint names, e.g. "TCP", "IPv6".
gui.endpoint_tabs:
# Endpoint dialog tabs columns.
# List of endpoint columns numbers.
gui.endpoint_tabs_columns:
# For RLC stats, whether to use RLC PDUs found inside MAC frames.
# true or false (case-insensitive).
gui.rlc_pdus_from_mac_frames: false
# Additional Toolbars shown
# List of additional toolbars to show.
gui.additional_toolbar_show:
# Interface Toolbars show.
# List of interface toolbars to show.
gui.interface_toolbar_show:
# TCP Stream Graphs Moving Average Window Size.
gui.tsd_ma_window_size: 1
# TCP Stream Graphs Dialog Throughput show (hide).
# true or false (case-insensitive).
gui.tsd_throughput_show: true
# TCP Stream Graphs Dialog Goodput show (hide).
# true or false (case-insensitive).
gui.tsd_goodput_show: false

View File

@@ -0,0 +1,141 @@
# Common recent settings file for Wireshark 4.7.3.
#
# This file is regenerated each time Wireshark is quit
# and when changing configuration profile.
# So be careful, if you want to make manual changes here.
######## Recent capture files (latest last), cannot be altered through command line ########
recent.capture_file: /home/me/hi.pcapng
recent.capture_file: /home/me/nm-connection-up.pcapng
recent.capture_file: /home/me/nm-connection-down.pcapng
recent.capture_file: /home/me/modemmanager-stop.pcapng
######## Recent capture filters (latest first), cannot be altered through command line ########
######## Recent display filters (latest last), cannot be altered through command line ########
recent.display_filter: qmi
recent.display_filter: qmi.message_id == 0x0020 && qmi.service_id == 0x01
recent.display_filter: qmi.service_id
recent.display_filter: qmi.message_id == 0x0020
recent.display_filter: qmi.message_id
recent.display_filter: qmi &&
recent.display_filter: usb.device_address == 18
recent.display_filter: usb.device_address
# Main window geometry.
# Decimal numbers.
gui.geometry_main_x: 1920
gui.geometry_main_y: 0
gui.geometry_main_width: 619
gui.geometry_main_height: 436
# Main window maximized.
# true or false (case-insensitive).
gui.geometry_main_maximized: true
# Leftalign Action Buttons.
# true or false (case-insensitive).
gui.geometry_leftalign_actions: false
# Last used Configuration Profile.
gui.last_used_profile: Default
# Number of packets or events to check for automatic profile switching.
# Decimal number. Zero disables switching.
#gui.profile_switch_check_count: 1000
# Warn if running with elevated permissions (e.g. as root).
# true or false (case-insensitive).
privs.warn_if_elevated: true
# Warn if Wireshark is unable to capture.
# true or false (case-insensitive).
sys.warn_if_no_capture: true
# Find packet search in.
# One of: PACKET_LIST, PACKET_DETAILS, PACKET_BYTES
gui.search_in: PACKET_LIST
# Find packet character set.
# One of: NARROW_AND_WIDE, NARROW, WIDE
gui.search_char_set: NARROW_AND_WIDE
# Find packet case sensitive search.
# true or false (case-insensitive).
gui.search_case_sensitive: false
# Find packet search reverse direction.
# true or false (case-insensitive).
gui.search_reverse_dir: false
# Find packet search multiple occurrences.
# true or false (case-insensitive).
gui.search_multiple_occurs: false
# Find packet search type.
# One of: DISPLAY_FILTER, HEX_VALUE, STRING, REGEX
gui.search_type: DISPLAY_FILTER
# Welcome page sidebar Learn section visible.
# true or false (case-insensitive).
gui.welcome_page.sidebar.learn_visible: true
# Welcome page sidebar Tips section visible.
# true or false (case-insensitive).
gui.welcome_page.sidebar.tips_visible: true
# Welcome page sidebar Tips event slides.
# true or false (case-insensitive).
gui.welcome_page.sidebar.tips_events: true
# Welcome page sidebar Tips sponsorship slides.
# true or false (case-insensitive).
gui.welcome_page.sidebar.tips_sponsorship: true
# Welcome page sidebar Tips tip-of-the-day slides.
# true or false (case-insensitive).
gui.welcome_page.sidebar.tips_tips: true
# Welcome page sidebar Tips auto advance slides.
# true or false (case-insensitive).
gui.welcome_page.sidebar.tips_auto_advance: true
# Welcome page sidebar Tips slide auto-advance interval in seconds.
gui.welcome_page.sidebar.tips_interval: 8
# Active theme (directory name under resources/themes).
gui.theme_name: wireshark
# Appearance mode.
# One of: system, light, dark
gui.color_scheme: system
# Welcome page sidebar Tips slides test.
# true or false (case-insensitive).
gui.welcome_page.sidebar.tips_slides_test: false
# Geometry and maximized state of Lua Console window.
# Decimal integers.
gui.geom.Lua Console.x: 1920
gui.geom.Lua Console.y: 0
gui.geom.Lua Console.width: 523
gui.geom.Lua Console.height: 865
# true or false (case-insensitive).
gui.geom.Lua Console.maximized: false
# Qt Geometry State (hex byte string).
gui.geom.Lua Console.qt_geometry: 01d9d0cb0003000000000780000000000000098a0000036000000780000000000000098a000003600000000102000000078000000780000000000000098a00000360
# Custom colors.
# List of custom colors selected in Qt color picker.
gui.custom_colors:
"ffffffff", "ffffffff",
"ffffffff", "ffffffff",
"ffffffff", "ffffffff",
"ffffffff", "ffffffff",
"ffffffff", "ffffffff",
"ffffffff", "ffffffff",
"ffffffff", "ffffffff",
"ffffffff", "ffffffff"

View File

@@ -1,4 +1,4 @@
{ lib, inputs, self, secretsDir, specialArgs, ... }:
{ lib, inputs, self, secretsDir, specialArgs, pkgsUnstable, config, ... }:
# config that i use on all my hosts
@@ -8,7 +8,7 @@
];
home-manager.extraSpecialArgs = specialArgs;
home-manager.extraSpecialArgs = specialArgs // { inherit pkgsUnstable; hostName = config.networking.hostName; };
programs.dconf.enable = true;

View File

@@ -8,10 +8,10 @@
# - win + D command
# - kernel output for luks pwd on all displays
{ lib, pkgs, nur, unstable, inputs, ... }:
{ lib, pkgs, nur, unstable, inputs, config, ... }:
let
newerUnstableSrc = builtins.getFlake "nixpkgs/d0fc30899600b9b3466ddb260fd83deb486c32f1";
newerUnstableSrc = builtins.getFlake "nixpkgs/d23e2536a100b5108d22367a9c28785f48e3e4c8";
newerUnstable = import newerUnstableSrc.outPath {};
mySway = newerUnstable.sway;
@@ -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 = {
@@ -257,6 +269,18 @@ in {
### Output configuration
output * scale 1 bg #121212 solid_color
### always open alacritty on super+f
exec_always --no-startup-id alacritty --class scratchterm
for_window [app_id="scratchterm"] move scratchpad
bindsym $mod+f [app_id="scratchterm"] scratchpad show
for_window [app_id="scratchterm"] {
floating enable
resize set width 2400 px height 1400 px
move position center
move scratchpad
}
#################### from nwg-display
# Generated by nwg-displays on 2025-10-20 at 18:16:29. Do not edit manually.
@@ -360,6 +384,12 @@ output "HDMI-A-1" {
### Key bindings
# sci ne
bindsym F12 exec mize run sci ne
bindsym F11 exec mize run sci ne -b
bindsym XF86AudioRaiseVolume exec mize run sci ne
bindsym XF86AudioLowerVolume exec mize run sci ne -b
# QuickLaunch
bindsym $mod+i mode "QuickLaunch"
mode QuickLaunch {
@@ -605,29 +635,39 @@ output "HDMI-A-1" {
position = "top";
modules-left = [
"group/options"
"sway/workspaces"
"sway/window#protocol"
"sway/window#name"
#"group/options"
"custom/timetrack_current"
];
modules-center = [
"clock"
];
modules-right = [
"sway/window#protocol"
"sway/window#name"
"tray"
"pulseaudio"
"custom/gpu"
"memory"
"cpu"
"temperature"
"battery"
"disk"
"clock"
#"pulseaudio"
#"custom/gpu"
#"memory"
#"cpu"
#"temperature"
#"disk"
#"sway/workspaces"
];
"custom/timetrack_current" = {
"exec" =
if config.networking.hostName == "main" then "~/work/config/target/debug/timetrack-waybar"
else if config.networking.hostName == "mac" then "/data/external/config/target/debug/timetrack-waybar"
else "~/here/config/target/debug/timetrack-waybar";
"tail" = true;
};
"custom/separator" = {
format = " ";
tooltip = false;
};
"custom/options" = {
format = " ";
tooltip = false;

View File

@@ -1,4 +1,4 @@
{ lib, self, ... }:
{ lib, self, pkgsUnstable, pkgs, ... }:
# config that i use on all my hosts, that run native nixos
# excluding for example my phone phone
@@ -6,6 +6,22 @@
{
##system.stateVersion = "23.05"; # Did you read the comment?
##### Netbird Configuration
services.netbird.package = pkgsUnstable.netbird;
services.netbird.clients.ppc = {
#login = {
#enable = true;
#setupKeyFile = "${secretsDir}/netbird-setup-key";
#};
port = 51821;
ui.enable = false;
openFirewall = true;
#openInternalFirewall = true;
};
networking.firewall.trustedInterfaces = [
"nb-ppc"
];
# Select internationalisation properties.
i18n.defaultLocale = "en_US.UTF-8";
@@ -21,10 +37,13 @@
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"}
${builtins.readFile "${self}/misc/my-hosts-t"}
${builtins.readFile "${self}/mods/my-hosts"}
${builtins.readFile "${self}/mods/my-hosts-t"}
'';
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 244 KiB

317
doomdir/config.el Normal file
View File

@@ -0,0 +1,317 @@
;;; relative line numbers
(setq display-line-numbers 'relative)
;;; set my org directory
(setq org-directory "~/work/things/org")
;;; set my name and email
(setq user-full-name "Sebastian Moser"
user-mail-address "c2vi.dev@gmail.com")
;;; theme
(setq doom-theme 'doom-one)
;;; C-p to be M-x
(map! "C-p" #'execute-extended-command)
;;(map! :leader "a" #'execute-extended-command)
;;(map! :nv ":" #'execute-extended-command)
(after! evil
;;(map! :nv ":" #'execute-extended-command)
(map! :gnv "C-p" #'execute-extended-command)
)
;;; projectile find file - quick switcher
(after! 'better-jumper
(map! :gnv "C-i" #'projectile-find-file)
)
(with-eval-after-load 'projectile
(add-to-list 'projectile-globally-ignored-directories "node_modules")
(add-to-list 'projectile-globally-ignored-directories ".obsidian")
(setq projectile-indexing-method 'native)
)
;;; obsidian
(after! obsidian
(setq obsidian-directory "~/work/things"
obsidian-inbox-directory "semi-public"
markdown-enable-wiki-links t
)
(global-obsidian-mode t)
)
;;; clipboard
(after! evil
(setq interprogram-cut-function nil
interprogram-paste-function nil)
)
(defun my/clipboard-copy (beg end)
"Copy region to the OS clipboard (bypassing the kill-ring)."
(interactive "r")
(let ((text (buffer-substring-no-properties beg end))
(inhibit-message t))
(gui-select-text text)
(deactivate-mark)
(when (called-interactively-p 'any)
(message "Copied to clipboard: %d chars" (length text)))))
(defun my/clipboard-paste ()
"Paste from the OS clipboard, replacing the region if active."
(interactive)
(let ((text (gui-get-selection 'CLIPBOARD)))
(unless text
(user-error "OS clipboard is empty"))
(when (use-region-p)
(delete-region (region-beginning) (region-end)))
(insert-for-yank text)))
(map! :v "C-c" #'my/clipboard-copy
:v "C-v" #'my/clipboard-paste
:i "C-v" #'my/clipboard-paste) ; insert-state paste, terminal-style
;;; in buffer completions
(setq tab-always-indent 'complete)
(after! corfu
; possible: basic, initials, orderless, partial-completion substring, flex
(setq completion-styles '(orderless flex partial-completion substring))
(setq corfu-cycle t
corfu-preview-current nil
corfu-min-width 20
corfu-on-exact-match 'insert
corfu-quit-no-match t
corfu-quit-at-boundary t
corfu-popupinfo-delay '(1.25 . 0.5))
(corfu-popupinfo-mode 1)
;; history-based sorting, persisted across restarts
(corfu-history-mode 1)
(after! savehist
(add-to-list 'savehist-additional-variables 'corfu-history)))
;;; C-i to pick first completion thing
(after! corfu
(defun my/corfu-insert-first ()
"Insert the first candidate immediately."
(interactive)
(corfu-next)
(corfu-insert)
)
(map! :map corfu-map
"<insert-state> C-i" #'my/corfu-insert-first
)
)
;;; better eval mappings
(map! :leader "m e" #'eval-last-sexp)
(map! :leader "m r" #'eval-print-last-sexp)
;;;; font/zoom
(setq doom-font (font-spec
;:family "Hack Mono"
:size 23 :weight 'regular))
;;; have authinfo file in my $SECRETS_DIR
(setq auth-sources '("~/secrets/authinfo"))
;;; empv
(after! empv
(customize-set-variable 'empv-subsonic-username "c2vi")
(customize-set-variable 'empv-subsonic-url "https://tunes.c2vi.dev")
(customize-set-variable 'empv-subsonic-password (f-read-text "~/secrets/tunes-password"))
)
;;; supersonic
(after! supersonic
(customize-set-variable 'supersonic-host "https://tunes.c2vi.dev")
)
;;; emms
(use-package! emms
:config
(emms-all) ;; Loads stable EMMS features
(setq emms-source-file-default-directory "~/work/music/"
emms-player-list '(emms-player-mpv))
)
;;; infrasonic
(use-package! infrasonic)
(defvar my-subsonic-client
(infrasonic-make-client :url "tunes.c2vi.dev")
)
(defun my-pick-song ()
(interactive)
(let* (
(playlist (infrasonic-get-playlist my-subsonic-client "6ad5avelak6Lnu2yEbWwjj"))
(entries (cdr (assoc 'entry playlist)))
(candidates (list))
(urls '())
(void (dolist (song entries)
(let* (
(artist (cdr (assoc 'artist song)))
(cropped-artist (truncate-string-to-width artist 50))
(title (cdr (assoc 'title song)))
(id (cdr (assoc 'id song)))
(line (format "%-50s - %s" cropped-artist title))
(stream-url (infrasonic-get-stream-url my-subsonic-client id))
)
(add-to-list 'candidates line)
(push (cons line stream-url) urls)
)
))
(completion-result (completing-read "Select track: " candidates))
(url (cdr (assoc completion-result urls)))
)
(emms-play-url url)
)
)
(defun my-load-playlist ()
(interactive)
(emms-playlist-mode-go)
(emms-playlist-clear)
(let* (
(playlist-id "6ad5avelak6Lnu2yEbWwjj")
(playlist (infrasonic-get-playlist
my-subsonic-client
playlist-id
))
(entries (cdr (assoc 'entry playlist)))
(track-count 0)
(void (dolist (track entries)
(let* (
(track-id (cdr (assoc 'id track)))
(title (cdr (assoc 'title track)))
(artist (cdr (assoc 'artist track)))
(stream-url (infrasonic-get-stream-url my-subsonic-client track-id))
(emmstrack (emms-track 'url stream-url))
)
;(message title)
(emms-track-set emmstrack 'info-title title)
(emms-track-set emmstrack 'info-artist artist)
(funcall emms-playlist-insert-track-function emmstrack)
)
))
)
)
)
;;; my finder
(defun my/obsidian--extra-files ()
"Return Markdown files from additional directories."
(let ((directory "~/notes/reference"))
(when (file-directory-p directory)
(directory-files-recursively
(expand-file-name directory)
"\\.md\\'"))))
(defun my/obsidian--candidate-data ()
"Return `(DISPLAY . FILE)' candidates for the Obsidian finder."
(let (result)
;; Files known to obsidian.el.
(maphash
(lambda (file metadata)
(let* ((tags (gethash 'tags metadata))
(aliases (gethash 'aliases metadata))
(title (file-name-base file))
(display
(concat
title
(when aliases
(format " [%s]" (string-join aliases ", ")))
(when tags
(format " #%s"
(string-join tags " #"))))))
(push (cons display file) result)))
obsidian-vault-cache)
;; Files in the additional directory.
(dolist (file (my/obsidian--extra-files))
(unless (assoc (file-name-base file) result)
(push (cons (file-name-base file) file) result)))
result))
(defun my-switcher ()
"Fuzzy-find all my stuff"
(interactive)
;; Make sure obsidian.el's cache is current.
;;(obsidian-update)
(let* ((data (my/obsidian--candidate-data))
(candidates (mapcar #'car data))
(choice
(completing-read
"things: "
candidates
nil
nil ; allow a new/non-existing note
nil
nil
nil)))
(if-let ((file (cdr (assoc choice data))))
;; Existing note.
(find-file file)
;; New note.
(let ((file
(expand-file-name
(if (string-suffix-p ".md" choice)
choice
(concat choice ".md"))
(expand-file-name obsidian-inbox-directory
obsidian-directory))))
(make-directory (file-name-directory file) t)
(find-file file)
)
)
)
)
(after! evil
(map! :gnv "C-e" #'my-switcher)
)
;;; scratch
(defun my/scratch ()
(lookup-key corfu-map (kbd "C-u"))
(lookup-key corfu-map (kbd "C-i"))
(define-key corfu-map (kbd "C-i") 'my/corfu-insert-first)
(emms-insert-url "https://tunes.c2vi.dev/rest/stream.view?u=c2vi&t=59248d02914f93abee797adcf0f14d6a&s=8a3988f950895ee7bd87e17651e65eb1&v=1.16.1&c=infrasonic&f=json&id=0FnN5Sb3mCItKdIiJZcG7x")
(message emms-playlist-buffer)
)

15
doomdir/custom.el Normal file
View File

@@ -0,0 +1,15 @@
;;; -*- lexical-binding: t -*-
(custom-set-variables
;; custom-set-variables was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
'(custom-safe-themes
'("0325a6b5eea7e5febae709dab35ec8648908af12cf2d2b569bedc8da0a3a81c1"
"aec7b55f2a13307a55517fdf08438863d694550565dee23181d2ebd973ebd6b8" default)))
(custom-set-faces
;; custom-set-faces was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
)

205
doomdir/init.el Normal file
View File

@@ -0,0 +1,205 @@
;;; $DOOMDIR/init.el -*- lexical-binding: t; -*-
;; This file controls what Doom modules are enabled and what order they load
;; in. Remember to run 'doom sync' after modifying it!
;; NOTE: Press 'SPC h d h' (or 'C-h d h' for non-vim users) to access Doom's
;; documentation. There you'll find a link to Doom's Module Index where all of
;; our modules are listed, including what flags they support.
;; NOTE: Move your cursor over a module's name (or its flags) and press 'K' (or
;; 'C-c c k' for non-vim users) to view its documentation. This works on flags
;; as well (those symbols that start with a plus).
;;
;; Alternatively, press 'gd' (or 'C-c c d') on a module to browse its
;; directory (for easy access to its source code).
(doom! :input
;;bidi ; (tfel ot) thgir etirw uoy gnipleh
;;chinese
;;japanese
;;layout ; auie,ctsrnm is the superior home row
:completion
;;company ; the ultimate code completion backend
(corfu +orderless) ; complete with cap(f), cape and a flying feather!
;;helm ; the *other* search engine for love and life
;;ido ; the other *other* search engine...
;;ivy ; a search engine for love and life
vertico ; the search engine of the future
:ui
;;deft ; notational velocity for Emacs
doom ; what makes DOOM look the way it does
dashboard ; a nifty splash screen for Emacs
;;doom-quit ; DOOM quit-message prompts when you quit Emacs
;;(emoji +unicode) ; 🙂
hl-todo ; highlight TODO/FIXME/NOTE/DEPRECATED/HACK/REVIEW
;;indent-guides ; highlighted indent columns
;;ligatures ; ligatures and symbols to make your code pretty again
;;minimap ; show a map of the code on the side
modeline ; snazzy, Atom-inspired modeline, plus API
;;nav-flash ; blink cursor line after big motions
;;neotree ; a project drawer, like NERDTree for vim
ophints ; highlight the region an operation acts on
(popup +defaults) ; tame sudden yet inevitable temporary windows
;;smooth-scroll ; So smooth you won't believe it's not butter
;;tabs ; a tab bar for Emacs
;;treemacs ; a project drawer, like neotree but cooler
;;unicode ; extended unicode support for various languages
(vc-gutter +pretty) ; vcs diff in the fringe
vi-tilde-fringe ; fringe tildes to mark beyond EOB
;;window-select ; visually switch windows
workspaces ; tab emulation, persistence & separate workspaces
zen ; distraction-free coding or writing
:editor
(evil +everywhere); come to the dark side, we have cookies
file-templates ; auto-snippets for empty files
fold ; (nigh) universal code folding
;;(format +onsave) ; automated prettiness
;;god ; run Emacs commands without modifier keys
;;lispy ; vim for lisp, for people who don't like vim
;;multiple-cursors ; editing in many places at once
;;objed ; text object editing for the innocent
;;parinfer ; turn lisp into python, sort of
;;rotate-text ; cycle region at point between text candidates
snippets ; my elves. They type so I don't have to
(whitespace +guess +trim) ; a butler for your whitespace
;;word-wrap ; soft wrapping with language-aware indent
:emacs
dired ; making dired pretty [functional]
electric ; smarter, keyword-based electric-indent
;;eww ; the internet is gross
;;ibuffer ; interactive buffer management
tramp ; remote files at your arthritic fingertips
undo ; persistent, smarter undo for your inevitable mistakes
vc ; version-control and Emacs, sitting in a tree
:term
;;eshell ; the elisp shell that works everywhere
;;shell ; simple shell REPL for Emacs
;;term ; basic terminal emulator for Emacs
;;vterm ; almost the best terminal emulation in Emacs
;;ghostel ; the best terminal emulation in Emacs
:checkers
syntax ; tasing you for every semicolon you forget
;;(spell +flyspell) ; tasing you for misspelling mispelling
;;grammar ; tasing grammar mistake every you make
:tools
;;ansible
;;biblio ; Writes a PhD for you (citation needed)
;;collab ; buffers with friends
;;debugger ; stepping through code, to help you add bugs
;;direnv
;;docker
;;editorconfig ; let someone else argue about tabs vs spaces
;;ein ; tame Jupyter notebooks with emacs
(eval +overlay) ; run code, run (also, repls)
lookup ; navigate your code and its documentation
;;llm ; when I said you needed friends, I didn't mean...
;;(lsp +eglot) ; M-x vscode
magit ; a git porcelain for Emacs
;;make ; run make tasks from Emacs
;;pass ; password manager for nerds
;;pdf ; pdf enhancements
;;terraform ; infrastructure as code
;;tmux ; an API for interacting with tmux
;;tree-sitter ; syntax and parsing, sitting in a tree...
;;upload ; map local to remote projects via ssh/ftp
:os
(:if (featurep :system 'macos) macos) ; improve compatibility with macOS
;;tty ; improve the terminal Emacs experience
:lang
;;ada ; In strong typing we (blindly) trust
;;(agda +local) ; types of types of types of types...
;;beancount ; mind the GAAP
;;(cc +lsp) ; C > C++ == 1
;;clojure ; java with a lisp
;;common-lisp ; if you've seen one lisp, you've seen them all
;;coq ; proofs-as-programs
;;crystal ; ruby at the speed of c
;;csharp ; unity, .NET, and mono shenanigans
;;data ; config/data formats
;;(dart +flutter) ; paint ui and not much else
;;dhall
;;elixir ; erlang done right
;;elm ; care for a cup of TEA?
emacs-lisp ; drown in parentheses
;;erlang ; an elegant language for a more civilized age
;;ess ; emacs speaks statistics
;;factor
;;faust ; dsp, but you get to keep your soul
;;fortran ; in FORTRAN, GOD is REAL (unless declared INTEGER)
;;fsharp ; ML stands for Microsoft's Language
;;fstar ; (dependent) types and (monadic) effects and Z3
;;gdscript ; the language you waited for
;;(go +lsp) ; the hipster dialect
;;(graphql +lsp) ; Give queries a REST
;;(haskell +lsp) ; a language that's lazier than I am
;;hy ; readability of scheme w/ speed of python
;;idris ; a language you can depend on
;;json ; At least it ain't XML
;;janet ; Fun fact: Janet is me!
;;(java +lsp) ; the poster child for carpal tunnel syndrome
;;javascript ; all(hope(abandon(ye(who(enter(here))))))
;;julia ; a better, faster MATLAB
;;kotlin ; a better, slicker Java(Script)
;;latex ; writing papers in Emacs has never been so fun
;;lean ; for folks with too much to prove
;;ledger ; be audit you can be
;;lua ; one-based indices? one-based indices
markdown ; writing docs for people to ignore
;;nim ; python + lisp at the speed of c
;;nix ; I hereby declare "nix geht mehr!"
;;ocaml ; an objective camel
;;odin ; C, minus its footguns
org ; organize your plain life in plain text
;;php ; perl's insecure younger brother
;;plantuml ; diagrams for confusing people more
;;graphviz ; diagrams for confusing yourself even more
;;purescript ; javascript, but functional
;;python ; beautiful is better than ugly
;;qt ; the 'cutest' gui framework ever
;;racket ; a DSL for DSLs
;;raku ; the artist formerly known as perl6
;;rest ; Emacs as a REST client
;;rst ; ReST in peace
;;(ruby +rails) ; 1.step {|i| p "Ruby is #{i.even? ? 'love' : 'life'}"}
;;(rust +lsp) ; Fe2O3.unwrap().unwrap().unwrap().unwrap()
;;scad ; trust the preview, regret the render
;;scala ; java, but good
;;(scheme +guile) ; a fully conniving family of lisps
sh ; she sells {ba,z,fi}sh shells on the C xor
;;sml
;;solidity ; do you need a blockchain? No.
;;swift ; who asked for emoji variables?
;;terra ; Earth and Moon in alignment for performance.
;;web ; the tubes
;;yaml ; JSON, but readable
;;zig ; C, but simpler
:email
(mu4e +org +gmail)
;;notmuch
;;(wanderlust +gmail)
:app
;;calendar
;;emms
;;everywhere ; *leave* Emacs!? You must be joking
;;irc ; how neckbeards socialize
;;(rss +org) ; emacs as an RSS reader
:config
;;literate
(default +bindings +smartparens))
;; If you're a dark-mode user who suffers from the "flash of white Emacs" when
;; you first open Emacs, uncomment this (and adjust the color as you like).
;; (add-to-list 'initial-frame-alist '(background-color . "#000000"))

68
doomdir/packages.el Normal file
View File

@@ -0,0 +1,68 @@
;;; $DOOMDIR/packages.el -*- lexical-binding: t; no-byte-compile: t -*-
;; To install a package:
;;
;; 1. Declare them here in a `package!' statement,
;; 2. Run 'doom sync' in the shell,
;; 3. Restart Emacs.
;;
;; Use 'C-h f package\!' to look up documentation for the `package!' macro.
;; To install SOME-PACKAGE from MELPA, ELPA or emacsmirror:
;; (package! some-package)
;; To install a package directly from a remote git repo, you must specify a
;; `:recipe'. You'll find documentation on what `:recipe' accepts here:
;; https://github.com/radian-software/straight.el#the-recipe-format
;; (package! another-package
;; :recipe (:host github :repo "username/repo"))
;; If the package you are trying to install does not contain a PACKAGENAME.el
;; file, or is located in a subdirectory of the repo, you'll need to specify
;; `:files' in the `:recipe':
;; (package! this-package
;; :recipe (:host github :repo "username/repo"
;; :files ("some-file.el" "src/lisp/*.el")))
;; If you'd like to disable a package included with Doom, you can do so here
;; with the `:disable' property:
;; (package! builtin-package :disable t)
;; You can override the recipe of a built in package without having to specify
;; all the properties for `:recipe'. These will inherit the rest of its recipe
;; from Doom or MELPA/ELPA/Emacsmirror:
;; (package! builtin-package :recipe (:nonrecursive t))
;; (package! builtin-package-2 :recipe (:repo "myfork/package"))
;; Specify a `:branch' to install a package from a particular branch or tag.
;; This is required for some packages whose default branch isn't 'master' (which
;; our package manager can't deal with; see radian-software/straight.el#279)
;; (package! builtin-package :recipe (:branch "develop"))
;; Use `:pin' to specify a particular commit to install.
;; (package! builtin-package :pin "1a2b3c4d5e")
;; Doom's packages are pinned to a specific commit and updated from release to
;; release. The `unpin!' macro allows you to unpin single packages...
;; (unpin! pinned-package)
;; ...or multiple packages
;; (unpin! pinned-package another-pinned-package)
;; ...Or *all* packages (NOT RECOMMENDED; will likely break things)
;; (unpin! t)
(package! tldr)
(package! obsidian)
(package! empv)
(package! f)
(package! emms)
(package! infrasonic
:recipe (:host github :repo "kaibagley/infrasonic")
:pin "134dff93c19d6862768c68d5981c59e084d48760"
)
(package! supersonic
:recipe (:host github :repo "systemfreund/supersonic.el" )
:pin "8d422489ffc84cc3907232afb51349c576c26cba"
)

752
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";
@@ -180,6 +182,13 @@
};
};
pkgsUnstableArm = import nixpkgs-unstable {
system = "aarch64-linux";
config = {
allowUnfree = true;
};
};
specialArgs = {
inherit inputs confDir workDir secretsDir persistentDir self tunepkgs unstable nur pkgsUnstable dataDir;
system = "x86_64-linux";
@@ -500,7 +509,7 @@
inherit specialArgs;
system = "x86_64-linux";
modules = [
./hosts/main.nix
./hosts/main/default.nix
./hardware/hpm-laptop.nix
];
};
@@ -616,7 +625,7 @@
# my raspberry to try out stuff with
"lush" = nixpkgs.lib.nixosSystem rec {
system = "aarch64-linux";
specialArgs = { inherit inputs confDir workDir secretsDir persistentDir self system; };
specialArgs = { inherit inputs confDir workDir secretsDir persistentDir self system; pkgsUnstable = pkgsUnstableArm; };
modules = [
./hosts/lush.nix
];

1
forked-zed Submodule

Submodule forked-zed added at 790dcefb01

41
generated/Cargo.toml Normal file
View File

@@ -0,0 +1,41 @@
[package]
name = "generated-c2vi-dev-part"
version = "0.1.0"
edition = "2024"
[dependencies]
c2vi-dev-part.path = "../dev-part"
[[bin]]
name = "lush-os"
path = "lush-os.rs"
[[bin]]
name = "main-os"
path = "main-os.rs"
[[bin]]
name = "mac-os"
path = "mac-os.rs"
[[bin]]
name = "nico-os"
path = "nico-os.rs"
[[bin]]
name = "mppc"
path = "mppc.rs"
[[bin]]
name = "timetrack-waybar"
path = "timetrack-waybar.rs"
[[bin]]
name = "md"
path = "md.rs"
[[bin]]
name = "dev"
path = "dev.rs"

7
generated/dev.rs Normal file
View File

@@ -0,0 +1,7 @@
fn main() {
if let Err(err) = c2vi_part::dev_main() {
err.log();
}
}

7
generated/lush-os.rs Normal file
View File

@@ -0,0 +1,7 @@
fn main() {
if let Err(err) = c2vi_part::lush_os_main() {
err.log();
}
}

7
generated/mac-os.rs Normal file
View File

@@ -0,0 +1,7 @@
fn main() {
if let Err(err) = c2vi_part::mac_os_main() {
err.log();
}
}

7
generated/main-os.rs Normal file
View File

@@ -0,0 +1,7 @@
fn main() {
if let Err(err) = c2vi_part::main_os_main() {
err.log();
}
}

7
generated/md.rs Normal file
View File

@@ -0,0 +1,7 @@
fn main() {
if let Err(err) = c2vi_part::md_main() {
err.log();
}
}

7
generated/mppc.rs Normal file
View File

@@ -0,0 +1,7 @@
fn main() {
if let Err(err) = c2vi_part::mppc_main() {
err.log();
}
}

7
generated/nico-os.rs Normal file
View File

@@ -0,0 +1,7 @@
fn main() {
if let Err(err) = c2vi_part::nico_os_main() {
err.log();
}
}

View File

@@ -0,0 +1 @@
{"rustc_fingerprint":12679484821923032738,"outputs":{"11857020428658561806":{"success":true,"status":"","code":0,"stdout":"___\nlib___.rlib\nlib___.so\nlib___.so\nlib___.a\nlib___.so\n/nix/store/k7bh855izql4rli5hh0s5lsphzc0gnc2-rust-mixed\noff\npacked\nunpacked\n___\ndebug_assertions\nemscripten_wasm_eh\nfmt_debug=\"full\"\noverflow_checks\npanic=\"unwind\"\nproc_macro\nrelocation_model=\"pic\"\ntarget_abi=\"\"\ntarget_arch=\"x86_64\"\ntarget_endian=\"little\"\ntarget_env=\"gnu\"\ntarget_family=\"unix\"\ntarget_feature=\"fxsr\"\ntarget_feature=\"sse\"\ntarget_feature=\"sse2\"\ntarget_feature=\"x87\"\ntarget_has_atomic\ntarget_has_atomic=\"16\"\ntarget_has_atomic=\"32\"\ntarget_has_atomic=\"64\"\ntarget_has_atomic=\"8\"\ntarget_has_atomic=\"ptr\"\ntarget_has_atomic_equal_alignment=\"16\"\ntarget_has_atomic_equal_alignment=\"32\"\ntarget_has_atomic_equal_alignment=\"64\"\ntarget_has_atomic_equal_alignment=\"8\"\ntarget_has_atomic_equal_alignment=\"ptr\"\ntarget_has_atomic_load_store\ntarget_has_atomic_load_store=\"16\"\ntarget_has_atomic_load_store=\"32\"\ntarget_has_atomic_load_store=\"64\"\ntarget_has_atomic_load_store=\"8\"\ntarget_has_atomic_load_store=\"ptr\"\ntarget_has_reliable_f128\ntarget_has_reliable_f16\ntarget_has_reliable_f16_math\ntarget_os=\"linux\"\ntarget_pointer_width=\"64\"\ntarget_thread_local\ntarget_vendor=\"unknown\"\nub_checks\nunix\n","stderr":""},"17747080675513052775":{"success":true,"status":"","code":0,"stdout":"rustc 1.95.0-nightly (f60a0f1bc 2026-02-02)\nbinary: rustc\ncommit-hash: f60a0f1bcc5a2a6dd8eb2d2021da79b40f5fbae9\ncommit-date: 2026-02-02\nhost: x86_64-unknown-linux-gnu\nrelease: 1.95.0-nightly\nLLVM version: 22.1.0\n","stderr":""},"7971740275564407648":{"success":true,"status":"","code":0,"stdout":"___\nlib___.rlib\nlib___.so\nlib___.so\nlib___.a\nlib___.so\n/nix/store/k7bh855izql4rli5hh0s5lsphzc0gnc2-rust-mixed\noff\npacked\nunpacked\n___\ndebug_assertions\nemscripten_wasm_eh\nfmt_debug=\"full\"\noverflow_checks\npanic=\"unwind\"\nproc_macro\nrelocation_model=\"pic\"\ntarget_abi=\"\"\ntarget_arch=\"x86_64\"\ntarget_endian=\"little\"\ntarget_env=\"gnu\"\ntarget_family=\"unix\"\ntarget_feature=\"fxsr\"\ntarget_feature=\"sse\"\ntarget_feature=\"sse2\"\ntarget_feature=\"x87\"\ntarget_has_atomic\ntarget_has_atomic=\"16\"\ntarget_has_atomic=\"32\"\ntarget_has_atomic=\"64\"\ntarget_has_atomic=\"8\"\ntarget_has_atomic=\"ptr\"\ntarget_has_atomic_equal_alignment=\"16\"\ntarget_has_atomic_equal_alignment=\"32\"\ntarget_has_atomic_equal_alignment=\"64\"\ntarget_has_atomic_equal_alignment=\"8\"\ntarget_has_atomic_equal_alignment=\"ptr\"\ntarget_has_atomic_load_store\ntarget_has_atomic_load_store=\"16\"\ntarget_has_atomic_load_store=\"32\"\ntarget_has_atomic_load_store=\"64\"\ntarget_has_atomic_load_store=\"8\"\ntarget_has_atomic_load_store=\"ptr\"\ntarget_has_reliable_f128\ntarget_has_reliable_f16\ntarget_has_reliable_f16_math\ntarget_os=\"linux\"\ntarget_pointer_width=\"64\"\ntarget_thread_local\ntarget_vendor=\"unknown\"\nub_checks\nunix\n","stderr":""}},"successes":{}}

View File

@@ -0,0 +1 @@
{"rustc_fingerprint":12679484821923032738,"outputs":{"17747080675513052775":{"success":true,"status":"","code":0,"stdout":"rustc 1.95.0-nightly (f60a0f1bc 2026-02-02)\nbinary: rustc\ncommit-hash: f60a0f1bcc5a2a6dd8eb2d2021da79b40f5fbae9\ncommit-date: 2026-02-02\nhost: x86_64-unknown-linux-gnu\nrelease: 1.95.0-nightly\nLLVM version: 22.1.0\n","stderr":""},"7971740275564407648":{"success":true,"status":"","code":0,"stdout":"___\nlib___.rlib\nlib___.so\nlib___.so\nlib___.a\nlib___.so\n/nix/store/k7bh855izql4rli5hh0s5lsphzc0gnc2-rust-mixed\noff\npacked\nunpacked\n___\ndebug_assertions\nemscripten_wasm_eh\nfmt_debug=\"full\"\noverflow_checks\npanic=\"unwind\"\nproc_macro\nrelocation_model=\"pic\"\ntarget_abi=\"\"\ntarget_arch=\"x86_64\"\ntarget_endian=\"little\"\ntarget_env=\"gnu\"\ntarget_family=\"unix\"\ntarget_feature=\"fxsr\"\ntarget_feature=\"sse\"\ntarget_feature=\"sse2\"\ntarget_feature=\"x87\"\ntarget_has_atomic\ntarget_has_atomic=\"16\"\ntarget_has_atomic=\"32\"\ntarget_has_atomic=\"64\"\ntarget_has_atomic=\"8\"\ntarget_has_atomic=\"ptr\"\ntarget_has_atomic_equal_alignment=\"16\"\ntarget_has_atomic_equal_alignment=\"32\"\ntarget_has_atomic_equal_alignment=\"64\"\ntarget_has_atomic_equal_alignment=\"8\"\ntarget_has_atomic_equal_alignment=\"ptr\"\ntarget_has_atomic_load_store\ntarget_has_atomic_load_store=\"16\"\ntarget_has_atomic_load_store=\"32\"\ntarget_has_atomic_load_store=\"64\"\ntarget_has_atomic_load_store=\"8\"\ntarget_has_atomic_load_store=\"ptr\"\ntarget_has_reliable_f128\ntarget_has_reliable_f16\ntarget_has_reliable_f16_math\ntarget_os=\"linux\"\ntarget_pointer_width=\"64\"\ntarget_thread_local\ntarget_vendor=\"unknown\"\nub_checks\nunix\n","stderr":""}},"successes":{}}

View File

@@ -0,0 +1 @@
error: the package 'generated-c2vi-dev-part' does not contain these features: target-js, target-obsidian

View File

@@ -0,0 +1,7 @@
fn main() {
if let Err(err) = c2vi_part::timetrack_waybar_main() {
err.log();
}
}

View File

@@ -34,26 +34,6 @@
};
};
/*
fileSystems."/" = {
device = "/dev/disk/by-uuid/6518e61e-7120-48ef-81a3-5eae0f67297e";
fsType = "btrfs";
};
fileSystems."/boot" = {
device = "/dev/disk/by-uuid/0E6C-F209";
fsType = "vfat";
};
*/
fileSystems."/" = {
device = "/dev/disk/by-label/main-root";
fsType = "btrfs";
};
fileSystems."/boot" = {
device = "/dev/disk/by-label/MAIN-BOOT";
fsType = "vfat";
};
#swapDevices = [
#{ device = "/dev/disk/by-uuid/418bf0d8-e548-45d5-802a-53de72707ebc"; }

View File

@@ -10,12 +10,12 @@
inputs.home-manager.nixosModules.home-manager
../users/me/headless.nix
../users/root/default.nix
../users/server/headles.nix
../users/server/headless.nix
];
# allow acern to ssh into server
users.users.server.openssh.authorizedKeys.keys = [
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHTV1VoNAjMha5IP+qb8XABDo02pW3iN0yPBIbSqZA27 me@acern"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHTV1VoNAjMha5IP+Do02pW3iN0yPBIbSqZA27 me@acern"
];
# allow server user to shutdown fusu
@@ -26,8 +26,8 @@
}
];
services.tailscale.enable = true;
virtualisation.docker.enable = true;
users.users.me.extraGroups = [ "docker" ];
#fileSystems."/boot" = {
# device = "/dev/disk/by-label/fusu-boot";
@@ -57,6 +57,8 @@
8888 # for general usage
9999 # for general usage
8080 # for mitm proxy
8001 # c2vi-navidrome
8002 # c2vi-lidarr
25565 # mc proxy
25580 # wmc lobby server

View File

@@ -25,8 +25,6 @@
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKNXOPxlnSxkhm050ui56D5SHrkhuFwUOU0Gf0C+Vmks melektron@goarnix"
];
services.tailscale.enable = true;
virtualisation.libvirtd = {
enable = true;
qemuOvmf = true;
@@ -74,12 +72,6 @@
networking.firewall.allowPing = true;
networking.firewall.enable = true;
networking.firewall.interfaces."tailscale0".allowedTCPPorts = [
443 # couchdb for obsidian live sync https
44444 # resilio sync
9000 # resilio webui
];
services.samba.openFirewall = true;
networking.firewall.allowedTCPPorts = [

View File

@@ -37,6 +37,10 @@ in {
device = "/home/me/host/libvirt";
options = [ "bind" ];
};
swapDevices = [{
device = "/swapfile";
size = 20 * 1024;
}];
@@ -50,30 +54,14 @@ in {
services.tailscale.enable = true;
services.resilio = {
enable = true;
enableWebUI = true;
httpListenAddr = "100.70.54.18";
checkForUpdates = false;
listeningPort = 44444;
};
networking.firewall.interfaces."tailscale0".allowedTCPPorts = [
44444 # resilio sync
9000 # resilio webui
networking.firewall.interfaces."br0".allowedTCPPorts = [
9001 # fwin vnc
9002 # fwin rdp
9003 # fwin ssh
9003 # fwin ssh
];
networking.firewall.interfaces."br0".allowedTCPPorts = [
44444 # resilio sync
9000 # resilio webui
9001 # fwin vnc
9002 # fwin rdp
9003 # fwin ssh
networking.firewall.interfaces."br0".allowedTCPPortRanges = [
{from = 8000; to = 10000;}
];
@@ -82,9 +70,15 @@ in {
boot.zfs.forceImportRoot = false;
networking.hostId = "7552c83e";
fileSystems."/home/files/storage" = {
fileSystems."/data" = {
device = "storage";
fsType = "zfs";
options = [ "defaults" "nofail" ];
};
fileSystems."/home/files/storage" = {
device = "/data";
options = [ "bind" "defaults" "nofail" ];
};
# Use the GRUB 2 boot loader.
@@ -124,6 +118,7 @@ in {
services.samba.openFirewall = true;
networking.firewall.allowedTCPPorts = [
22
8888 # for general usage
9999 # for general usage
8080 # for mitm proxy
@@ -163,6 +158,7 @@ in {
];
environment.systemPackages = with pkgs; [
tcpdump
sshfs
ntfs3g
virtiofsd
@@ -223,8 +219,9 @@ in {
text = ''
ip=$(curl -4 my.ip.fi)
curl "http://dynv6.com/api/update?hostname=${builtins.readFile "${secretsDir}/dns-name-two"}&ipv4=$ip&token=${builtins.readFile "${secretsDir}/dns-name-two-token"}"
curl "https://dynamicdns.park-your-domain.com/update?host=home&domain=${builtins.readFile "${secretsDir}/dns-name"}&password=${builtins.readFile "${secretsDir}/dns-name-token"}&ip=$ip"
#curl "http://dynv6.com/api/update?hostname=${builtins.readFile "${secretsDir}/dns-name-two"}&ipv4=$ip&token=${builtins.readFile "${secretsDir}/dns-name-two-token"}"
curl "http://dynv6.com/api/update?hostname=${builtins.readFile "${secretsDir}/dns-name-mati"}&ipv4=$ip&token=${builtins.readFile "${secretsDir}/dns-name-mati-token"}"
# curl "https://dynamicdns.park-your-domain.com/update?host=home&domain=${builtins.readFile "${secretsDir}/dns-name"}&password=${builtins.readFile "${secretsDir}/dns-name-token"}&ip=$ip"
# https://www.namecheap.com/support/knowledgebase/article.aspx/29/11/how-to-dynamically-update-the-hosts-ip-with-an-https-request/
'';

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?
@@ -9,6 +9,7 @@
inputs.networkmanager.nixosModules.networkmanager
../common/all.nix
../common/nixos.nix
inputs.home-manager.nixosModules.home-manager
../users/me/headless.nix
@@ -21,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
@@ -31,6 +34,7 @@
powerOnBoot = true;
};
};
swapDevices = [ { device = "/swapfile"; } ];
# get usbip working
boot.extraModulePackages = [
@@ -68,8 +72,6 @@
services.blueman.enable = true;
hardware.enableRedistributableFirmware = true;
services.tailscale.enable = true;
environment.systemPackages = with pkgs; [
linuxPackages.usbip
vim
@@ -104,10 +106,145 @@
settings.PermitRootLogin = "no";
settings.X11Forwarding = true;
extraConfig = ''
X11UseLocalhost no
X11UseLocalhost yes
'';
};
########################### kiosk ############################
boot.plymouth.enable = true;
services.dbus.enable = true;
fonts.enableDefaultPackages = true;
xdg.icons.enable = true;
gtk.iconCache.enable = true;
services.udisks2.enable = false;
hardware.opengl.enable = true;
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.enableConfigFile = false;
mize.debugBinary = "/home/me/here/config/mize/target/debug/mize";
systemd.user.services.mize.environment.LOG= "trace";
systemd.user.services.mize.environment.MIZE_STORE= "/home/me/host/mize";
systemd.user.services.mize.serviceConfig.EnvironmentFile = "/home/me/host/mize/daemon.env";
#systemd.user.services.mize.environment.WAYLAND_DISPLAY= "wayland-1";
systemd.user.services.mize.environment.DISPLAY= ":0";
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" ];
wantedBy = [ "graphical.target" ];
conflicts = [ "getty@%i.service" ]; # "plymouth-quit.service" "plymouth-quit-wait.service"
restartIfChanged = false;
serviceConfig = {
#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";
IgnoreSIGPIPE = "no";
# Log this user with utmp, letting it show up with commands 'w' and
# 'who'. This is needed since we replace (a)getty.
UtmpIdentifier = "%I";
UtmpMode = "user";
# A virtual terminal is needed.
TTYPath = "/dev/%I";
TTYReset = "yes";
TTYVHangup = "yes";
TTYVTDisallocate = "yes";
# Fail to start if not controlling the virtual terminal.
StandardInput = "tty-fail";
#StandardOutput = "syslog";
#StandardError = "syslog";
# Set up a full (custom) user session for the user, required by Cage.
PAMName = "cage";
};
};
security.pam.services.cage.text = ''
auth required pam_unix.so nullok
account required pam_unix.so
session required pam_unix.so
session required ${pkgs.systemd}/lib/security/pam_systemd.so
'';
systemd.targets.graphical.wants = [ "cage@tty1.service" ];
systemd.defaultUnit = "graphical.target";
*/
####################################### networking ##########################

View File

@@ -1,4 +1,4 @@
{ lib, secretsDir, pkgs, inputs, unstable, ... }: let
{ lib, secretsDir, pkgs, inputs, unstable, config, ... }: let
myobs = pkgs.wrapOBS {
plugins = with pkgs.obs-studio-plugins; [
@@ -21,10 +21,25 @@ in {
../users/me/gui.nix
../users/root/default.nix
../common/nixos-wayland.nix
inputs.mize.nixosModules.default
];
services.tailscale.enable = true;
mize.enable = true;
mize.debugBinary = "/data/external/config/target/debug/mac-os";
mize.debugConfigFile = "/home/me/host/mize-config.toml";
systemd.user.services.mize.environment.LOG= "trace";
systemd.user.services.mize.serviceConfig.EnvironmentFile = "/home/me/host/mize/daemon.env";
programs.nix-ld.enable = true;
# https://nixos.wiki/wiki/OBS_Studio
boot.extraModulePackages = with config.boot.kernelPackages; lib.mkForce [
v4l2loopback
];
boot.extraModprobeConfig = ''
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;
networking.hostName = "mac";
@@ -62,23 +77,9 @@ in {
4410 # lan-mouse
];
##### Netbird Configuration
services.netbird.clients.ppc = {
#login = {
#enable = true;
#setupKeyFile = "${secretsDir}/netbird-setup-key";
#};
port = 51821;
ui.enable = false;
openFirewall = true;
#openInternalFirewall = true;
};
swapDevices = [ { device = "/swapfile"; } ];
boot.kernelModules = [ "usbip_core" ];
boot.extraModprobeConfig = "options kvm_intel nested=1";
# to build rpi images
boot.binfmt.emulatedSystems = [
@@ -95,6 +96,9 @@ in {
firewall_backend = "nftables"
'';
};
networking.firewall.trustedInterfaces = [
"nb-ppc"
];
# Use the GRUB 2 boot loader.
boot.loader.grub = {
@@ -153,6 +157,12 @@ in {
fsType = "vfat";
};
fileSystems."/data/external" = {
device = "/dev/disk/by-uuid/62933892-a6b9-4a10-8b9d-f47dc1380e85";
fsType = "ext4";
options = [ "defaults" "nofail" ];
};
networking = {
nameservers = [ "1.1.1.1" "8.8.8.8" ];
};
@@ -188,8 +198,8 @@ in {
{
position = "left";
hostname = "main";
activate_on_startup = true;
ips = [ "192.168.4.2" "100.71.47.106" ];
activate_on_startup = false;
ips = [ "192.168.4.2" "100.88.218.34" ];
port = 4410;
}
];
@@ -211,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 {
@@ -451,7 +462,8 @@ in {
uuid = "ab51de8a-9742-465a-928b-be54a83ab6a3";
type = "wifi";
interface-name = "wlp3s0";
autoconnect-priority = "100";
#autoconnect-priority = "100";
autoconnect = false;
};
wifi = {
mode = "ap";

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"

101
hosts/main/bashrc Normal file
View File

@@ -0,0 +1,101 @@
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
export DOOMDIR="$CONFIG_DIR/doomdir"
mkdir -p $LOG_DIR
# arch path
export PATH=$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/ "$@"

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

@@ -0,0 +1 @@
../../../src/doom/bin/doom

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 "$@"

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

@@ -0,0 +1,3 @@
#!/bin/bash
exec emacsclient "$@"

13
hosts/main/bin/emacs-server Executable file
View File

@@ -0,0 +1,13 @@
#!/bin/bash
if [[ -v IS_RUNIT ]]; then
exec 2>$LOG_DIR/emacs
exec 1>$LOG_DIR/emacs
unset IS_RUNIT
fi
export DOOMDIR="$CONFIG_DIR/doomdir"
echo $DOOMDIR
echo -------------
exec emacs --init-directory $CONFIG_DIR/src/doom --fg-daemon "$@"

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 "$@"

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

@@ -0,0 +1,20 @@
#!/bin/bash
if [[ -v IS_RUNIT ]]; then
exec 2>$LOG_DIR/hyprland
exec 1>$LOG_DIR/hyprland
sudo renice -n -10 -p $$
unset IS_RUNIT
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 "$@"

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

@@ -0,0 +1 @@
mize

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

@@ -0,0 +1,16 @@
#!/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 -o cli.daemonMode --secrets $SECRETS_DIR/mize-secrets.toml run
exit 0
fi
export LD_LIBRARY_PATH=/nix/store/992h4k1s2c0ma186wyc7a3080wrh1cc6-xdotool-4.20260303.1/lib:/nix/store/rsdvlq7wb59hdiwhhvkhx2xvxdkalkzc-webkitgtk-2.52.4+abi=4.1/lib:/nix/store/90ln3xz5m2x3r0ykad4mkg9gnwgrjpzg-pango-1.57.1/lib:/nix/store/l0vl4dali2mvbpi30a8da1f71jl85myg-openssl-3.6.2/lib:/nix/store/s2bjqqzdjs4ji71qm1wwnkiy7g3afdz6-at-spi2-core-2.60.4/lib:/nix/store/fzhjg6xris850npqr92g4m4pskj88brn-atkmm-2.28.5/lib:/nix/store/4zwifnznmqsg3zl8y5yyfafwp4sws6rs-cairo-1.18.4/lib:/nix/store/rgr3i966i5wnblv62fvkid3v3lxy1ivb-gdk-pixbuf-2.44.6/lib:/nix/store/7dl2py4dnp4ffj92r1lq0i54ik1v8kzn-glib-2.88.1/lib:/nix/store/7c73fgj9w0k8qrpq3j1h8h976bk7gqsp-gtk+3-3.24.52/lib:/nix/store/49i3fhgpfffwh3xm3j58ma4z7221sqbq-harfbuzz-13.2.1/lib:/nix/store/na21ka09652cgigpv9wlw904wpq8bnvz-librsvg-2.62.1/lib:/nix/store/jc4y9v7ci45vas65kyl00pzpam3dnbfk-libsoup-3.6.6/lib:/nix/store/3kncz3fkk7sv9xc61x096jnbxvxfnx1k-libxkbcommon-1.13.1/lib:/nix/store/a4h98420m9h8c84r2igrpdd94xsrc9b6-alsa-lib-1.2.15.3/lib:/nix/store/hngmi01i8wgi25a0byrxcn4ysz5j79mw-gcc-15.2.0-lib/lib:/nix/store/xpzd2xmvqpkv1la78qkfpybkfwak27xd-libxcb-1.17.0/lib:/nix/store/6y2b9qs1npwsvcsl9m66hjarzj0yagb4-pipewire-1.6.5/lib:/nix/store/clvzgv5kqq953s4azqhkg3ddgpvgl9wc-wayland-1.25.0/lib:/nix/store/8gyg3xn9i8xdz42yhbl0d3vmmz8phcs0-bzip2-1.0.8/lib
exec /home/me/work/config/mize/target/debug/mize --config $CONFIG_DIR/hosts/main/mize.toml --secrets $SECRETS_DIR/mize-secrets.toml "$@"
# alias sci="cargo run --manifest-path ~/work/config/mize/Cargo.toml --bin mize -- --config $CONFIG_DIR/hosts/main/mize.toml --secrets $SECRETS_DIR/mize-secrets.toml run sci"
# alias mr="cargo run --manifest-path ~/work/config/mize/Cargo.toml --bin mize -- --config $CONFIG_DIR/hosts/main/mize.toml --secrets $SECRETS_DIR/mize-secrets.toml run"
# alias md="cargo run --manifest-path ~/work/config/mize/Cargo.toml --bin mize -- --config $CONFIG_DIR/hosts/main/mize.toml --secrets $SECRETS_DIR/mize-secrets.toml run dev"

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

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

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

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/nyxt Executable file
View File

@@ -0,0 +1,3 @@
#!/bin/bash
exec nixGL /home/me/.nix-profile/bin/nyxt --config $CONFIG_DIR/nyxt "$@"

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 "$@"

13
hosts/main/bin/screenshot Executable file
View File

@@ -0,0 +1,13 @@
#!/bin/bash
geometry=$(slurp -c "#ff0000ff")
if [[ "$?" != "0" ]]
then
pkill wayfreeze || true
exit
fi
grim -g "$geometry" -t ppm - | nixGL satty --filename - --copy-command=wl-copy --early-exit &
pkill wayfreeze || true

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 "$@"

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

@@ -33,7 +33,8 @@
};
*/
#services.openssh.enable = true;
services.openssh.enable = true;
boot.kernelModules = [ "vhci-hcd" ];
programs.obs-studio = {
enable = true;
@@ -44,6 +45,62 @@
obs-teleport
];
};
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" "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
}
'';
};
# virtual display
/*
@@ -85,18 +142,6 @@
};
*/
##### Netbird Configuration
services.netbird.clients.ppc = {
#login = {
#enable = true;
#setupKeyFile = "${secretsDir}/netbird-setup-key";
#};
port = 51821;
ui.enable = false;
openFirewall = true;
#openInternalFirewall = true;
};
programs.fuse.userAllowOther = true;
@@ -179,6 +224,7 @@
/*
home-manager.users.me.programs.lan-mouse = {
enable = true;
settings = {
@@ -189,36 +235,20 @@
position = "right";
hostname = "mac";
activate_on_startup = true;
ips = [ "192.168.4.3" "100.100.55.117" ];
ips = [ "192.168.4.3" "100.88.112.181" ];
port = 4410;
}
];
};
};
home-manager.users.me.systemd.user.services.lan-mouse.Service.Environment = "PATH=/bin";
*/
virtualisation.vmVariant.services.timesyncd.enable = lib.mkForce false;
services.tailscale.enable = true;
services.resilio = {
enable = false;
enableWebUI = true;
httpListenAddr = "100.71.47.106";
checkForUpdates = false;
listeningPort = 44444;
};
users.users.me.homeMode = "770"; # important for resilio
networking.firewall.interfaces."tailscale0".allowedTCPPorts = [
44444 # resilio sync
9000 # resilio webui
];
virtualisation.waydroid.enable = true;
@@ -266,18 +296,18 @@
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"
@@ -285,8 +315,16 @@
# 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/config/target/debug/main-os";
systemd.user.services.mize.environment.LOG= "trace";
systemd.user.services.mize.serviceConfig.EnvironmentFile = "/home/me/work/app-data/mize/daemon.env";
#services.udev.packages = [ inputs.waveforms.packages.${system}.adept2-runtime ];
#users.users.rslsync.extraGroups = ["users"];
@@ -309,10 +347,15 @@
((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
];
})
(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
@@ -482,7 +525,7 @@
elif [[ "$host" == "phone" ]]
then
ssh phone "source ~/.bashrc && on" &
${pkgs.rustdesk}/bin/rustdesk --connect 100.77.80.77
${pkgs.rustdesk}/bin/rustdesk --connect 100.88.245.227
elif [[ "$host" == "vnc-fwin" ]]
then
@@ -558,12 +601,13 @@
networking.firewall.allowedTCPPorts = [
5357 # wsdd
1234 # for general use
12345 # for general use
8888 # for general usage
9999 # for general usage
8080 # for mitm proxy
51820 # wireguard
6000 # Xserver
10000 # tailscale tcp funnel
4405 # clipboard sync with imac
];
@@ -574,7 +618,6 @@
53 # allow dns
48899 # GoodWe inverter discovery
4410 # lan-mouse
41641 # tailscale
];
#networking.search = [ "c2vi.local" ];
@@ -590,11 +633,11 @@
uuid = "a02273d9-ad12-395e-8372-f61129635b6f";
type = "ethernet";
autoconnect-priority = "-999";
interface-name = "enp0s13f0u1u4u3";
interface-name = "enp0s20f0u4u4u3";
};
ipv4 = {
address2 = "192.168.4.2/24";
dns = "1.1.1.1;";
dns = "100.88.218.34;";
method = "manual";
};
};
@@ -666,7 +709,7 @@
ipv4 = {
#address1 = "192.168.20.11/24";
dns = "1.1.1.1;8.8.8.8;";
dns = "100.88.218.34;";
method = "auto";
};
};
@@ -693,7 +736,7 @@
ipv4 = {
#address1 = "192.168.20.11/24";
dns = "1.1.1.1;8.8.8.8;";
dns = "100.88.218.34;";
method = "auto";
};
};
@@ -918,6 +961,61 @@
'';
# */
############################## suspend and hibernate http server ###################################
networking.firewall.interfaces.nb-ppc.allowedTCPPorts = [ 46733 ];
systemd.services.power-http-control =
let
powerHttpServer = pkgs.writeTextFile {
name = "power-http-server";
destination = "/bin/power-http-server.py";
executable = true;
text = ''
#!${pkgs.python3}/bin/python3
from http.server import BaseHTTPRequestHandler, HTTPServer
import subprocess
HOST = "0.0.0.0"
PORT = 46733
class Handler(BaseHTTPRequestHandler):
def do_GET(self):
if self.path == "/suspend":
self.send_response(200)
self.end_headers()
self.wfile.write(b"Suspending")
subprocess.Popen(["systemctl", "suspend"])
elif self.path == "/shutdown":
self.send_response(200)
self.end_headers()
self.wfile.write(b"Shutting down")
subprocess.Popen(["systemctl", "hibernate"])
else:
self.send_response(404)
self.end_headers()
self.wfile.write(b"Not found")
def log_message(self, format, *args):
pass
HTTPServer((HOST, PORT), Handler).serve_forever()
'';
};
in
{
description = "Simple HTTP server for suspend/shutdown";
wantedBy = [ "multi-user.target" ];
after = [ "network.target" ];
serviceConfig = {
ExecStart = "${powerHttpServer}/bin/power-http-server.py";
Restart = "always";
RestartSec = 5;
Type = "simple";
};
};
############################## swap and hibernate ###################################

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"

20
hosts/main/hosts Normal file
View File

@@ -0,0 +1,20 @@
127.0.0.1 localhost
192.168.3.1 gw
192.168.3.1 gw.c2vi.dev
192.168.3.105 mac
# netbird
100.88.137.49 te
100.88.210.28 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
# other

View File

@@ -0,0 +1,13 @@
hl.monitor({
output = "eDP-1",
mode = "1920x1080@60.0",
position = "0x1080",
scale = 1.0
})
hl.monitor({
output = "DP-1",
mode = "3840x2160@60.0",
position = "1920x0",
scale = 1
})

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

@@ -0,0 +1,248 @@
--#### 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 stuff
hl.on("hyprland.start", function ()
hl.exec_cmd("dms run")
hl.exec_cmd("em ~/work/things", {workspace = "9 silent"})
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("mize run sci ne"))
hl.bind("F11", hl.dsp.exec_cmd("mize run sci ne -b"))
hl.bind("XF86AudioRaiseVolume", hl.dsp.exec_cmd("mize run sci ne"))
hl.bind("XF86AudioLowerVolume", hl.dsp.exec_cmd("mize run sci 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)
]]
--#### screenshot
hl.bind(mod .. "+ SHIFT + s", hl.dsp.exec_cmd("screenshot"))

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
}

Some files were not shown because too many files have changed in this diff Show More