Commit graph

90 commits

Author SHA1 Message Date
Linus Heckemann c9d0e3ee29
Add overlay and instructions for using it
(cherry picked from commit 34428fc709)
2017-09-27 18:25:54 +02:00
Robert Helgesson 3c6453b32d
home-environment: fail if a home.file is outside $HOME
(cherry picked from commit 6ecf9e091c)
2017-09-21 15:55:56 +02:00
Robert Helgesson d31a1ba6e2
lib: make dag.nix take lib as argument
(cherry picked from commit 742d1889c5)
2017-09-21 15:50:47 +02:00
Robert Helgesson 21a4dedd6f
lib: use generators from Nixpkgs
(cherry picked from commit 61042c7606)
2017-09-21 15:50:47 +02:00
Silvan Mosberger 4b09df1809
ssh: allow attrset matchBlock
(cherry picked from commit fc1d4f5362)
2017-09-12 08:58:13 +02:00
Robert Helgesson edb46f4aa2
home-manager: add explanatory comment
(cherry picked from commit 125deafc84)
2017-08-29 13:05:51 +02:00
Robert Helgesson 83866e7fc4
home-manager: temporarily re-add attribute
(cherry picked from commit 1445673e18)
2017-08-29 13:05:51 +02:00
Robert Helgesson 01a030a974
home-manager: remove unused attribute
(cherry picked from commit 4a17d8ef97)
2017-08-29 13:05:51 +02:00
Robert Helgesson 0357f71d71
home-manager: minor attribute rename
The "activation-script" attribute doesn't actually point directly at
the activation script. Renamed the attribute to be more descriptive.

(cherry picked from commit b4fff6b9b7)
2017-08-29 13:05:51 +02:00
Robert Helgesson 6b55d5373c
home-environment: include home path in generation directory
Technically not necessary but it was a bit silly to leave out this
important directory from the generation directory. This also makes it
more convenient to browse the installed packages after a
`home-manager build`.

(cherry picked from commit e561beab44)
2017-08-27 00:22:08 +02:00
Robert Helgesson f6a05b15a6
info: use XDG_CACHE_HOME if defined
(cherry picked from commit a30751464a)
2017-08-26 12:55:21 +02:00
Robert Helgesson b25037d68b
git: simplify submodule slightly
(cherry picked from commit fed112e497)
2017-08-24 01:03:34 +02:00
Richard Yang 95327eb5cd
home-environment: use relative latest profile link
Using a relative path prevents the latest version from being garbage
collected.

(cherry picked from commit 42f5d4404d)
2017-08-22 09:46:39 +02:00
Cornelius Mika d38ef895e5
lib-bash: always print message announcing a dry run
(cherry picked from commit 5c098dc7ad)
2017-08-21 18:53:26 +02:00
Cornelius Mika 4e7a26e710
home-environment: replace superfluous spaces in debug messages
(cherry picked from commit 3dba6fc95c)
2017-08-21 18:53:26 +02:00
Cornelius Mika b18d5e02ef
home-environment: only notify about path deletion on verbose output
(cherry picked from commit 1eee82272a)
2017-08-21 18:53:26 +02:00
Cornelius Mika 9865e3ce29
home-environment: fix error when deleting empty directories
With --ignore-fail-on-non-empty, non-emptiness is the only failure
that gets ignored by rmdir. In the case that rmdir reaches $HOME and
considers deleting it, it will detect insufficient permissions and
subsequently exit with an error, even if $HOME is not empty.

Prevent this by calling rmdir with a relative path that excludes
$HOME.

