[NixOS] Move package customizations to overlay

This commit is contained in:
Ivan Malison 2018-07-19 14:00:41 -07:00
parent 44718aeb57
commit 731b61918c
No known key found for this signature in database
GPG Key ID: 62530EFBE99DC2F8
3 changed files with 109 additions and 88 deletions

View File

@ -1,6 +1,6 @@
{ config, pkgs, ... }:
{ config, pkgs, options, ... }:
let
gitter = with pkgs; callPackage ./gitter.nix { };
my-overlays = import ./overlays.nix;
my-python-packages = python-packages: with python-packages; [
appdirs
requests
@ -11,81 +11,16 @@ let
pip
];
python-with-my-packages = pkgs.python3.withPackages my-python-packages;
udiskie-appindicator = pkgs.udiskie.overrideAttrs (oldAttrs: rec {
version = "1.7.5";
src = pkgs.fetchFromGitHub {
owner = "coldfix";
repo = "udiskie";
rev = version;
sha256 = "1mcdn8ha5d5nsmrzk6xnnsqrmk94rdrzym9sqm38zk5r8gpyl1k4";
};
propagatedBuildInputs = oldAttrs.propagatedBuildInputs ++ [pkgs.libappindicator-gtk3];
});
clipit-master = pkgs.clipit.overrideAttrs (oldAttrs: rec {
version = "50d983514386029a1f133187902084b753458f32";
preConfigure = "./autogen.sh";
configureFlags = ["--with-gtk3" "--enable-appindicator"];
src = pkgs.fetchFromGitHub {
owner = "IvanMalison";
repo = "ClipIt";
sha256 = "1d52zjnxmcp2kr4wvq2yn9fhr61v9scp91fxfvasvz5m7k1zagdn";
rev = version;
};
buildInputs = with pkgs; [
autoconf automake intltool gtk3 xdotool hicolor-icon-theme
libappindicator-gtk3
];
});
pasystray-appindicator = with pkgs; pasystray.overrideAttrs (oldAttrs: rec {
buildInputs = oldAttrs.buildInputs ++ [libappindicator-gtk3];
});
customizable-notify-osd = with pkgs; notify-osd.overrideAttrs (oldAttrs: rec {
version = "0.9.35+16.04.20160415";
baseURI = "https://launchpad.net/~leolik/+archive/leolik";
src = fetchurl {
url = "${baseURI}/+files/notify-osd_${version}-0ubuntu1-leolik~ppa0.tar.gz";
sha256 = "026dr46jh3xc4103wnslzy7pxbxkkpflh52c59j8vzwaa7bvvzkv";
name = "notify-osd-customizable.tar.gz";
};
preConfigure = "./autogen.sh --libexecdir=$(out)/bin";
buildInputs = with pkgs; [
glib libwnck3 libnotify dbus-glib gnome3.gsettings-desktop-schemas
makeWrapper libtool gnome3.gnome-common
];
});
keybase-gui-fixed = with pkgs; keybase-gui.overrideAttrs (oldAttrs: rec {
installPhase = ''
mkdir -p $out/bin
mv usr/share $out/share
mv opt/keybase $out/share/
cat > $out/bin/keybase-gui <<EOF
#!${stdenv.shell}
checkFailed() {
if [ "\$NIX_SKIP_KEYBASE_CHECKS" = "1" ]; then
return
fi
echo "Set NIX_SKIP_KEYBASE_CHECKS=1 if you want to skip this check." >&2
exit 1
}
if [ ! -S "\$XDG_RUNTIME_DIR/keybase/keybased.sock" ]; then
echo "Keybase service doesn't seem to be running." >&2
echo "You might need to run: keybase service" >&2
checkFailed
fi
if [ -z "\$(keybase status | grep kbfsfuse)" ]; then
echo "Could not find kbfsfuse client in keybase status." >&2
echo "You might need to run: kbfsfuse" >&2
checkFailed
fi
exec $out/share/keybase/Keybase "\$@"
EOF
chmod +x $out/bin/keybase-gui
substituteInPlace $out/share/applications/keybase.desktop \
--replace run_keybase $out/bin/keybase-gui
'';
});
in
{
nixpkgs.overlays = [ my-overlays ];
# XXX: This ensures that all nix tools pick up the overlays that are set here
nix.nixPath =
# Prepend default nixPath values.
options.nix.nixPath.default ++
# Append our nixpkgs-overlays.
[ "nixpkgs-overlays=/etc/nixos/overlays-compat/" ];
nixpkgs.config.allowUnfree = true;
security.sudo.wheelNeedsPassword = false;
networking.networkmanager.enable = true;
@ -137,13 +72,14 @@ in
kleopatra
gitter
google-chrome
dfeet
hexchat
quassel
keybase-gui-fixed
kodi
lxappearance
rxvt_unicode
pulseeffects
spotify
termite
vlc
@ -160,7 +96,7 @@ in
# Desktop
# haskellPackages.status-notifier-item
autorandr
clipit-master
clipit
compton
feh
gnome3.gpaste
@ -209,8 +145,9 @@ in
# Tools
bazaar
binutils
dfeet
dex
dpkg
file
gcc
gdb
gitAndTools.git-sync
@ -236,6 +173,7 @@ in
silver-searcher
stow
tmux
unzip
valgrind
wget
wmctrl

View File

@ -6,11 +6,15 @@
, nwjs, pango, systemd }:
let gitterDirectorySuffix = "opt/gitter";
doELFPatch = target: ''
doELFExePatch = target: ''
patchelf --set-interpreter ${stdenv.cc.bintools.dynamicLinker} \
--set-rpath "$out/${gitterDirectorySuffix}/lib:${libPath}" \
$out/${gitterDirectorySuffix}/${target}
'';
doELFLibPatch = target: ''
patchelf --set-rpath "$out/${gitterDirectorySuffix}/lib:${libPath}" \
$out/${gitterDirectorySuffix}/${target}
'';
libPath = stdenv.lib.makeLibraryPath [
alsaLib atk cairo cups dbus expat fontconfig freetype gdk_pixbuf glib
gnome3.gconf gtk3 libX11 libXScrnSaver libXcomposite libXcursor libXdamage
@ -35,15 +39,16 @@ in stdenv.mkDerivation rec {
mkdir -p $out/{bin,opt/gitter,share/pixmaps}
mv ./opt/Gitter/linux64/* $out/opt/gitter
${doELFPatch "Gitter"}
${doELFPatch "nacl_helper"}
${doELFPatch "minidump_stackwalk"}
${doELFPatch "nwjc"}
${doELFPatch "chromedriver"}
${doELFPatch "payload"}
${doELFExePatch "Gitter"}
${doELFExePatch "nacl_helper"}
${doELFExePatch "minidump_stackwalk"}
${doELFExePatch "nwjc"}
${doELFExePatch "chromedriver"}
${doELFExePatch "payload"}
patchelf --set-rpath "$out/${gitterDirectorySuffix}/lib:${libPath}" \
$out/${gitterDirectorySuffix}/lib/libnw.so
${doELFLibPatch "lib/libnw.so"}
${doELFLibPatch "lib/libnode.so"}
${doELFLibPatch "lib/libffmpeg.so"}
wrapProgram $out/${gitterDirectorySuffix}/Gitter --prefix LD_LIBRARY_PATH : ${libPath}
@ -54,7 +59,7 @@ in stdenv.mkDerivation rec {
desktopItem = makeDesktopItem {
name = pname;
exec = "Gitter";
exec = "/usr/bin/env Gitter";
icon = pname;
desktopName = "Gitter";
genericName = meta.description;

78
nixos/overlays.nix Normal file
View File

@ -0,0 +1,78 @@
self: super:
{
gitter = super.callPackage ./gitter.nix { };
clipit = super.clipit.overrideAttrs (oldAttrs: rec {
version = "50d983514386029a1f133187902084b753458f32";
preConfigure = "./autogen.sh";
configureFlags = ["--with-gtk3" "--enable-appindicator"];
src = super.fetchFromGitHub {
owner = "IvanMalison";
repo = "ClipIt";
sha256 = "1d52zjnxmcp2kr4wvq2yn9fhr61v9scp91fxfvasvz5m7k1zagdn";
rev = version;
};
buildInputs = with self; [
autoconf automake intltool gtk3 xdotool hicolor-icon-theme
libappindicator-gtk3
];
});
udiskie-appindicator = super.udiskie.overrideAttrs (oldAttrs: rec {
version = "1.7.5";
src = super.fetchFromGitHub {
owner = "coldfix";
repo = "udiskie";
rev = version;
sha256 = "1mcdn8ha5d5nsmrzk6xnnsqrmk94rdrzym9sqm38zk5r8gpyl1k4";
};
propagatedBuildInputs = oldAttrs.propagatedBuildInputs ++ [self.libappindicator-gtk3];
});
pasystray-appindicator = super.pasystray.overrideAttrs (oldAttrs: rec {
buildInputs = oldAttrs.buildInputs ++ [self.libappindicator-gtk3];
});
customizable-notify-osd = super.notify-osd.overrideAttrs (oldAttrs: rec {
version = "0.9.35+16.04.20160415";
baseURI = "https://launchpad.net/~leolik/+archive/leolik";
src = super.fetchurl {
url = "${baseURI}/+files/notify-osd_${version}-0ubuntu1-leolik~ppa0.tar.gz";
sha256 = "026dr46jh3xc4103wnslzy7pxbxkkpflh52c59j8vzwaa7bvvzkv";
name = "notify-osd-customizable.tar.gz";
};
preConfigure = "./autogen.sh --libexecdir=$(out)/bin";
buildInputs = with self; [
glib libwnck3 libnotify dbus-glib gnome3.gsettings-desktop-schemas
makeWrapper libtool gnome3.gnome-common
];
});
keybase-gui-fixed = super.keybase-gui.overrideAttrs (oldAttrs: rec {
installPhase = ''
mkdir -p $out/bin
mv usr/share $out/share
mv opt/keybase $out/share/
cat > $out/bin/keybase-gui <<EOF
#!${self.stdenv.shell}
checkFailed() {
if [ "\$NIX_SKIP_KEYBASE_CHECKS" = "1" ]; then
return
fi
echo "Set NIX_SKIP_KEYBASE_CHECKS=1 if you want to skip this check." >&2
exit 1
}
if [ ! -S "\$XDG_RUNTIME_DIR/keybase/keybased.sock" ]; then
echo "Keybase service doesn't seem to be running." >&2
echo "You might need to run: keybase service" >&2
checkFailed
fi
if [ -z "\$(keybase status | grep kbfsfuse)" ]; then
echo "Could not find kbfsfuse client in keybase status." >&2
echo "You might need to run: kbfsfuse" >&2
checkFailed
fi
exec $out/share/keybase/Keybase "\$@"
EOF
chmod +x $out/bin/keybase-gui
substituteInPlace $out/share/applications/keybase.desktop \
--replace run_keybase $out/bin/keybase-gui
'';
});
}