aboutsummaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
authorRobert Helgesson <robert@rycee.net>2017-12-02 19:15:13 +0100
committerRobert Helgesson <robert@rycee.net>2017-12-26 17:27:21 +0100
commitf0d207f3807c2111532d361c71047e1883595f3a (patch)
tree8d5ba305fdbad1e3ee9e761573746c4b27ecf10d /modules
parent7dd09cecda0ea9a84a831259a37609c92fd86652 (diff)
Add dag library to `config.lib`
Also replace all imports of `dag.nix` by the entry in `config.lib`.
Diffstat (limited to 'modules')
-rw-r--r--modules/files.nix7
-rw-r--r--modules/home-environment.nix9
-rw-r--r--modules/lib/default.nix18
-rw-r--r--modules/modules.nix1
-rw-r--r--modules/programs/gnome-terminal.nix5
-rw-r--r--modules/programs/home-manager.nix5
-rw-r--r--modules/programs/info.nix5
-rw-r--r--modules/services/polybar.nix7
-rw-r--r--modules/services/window-managers/i3.nix7
-rw-r--r--modules/services/window-managers/xmonad.nix7
-rw-r--r--modules/systemd.nix5
11 files changed, 52 insertions, 24 deletions
diff --git a/modules/files.nix b/modules/files.nix
index b8efd886f11..c4978a1aeea 100644
--- a/modules/files.nix
+++ b/modules/files.nix
@@ -1,12 +1,13 @@
{ pkgs, config, lib, ... }:
with lib;
-with import ./lib/dag.nix { inherit lib; };
let
cfg = config.home.file;
+ dag = config.lib.dag;
+
homeDirectory = config.home.homeDirectory;
fileType = (import lib/file-type.nix {
@@ -51,7 +52,7 @@ in
# This verifies that the links we are about to create will not
# overwrite an existing file.
- home.activation.checkLinkTargets = dagEntryBefore ["writeBoundary"] (
+ home.activation.checkLinkTargets = dag.entryBefore ["writeBoundary"] (
let
check = pkgs.writeText "check" ''
. ${./lib-bash/color-echo.sh}
@@ -107,7 +108,7 @@ in
# and a failure during the intermediate state FA ∩ FB will not
# result in lost links because this set of links are in both the
# source and target generation.
- home.activation.linkGeneration = dagEntryAfter ["writeBoundary"] (
+ home.activation.linkGeneration = dag.entryAfter ["writeBoundary"] (
let
link = pkgs.writeText "link" ''
newGenFiles="$1"
diff --git a/modules/home-environment.nix b/modules/home-environment.nix
index 24f40c74eb7..b761594ace3 100644
--- a/modules/home-environment.nix
+++ b/modules/home-environment.nix
@@ -1,12 +1,13 @@
{ config, lib, pkgs, ... }:
with lib;
-with import ./lib/dag.nix { inherit lib; };
let
cfg = config.home;
+ dag = config.lib.dag;
+
languageSubModule = types.submodule {
options = {
base = mkOption {
@@ -241,9 +242,9 @@ in
# A dummy entry acting as a boundary between the activation
# script's "check" and the "write" phases.
- home.activation.writeBoundary = dagEntryAnywhere "";
+ home.activation.writeBoundary = dag.entryAnywhere "";
- home.activation.installPackages = dagEntryAfter ["writeBoundary"] ''
+ home.activation.installPackages = dag.entryAfter ["writeBoundary"] ''
$DRY_RUN_CMD nix-env -i ${cfg.path}
'';
@@ -253,7 +254,7 @@ in
noteEcho Activating ${res.name}
${res.data}
'';
- sortedCommands = dagTopoSort cfg.activation;
+ sortedCommands = dag.topoSort cfg.activation;
activationCmds =
if sortedCommands ? result then
concatStringsSep "\n" (map mkCmd sortedCommands.result)
diff --git a/modules/lib/default.nix b/modules/lib/default.nix
new file mode 100644
index 00000000000..5c273f15da7
--- /dev/null
+++ b/modules/lib/default.nix
@@ -0,0 +1,18 @@
+{ lib }:
+
+{
+ dag =
+ let
+ d = import ./dag.nix { inherit lib; };
+ in
+ {
+ empty = d.emptyDag;
+ isDag = d.isDag;
+ topoSort = d.dagTopoSort;
+ map = d.dagMap;
+ entryAnywhere = d.dagEntryAnywhere;
+ entryBetween = d.dagEntryBetween;
+ entryAfter = d.dagEntryAfter;
+ entryBefore = d.dagEntryBefore;
+ };
+}
diff --git a/modules/modules.nix b/modules/modules.nix
index 83cc5929429..7fd76147b71 100644
--- a/modules/modules.nix
+++ b/modules/modules.nix
@@ -75,6 +75,7 @@ let
config._module.args.baseModules = modules;
config._module.args.pkgs = lib.mkDefault pkgs;
config._module.check = check;
+ config.lib = import ./lib { inherit lib; };
config.nixpkgs.system = mkDefault pkgs.system;
};
diff --git a/modules/programs/gnome-terminal.nix b/modules/programs/gnome-terminal.nix
index fff11a82a25..fa379464394 100644
--- a/modules/programs/gnome-terminal.nix
+++ b/modules/programs/gnome-terminal.nix
@@ -1,12 +1,13 @@
{ config, lib, pkgs, ... }:
with lib;
-with import ../lib/dag.nix { inherit lib; };
let
cfg = config.programs.gnome-terminal;
+ dag = config.lib.dag;
+
profileColorsSubModule = types.submodule (
{ ... }: {
options = {
@@ -181,7 +182,7 @@ in
home.packages = [ pkgs.gnome3.gnome_terminal ];
# The dconf service needs to be installed and prepared.
- home.activation.gnomeTerminal = dagEntryAfter ["installPackages"] (
+ home.activation.gnomeTerminal = dag.entryAfter ["installPackages"] (
let
iniText = toDconfIni (buildIniSet cfg);
iniFile = pkgs.writeText "gnome-terminal.ini" iniText;
diff --git a/modules/programs/home-manager.nix b/modules/programs/home-manager.nix
index b27be1dbc73..306b14a2198 100644
--- a/modules/programs/home-manager.nix
+++ b/modules/programs/home-manager.nix
@@ -1,12 +1,13 @@
{ config, lib, pkgs, ... }:
with lib;
-with import ../lib/dag.nix { inherit lib; };
let
cfg = config.programs.home-manager;
+ dag = config.lib.dag;
+
in
{
@@ -42,7 +43,7 @@ in
# Uninstall manually installed home-manager, if such exists.
# Without this a file collision error will be printed.
home.activation.uninstallHomeManager =
- dagEntryBetween [ "installPackages" ] [ "writeBoundary" ] ''
+ dag.entryBetween [ "installPackages" ] [ "writeBoundary" ] ''
if nix-env -q | grep -q "^home-manager$" ; then
$DRY_RUN_CMD nix-env -e home-manager
diff --git a/modules/programs/info.nix b/modules/programs/info.nix
index 5f75ec927a2..5884bb19ec9 100644
--- a/modules/programs/info.nix
+++ b/modules/programs/info.nix
@@ -21,12 +21,13 @@
{ config, lib, pkgs, ... }:
with lib;
-with import ../lib/dag.nix { inherit lib; };
let
cfg = config.programs.info;
+ dag = config.lib.dag;
+
# Indexes info files found in this location
homeInfoPath = "$HOME/.nix-profile/share/info";
@@ -63,7 +64,7 @@ in
home.sessionVariables.INFOPATH =
"${cfg.homeInfoDirLocation}\${INFOPATH:+:}\${INFOPATH}";
- home.activation.createHomeInfoDir = dagEntryAfter ["installPackages"] ''
+ home.activation.createHomeInfoDir = dag.entryAfter ["installPackages"] ''
oPATH=$PATH
export PATH="${lib.makeBinPath [ pkgs.gzip ]}''${PATH:+:}$PATH"
$DRY_RUN_CMD mkdir -p "${cfg.homeInfoDirLocation}"
diff --git a/modules/services/polybar.nix b/modules/services/polybar.nix
index 2e24f2a94e5..b218c6c6133 100644
--- a/modules/services/polybar.nix
+++ b/modules/services/polybar.nix
@@ -1,12 +1,13 @@
{ config, lib, pkgs, ... }:
with lib;
-with import ../lib/dag.nix { inherit lib; };
let
cfg = config.services.polybar;
+ dag = config.lib.dag;
+
toPolybarIni = generators.toINI {
mkKeyValue = key: value:
let
@@ -131,7 +132,7 @@ in
};
};
- home.activation.checkPolybar = dagEntryBefore [ "linkGeneration" ] ''
+ home.activation.checkPolybar = dag.entryBefore [ "linkGeneration" ] ''
if ! cmp --quiet \
"${configFile}" \
"$HOME/.config/polybar/config"; then
@@ -139,7 +140,7 @@ in
fi
'';
- home.activation.applyPolybar = dagEntryAfter [ "reloadSystemD" ] ''
+ home.activation.applyPolybar = dag.entryAfter [ "reloadSystemD" ] ''
if [[ -v polybarChanged && -v DISPLAY ]]; then
echo "Restarting polybar"
${config.systemd.user.systemctlPath} --user restart polybar.service
diff --git a/modules/services/window-managers/i3.nix b/modules/services/window-managers/i3.nix
index 96842788ad6..a40f7462e9e 100644
--- a/modules/services/window-managers/i3.nix
+++ b/modules/services/window-managers/i3.nix
@@ -1,12 +1,13 @@
{ config, lib, pkgs, ... }:
with lib;
-with import ../../lib/dag.nix { inherit lib; };
let
cfg = config.xsession.windowManager.i3;
+ dag = config.lib.dag;
+
startupModule = types.submodule {
options = {
command = mkOption {
@@ -621,7 +622,7 @@ in
xsession.windowManager.command = "${cfg.package}/bin/i3";
xdg.configFile."i3/config".source = configFile;
- home.activation.checkI3 = dagEntryBefore [ "linkGeneration" ] ''
+ home.activation.checkI3 = dag.entryBefore [ "linkGeneration" ] ''
if ! cmp --quiet \
"${configFile}" \
"${config.xdg.configHome}/i3/config"; then
@@ -629,7 +630,7 @@ in
fi
'';
- home.activation.reloadI3 = dagEntryAfter [ "linkGeneration" ] ''
+ home.activation.reloadI3 = dag.entryAfter [ "linkGeneration" ] ''
if [[ -v i3Changed && -v DISPLAY ]]; then
echo "Reloading i3"
${cfg.package}/bin/i3-msg reload 1>/dev/null
diff --git a/modules/services/window-managers/xmonad.nix b/modules/services/window-managers/xmonad.nix
index 660a609659e..d4643b09168 100644
--- a/modules/services/window-managers/xmonad.nix
+++ b/modules/services/window-managers/xmonad.nix
@@ -1,12 +1,13 @@
{ config, lib, pkgs, ... }:
with lib;
-with import ../../lib/dag.nix { inherit lib; };
let
cfg = config.xsession.windowManager.xmonad;
+ dag = config.lib.dag;
+
xmonad = pkgs.xmonad-with-packages.override {
ghcWithPackages = cfg.haskellPackages.ghcWithPackages;
packages = self:
@@ -90,13 +91,13 @@ in
(mkIf (cfg.config != null) {
home.file.".xmonad/xmonad.hs".source = cfg.config;
- home.activation.checkXmonad = dagEntryBefore [ "linkGeneration" ] ''
+ home.activation.checkXmonad = dag.entryBefore [ "linkGeneration" ] ''
if ! cmp --quiet "${cfg.config}" "$HOME/.xmonad/xmonad.hs"; then
xmonadChanged=1
fi
'';
- home.activation.applyXmonad = dagEntryAfter [ "linkGeneration" ] ''
+ home.activation.applyXmonad = dag.entryAfter [ "linkGeneration" ] ''
if [[ -v xmonadChanged ]]; then
echo "Recompiling xmonad"
${config.xsession.windowManager.command} --recompile
diff --git a/modules/systemd.nix b/modules/systemd.nix
index 49ad82a015e..3ee5ccc8ef9 100644
--- a/modules/systemd.nix
+++ b/modules/systemd.nix
@@ -1,12 +1,13 @@
{ config, lib, pkgs, ... }:
with lib;
-with import ./lib/dag.nix { inherit lib; };
let
cfg = config.systemd.user;
+ dag = config.lib.dag;
+
enabled = cfg.services != {}
|| cfg.sockets != {}
|| cfg.targets != {}
@@ -144,7 +145,7 @@ in
(buildServices "timer" cfg.timers)
);
- home.activation.reloadSystemD = dagEntryAfter ["linkGeneration"] (
+ home.activation.reloadSystemD = dag.entryAfter ["linkGeneration"] (
if cfg.startServices then
''
PATH=${dirOf cfg.systemctlPath} \