bce262e46e
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.
80 lines
1.7 KiB
Nix
80 lines
1.7 KiB
Nix
{ configuration
|
||
, pkgs
|
||
, lib ? pkgs.stdenv.lib
|
||
}:
|
||
|
||
with lib;
|
||
|
||
let
|
||
|
||
modules = [
|
||
./home-environment.nix
|
||
./manual.nix
|
||
./misc/gtk.nix
|
||
./misc/pam.nix
|
||
./programs/bash.nix
|
||
./programs/beets.nix
|
||
./programs/eclipse.nix
|
||
./programs/emacs.nix
|
||
./programs/firefox.nix
|
||
./programs/git.nix
|
||
./programs/gnome-terminal.nix
|
||
./programs/lesspipe.nix
|
||
./programs/ssh.nix
|
||
./programs/texlive.nix
|
||
./services/dunst.nix
|
||
./services/gnome-keyring.nix
|
||
./services/gpg-agent.nix
|
||
./services/keepassx.nix
|
||
./services/network-manager-applet.nix
|
||
./services/random-background.nix
|
||
./services/redshift.nix
|
||
./services/taffybar.nix
|
||
./services/tahoe-lafs.nix
|
||
./services/udiskie.nix
|
||
./services/xscreensaver.nix
|
||
./systemd.nix
|
||
./xresources.nix
|
||
./xsession.nix
|
||
<nixpkgs/nixos/modules/misc/assertions.nix>
|
||
<nixpkgs/nixos/modules/misc/meta.nix>
|
||
];
|
||
|
||
collectFailed = cfg:
|
||
map (x: x.message) (filter (x: !x.assertion) cfg.assertions);
|
||
|
||
showWarnings = res:
|
||
let
|
||
f = w: x: builtins.trace "[1;31mwarning: ${w}[0m" x;
|
||
in
|
||
fold f res res.config.warnings;
|
||
|
||
pkgsModule = {
|
||
config._module.args.pkgs = lib.mkForce pkgs;
|
||
config._module.args.baseModules = modules;
|
||
};
|
||
|
||
module = showWarnings (
|
||
let
|
||
mod = lib.evalModules {
|
||
modules = [ configuration ] ++ modules ++ [ pkgsModule ];
|
||
};
|
||
|
||
failed = collectFailed mod.config;
|
||
|
||
failedStr = concatStringsSep "\n" (map (x: "- ${x}") failed);
|
||
in
|
||
if failed == []
|
||
then mod
|
||
else throw "\nFailed assertions:\n${failedStr}"
|
||
);
|
||
|
||
in
|
||
|
||
{
|
||
inherit (module) options config;
|
||
|
||
activation-script = module.config.home.activationPackage;
|
||
home-path = module.config.home.path;
|
||
}
|