# https://nix-community.github.io/home-manager/options.html { pkgs, config, ... }: { #nixpkgs.config.allowUnfree = true; home.stateVersion = "23.11"; imports = [ ./profiles/sops.nix ./profiles/bat.nix #./profiles/xdg-ninja.nix ./profiles/git.nix ./profiles/gtk.nix ./profiles/micro.nix ./profiles/ast-grep.nix ./profiles/shell.nix ./profiles/ssh.nix ./profiles/tmate.nix ./profiles/update-diff.nix ]; # TODO: add remote-exec once packaged programs.bash.initExtra = '' # remote-exec if command -v remote >/dev/null && command -v remote-quick >/dev/null; then complete -F _command remote complete -F _command remote-quick fi # TODO: remove function atom_nix { #nix-shell -p atom --run "atom $(printf "%q " "$@") --in-process-gpu --no-sandbox" #nix-shell -p atom --run "atom $(printf "%q " "$@") --no-sandbox" nix run nixpkgs#atom -- --disable-gpu --in-process-gpu --no-sandbox "$@" } function vpn { ip="$(dig +short -x a $1 | tail -n 1)" ( set -x; sshuttle 0.0.0.0/0 --disable-ipv6 --dns -r "$1" -x $ip -x 127.0.0.1 -x 172.0.0.0/8 ) } ''; home.packages = with pkgs; [ xclip #rmate-sh # TODO: add to ssh config #remote-exec # TODO zip unrar unzip atool p7zip bzip2 gzip atool dos2unix pandoc # TODO: typst and latex graphviz visidata gallery-dl yt-dlp vgmstream ffmpeg-full lolcat toilet boxes tewisay ponysay # TODO: move to graphical? kiosk? cage mesa-demos librespeed-cli cachix #nix-template nix-output-monitor unstable.nixpkgs-review unstable.nixpkgs-hammering unstable.nix-update unstable.nix-init unstable.deadnix unstable.statix (pkgs.nixfmt-rfc-style or unstable.nixfmt-rfc-style or null) nurl manix #comma # collides with nix-index-database nix-search-cli # nix-search #sshuttle #cargo #cargo-edit #nim #nimble poetry (python3.withPackages (python-packages: with python-packages; [ matplotlib more-itertools numpy #objexplore # TODO: package this, used in python interactive shell ptpython python-lsp-server pyyaml requests rich scipy toml virtualenv ])) ]; home.shellAliases = { #flexget = "ssh -t knut.pbsds.net sudo -u flexget flexget"; flexget = "sudo --user=flexget flexget -c /var/lib/flexget/flexget.yml"; # TODO: only applies to nox... hman = "man -H "; # HTML opened in a browser tmux = "systemd-run --scope --user tmux"; # detach from ssh scope, surviving logout #TODO: vpn # TODO: fix both wayland, and x-forwarding #clip = "( if command -v wl-copy >/dev/null; then wl-copy --trim-newline --type text/plain; else xclip -sel clip -t text/plain -rmlastnl -i; fi )"; clip = "xclip -sel clip -i -rmlastnl -t text/plain"; # TODO: ps1? pwd-fqdn = ''echo "$(whoami)@$(hostname -f):$(printf "%q" "$(realpath .)/")"''; manix-fzf = ''manix "" 2>/dev/null | grep '^# ' | sed 's/^# \(.*\) (.*/\1/;s/ (.*//;s/^# //' | fzf --preview="manix '{}'" | xargs manix''; # TODO: move to /run/user/... nixpkgs-review = ''mkdir -p /dev/shm/nixpkgs-review && ln -sfn /dev/shm/nixpkgs-review $HOME/.cache/nixpkgs-review && nixpkgs-review''; killall = "killall -v"; bin = "python -c 'import sys; sys.stdout.write(sys.stdin.read().strip())' | curl -is -X POST https://i.kuklef.se/upload -F content=@- -F expiration=10d | grep '^location:' | cut -d' ' -f2-"; denix = "sed -E 's@/nix/store/[^ /]+@@g'"; }; home.enableNixpkgsReleaseCheck = true; xdg.enable = true; #TODO: xdg.desktopEntries /** / programs.beets = { enable = true; settings = { directory = "/mnt/meconium/beets_preprocessed/data"; #library = "/mnt/meconium/beets_preprocessed/library.db"; library = "${config.xdg.configHome}/beets/library_preprocessed.db"; #directory = "/mnt/meconium/beets_music/library"; #library = "${config.xdg.configHome}/beets/library_meconium.db"; ##library = "/mnt/meconium/beets_music/data.db"; }; }; /**/ }