2019-10-24 02:20:38 +02:00
|
|
|
{ pkgs, config, lib, ... }:
|
|
|
|
|
|
|
|
with lib;
|
|
|
|
|
|
|
|
let
|
|
|
|
|
|
|
|
unstablePkgs = import <nixpkgs-unstable> {};
|
|
|
|
|
|
|
|
library = import <library> { inherit pkgs lib; };
|
|
|
|
|
2019-10-26 13:46:37 +02:00
|
|
|
#seafileClient = unstablePkgs.seafile-client.override{
|
|
|
|
# seafile-shared = unstablePkgs.seafile-shared;
|
|
|
|
#};
|
|
|
|
|
|
|
|
seafileClient = pkgs.seafile-client.override{
|
|
|
|
seafile-shared = pkgs.seafile-shared;
|
2019-10-24 02:20:38 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
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
|
|
|
|
|
|
|
|
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"] ]);
|
|
|
|
}
|