wip: dnsc-machine setup

This commit is contained in:
Dennis Schoepf 2025-11-24 00:47:40 +01:00
parent e9aa1cea4a
commit cdf14bd461
5 changed files with 228 additions and 1 deletions

182
:w Normal file
View file

@ -0,0 +1,182 @@
{ config, pkgs, ... }:
{
programs.fish = {
enable = true;
functions = {
dbui = ''
nvim +"DBUI"
'';
ff = ''
bash ${./ff.bash}
'';
envsource = ''
for line in (cat $argv | grep -v '^#')
set item (string split -m 1 '=' $line)
set -gx $item[1] $item[2]
end
'';
fish_greeting = "fortune -a";
resize_images = /* fish */ ''
# Resize all JPG images in the current directory and its subdirectories
# Usage: resize_images [percentage]
# Example: resize_images 20 - resizes all images to 20% of original size
# If no percentage is provided, defaults to 40%
set -l percentage $argv[1]
if test -z "$percentage"
set percentage 40
end
for img in (find . -type f -name "*.JPG")
set original_size (stat -f %z "$img")
magick convert "$img" -resize "$percentage%" "$img"
set new_size (stat -f %z "$img")
echo "Processed $img"
echo "Original size: $original_size bytes"
echo "New size: $new_size bytes"
echo "---"
end
'';
localip = "ifconfig | grep \"inet \" | grep -v 127.0.0.1 | awk '{print $2}' | head -n 1";
publicip = "curl -4 ifconfig.me";
fzf = ''
set -Ux FZF_DEFAULT_OPTS "
--color=fg:#ffffff,bg:#0d0e1c,hl:#ef8386
--color=fg+:#ffffff,bg+:#1d2235,hl+:#ef8386
--color=border:#61647a,header:#88ca9f,gutter:#0d0e1c
--color=spinner:#fec43f,info:#00bcff
--color=pointer:#feacd0,marker:#ff5f59,prompt:#9ac8e0"
command fzf
'';
nn = ''
# Require a title argument
if test (count $argv) -lt 1
echo "Usage: nn \"My Note\""
return 1
end
# Join all arguments into single title (preserves spaces inside quotes)
set -l title $argv[1]
# Timestamp up to minutes, format: YYYY-MM-DD_HH-MM
set -l ts (date "+%Y%m%d%H%M")
# Normalize title: lowercase, replace spaces with hyphens, remove/replace
# characters unsafe for filenames (keep a-z0-9- and replace others with -)
set -l slug (string lower -- $title)
# Replace any sequence of non-alphanumeric characters with single hyphen
set -l slug (echo $slug | sed -E 's/[^a-z0-9]+/-/g' | sed -E 's/^-|-$//g')
# Compose filename
set -l filename "$ts"_"$slug.md"
# Directory for notes (change if you prefer another path)
set -l notes_dir ~/notes
# Ensure directory exists
test -d $notes_dir; or mkdir -p $notes_dir
# Full path
set -l fullpath "$notes_dir/$filename"
# If file doesn't exist, create with timestamp and title at top
if not test -f $fullpath
# Human-friendly timestamp line (no seconds)
set -l display_ts (date "+%Y-%m-%d %H:%M")
printf "---\nCREATED_AT: %s\n---\n\n# %s\n\n" "$display_ts" "$title" > $fullpath
end
# Open file in neovim
nvim $fullpath
'';
fish_mode_prompt = ''
switch $fish_bind_mode
case default
set_color --bold brcyan
echo '[N] '
case insert
set_color --bold brgreen
echo '[I] '
case replace_one
set_color --bold yellow
echo '[R] '
case replace
set_color --bold bryellow
echo '[R] '
case visual
set_color --bold brmagenta
echo '[V] '
case '*'
set_color --bold red
echo '[?] '
end
set_color normal
'';
};
interactiveShellInit = ''
set hn (prompt_hostname)
set fish_cursor_default block blink
fish_vi_key_bindings insert
# Custom Colorscheme
set --universal fish_color_autosuggestion brblack # autosuggestions
set --universal fish_color_command brwhite # commands
set --universal fish_color_comment brblack # code comments
set --universal fish_color_cwd brblack # current working directory in the default prompt
set --universal fish_color_end brblack # process separators like ';' and '&'
set --universal fish_color_error brwhite # highlight potential errors
set --universal fish_color_escape brblack # highlight character escapes like '\n' and '\x70'
set --universal fish_color_match yellow # highlight matching parenthesis
set --universal fish_color_normal brwhite # default color
set --universal fish_color_operator brblack # parameter expansion operators like '*' and '~'
set --universal fish_color_param bryellow # regular command parameters
set --universal fish_color_quote brmagenta # quoted blocks of text
set --universal fish_color_redirection brwhite # IO redirections
set --universal fish_color_search --bold --background=black --foreground=bryellow
set --universal fish_color_search_match --background black # highlight history search matches and the selected pager item (must be a background)
set --universal fish_pager_color_selected_background --background black --foreground brmagenta
set --universal fish_pager_color_progress --foreground=brwhite --background=black
set --universal fish_color_selection --background magenta # when selecting text (in vi visual mode)
set --universal fish_color_cancel brblack # the '^C' indicator on a canceled command
set --universal fish_color_host brwhite # current host system in some of fish default prompts
set --universal fish_color_host_remote yellow #ayu:syntax.constant current host system in some of fish default prompts, if fish is running remotely (via ssh or similar)
set --universal fish_color_user brwhite # current username in some of fish default prompts
set -x GPG_TTY (tty)
fish_add_path /run/wrappers/bin
fish_add_path /run/current-system/sw/bin
switch (uname)
case Darwin
fish_add_path /opt/homebrew/bin
if test -d (brew --prefix)"/share/fish/completions"
set -p fish_complete_path (brew --prefix)/share/fish/completions
end
if test -d (brew --prefix)"/share/fish/vendor_completions.d"
set -p fish_complete_path (brew --prefix)/share/fish/vendor_completions.d
end
end
envsource ~/.env
zoxide init fish | source
direnv hook fish | source
fnm env --use-on-cd --shell fish | source
# Temporary fix because of https://github.com/atuinsh/atuin/issues/2803
# atuin init fish | sed 's/-k up/up/' | source
'';
shellAbbrs = {
lg = "nvim +Neogit";
gg = "nvim +Neogit";
g = "git";
frc = "source ~/.config/fish/**/*.fish";
};
};
}

