nixos-config/system/desktop/packages.nix
2019-10-26 13:46:37 +02:00

297 lines
6.5 KiB
Nix

{ pkgs, config, lib, ... }:
with lib;
let
unstablePkgs = import <nixpkgs-unstable> {};
library = import <library> { inherit pkgs lib; };
#seafileClient = unstablePkgs.seafile-client.override{
# seafile-shared = unstablePkgs.seafile-shared;
#};
seafileClient = pkgs.seafile-client.override{
seafile-shared = pkgs.seafile-shared;
};
replaceLinks = pkgs.writers.writeBashBin "replace-link-with-content" /* sh */ ''
if [ ! -L "$1" ]
then
echo "$1 does not exist or is not a file"
exit 1
fi
cp -rL "$1" "$1.backup"
unlink "$1"
mv "$1.backup" "$1"
'';
pandocScript = inputFormat: outputFormat: pkgs.writers.writeDashBin "pandoc-from-${inputFormat}-to-${outputFormat}" ''
${pkgs.pandoc}/bin/pandoc \
--from ${inputFormat} \
--to ${outputFormat} \
"$@"
'';
# show keyboard input on desktop for screencasts
screenKey = pkgs.symlinkJoin {
name = "screen-keys";
paths =
let
screenKeyScript = { position ? "bottom", size ? "small", ... }: pkgs.writeShellScriptBin "screenkeys-${position}-${size}" /* sh */ ''
${pkgs.screenkey}/bin/screenkey \
--no-detach \
--bg-color '#fdf6e3' \
--font-color '#073642' \
-p ${position} \
-s ${size} \
"$@"
'';
in
lib.flatten (
lib.flip map [ "large" "small" "medium" ] (
size:
lib.flip map [ "top" "center" "bottom" ] (
position:
screenKeyScript { inherit size position ;}
)
)
);
};
connectToSpeaker = name: id: pkgs.writeShellScriptBin "connect-to-speaker-${name}" /* sh */ ''
# hacky script because I have problems with
# automatically connecting to trusted bluetooth devices.
echo "Connect to Speaker ${name}"
bluetoothctl <<EOF
power on
agent on
scan on
connect ${id}
EOF
'';
disconnectToSpeaker = name: id: pkgs.writeShellScriptBin "disconnect-from-speaker-${name}" /* sh */ ''
# hacky script because I have problems with
# automatically connecting to trusted bluetooth devices.
echo "Disconnect from Speaker ${name}"
bluetoothctl <<EOF
disconnect ${id}
scan off
agent off
power off
EOF
'';
borrow = pkgs.writers.writeDashBin "borrow" /* sh */ ''
${pkgs.hledger-ui}/bin/hledger-ui -f ~/finance/hledger-borrow "$@"
'';
bank = pkgs.writers.writeDashBin "bank" /* sh */ ''
${pkgs.hledger-ui}/bin/hledger-ui -f ~/finance/hledger-bank "$@"
'';
irc = pkgs.writers.writeDashBin "irc" /* sh */ ''
${pkgs.mosh}/bin/mosh workhorse.private -- sudo -u weechat -- screen -rd
'';
insertCopyq = pkgs.writers.writeDashBin "insertCopyq" /* sh */ ''
${pkgs.copyq}/bin/copyq read 0 | ${pkgs.xdotool}/bin/xdotool type -f -
'';
weight = pkgs.writeShellScriptBin "weight" ''
if [[ $# -eq 1 ]]
then
weight=$1
echo "weight : $weight"
else
echo
echo -n " weight : "
read weight
fi
echo
${pkgs.curl}/bin/curl \
-H "Content-Type: application/json" \
-XPOST "http://workout.private:9200/health/weight" \
-d '{ "weight" : '$weight', "date": "'$( ${pkgs.coreutils}/bin/date -Iseconds )'" }'
'';
in {
programs.custom.ffmpeg.enable = true;
/* gnupg setup */
programs.gnupg.agent.enable = true;
programs.gnupg.agent.enableSSHSupport = true;
programs.gnupg.agent.enableExtraSocket = true;
environment.systemPackages = with pkgs;
let
connectToMyPortable = connectToSpeaker "my-portable" "37:F0:17:2F:B6:84";
disconnectToMyPortable = disconnectToSpeaker "my-portable" "37:F0:17:2F:B6:84";
connectToBrullrohre = connectToSpeaker "brullrohre" "FC:A8:9A:ED:B8:FA";
disconnectToBrullrohre = disconnectToSpeaker "brullrohre" "FC:A8:9A:ED:B8:FA";
in [
weight
connectToMyPortable
(library.desktopFile connectToMyPortable { longName = "Bluetooth"; })
disconnectToMyPortable
(library.desktopFile disconnectToMyPortable { longName = "Bluetooth"; })
connectToBrullrohre
(library.desktopFile connectToBrullrohre { longName = "Bluetooth"; })
disconnectToBrullrohre
(library.desktopFile disconnectToBrullrohre { longName = "Bluetooth"; })
#antimony
#(library.desktopFile antimony { longName = "CAD Software"; command = "antimony"; })
insertCopyq
(library.desktopFile insertCopyq { longName = "type what is on top of the copyq"; command = "insertCopyq"; })
bank borrow
#fzf
seafileClient
irc
rofi
dmenu
manpages
emo
(library.desktopFile emo { longName = "Emoji Inserter"; command = "emoticons"; })
terranix
bat
zlib # ???
cabal-install
ghc
cabal2nix
psmisc # contains killall
pmount
nix-prefetch-scripts
ipcalc
nmap
libreoffice
hunspell
hunspellDicts.de-de
hunspellDicts.en-us
aspell
aspellDicts.de
aspellDicts.en
aspellDicts.es
translate-shell
restic
gpa
gnupg
sshuttle
sshfs
mosh
dosfstools
copyq
radio-dj
cups
xfe # filemanager
evince
sxiv
(library.desktopFile sxiv { longName = "Image Viewer"; command = "sxiv"; })
calibre
transmission-remote-gtk
mpv
cantata
ncmpcpp
nixos-generators
lektor
shellcheck
bind.dnsutils
hexyl
testssl
trash-cli
nix-review
(writeShellScriptBin "ingdiba-security" ''
first=$1
second=$2
if [[ $# -ne 2 ]]
then
echo "need 2 arguments"
exit 1
fi
pass bank/ingdiba/security_key | cut -c$first,$second
'')
(writeShellScriptBin "ingdiba-tans" ''
first=$1
if [[ $# -ne 1 ]]
then
echo "need 1 arguments"
exit 1
fi
pass bank/ingdiba/tans-01 | cut -f$first -d '
'
'')
nethogs
netsniff-ng
iftop
(writeShellScriptBin "shrink-exports" (fileContents <assets/shrink_exports>))
screenKey
replaceLinks
(pkgs.pidgin-with-plugins.override {
## Add whatever plugins are desired (see nixos.org package listing).
plugins = [
pkgs.pidgin-otr
pkgs.purple-facebook
pkgs.purple-discord
pkgs.purple-matrix
pkgs.purple-hangouts
pkgs.pidgin-latex
pkgs.pidgin-opensteamworks
pkgs.pidgin-skypeweb
pkgs.telegram-purple
pkgs.purple-lurch
];
})
haskellPackages.image-generator
] ++ (lib.crossLists pandocScript [ ["markdown" "mediawiki"] ["mediawiki" "docbook5" "html5" "man"] ]);
}