(cherry picked from commit da5b7bea78)
2017-08-21 18:46:07 +02:00
Silvan Mosberger 85d12028ad
htop: use types.coercedTo
(cherry picked from commit 1d24e96074)
2017-08-02 22:33:53 +02:00
Robert Helgesson bea9daabeb
ssh: add control persist option
(cherry picked from commit be432c8654)
2017-07-29 17:54:50 +02:00
Silvan Mosberger 31655a1621
htop: add module
(cherry picked from commit 3778a69fbe)
2017-07-24 13:23:48 +02:00
Robert Helgesson ee28f76369
home-environment: fix cleanup of user replaced directories
We must only follow the symbolic link once (i.e., not use the `-e`
option) since otherwise the pattern will not match when
`home.file.xyz.source` is a directory.

(cherry picked from commit d807a5c314)
2017-07-22 14:26:31 +02:00
Robert Helgesson 7f2eacfe49
home-environment: avoid harmless but scary error message
(cherry picked from commit 5862a05fb1)
2017-07-22 14:26:23 +02:00
Robert Helgesson 0ef0be8ffb
home-manager: remove manually installed home-manager
If the `home-manager` module is enabled then check if the
`home-manager` package is installed using `nix-env -i` and if so then
it is automatically uninstalled before the new package environment,
which includes home-manager, is installed.

(cherry picked from commit 2e257f40e6)
2017-07-20 09:14:23 +02:00
Robert Helgesson e9cc225cbb
syncthing: expand service description
This models the user service on the upstream systemd file.

(cherry picked from commit cdb2bec909)
2017-07-20 09:14:23 +02:00
Utku Demir 68f0ed58c1
Add syncthing service
(cherry picked from commit dd5061d73b)
2017-07-20 09:14:23 +02:00
Robert Helgesson 4bc6e454d7
home-manager: add module
This module is a module to install and configure the home-manager
tool. By managing the home-manager tool through the Home Manager
module system it will be installed/updated on configuration
activation.

(cherry picked from commit 7a18a0fb34)
2017-07-13 00:40:20 +02:00
Robin Stumm 540e90d3fa
home-environment: fix home.activation.checkLinkTargets
Problem
-------

We resolve symlinks from inside `/nix/store/HASH-home-manager-files`
into the nix store as `/nix/store/HASH-DRVNAME` which does not match
the pattern.

This happened to me because I pull in some repos in via `home.file`.
The `home-manager-files` derivation links to the repo's derivation in
the nix store. For example:

    let nanorcs = fetchFromGitHub {
      owner = "scopatz";
      repo = "nanorc";
      …
    }; in [
      {
        target = ".nano";
        source = nanorcs;
      }
      {
        target = ".nanorc";
        source = "${nanorcs}/nanorc";
      }
    ]

Solution
--------

Call `readlink` without `-e` to obtain only the first redirection from
`~` to `/nix/store/HASH-home-manager-files`.

(cherry picked from commit 89dc8c2004)
2017-07-08 00:40:58 +02:00
Robert Helgesson 196db18f5b
gpg-agent: use systemd socket activation 2017-06-29 23:33:28 +02:00
Robert Helgesson acf813cadc
systemd: add support for socket units 2017-06-29 01:06:08 +02:00
Robert Helgesson 8af6838869
home-environment: prevent delete of non-managed files
When a file has disappeared between the previous and the next
generations then its symlink in `$HOME` is typically deleted. With
this commit we refuse to delete the path unless we are reasonably
certain it is a symlink into a Home Manager generation.
2017-06-29 01:03:39 +02:00
Robert Helgesson 4c85ff7ff2
xsession: rename graphical session target name
The `he` in `he-graphical-session` doesn't make much sense, change it
to `hm` for Home Manager.
2017-06-29 00:24:29 +02:00
Robert Helgesson 9c17c5ccbb
Clean up systemd units for all graphical services 2017-06-26 18:42:27 +02:00
Robert Helgesson acf8d4e985
xsession: use systemd graphical targets
The systemd targets don't allow direct startup so we create our own
target for graphical sessions managed by Home Environment.
2017-06-26 18:31:55 +02:00
Robert Helgesson a9343d8194
udiskie: remove taffybar requirement
It should be sufficient to have a graphical session going.
2017-06-26 16:59:11 +02:00
Robert Helgesson 8b5d19e6b7
random-background: actually use image directory option 2017-06-25 22:25:36 +02:00
Christopher League ff65781b84
info: add module
This is a module for managing the GNU info directory for the user
profile. See comments at the top of `modules/programs/info.nix` for
further information.
2017-05-26 00:44:55 +02:00
Robert Helgesson f60a1ed689
systemd: handle non-Linux systems better
This commit causes an error to be printed if running under a non-Linux
system when a systemd service, target, or timer is active.

