From 64d4cc9607aa0e4f58a248c7716965b046dd810d Mon Sep 17 00:00:00 2001 From: Ahwx Date: Tue, 12 Aug 2025 13:46:27 +0200 Subject: [PATCH 01/13] feat: add own overlay again; unblock libsoup as something required that?? --- modules/core/system.nix | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/modules/core/system.nix b/modules/core/system.nix index 71ecb33..664a91a 100644 --- a/modules/core/system.nix +++ b/modules/core/system.nix @@ -29,18 +29,19 @@ libraries = with pkgs; [ ]; }; - # nixpkgs = { - # overlays = [ - # self.overlays.default - # inputs.nur.overlay - # ]; - # }; + nixpkgs = { + overlays = [ + self.overlays.default + # inputs.nur.overlay + ]; + }; nixpkgs.config = { allowUnfree = true; permittedInsecurePackages = [ "jitsi-meet-1.0.8043" "olm-3.2.16" + "libsoup-2.74.3" ]; overlays = [ self.overlays.default From 071540b706815cec186c90a4d26a3c691c721469 Mon Sep 17 00:00:00 2001 From: Ahwx Date: Tue, 12 Aug 2025 13:46:49 +0200 Subject: [PATCH 02/13] feat: adds pywal-16 to hyprland configuration --- modules/home/hyprland/config.nix | 1 + modules/home/scripts/scripts/setbg | 1 + 2 files changed, 2 insertions(+) diff --git a/modules/home/hyprland/config.nix b/modules/home/hyprland/config.nix index 5452bb1..b538f0c 100644 --- a/modules/home/hyprland/config.nix +++ b/modules/home/hyprland/config.nix @@ -8,6 +8,7 @@ pkgs.noto-fonts-emoji pkgs.swww pkgs.swaylock + pkgs.pywal16 ]; gtk = { diff --git a/modules/home/scripts/scripts/setbg b/modules/home/scripts/scripts/setbg index c0e7277..e796894 100644 --- a/modules/home/scripts/scripts/setbg +++ b/modules/home/scripts/scripts/setbg @@ -1,4 +1,5 @@ #!/usr/bin/env bash magick convert "$1" ~/.local/share/bg.png +wal -i "$1" swww img ~/.local/share/bg.png --transition-type fade From 16fee5870550cbbbc83c30305765d6f0d1e05f8e Mon Sep 17 00:00:00 2001 From: Ahwx Date: Tue, 12 Aug 2025 15:21:06 +0200 Subject: [PATCH 03/13] feat: adds back overlays and adds `nix-search-fzf` stolen from this file: https://github.com/IvarWithoutBones/dotfiles/blob/main/home-manager/modules/zsh.nix#L65 --- overlays/default.nix | 2 +- pkgs/nix-search-fzf/default.nix | 50 ++++++++ pkgs/nix-search-fzf/fzf-preview.sh | 73 ++++++++++++ pkgs/nix-search-fzf/nix-search-fzf.sh | 161 ++++++++++++++++++++++++++ 4 files changed, 285 insertions(+), 1 deletion(-) create mode 100644 pkgs/nix-search-fzf/default.nix create mode 100644 pkgs/nix-search-fzf/fzf-preview.sh create mode 100644 pkgs/nix-search-fzf/nix-search-fzf.sh diff --git a/overlays/default.nix b/overlays/default.nix index 29457b4..9086c35 100644 --- a/overlays/default.nix +++ b/overlays/default.nix @@ -1,3 +1,3 @@ { - addition = final: _: import ../pkgs { pkgs = final; }; + addition = final: _: import ../pkgs/default.nix { pkgs = final; }; } diff --git a/pkgs/nix-search-fzf/default.nix b/pkgs/nix-search-fzf/default.nix new file mode 100644 index 0000000..63e4a37 --- /dev/null +++ b/pkgs/nix-search-fzf/default.nix @@ -0,0 +1,50 @@ +{ + createScript, + replaceVars, + gnused, + jq, + fzf, + nix, + coreutils, + bash, + nix-search-fzf, + writeShellScript, +}: + +let + previewText = createScript "fzf-preview" ./fzf-preview.sh { }; + src = replaceVars ./nix-search-fzf.sh { + previewText = "${previewText}/bin/fzf-preview"; + }; +in +createScript "nix-search-fzf" src { + dependencies = [ + gnused + jq + fzf + nix + coreutils + bash + ]; + + # Enter a 'nix shell' with packages selected by this script + passthru.zsh-shell-widget = writeShellScript "nix-search-fzf-shell-widget" '' + nix-search-fzf-shell-widget() { + setopt localoptions pipefail no_aliases 2> /dev/null + local cmd="$(eval "${nix-search-fzf}/bin/nix-search-fzf -c")" + if [[ -z "$cmd" ]]; then + zle redisplay + return 0 + fi + zle push-line + BUFFER="''${cmd}" + zle accept-line + local ret=$? + unset cmd + zle reset-prompt + return $ret + } + ''; + + meta.description = "a wrapper around 'nix {run,shell,edit}' with autocomplete using fzf"; +} diff --git a/pkgs/nix-search-fzf/fzf-preview.sh b/pkgs/nix-search-fzf/fzf-preview.sh new file mode 100644 index 0000000..fabdc12 --- /dev/null +++ b/pkgs/nix-search-fzf/fzf-preview.sh @@ -0,0 +1,73 @@ +#! /usr/bin/env nix-shell +#! nix-shell -i bash -p +# shellcheck shell=bash + +set -euo pipefail + +PKG_NAME="$1" +FLAKE="$2" +FLAKE_PATH="${FLAKE}#${PKG_NAME}" + +removeQuotes() { + local flag="$*" + flag="${flag%\"}" + echo "${flag#\"}" +} + +newlinesToCommaSeperated() { + echo "$@" | sed ':a;N;$!ba;s/\n/, /g' +} + +evalAttr() { + local attr data + attr="$1" + data="$(nix eval "$FLAKE_PATH"."$attr" 2>/dev/null)" + [[ $data != "null" && $data != "false" && -n $data ]] && removeQuotes "$data" +} + +evalJsonAttr() { + local attr jqArgs data + attr="$1" + jqArgs="$2" + data="$(nix eval --json "$FLAKE_PATH"."$attr" 2>/dev/null | jq -r "$jqArgs")" + [[ $data != "null" && -n $data ]] && echo "$data" +} + +evalNixpkgsLib() { + local function data + function="$1" + # Impure is needed to import the flake reference + data="$(nix eval --raw --impure --expr "let pkgs = (builtins.getFlake \"flake:$FLAKE\"); in pkgs.lib.$function pkgs.$PKG_NAME" 2>/dev/null)" + [[ $data != "null" && -n $data ]] && echo "$data" +} + +maybeEcho() { + local -r prefix="$1" + local flag="$2" + local -r commaSeperated="${3:-false}" + [[ $commaSeperated == "true" ]] && flag="$(newlinesToCommaSeperated "$flag")" + test -n "$flag" && echo "$prefix $flag" +} + +test -n "$(evalAttr "meta.broken")" && echo "broken: true" +test -n "$(evalAttr "meta.insecure")" && echo "insecure: true" + +version="$(evalAttr "version")" +# Derive the version from "name" using 'lib.getVersion' if it's not set +test -z "$version" && version="$(evalNixpkgsLib "getVersion")" +maybeEcho "version:" "$version" + +homepage="$(evalAttr "meta.homepage")" +maybeEcho "homepage:" "$homepage" + +description="$(evalAttr "meta.description")" +maybeEcho "description:" "$description" + +license="$(evalJsonAttr "meta.license" 'if type=="array" then .[].fullName else .fullName end')" +maybeEcho "license:" "$license" true + +maintainers="$(evalJsonAttr "meta.maintainers" '.[].github')" +maybeEcho "maintainers:" "$maintainers" true + +platforms="$(evalJsonAttr "meta.platforms" 'if type=="array" then .[] else . end')" +maybeEcho "platforms:" "$platforms" true diff --git a/pkgs/nix-search-fzf/nix-search-fzf.sh b/pkgs/nix-search-fzf/nix-search-fzf.sh new file mode 100644 index 0000000..b7a3036 --- /dev/null +++ b/pkgs/nix-search-fzf/nix-search-fzf.sh @@ -0,0 +1,161 @@ +#!/usr/bin/env bash + +# An fzf script with autocomplete from "nix search" which allows for interactive fuzzy searching of derivations. +# After the search a nix subcommand is executed on the selected derivation(s), e.g. "nix shell" or "nix run". + +set -eou pipefail + +FLAKE="nixpkgs" # The default flake to use. TODO: make this configurable +NIX_SUBCOMMAND="shell" # The default nix subcommand to execute +MULTIPLE_SELECTION=true # Whether to allow the user to select multiple derivations +PRINT_COMMAND=false # Only print the command that would be executed, don't execute it + +if [ -n "${XDG_CACHE_HOME-}" ]; then + CACHE_PATH="$XDG_CACHE_HOME/nix-search-fzf/cache.txt" +else + CACHE_PATH="$HOME/.cache/nix-search-fzf/cache.txt" +fi + +# Because fzf executes commands from keybindings in a subprocess, we cannot directly change this scripts state. +# Instead we can use a temporary file as an IPC mechanism, to change which subcommand to execute. +TMP_FILE="$(mktemp --dry-run --suffix "-nix-search-fzf")" +trap 'rm -f "$TMP_FILE"' EXIT INT TERM + +handleArguments() { + while (("$#" > 0)); do + case "$1" in + -s | shell | --shell) + NIX_SUBCOMMAND="shell" + ;; + -b | build | --build) + NIX_SUBCOMMAND="build" + ;; + -r | run | --run) + NIX_SUBCOMMAND="run" + MULTIPLE_SELECTION=false + ;; + -e | edit | --edit) + NIX_SUBCOMMAND="edit" + MULTIPLE_SELECTION=false + ;; + -c | command | --command) + PRINT_COMMAND=true + ;; + -u | update | --update) + manageCache true + exit + ;; + -h | help | --help) + echo "Usage: $(basename "$0") [--shell|--build|--run|--edit|--update]" + echo " --shell: enter a nix shell with the selected package(s). This is the default" + echo " --build: build the selected package(s) with nix build" + echo " --run: run the selected package with nix run" + echo " --edit: edit the selected package with nix edit" + echo " --command: only print the command that would be executed, don't execute it" + echo " --update: update the nix search cache, this is done automatically every 10 days" + echo " --help: show this help message" + exit 0 + ;; + *) + echo "Unknown option '$1'" + exit 1 + ;; + esac + shift 1 + done +} + +runColored() { + printf "\e[32m\$ %s\n\e[0m" "$1" + eval "$1" +} + +manageCache() { + local doUpdate="${1:-false}" + mkdir -p "$(dirname "$CACHE_PATH")" + + if [ ! -f "$CACHE_PATH" ] || [ ! -s "$CACHE_PATH" ]; then + doUpdate="true" + echo "attribute path cache does not exist, generating..." >&2 + elif (($(date -r "$CACHE_PATH" +%s) < $(date -d "now - 10 days" +%s))); then + doUpdate="true" + echo "cache file is older than 10 days, updating..." >&2 + fi + + if [ "$doUpdate" == "true" ]; then + echo "caching attribute paths..." >&2 + # Create a list of all attribute paths with "legacyPackages.$arch" stripped + # In the future this could contain metadata as well, doing a "nix-eval" for each is not the fastest + nix search "$FLAKE" "^" --quiet --json | jq -r 'keys[]' | cut -d'.' -f3- >"$CACHE_PATH" + echo "successfully generated attribute path cache" >&2 + fi +} + +fzfBindingFlag() { + local tmpFile="$1" + local -A bindings=( + ["shell"]="ctrl-s" + ["build"]="ctrl-b" + ["edit"]="ctrl-e" + ["run"]="ctrl-r" + ) + + local result="--bind=" + for subCommand in "${!bindings[@]}"; do + local binding="${bindings[$subCommand]}" + # When pressed, write the appropriate command to our temporary IPC file, and change the prompt accordingly + result+="$binding:execute-silent(echo $subCommand > $tmpFile)+change-prompt($subCommand > )," + done + echo "${result%,}" +} + +runFzf() { + local multi_flag + if [ "$MULTIPLE_SELECTION" == true ]; then + multi_flag="--multi" + else + multi_flag="--no-multi" + fi + + fzf "$multi_flag" \ + --height 40% \ + --preview-window right,70% \ + --border rounded \ + --prompt "$NIX_SUBCOMMAND > " \ + --preview "bash -c \"@previewText@ {} $FLAKE\"" \ + "$(fzfBindingFlag "$TMP_FILE")" <"$CACHE_PATH" +} + +runNix() { + local packages selectedPkgs command + readarray -t selectedPkgs <<<"$@" + ((${#selectedPkgs[@]} == 0)) && exit 0 + + if [ "$MULTIPLE_SELECTION" == true ] && ((${#selectedPkgs[@]} > 1)); then + # Build a brace expansion string + local pkg_list="{" + for pkg in "${selectedPkgs[@]}"; do + pkg_list+="$pkg," + done + packages="${pkg_list%,}}" + else + packages="${selectedPkgs[0]}" + fi + + ((${#packages} == 0)) && exit 0 + + # Update what subcommand to execute, in case it was changed by a keybinding from fzf + [ -s "$TMP_FILE" ] && NIX_SUBCOMMAND="$(<"$TMP_FILE")" + + command="NIXPKGS_ALLOW_UNFREE=1 nix $NIX_SUBCOMMAND $FLAKE#$packages --impure" + if [ "$PRINT_COMMAND" == true ]; then + echo "$command" + exit 0 + else + runColored "$command" + fi +} + +handleArguments "$@" +manageCache +runNix "$(runFzf)" From a57b3e0102353b8e0c8a703d694b57978abe9d95 Mon Sep 17 00:00:00 2001 From: Ahwx Date: Tue, 12 Aug 2025 15:21:25 +0200 Subject: [PATCH 04/13] fix: actually import `nix-search-fzf` --- pkgs/default.nix | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pkgs/default.nix b/pkgs/default.nix index ec41d4e..7950850 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -1,4 +1,5 @@ -{ pkgs } : +{ pkgs }: { wikit = pkgs.callPackage ./wikit/default.nix { }; + nix-search-fzf = pkgs.callPackage ./nix-search-fzf/default.nix { }; } From 5e7744d9d022fc1261940197639e503e98511003 Mon Sep 17 00:00:00 2001 From: Ahwx Date: Tue, 12 Aug 2025 15:22:44 +0200 Subject: [PATCH 05/13] feat: adds more qol changes such as dust/fd/delta/bat/nix-search-fzf --- modules/home/zsh.nix | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/modules/home/zsh.nix b/modules/home/zsh.nix index 35d8bb5..8a4e5de 100644 --- a/modules/home/zsh.nix +++ b/modules/home/zsh.nix @@ -3,6 +3,7 @@ config, pkgs, host, + lib, ... }: { @@ -46,6 +47,8 @@ }; initContent = '' + export export PATH="''${PATH}:''${HOME}/.local/bin/:''${HOME}/.cargo/bin/:''${HOME}/.fzf/bin/" + autoload -U add-zsh-hook autoload -U compinit zmodload zsh/complist @@ -135,7 +138,11 @@ fi } - export export PATH="''${PATH}:''${HOME}/.local/bin/:''${HOME}/.cargo/bin/:''${HOME}/.fzf/bin/" + # Enter a 'nix shell' with packages selected by fzf + source ${pkgs.nix-search-fzf.zsh-shell-widget} + zle -N nix-search-fzf-shell-widget + bindkey '^O' nix-search-fzf-shell-widget + # if [[ $(which sxiv&>/dev/null && echo 1) == "1" ]]; then # alias imv="sxiv" @@ -149,7 +156,6 @@ enable = true; abbreviations = { mkdir = "mkdir -p"; - mv = "mv --interactive"; vim = "nvim"; v = "nvim"; vi = "nvim"; @@ -198,13 +204,19 @@ yt-dlp-audio = "yt-dlp -f 'ba' -x --audio-format mp3"; open = "xdg-open"; tree = "eza --icons --tree --group-directories-first"; - # nvim = "nix run /home/liv/Development/nixvim --"; - vim = "nvim"; doas = "sudo"; sxiv = "nsxiv"; enby = "man"; woman = "man"; mkcd = "mkdir $1 && cd $1"; + du = "dust"; + cp = "cp -i -v"; + mv = "mv -i -v"; + rm = "rm -i -v"; + cat = "${lib.getExe pkgs.bat} --plain"; + diff = "${lib.getExe pkgs.delta} --color-only"; + battery-left = "${lib.getExe pkgs.acpi} | cut -d' ' -f5"; + github-actions = "${lib.getExe pkgs.act} -s GITHUB_TOKEN=\"$(${lib.getExe pkgs.github-cli} auth token)\""; # NixOS ns = "nix-shell --run zsh"; @@ -249,4 +261,11 @@ enableZshIntegration = true; }; }; + home.packages = with pkgs; [ + dust + fd + delta + bat + nix-search-fzf.zsh-shell-widget + ]; } From ff1c9f7c63d3d4489d02cf23171b37b9a39090e9 Mon Sep 17 00:00:00 2001 From: Ahwx Date: Tue, 12 Aug 2025 15:25:36 +0200 Subject: [PATCH 06/13] chore: `delta` is now located elsewhere --- modules/home/packages.nix | 1 - 1 file changed, 1 deletion(-) diff --git a/modules/home/packages.nix b/modules/home/packages.nix index 9fa833f..34db02f 100644 --- a/modules/home/packages.nix +++ b/modules/home/packages.nix @@ -62,7 +62,6 @@ reader nmap speedtest-go - delta powertop android-tools sshpass From 7b223abb1237c41edb068b205dee87d9a1c636e6 Mon Sep 17 00:00:00 2001 From: Ahwx Date: Tue, 12 Aug 2025 15:27:31 +0200 Subject: [PATCH 07/13] revert: okay this breaks everything --- hosts/sakura/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hosts/sakura/default.nix b/hosts/sakura/default.nix index 1c150ac..3413bf8 100644 --- a/hosts/sakura/default.nix +++ b/hosts/sakura/default.nix @@ -49,7 +49,7 @@ networking = { hostName = "sakura"; - networkmanager.ethernet.macAddress = "13:37:13:37:13:37"; + # networkmanager.ethernet.macAddress = "13:37:6a:8a:ed:a4"; }; powerManagement = { From c9757d7585ecbb0d63bab0fe033ead114ee557ea Mon Sep 17 00:00:00 2001 From: Ahwx Date: Tue, 12 Aug 2025 15:50:27 +0200 Subject: [PATCH 08/13] chore: remove wikit as it is a native package now --- pkgs/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/default.nix b/pkgs/default.nix index 7950850..6b1c5d1 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -1,5 +1,5 @@ { pkgs }: { - wikit = pkgs.callPackage ./wikit/default.nix { }; + # wikit = pkgs.callPackage ./wikit/default.nix { }; nix-search-fzf = pkgs.callPackage ./nix-search-fzf/default.nix { }; } From c92ad2008dee49b13c59478a2d2ac05bdc211be5 Mon Sep 17 00:00:00 2001 From: Ahwx Date: Tue, 12 Aug 2025 15:50:42 +0200 Subject: [PATCH 09/13] chore: remove wikit as it is a native package now (part 2) --- pkgs/wikit/default.nix | 16 ---------------- 1 file changed, 16 deletions(-) delete mode 100644 pkgs/wikit/default.nix diff --git a/pkgs/wikit/default.nix b/pkgs/wikit/default.nix deleted file mode 100644 index fa9ab39..0000000 --- a/pkgs/wikit/default.nix +++ /dev/null @@ -1,16 +0,0 @@ -{ lib, ... }: -with lib; -let - src = fetchFromGitHub { - owner = "KorySchneider"; - repo = "wikit"; - rev = "6432c6020606868cc5f240d0317040e38b992292"; - }; -in { - wikit = mkYarnPackage { - name = "wikit"; - inherit src; - packageJSON = src + "./package.json"; - yarnLock = src + "./yarn.lock"; - }; -} From 1e931d68767e238007af88578d29520455f4866d Mon Sep 17 00:00:00 2001 From: Ahwx Date: Tue, 12 Aug 2025 16:17:40 +0200 Subject: [PATCH 10/13] chore: got mad at syncthing --- hosts/sakura/default.nix | 1 - modules/services/dandelion.nix | 1 - 2 files changed, 2 deletions(-) diff --git a/hosts/sakura/default.nix b/hosts/sakura/default.nix index 3413bf8..41fb1a0 100644 --- a/hosts/sakura/default.nix +++ b/hosts/sakura/default.nix @@ -12,7 +12,6 @@ ./../../modules/core/virtualization.nix ./../../modules/services/tailscale.nix ./../../modules/services/mpd.nix - ./../../modules/services/syncthing.nix ./../../modules/services/smart-monitoring.nix inputs.nixos-hardware.nixosModules.framework-13-7040-amd ]; diff --git a/modules/services/dandelion.nix b/modules/services/dandelion.nix index ec6d4a1..c11eff1 100644 --- a/modules/services/dandelion.nix +++ b/modules/services/dandelion.nix @@ -7,7 +7,6 @@ ++ [ (import ./home-assistant.nix) ] ++ [ (import ./monitoring.nix) ] ++ [ (import ./smart-monitoring.nix) ] - ++ [ (import ./syncthing.nix) ] ++ [ (import ./tailscale.nix) ] ++ [ (import ./nfs.nix) ] ++ [ (import ./hd-idle.nix) ]; From e9c413994f4117c1e8f8696955dbacc3f18922d6 Mon Sep 17 00:00:00 2001 From: Ahwx Date: Tue, 12 Aug 2025 16:18:16 +0200 Subject: [PATCH 11/13] feat: add `createScript` wrapper also stolen from @ivarwithoutbones --- pkgs/createScript/default.nix | 40 +++++++++++++++++++++++++++++++++++ pkgs/default.nix | 2 +- 2 files changed, 41 insertions(+), 1 deletion(-) create mode 100644 pkgs/createScript/default.nix diff --git a/pkgs/createScript/default.nix b/pkgs/createScript/default.nix new file mode 100644 index 0000000..f69f894 --- /dev/null +++ b/pkgs/createScript/default.nix @@ -0,0 +1,40 @@ +{ + lib, + runCommand, + makeWrapper, +}: + +# A function which creates a shell script with optional dependencies added to PATH. + +name: src: +{ + dependencies ? [ ], + ... +}@attrs: + +runCommand name + ( + { + inherit src; + nativeBuildInputs = lib.optionals (dependencies != [ ]) (attrs.nativeBuildInputs or [ ]) ++ [ + makeWrapper + ]; + + meta = { + mainProgram = name; + } // attrs.meta or { }; + } + // (builtins.removeAttrs attrs [ + "nativeBuildInputs" + "meta" + ]) + ) + '' + mkdir -p $out/bin + install -Dm755 $src $out/bin/$name + patchShebangs $out/bin/$name + + ${lib.optionalString (dependencies != [ ]) '' + wrapProgram $out/bin/$name --prefix PATH : ${lib.makeBinPath dependencies} + ''} + '' diff --git a/pkgs/default.nix b/pkgs/default.nix index 6b1c5d1..7d89d6c 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -1,5 +1,5 @@ { pkgs }: { - # wikit = pkgs.callPackage ./wikit/default.nix { }; + createScript = pkgs.callPackage ./createScript/default.nix { }; nix-search-fzf = pkgs.callPackage ./nix-search-fzf/default.nix { }; } From bce1448454d3abf22a03181f1466d0b2f3e1696e Mon Sep 17 00:00:00 2001 From: Ahwx Date: Tue, 12 Aug 2025 16:21:02 +0200 Subject: [PATCH 12/13] chore: credit ivar as well! --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index c42c555..56c28ba 100644 --- a/README.md +++ b/README.md @@ -161,6 +161,7 @@ toggle_oppacity.sh Other dotfiles that I learned / copy from: - [Frost-Phoenix/nixos-config](https://github.com/Frost-Phoenix/nixos-config): This is the repository that I cloned and changed to my needs. Their credits are in their repository's readme. +- [IvarWithoutBones/dotfiles](https://github.com/IvarWithoutBones/dotfiles) - [notthebee/nix-config](https://github.com/notthebee/nix-config) - [mrusme/dotfiles](https://github.com/mrusme/dotfiles) From d4ba9c5552bb2070de98377c9a869050091813f1 Mon Sep 17 00:00:00 2001 From: Ahwx Date: Tue, 12 Aug 2025 16:30:09 +0200 Subject: [PATCH 13/13] chore: adds sshfs (and niri, need to move away from hyprland as it sucks) --- roles/gui.nix | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/roles/gui.nix b/roles/gui.nix index 387ed07..de10ee3 100644 --- a/roles/gui.nix +++ b/roles/gui.nix @@ -49,6 +49,10 @@ in # Not GUI but specific to GUI usage sshuttle + sshfs + + # try out for a bit + niri ]; }; }