Created
February 13, 2019 23:00
-
-
Save chessai/f08ff687069f7aa4fd3e5e9363d577bc to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| { config, lib, pkgs, ... }: | |
| with lib; | |
| let | |
| cfg = config.services.choogle; | |
| hoogleEnv = pkgs.buildEnv { | |
| name = "hoogle"; | |
| paths = [ (cfg.haskellPackages.ghcWithHoogle cfg.packages) ]; | |
| }; | |
| in { | |
| options.services.choogle = { | |
| enable = mkEnableOption "Haskell documentation server"; | |
| port = mkOption { | |
| type = types.int; | |
| default = 3000; | |
| description = '' | |
| Port number Hoogle will be running on. | |
| ''; | |
| }; | |
| packages = mkOption { | |
| default = hp: []; | |
| defaultText = "hp: []"; | |
| example = "hp: with hp; [ text lens ]"; | |
| description = '' | |
| The Haskell packages to generate documentation for. | |
| The option value is a function that takes the package set specificied in | |
| the <varname>haskellPackages</varname> option as its sole parameter and | |
| returns a list of packages. | |
| ''; | |
| }; | |
| haskellPackages = mkOption { | |
| description = "Which haskell package set to use."; | |
| default = pkgs.haskellPackages; | |
| defaultText = "pkgs.haskellPackages"; | |
| }; | |
| home = mkOption { | |
| type = types.str; | |
| description = "Url for hoogle logo"; | |
| default = "https://hoogle.haskell.org"; | |
| }; | |
| }; | |
| config = mkIf cfg.enable { | |
| systemd.services.choogle = { | |
| description = "Haskell documentation server"; | |
| wantedBy = [ "multi-user.target" ]; | |
| serviceConfig = { | |
| Restart = "always"; | |
| ExecStart = '' | |
| ${hoogleEnv}/bin/hoogle generate && ${hoogleEnv}/bin/hoogle server --local --port=${toString cfg.port} --home ${cfg.home} | |
| ''; | |
| User = "nobody"; | |
| Group = "nogroup"; | |
| # PrivateTmp = true; | |
| # ProtectHome = true; | |
| # RuntimeDirectory = "hoogle"; | |
| # WorkingDirectory = "%thoogle"; | |
| }; | |
| }; | |
| }; | |
| } | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment