f3d94cfc23
This reverts commit cad8957eabcbf73062226d28366fd446c15c8737. It breaks NixOps, but more importantly, such major changes to the module system really need to be reviewed.
76 lines
2.0 KiB
Nix
76 lines
2.0 KiB
Nix
{ pkgs, lib, config, ... }:
|
|
|
|
with lib;
|
|
|
|
let
|
|
|
|
cfg = config.services.ihaskell;
|
|
ihaskell = pkgs.ihaskell.override {
|
|
packages = self: cfg.extraPackages self;
|
|
};
|
|
|
|
in
|
|
|
|
{
|
|
options = {
|
|
services.ihaskell = {
|
|
enable = mkOption {
|
|
default = false;
|
|
example = true;
|
|
description = "Autostart an IHaskell notebook service.";
|
|
};
|
|
|
|
haskellPackages = mkOption {
|
|
default = pkgs.haskellPackages;
|
|
defaultText = "pkgs.haskellPackages";
|
|
example = literalExample "pkgs.haskell.packages.ghc784";
|
|
description = ''
|
|
haskellPackages used to build IHaskell and other packages.
|
|
This can be used to change the GHC version used to build
|
|
IHaskell and the packages listed in
|
|
<varname>extraPackages</varname>.
|
|
'';
|
|
};
|
|
|
|
extraPackages = mkOption {
|
|
default = self: [];
|
|
example = literalExample ''
|
|
haskellPackages: [
|
|
haskellPackages.wreq
|
|
haskellPackages.lens
|
|
]
|
|
'';
|
|
description = ''
|
|
Extra packages available to ghc when running ihaskell. The
|
|
value must be a function which receives the attrset defined
|
|
in <varname>haskellPackages</varname> as the sole argument.
|
|
'';
|
|
};
|
|
};
|
|
};
|
|
|
|
config = mkIf cfg.enable {
|
|
|
|
users.extraUsers.ihaskell = {
|
|
group = config.users.extraGroups.ihaskell.name;
|
|
description = "IHaskell user";
|
|
home = "/var/lib/ihaskell";
|
|
createHome = true;
|
|
uid = config.ids.uids.ihaskell;
|
|
};
|
|
|
|
users.extraGroups.ihaskell.gid = config.ids.gids.ihaskell;
|
|
|
|
systemd.services.ihaskell = {
|
|
description = "IHaskell notebook instance";
|
|
wantedBy = [ "multi-user.target" ];
|
|
after = [ "network.target" ];
|
|
serviceConfig = {
|
|
User = config.users.extraUsers.ihaskell.name;
|
|
Group = config.users.extraGroups.ihaskell.name;
|
|
ExecStart = "${pkgs.stdenv.shell} -c \"cd $HOME;${ihaskell}/bin/ihaskell-notebook\"";
|
|
};
|
|
};
|
|
};
|
|
}
|