about summary refs log tree commit diff
path: root/dotfiles.nix
diff options
context:
space:
mode:
authorVincent Ambo <tazjin@gmail.com>2017-10-20T21·22+0200
committerVincent Ambo <tazjin@gmail.com>2017-10-20T22·05+0200
commit7fe75e01386f24385ae9ccc624e3d8561df8bcbb (patch)
treeb72d47b17c2006a5f103da3e1c4d53552b35b26c /dotfiles.nix
parenta8a9bf130048ec1c71ed44a3930da0bd13c626d8 (diff)
feat(dotfiles): Begin controlling various dotfiles from Nix
Moves my i3 configuration into a nix derivation called 'tazjins-dotfiles'.

A good step towards fully declarative system configuration!
Diffstat (limited to 'dotfiles.nix')
-rw-r--r--dotfiles.nix31
1 files changed, 31 insertions, 0 deletions
diff --git a/dotfiles.nix b/dotfiles.nix
new file mode 100644
index 0000000000..8ba5f976f7
--- /dev/null
+++ b/dotfiles.nix
@@ -0,0 +1,31 @@
+# Bundle configuration files into a derivation.
+# I call this derivation dotfiles despite that not technically being true
+# anymore ...
+
+{ config, pkgs, ...}:
+
+let dotfiles = pkgs.stdenv.mkDerivation {
+  name = "tazjins-dotfiles";
+
+  srcs = [
+    ./dotfiles
+  ];
+
+  installPhase = ''
+    mkdir -p $out/dotfiles
+    cp ./* $out/dotfiles/
+  '';
+};
+in {
+  # /etc/ is a special place in NixOS!
+  # Symlinks that need to be created there must be specified explicitly.
+  environment.etc = {
+    "i3/config" = {
+      source = "${dotfiles}/dotfiles/i3.conf";
+      # Setting a mode causes Nix to copy the file instead of symlinking it.
+      # For i3 config in particular this is desirable because I want to be able
+      # to modify and reload it before committing a change.
+      mode = "0644";
+    };
+  };
+}