It will also prevent running systemd during activation if running
under a non-Linux system.
2017-05-16 22:05:02 +02:00
Robert Helgesson 02288320d0
home-environment: use explicit PATH in activation
In the activation script we expect to use the tools provided by GNU
Core Utilities and GNU Bash. This commit therefore explicitly add
these first in the `PATH` environment variable.
2017-05-16 22:04:19 +02:00
Robert Helgesson 8c7811a213
Credit original source for shell color code 2017-05-14 20:35:13 +02:00
Robert Helgesson 3ee505179f
home-environment: colorize activation output slightly 2017-05-14 16:17:38 +02:00
Robert Helgesson a9da4575f5
home-environment: run file collision check in function 2017-05-14 14:02:11 +02:00
Robert Helgesson ecf7d91d8b
ssh: use types.str instead of types.string
The `types.string` type is deprecated due to its surprising behavior.
2017-05-13 12:23:59 +02:00
Robert Helgesson 961722c3a8
ssh: add proxy command option 2017-05-13 12:08:09 +02:00
Christopher League bce262e46e
ssh: add programs.ssh module
This module generates a `.ssh/config` file. This doesn't embed _all_
options for the ssh client, but the most common ones should be there.

Example usage:

```nix
  programs.ssh = {
    enable = true;
    forwardAgent = true;
    controlMaster = "auto";
    matchBlocks = [
      {
        host = "something.blah.edu";
        port = 1024;
        user = "cleague";
        identitiesOnly = true;
      }
      {
        host = "host1 host2 host2.net host2.com";
        port = 7422;
        hostname = "example.com";
        serverAliveInterval = 60;
      }
      {
        host = "lucian";
        forwardX11 = true;
        forwardX11Trusted = true;
        checkHostIP = false;
      };
    };
  };
```

Each entry in `programs.ssh.matchBlocks` must contain a `host` field,
which will be used for the block condition.
2017-05-13 11:41:38 +02:00
Robert Helgesson e8fb9f50ce
gnome-terminal: use attrsOf rather than loaOf
Since the attribute names carry semantic meaning we should be more
strict about the type.
2017-05-10 00:20:15 +02:00
Robert Helgesson 3c69c7589a
xsession: make windowManager option required
Also add a fairly complicated example.
2017-05-06 13:01:07 +02:00
Robert Helgesson 88ec7145ba
home-environment: prevent overwriting existing files
This should reduce the risk of overwriting an existing file in the
user's home directory. A file will only be replaced if it is a link
pointing to a home-manager tree inside the Nix store.

If an existing file is detected an error is written indicating the
file's path and the activation will terminate before any mutation
occurs.

Fixes #6
2017-05-06 13:01:01 +02:00
Robert Helgesson 7e58b6bb35
home-environment: always link new and clean old generation
Previously the home files were not linked if the generation hadn't
changed. Unfortunately, this would mean that, if a file link was
removed for some reason it would not be recreated by running a switch
command.
2017-05-06 00:43:53 +02:00
Robert Helgesson 8fab2a5d9b
Add basic directed acyclic graph data structure
Also make use of this instead of Nixpkgs's strings-with-deps library
in activation script generation.
2017-05-04 00:39:36 +02:00
Robert Helgesson 4f1eec8180
Avoid undefined variables in activation script 2017-03-29 00:11:01 +02:00