{ config, pkgs, lib, ... }: let cfg = config.nmasur.presets.programs.nixpkgs; in { options.nmasur.presets.programs.nixpkgs.enable = lib.mkEnableOption "Nixpkgs presets"; config = lib.mkIf cfg.enable { programs.fish = { shellAbbrs = { n = "nix"; ns = "nix-shell -p"; nsf = "nix-shell --run fish -p"; nsr = "nix-shell-run"; nps = "nix repl --expr 'import {}'"; nixo = "man configuration.nix"; nixh = "man home-configuration.nix"; nr = lib.mkIf config.nmasur.presets.programs.dotfiles.enable { function = "rebuild-nixos"; }; nro = lib.mkIf config.nmasur.presets.programs.dotfiles.enable { function = "rebuild-nixos-offline"; }; hm = lib.mkIf config.nmasur.presets.programs.dotfiles.enable { function = "rebuild-home"; }; }; functions = { nix-shell-run = { body = # fish '' set program $argv[1] if test (count $argv) -ge 2 commandline -r "nix run nixpkgs#$program -- $argv[2..-1]" else commandline -r "nix run nixpkgs#$program" end commandline -f execute ''; }; nix-fzf = { body = # fish '' commandline -i (nix-instantiate --eval --json \ -E 'builtins.attrNames (import {})' \ | ${lib.getExe pkgs.jq} '.[]' -r | ${lib.getExe pkgs.fzf}) commandline -f repaint ''; }; rebuild-nixos = lib.mkIf config.nmasur.presets.programs.dotfiles.enable { body = # fish '' git -C ${config.nmasur.presets.programs.dotfiles.path} add --intent-to-add --all echo "doas nixos-rebuild switch --flake ${config.nmasur.presets.programs.dotfiles.path}" ''; }; rebuild-nixos-offline = lib.mkIf config.nmasur.presets.programs.dotfiles.enable { body = # fish '' git -C ${config.nmasur.presets.programs.dotfiles.path} add --intent-to-add --all echo "doas nixos-rebuild switch --option substitute false --flake ${config.nmasur.presets.programs.dotfiles.path}" ''; }; rebuild-home = lib.mkIf config.nmasur.presets.programs.dotfiles.enable { body = # fish '' git -C ${config.nmasur.presets.programs.dotfiles.path} add --intent-to-add --all echo "${lib.getExe pkgs.home-manager} switch --flake ${config.nmasur.presets.programs.dotfiles.path}"; ''; }; }; }; nmasur.presets.programs.fish.fish_user_key_bindings = # fish '' # Ctrl-n bind -M insert \cn 'commandline -r "nix shell nixpkgs#"' bind -M default \cn 'commandline -r "nix shell nixpkgs#"' # Ctrl-Shift-n (defined by terminal) bind -M insert \x11F nix-fzf bind -M default \x11F nix-fzf ''; }; }