From 6e8e2824a94e1c6b788e5e68075a85218e958af7 Mon Sep 17 00:00:00 2001 From: Sebastien Bourdeauducq Date: Thu, 16 Apr 2020 13:06:23 +0800 Subject: [PATCH] nixops: use fish and fish-nix-shell consistently --- nixops/desktop.nix | 4 ++ nixops/fish-nix-shell/LICENSE | 21 ++++++++ nixops/fish-nix-shell/README.md | 50 +++++++++++++++++++ nixops/fish-nix-shell/bin/fish-nix-shell | 34 +++++++++++++ .../fish-nix-shell/bin/fish-nix-shell-wrapper | 22 ++++++++ nixops/fish-nix-shell/bin/nix-shell-info | 21 ++++++++ nixops/fish-nix-shell/default.nix | 16 ++++++ nixops/rpi.nix | 6 +++ 8 files changed, 174 insertions(+) create mode 100644 nixops/fish-nix-shell/LICENSE create mode 100644 nixops/fish-nix-shell/README.md create mode 100755 nixops/fish-nix-shell/bin/fish-nix-shell create mode 100755 nixops/fish-nix-shell/bin/fish-nix-shell-wrapper create mode 100755 nixops/fish-nix-shell/bin/nix-shell-info create mode 100644 nixops/fish-nix-shell/default.nix diff --git a/nixops/desktop.nix b/nixops/desktop.nix index 1781e7c..b216fbb 100644 --- a/nixops/desktop.nix +++ b/nixops/desktop.nix @@ -31,6 +31,7 @@ in wireshark pavucontrol jq ark sublime3 rink qemu_kvm konsole tmux xc3sprog m-labs.openocd screen gdb minicom picocom + (import ./fish-nix-shell) ]; programs.wireshark.enable = true; @@ -75,6 +76,9 @@ in hardware.bluetooth.enable = true; programs.fish.enable = true; + programs.fish.promptInit = '' + fish-nix-shell --info-right | source + ''; users.defaultUserShell = pkgs.fish; users.extraGroups.plugdev = { }; users.extraUsers.sb = { diff --git a/nixops/fish-nix-shell/LICENSE b/nixops/fish-nix-shell/LICENSE new file mode 100644 index 0000000..d8940be --- /dev/null +++ b/nixops/fish-nix-shell/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2018 haslersn + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/nixops/fish-nix-shell/README.md b/nixops/fish-nix-shell/README.md new file mode 100644 index 0000000..5db8dfd --- /dev/null +++ b/nixops/fish-nix-shell/README.md @@ -0,0 +1,50 @@ +# fish-nix-shell +fish support for the *nix-shell* environment of the Nix package manager. + +## Installation + +### Installation in the user environment + +Execute + +``` +nix-env -if https://github.com/haslersn/fish-nix-shell/archive/master.tar.gz +``` + +and add the following to your *~/.config/fish/config.fish*. Create it if it doesn't exist. + +``` +fish-nix-shell --info-right | source +``` + +### System-wide installation + +Add the package to your */etc/nixos/configuration.nix*: + +``` + environment.systemPackages = with pkgs; [ + # + # Other packages here ... + # + (import (fetchGit "https://github.com/haslersn/fish-nix-shell")) + ]; +``` + +and then execute: `sudo nixos-rebuild switch` + +If you want to configure it system-wide, also add: + +``` + programs.fish.enable = true; + programs.fish.promptInit = '' + fish-nix-shell --info-right | source + ''; +``` + +## Flags + +The `fish-nix-shell` command **optionally** takes the following flags: + +| Flag | Meaning | +| - | - | +| `--info-right` | While in a *fish-nix-shell*, display information about the loaded packages at the right. diff --git a/nixops/fish-nix-shell/bin/fish-nix-shell b/nixops/fish-nix-shell/bin/fish-nix-shell new file mode 100755 index 0000000..efe72a1 --- /dev/null +++ b/nixops/fish-nix-shell/bin/fish-nix-shell @@ -0,0 +1,34 @@ +#!/bin/sh + +function init_fish () { + cat < {}; stdenv.mkDerivation rec { + name = "fish-nix-shell"; + src = fetchGit "https://github.com/haslersn/fish-nix-shell"; + nativeBuildInputs = [ makeWrapper ]; + installPhase = '' + mkdir -p $out + cp LICENSE $out + cp -r bin $out + wrapProgram $out/bin/fish-nix-shell + wrapProgram $out/bin/fish-nix-shell-wrapper --prefix PATH ":" ${fish}/bin + wrapProgram $out/bin/nix-shell-info + ''; + meta.description = "fish support for the nix-shell environment of the Nix package manager."; + meta.license = "MIT"; + meta.homepage = https://github.com/haslersn/fish-nix-shell; +} \ No newline at end of file diff --git a/nixops/rpi.nix b/nixops/rpi.nix index 9f7f038..7e093a6 100644 --- a/nixops/rpi.nix +++ b/nixops/rpi.nix @@ -87,7 +87,13 @@ in documentation.enable = false; environment.systemPackages = with pkgs; [ psmisc wget vim git usbutils lm_sensors file telnet mosh tmux xc3sprog m-labs.openocd screen gdb minicom picocom + (import ./fish-nix-shell) ]; + programs.fish.enable = true; + programs.fish.promptInit = '' + fish-nix-shell --info-right | source + ''; + users.defaultUserShell = pkgs.fish; nix.binaryCachePublicKeys = ["nixbld.m-labs.hk-1:5aSRVA5b320xbNvu30tqxVPXpld73bhtOeH6uAjRyHc="]; nix.binaryCaches = ["https://cache.nixos.org" "https://nixbld.m-labs.hk"];