From 31964cca3586b08bb3cf90569075811951bd2e19 Mon Sep 17 00:00:00 2001 From: Hadi Date: Tue, 28 Apr 2026 09:41:17 +0200 Subject: [PATCH] Export nixy as a flake Signed-off-by: Hadi --- flake.nix | 1 + home/programs/nixy/default.nix | 68 +-------------------------------- home/programs/nixy/flake.nix | 12 ++++++ home/programs/nixy/package.nix | 69 ++++++++++++++++++++++++++++++++++ 4 files changed, 83 insertions(+), 67 deletions(-) create mode 100644 home/programs/nixy/flake.nix create mode 100644 home/programs/nixy/package.nix diff --git a/flake.nix b/flake.nix index 7de1460..19e3fe7 100644 --- a/flake.nix +++ b/flake.nix @@ -87,6 +87,7 @@ merge [ (import ./home/programs/nvf/flake.nix args) (import ./home/programs/group/flake.nix args) + (import ./home/programs/nixy/flake.nix args) { nixosConfigurations = { h-laptop = import ./hosts/laptop/flake.nix args; diff --git a/home/programs/nixy/default.nix b/home/programs/nixy/default.nix index 80f5990..efca7d7 100644 --- a/home/programs/nixy/default.nix +++ b/home/programs/nixy/default.nix @@ -11,71 +11,5 @@ ... }: let inherit (config.var) configDirectory; - - nixy = - pkgs.writeShellScriptBin "nixy" - # bash - '' - EXTRA_ARGS="''${@:2}" - - function exec() { - $@ - } - - function ui(){ - DEFAULT_ICON="󰘳" - - # "icon;name;command"[] - apps=( - "󰑓;Rebuild;nixy rebuild" - "󰐊;Test;nixy test" - "󰚰;Update;nixy update" - ";Collect Garbage;nixy gc" - "󰍜;Clean Boot Menu;nixy cb" - ";List generation;nixy listgen" - ) - - # Apply default icons if empty: - for i in "''${!apps[@]}"; do - apps[i]=$(echo "''${apps[i]}" | sed 's/^;/'$DEFAULT_ICON';/') - done - - fzf_result=$(printf "%s\n" "''${apps[@]}" | awk -F ';' '{print $1" "$2}' | fzf) - [[ -z $fzf_result ]] && exit 0 - fzf_result=''${fzf_result/ /;} - line=$(printf "%s\n" "''${apps[@]}" | grep "$fzf_result") - command=$(echo "$line" | sed 's/^[^;]*;//;s/^[^;]*;//') - - exec "$command" - exit $? - } - - [[ $1 == "" ]] && ui - - if [[ $1 == "rebuild" ]];then - cd ${configDirectory} && git add . && sudo nixos-rebuild switch --flake . $EXTRA_ARGS - elif [[ $1 == "test" ]];then - cd ${configDirectory} && git add . && sudo nixos-rebuild test --flake . $EXTRA_ARGS - elif [[ $1 == "update" ]];then - cd ${configDirectory} && nix flake update $EXTRA_ARGS - elif [[ $1 == "gc" ]];then - echo "Starting Nix garbage collection..." - cd ${configDirectory} && \ - echo "Cleaning up system garbage..." && \ - sudo nix-collect-garbage -d && \ - echo "Cleaning up user garbage..." && \ - nix-collect-garbage -d && \ - echo "Collecting garbage from Nix store..." && \ - nix-store --gc && \ - echo "Optimizing Nix store..." && \ - nix-store --optimise - echo "Nix garbage collection complete." - elif [[ $1 == "cb" ]];then - sudo /run/current-system/bin/switch-to-configuration boot - elif [[ $1 == "listgen" ]];then - sudo nix-env -p /nix/var/nix/profiles/system --list-generations - else - echo "Unknown argument" - fi - ''; + nixy = import ./package.nix {inherit pkgs configDirectory;}; in {home.packages = [nixy];} diff --git a/home/programs/nixy/flake.nix b/home/programs/nixy/flake.nix new file mode 100644 index 0000000..1620c5f --- /dev/null +++ b/home/programs/nixy/flake.nix @@ -0,0 +1,12 @@ +{ + pkgs, + system, + ... +}: { + packages.${system}.nixy = import ./package.nix { + inherit pkgs; + configDirectory = "$HOME/.config/nixos"; + }; + + homeManagerModules.nixy = {imports = [./default.nix];}; +} diff --git a/home/programs/nixy/package.nix b/home/programs/nixy/package.nix new file mode 100644 index 0000000..565f864 --- /dev/null +++ b/home/programs/nixy/package.nix @@ -0,0 +1,69 @@ +{ + pkgs, + configDirectory, +}: +pkgs.writeShellScriptBin "nixy" +# bash +'' + EXTRA_ARGS="''${@:2}" + + function exec() { + $@ + } + + function ui(){ + DEFAULT_ICON="󰘳" + + # "icon;name;command"[] + apps=( + "󰑓;Rebuild;nixy rebuild" + "󰐊;Test;nixy test" + "󰚰;Update;nixy update" + ";Collect Garbage;nixy gc" + "󰍜;Clean Boot Menu;nixy cb" + ";List generation;nixy listgen" + ) + + # Apply default icons if empty: + for i in "''${!apps[@]}"; do + apps[i]=$(echo "''${apps[i]}" | sed 's/^;/'$DEFAULT_ICON';/') + done + + fzf_result=$(printf "%s\n" "''${apps[@]}" | awk -F ';' '{print $1" "$2}' | fzf) + [[ -z $fzf_result ]] && exit 0 + fzf_result=''${fzf_result/ /;} + line=$(printf "%s\n" "''${apps[@]}" | grep "$fzf_result") + command=$(echo "$line" | sed 's/^[^;]*;//;s/^[^;]*;//') + + exec "$command" + exit $? + } + + [[ $1 == "" ]] && ui + + if [[ $1 == "rebuild" ]];then + cd ${configDirectory} && git add . && sudo nixos-rebuild switch --flake . $EXTRA_ARGS + elif [[ $1 == "test" ]];then + cd ${configDirectory} && git add . && sudo nixos-rebuild test --flake . $EXTRA_ARGS + elif [[ $1 == "update" ]];then + cd ${configDirectory} && nix flake update $EXTRA_ARGS + elif [[ $1 == "gc" ]];then + echo "Starting Nix garbage collection..." + cd ${configDirectory} && \ + echo "Cleaning up system garbage..." && \ + sudo nix-collect-garbage -d && \ + echo "Cleaning up user garbage..." && \ + nix-collect-garbage -d && \ + echo "Collecting garbage from Nix store..." && \ + nix-store --gc && \ + echo "Optimizing Nix store..." && \ + nix-store --optimise + echo "Nix garbage collection complete." + elif [[ $1 == "cb" ]];then + sudo /run/current-system/bin/switch-to-configuration boot + elif [[ $1 == "listgen" ]];then + sudo nix-env -p /nix/var/nix/profiles/system --list-generations + else + echo "Unknown argument" + fi +''