View file

@ -12,6 +12,7 @@
nix-darwin.inputs.nixpkgs.follows = "nixpkgs";
ip-whitelist.url = "github:Oak-Digital/nixos-ip-whitelist-firewall";
nix-homebrew.url = "github:zhaofengli/nix-homebrew";
inputs.ironbar.url = "github:JakeStanger/ironbar";
};
outputs =

View file

@ -48,6 +48,7 @@
../modules/wm/swaync
../modules/wm/awww
../modules/wm/fuzzel
../modules/wm/ironbar
../modules/wm/niri
];

View file

@ -5,7 +5,7 @@
enable = true;
functions = {
dbui = ''
dbui = /*fish */ ''
nvim +"DBUI"
'';
ff = ''

View file

@ -0,0 +1,43 @@
{ pkgs, ... }:
{
programs.ironbar = {
enable = true;
systemd = true;
config = {
# An example:
monitors = {
DP-3 = {
anchor_to_edges = true;
position = "left";
height = 16;
start = [
{ type = "workspaces"; }
];
center = [
{ type = "focused"; }
];
end = [
{ type = "volume"; }
{
type = "tray";
icon_size = 16;
}
{ type = "clock"; }
];
};
};
};
style = /* css */ ''
/* An example */
* {
/* font-family: Noto Sans Nerd Font, sans-serif; */
font-size: 14px;
border: none;
border-radius: 0;
}
'';
package = inputs.ironbar;
features = ["feature" "another_feature"];
};
}