forked from mirrors/nixpkgs
f9f6f41bff
TODO: there was more significant refactoring of qtbase and plasma 5.5 on master, and I'm deferring pointing to correct outputs to later.
164 lines
4.2 KiB
Nix
164 lines
4.2 KiB
Nix
# This module defines the packages that appear in
|
|
# /run/current-system/sw.
|
|
|
|
{ config, lib, pkgs, ... }:
|
|
|
|
with lib;
|
|
|
|
let
|
|
|
|
requiredPackages =
|
|
[ config.nix.package
|
|
pkgs.acl
|
|
pkgs.attr
|
|
pkgs.bashInteractive # bash with ncurses support
|
|
pkgs.bzip2
|
|
pkgs.coreutils
|
|
pkgs.cpio
|
|
pkgs.curl
|
|
pkgs.diffutils
|
|
pkgs.findutils
|
|
pkgs.gawk
|
|
pkgs.glibc # for ldd, getent
|
|
pkgs.gnugrep
|
|
pkgs.gnupatch
|
|
pkgs.gnused
|
|
pkgs.gnutar
|
|
pkgs.gzip
|
|
pkgs.xz
|
|
pkgs.less
|
|
pkgs.libcap
|
|
pkgs.nano
|
|
pkgs.ncurses
|
|
pkgs.netcat
|
|
config.programs.ssh.package
|
|
pkgs.perl
|
|
pkgs.procps
|
|
pkgs.rsync
|
|
pkgs.strace
|
|
pkgs.su
|
|
pkgs.time
|
|
pkgs.texinfoInteractive
|
|
pkgs.utillinux
|
|
];
|
|
|
|
in
|
|
|
|
{
|
|
options = {
|
|
|
|
environment = {
|
|
|
|
systemPackages = mkOption {
|
|
type = types.listOf types.package;
|
|
default = [];
|
|
example = literalExample "[ pkgs.firefox pkgs.thunderbird ]";
|
|
description = ''
|
|
The set of packages that appear in
|
|
/run/current-system/sw. These packages are
|
|
automatically available to all users, and are
|
|
automatically updated every time you rebuild the system
|
|
configuration. (The latter is the main difference with
|
|
installing them in the default profile,
|
|
<filename>/nix/var/nix/profiles/default</filename>.
|
|
'';
|
|
};
|
|
|
|
pathsToLink = mkOption {
|
|
type = types.listOf types.str;
|
|
# Note: We need `/lib' to be among `pathsToLink' for NSS modules
|
|
# to work.
|
|
default = [];
|
|
example = ["/"];
|
|
description = "List of directories to be symlinked in <filename>/run/current-system/sw</filename>.";
|
|
};
|
|
|
|
outputsToLink = mkOption {
|
|
type = types.listOf types.str;
|
|
default = [ ];
|
|
example = [ "doc" ];
|
|
description = "List of package outputs to be symlinked into <filename>/run/current-system/sw</filename>.";
|
|
};
|
|
|
|
};
|
|
|
|
system = {
|
|
|
|
path = mkOption {
|
|
internal = true;
|
|
description = ''
|
|
The packages you want in the boot environment.
|
|
'';
|
|
};
|
|
|
|
};
|
|
|
|
};
|
|
|
|
config = {
|
|
|
|
environment.systemPackages = requiredPackages;
|
|
|
|
environment.pathsToLink =
|
|
[ "/bin"
|
|
"/etc/xdg"
|
|
"/info"
|
|
"/lib" # FIXME: remove and update debug-info.nix
|
|
"/sbin"
|
|
"/share/applications"
|
|
"/share/desktop-directories"
|
|
"/share/doc"
|
|
"/share/emacs"
|
|
"/share/icons"
|
|
"/share/info"
|
|
"/share/menus"
|
|
"/share/mime"
|
|
"/share/nano"
|
|
"/share/org"
|
|
"/share/terminfo"
|
|
"/share/themes"
|
|
"/share/vim-plugins"
|
|
];
|
|
|
|
environment.outputsToLink = [ "bin" "lib" "out" ];
|
|
|
|
system.path = pkgs.buildEnv {
|
|
name = "system-path";
|
|
paths =
|
|
lib.filter (drv: drv != null && drv != (drv.dev or null))
|
|
(lib.concatMap (drv:
|
|
[ drv ] ++ map (outputName: drv.${outputName}.outPath or null) config.environment.outputsToLink)
|
|
config.environment.systemPackages);
|
|
inherit (config.environment) pathsToLink;
|
|
ignoreCollisions = true;
|
|
# !!! Hacky, should modularise.
|
|
postBuild =
|
|
''
|
|
if [ -x $out/bin/update-mime-database -a -w $out/share/mime ]; then
|
|
XDG_DATA_DIRS=$out/share $out/bin/update-mime-database -V $out/share/mime > /dev/null
|
|
fi
|
|
|
|
if [ -x $out/bin/gtk-update-icon-cache -a -f $out/share/icons/hicolor/index.theme ]; then
|
|
$out/bin/gtk-update-icon-cache $out/share/icons/hicolor
|
|
fi
|
|
|
|
if [ -x $out/bin/glib-compile-schemas -a -w $out/share/glib-2.0/schemas ]; then
|
|
$out/bin/glib-compile-schemas $out/share/glib-2.0/schemas
|
|
fi
|
|
|
|
if [ -x $out/bin/update-desktop-database -a -w $out/share/applications ]; then
|
|
$out/bin/update-desktop-database $out/share/applications
|
|
fi
|
|
|
|
if [ -x $out/bin/install-info -a -w $out/share/info ]; then
|
|
shopt -s nullglob
|
|
for i in $out/share/info/*.info $out/share/info/*.info.gz; do
|
|
$out/bin/install-info $i $out/share/info/dir
|
|
done
|
|
fi
|
|
'';
|
|
};
|
|
|
|
};
|
|
}
|