Merge remote-tracking branch 'upstream/master' into staging
This commit is contained in:
		
						commit
						aead6e12f9
					
				@ -2500,17 +2500,17 @@ addEnvHooks "$hostOffset" myBashFunction
 | 
			
		||||
     <listitem>
 | 
			
		||||
      <para>
 | 
			
		||||
       This hook will make a build pause instead of stopping when a failure
 | 
			
		||||
       happen. It prevents nix to cleanup the build environment immediatly and
 | 
			
		||||
       happens. It prevents nix from cleaning up the build environment immediately and
 | 
			
		||||
       allows the user to attach to a build environment using the
 | 
			
		||||
       <command>cntr</command> command. On build error it will print the
 | 
			
		||||
       instruction that are neccessary for <command>cntr</command>. Installing
 | 
			
		||||
       <command>cntr</command> command. Upon build error it will print
 | 
			
		||||
       instructions on how to use <command>cntr</command>. Installing
 | 
			
		||||
       cntr and running the command will provide shell access to the build
 | 
			
		||||
       sandbox of failed build. At <filename>/var/lib/cntr</filename> the
 | 
			
		||||
       sandbox filesystem is mounted. All commands and files of the system are
 | 
			
		||||
       sandboxed filesystem is mounted. All commands and files of the system are
 | 
			
		||||
       still accessible within the shell. To execute commands from the sandbox
 | 
			
		||||
       use the cntr exec subcommand. Note that <command>cntr</command> also
 | 
			
		||||
       needs to be executed on the machine that is doing the build, which might
 | 
			
		||||
       be not the case when remote builders are enabled.
 | 
			
		||||
       not be the case when remote builders are enabled.
 | 
			
		||||
       <command>cntr</command> is only supported on Linux-based platforms. To
 | 
			
		||||
       use it first add <literal>cntr</literal> to your
 | 
			
		||||
       <literal>environment.systemPackages</literal> on NixOS or alternatively to
 | 
			
		||||
 | 
			
		||||
@ -94,6 +94,15 @@ rec {
 | 
			
		||||
  attrValues = builtins.attrValues or (attrs: attrVals (attrNames attrs) attrs);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* Given a set of attribute names, return the set of the corresponding
 | 
			
		||||
     attributes from the given set.
 | 
			
		||||
 | 
			
		||||
     Example:
 | 
			
		||||
       getAttrs [ "a" "b" ] { a = 1; b = 2; c = 3; }
 | 
			
		||||
       => { a = 1; b = 2; }
 | 
			
		||||
  */
 | 
			
		||||
  getAttrs = names: attrs: genAttrs names (name: attrs.${name});
 | 
			
		||||
 | 
			
		||||
  /* Collect each attribute named `attr' from a list of attribute
 | 
			
		||||
     sets.  Sets that don't contain the named attribute are ignored.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -61,10 +61,10 @@ let
 | 
			
		||||
      boolToString mergeAttrs flip mapNullable inNixShell min max
 | 
			
		||||
      importJSON warn info nixpkgsVersion version mod compare
 | 
			
		||||
      splitByAndCompare functionArgs setFunctionArgs isFunction;
 | 
			
		||||
    inherit (fixedPoints) fix fix' extends composeExtensions
 | 
			
		||||
    inherit (fixedPoints) fix fix' converge extends composeExtensions
 | 
			
		||||
      makeExtensible makeExtensibleWithCustomName;
 | 
			
		||||
    inherit (attrsets) attrByPath hasAttrByPath setAttrByPath
 | 
			
		||||
      getAttrFromPath attrVals attrValues catAttrs filterAttrs
 | 
			
		||||
      getAttrFromPath attrVals attrValues getAttrs catAttrs filterAttrs
 | 
			
		||||
      filterAttrsRecursive foldAttrs collect nameValuePair mapAttrs
 | 
			
		||||
      mapAttrs' mapAttrsToList mapAttrsRecursive mapAttrsRecursiveCond
 | 
			
		||||
      genAttrs isDerivation toDerivation optionalAttrs
 | 
			
		||||
 | 
			
		||||
@ -24,6 +24,16 @@ rec {
 | 
			
		||||
  # for a concrete example.
 | 
			
		||||
  fix' = f: let x = f x // { __unfix__ = f; }; in x;
 | 
			
		||||
 | 
			
		||||
  # Return the fixpoint that `f` converges to when called recursively, starting
 | 
			
		||||
  # with the input `x`.
 | 
			
		||||
  #
 | 
			
		||||
  #     nix-repl> converge (x: x / 2) 16
 | 
			
		||||
  #     0
 | 
			
		||||
  converge = f: x:
 | 
			
		||||
    if (f x) == x
 | 
			
		||||
    then x
 | 
			
		||||
    else converge f (f x);
 | 
			
		||||
 | 
			
		||||
  # Modify the contents of an explicitly recursive attribute set in a way that
 | 
			
		||||
  # honors `self`-references. This is accomplished with a function
 | 
			
		||||
  #
 | 
			
		||||
 | 
			
		||||
@ -505,6 +505,12 @@ lib.mapAttrs (n: v: v // { shortName = n; }) rec {
 | 
			
		||||
    free = false;
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  nasa13 = spdx {
 | 
			
		||||
    spdxId = "NASA-1.3";
 | 
			
		||||
    fullName = "NASA Open Source Agreement 1.3";
 | 
			
		||||
    free = false;
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  ncsa = spdx {
 | 
			
		||||
    spdxId = "NCSA";
 | 
			
		||||
    fullName  = "University of Illinois/NCSA Open Source License";
 | 
			
		||||
 | 
			
		||||
@ -401,6 +401,11 @@
 | 
			
		||||
    github = "aszlig";
 | 
			
		||||
    name = "aszlig";
 | 
			
		||||
  };
 | 
			
		||||
  atnnn = {
 | 
			
		||||
    email = "etienne@atnnn.com";
 | 
			
		||||
    github = "atnnn";
 | 
			
		||||
    name = "Etienne Laurin";
 | 
			
		||||
  };
 | 
			
		||||
  auntie = {
 | 
			
		||||
    email = "auntieNeo@gmail.com";
 | 
			
		||||
    github = "auntie";
 | 
			
		||||
@ -1889,6 +1894,11 @@
 | 
			
		||||
    github = "ironpinguin";
 | 
			
		||||
    name = "Michele Catalano";
 | 
			
		||||
  };
 | 
			
		||||
  ivan = {
 | 
			
		||||
    email = "ivan@ludios.org";
 | 
			
		||||
    github = "ivan";
 | 
			
		||||
    name = "Ivan Kozik";
 | 
			
		||||
  };
 | 
			
		||||
  ivan-tkatchev = {
 | 
			
		||||
    email = "tkatchev@gmail.com";
 | 
			
		||||
    name = "Ivan Tkatchev";
 | 
			
		||||
@ -1918,6 +1928,11 @@
 | 
			
		||||
    github = "jagajaga";
 | 
			
		||||
    name = "Arseniy Seroka";
 | 
			
		||||
  };
 | 
			
		||||
  jakelogemann = {
 | 
			
		||||
    email = "jake.logemann@gmail.com";
 | 
			
		||||
    github = "jakelogemann";
 | 
			
		||||
    name = "Jake Logemann";
 | 
			
		||||
  };
 | 
			
		||||
  jammerful = {
 | 
			
		||||
    email = "jammerful@gmail.com";
 | 
			
		||||
    github = "jammerful";
 | 
			
		||||
@ -4278,6 +4293,11 @@
 | 
			
		||||
    github = "talyz";
 | 
			
		||||
    name = "Kim Lindberger";
 | 
			
		||||
  };
 | 
			
		||||
  taneb = {
 | 
			
		||||
    email = "nvd1234@gmail.com";
 | 
			
		||||
    github = "Taneb";
 | 
			
		||||
    name = "Nathan van Doorn";
 | 
			
		||||
  };
 | 
			
		||||
  tari = {
 | 
			
		||||
    email = "peter@taricorp.net";
 | 
			
		||||
    github = "tari";
 | 
			
		||||
 | 
			
		||||
@ -245,6 +245,65 @@
 | 
			
		||||
     options.
 | 
			
		||||
   </para>
 | 
			
		||||
  </listitem>
 | 
			
		||||
  <listitem>
 | 
			
		||||
   <para>
 | 
			
		||||
     The <literal>nscd</literal> service now disables all caching of
 | 
			
		||||
     <literal>passwd</literal> and <literal>group</literal> databases by
 | 
			
		||||
     default. This was interferring with the correct functioning of the
 | 
			
		||||
     <literal>libnss_systemd.so</literal> module which is used by
 | 
			
		||||
     <literal>systemd</literal> to manage uids and usernames in the presence of
 | 
			
		||||
     <literal>DynamicUser=</literal> in systemd services.  This was already the
 | 
			
		||||
     default behaviour in presence of <literal>services.sssd.enable =
 | 
			
		||||
       true</literal> because nscd caching would interfere with
 | 
			
		||||
     <literal>sssd</literal> in unpredictable ways as well.  Because we're
 | 
			
		||||
     using nscd not for caching, but for convincing glibc to find NSS modules
 | 
			
		||||
     in the nix store instead of an absolute path, we have decided to disable
 | 
			
		||||
     caching globally now, as it's usually not the behaviour the user wants and
 | 
			
		||||
     can lead to surprising behaviour.  Furthermore, negative caching of host
 | 
			
		||||
     lookups is also disabled now by default. This should fix the issue of dns
 | 
			
		||||
     lookups failing in the presence of an unreliable network.
 | 
			
		||||
   </para>
 | 
			
		||||
   <para>
 | 
			
		||||
     If the old behaviour is desired, this can be restored by setting
 | 
			
		||||
     the <literal>services.nscd.config</literal> option
 | 
			
		||||
     with the desired caching parameters.
 | 
			
		||||
     <programlisting>
 | 
			
		||||
     services.nscd.config =
 | 
			
		||||
     ''
 | 
			
		||||
     server-user             nscd
 | 
			
		||||
     threads                 1
 | 
			
		||||
     paranoia                no
 | 
			
		||||
     debug-level             0
 | 
			
		||||
 | 
			
		||||
     enable-cache            passwd          yes
 | 
			
		||||
     positive-time-to-live   passwd          600
 | 
			
		||||
     negative-time-to-live   passwd          20
 | 
			
		||||
     suggested-size          passwd          211
 | 
			
		||||
     check-files             passwd          yes
 | 
			
		||||
     persistent              passwd          no
 | 
			
		||||
     shared                  passwd          yes
 | 
			
		||||
 | 
			
		||||
     enable-cache            group           yes
 | 
			
		||||
     positive-time-to-live   group           3600
 | 
			
		||||
     negative-time-to-live   group           60
 | 
			
		||||
     suggested-size          group           211
 | 
			
		||||
     check-files             group           yes
 | 
			
		||||
     persistent              group           no
 | 
			
		||||
     shared                  group           yes
 | 
			
		||||
 | 
			
		||||
     enable-cache            hosts           yes
 | 
			
		||||
     positive-time-to-live   hosts           600
 | 
			
		||||
     negative-time-to-live   hosts           5
 | 
			
		||||
     suggested-size          hosts           211
 | 
			
		||||
     check-files             hosts           yes
 | 
			
		||||
     persistent              hosts           no
 | 
			
		||||
     shared                  hosts           yes
 | 
			
		||||
     '';
 | 
			
		||||
     </programlisting>
 | 
			
		||||
     See <link xlink:href="https://github.com/NixOS/nixpkgs/pull/50316">#50316</link>
 | 
			
		||||
     for details.
 | 
			
		||||
   </para>
 | 
			
		||||
  </listitem>
 | 
			
		||||
  <listitem>
 | 
			
		||||
   <para>
 | 
			
		||||
     GitLab Shell previously used the nix store paths for the
 | 
			
		||||
@ -299,6 +358,18 @@
 | 
			
		||||
      <option>services.kubernetes.addons.dns.replicas</option>.
 | 
			
		||||
    </para>
 | 
			
		||||
   </listitem>
 | 
			
		||||
   <listitem>
 | 
			
		||||
     <para>
 | 
			
		||||
       The quassel-webserver package and module was removed from nixpkgs due to the lack
 | 
			
		||||
       of maintainers.
 | 
			
		||||
     </para>
 | 
			
		||||
   </listitem>
 | 
			
		||||
   <listitem>
 | 
			
		||||
     <para>
 | 
			
		||||
       The owncloud server packages and httpd subservice module were removed
 | 
			
		||||
       from nixpkgs due to the lack of maintainers.
 | 
			
		||||
     </para>
 | 
			
		||||
   </listitem>
 | 
			
		||||
  </itemizedlist>
 | 
			
		||||
 </section>
 | 
			
		||||
</section>
 | 
			
		||||
 | 
			
		||||
@ -101,8 +101,8 @@ in
 | 
			
		||||
  config = mkIf enabled {
 | 
			
		||||
    assertions = [
 | 
			
		||||
      {
 | 
			
		||||
        assertion = config.services.xserver.displayManager.gdm.wayland;
 | 
			
		||||
        message = "NVIDIA drivers don't support wayland";
 | 
			
		||||
        assertion = with config.services.xserver.displayManager; gdm.enable -> !gdm.wayland;
 | 
			
		||||
        message = "NVIDIA drivers don't support wayland, set services.xserver.displayManager.gdm.wayland=false";
 | 
			
		||||
      }
 | 
			
		||||
      {
 | 
			
		||||
        assertion = !optimusCfg.enable ||
 | 
			
		||||
 | 
			
		||||
@ -715,7 +715,6 @@
 | 
			
		||||
  ./services/web-apps/restya-board.nix
 | 
			
		||||
  ./services/web-apps/tt-rss.nix
 | 
			
		||||
  ./services/web-apps/selfoss.nix
 | 
			
		||||
  ./services/web-apps/quassel-webserver.nix
 | 
			
		||||
  ./services/web-apps/virtlyst.nix
 | 
			
		||||
  ./services/web-apps/youtrack.nix
 | 
			
		||||
  ./services/web-servers/apache-httpd/default.nix
 | 
			
		||||
 | 
			
		||||
@ -98,7 +98,7 @@ in
 | 
			
		||||
          if [ "$TERM" != "dumb" -o -n "$INSIDE_EMACS" ]; then
 | 
			
		||||
            PROMPT_COLOR="1;31m"
 | 
			
		||||
            let $UID && PROMPT_COLOR="1;32m"
 | 
			
		||||
            PS1="\n\[\033[$PROMPT_COLOR\][\u@\h:\w]\\$\[\033[0m\] "
 | 
			
		||||
            PS1="\n\[\033[$PROMPT_COLOR\][\[\e]0;\u@\h: \w\a\]\u@\h:\w]\$\[\033[0m\] "
 | 
			
		||||
            if test "$TERM" = "xterm"; then
 | 
			
		||||
              PS1="\[\033]2;\h:\u:\w\007\]$PS1"
 | 
			
		||||
            fi
 | 
			
		||||
 | 
			
		||||
@ -18,13 +18,13 @@ in
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    strategy = mkOption {
 | 
			
		||||
      type = types.enum [ "default" "match_prev_cmd" ];
 | 
			
		||||
      default = "default";
 | 
			
		||||
      type = types.enum [ "history" "match_prev_cmd" ];
 | 
			
		||||
      default = "history";
 | 
			
		||||
      description = ''
 | 
			
		||||
        Set ZSH_AUTOSUGGEST_STRATEGY to choose the strategy for generating suggestions.
 | 
			
		||||
        There are currently two to choose from:
 | 
			
		||||
 | 
			
		||||
          * default: Chooses the most recent match.
 | 
			
		||||
          * history: Chooses the most recent match.
 | 
			
		||||
          * match_prev_cmd: Chooses the most recent match whose preceding history item matches
 | 
			
		||||
            the most recently executed command (more info). Note that this strategy won't work as
 | 
			
		||||
            expected with ZSH options that don't preserve the history order such as
 | 
			
		||||
@ -51,7 +51,7 @@ in
 | 
			
		||||
      source ${pkgs.zsh-autosuggestions}/share/zsh-autosuggestions/zsh-autosuggestions.zsh
 | 
			
		||||
 | 
			
		||||
      export ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE="${cfg.highlightStyle}"
 | 
			
		||||
      export ZSH_AUTOSUGGEST_STRATEGY="${cfg.strategy}"
 | 
			
		||||
      export ZSH_AUTOSUGGEST_STRATEGY=("${cfg.strategy}")
 | 
			
		||||
 | 
			
		||||
      ${concatStringsSep "\n" (mapAttrsToList (key: value: ''export ${key}="${value}"'') cfg.extraConfig)}
 | 
			
		||||
    '';
 | 
			
		||||
 | 
			
		||||
@ -46,7 +46,7 @@ let
 | 
			
		||||
  # in the same directory as slurm.conf
 | 
			
		||||
  etcSlurm = pkgs.symlinkJoin {
 | 
			
		||||
    name = "etc-slurm";
 | 
			
		||||
    paths = [ configFile cgroupConfig plugStackConfig ];
 | 
			
		||||
    paths = [ configFile cgroupConfig plugStackConfig ] ++ cfg.extraConfigPaths;
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
in
 | 
			
		||||
@ -239,6 +239,17 @@ in
 | 
			
		||||
        '';
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
      extraConfigPaths = mkOption {
 | 
			
		||||
        type = with types; listOf path;
 | 
			
		||||
        default = [];
 | 
			
		||||
        description = ''
 | 
			
		||||
          Slurm expects config files for plugins in the same path
 | 
			
		||||
          as <literal>slurm.conf</literal>. Add extra nix store
 | 
			
		||||
          paths that should be merged into same directory as
 | 
			
		||||
          <literal>slurm.conf</literal>.
 | 
			
		||||
        '';
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
@ -303,6 +314,7 @@ in
 | 
			
		||||
 | 
			
		||||
      serviceConfig = {
 | 
			
		||||
        Type = "forking";
 | 
			
		||||
        KillMode = "process";
 | 
			
		||||
        ExecStart = "${wrappedSlurm}/bin/slurmd";
 | 
			
		||||
        PIDFile = "/run/slurmd.pid";
 | 
			
		||||
        ExecReload = "${pkgs.coreutils}/bin/kill -HUP $MAINPID";
 | 
			
		||||
 | 
			
		||||
@ -54,6 +54,13 @@ in
 | 
			
		||||
        description = "The database directory.";
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
      logLevel = mkOption {
 | 
			
		||||
        type = types.str;
 | 
			
		||||
        default = "0";
 | 
			
		||||
        example = "acl trace";
 | 
			
		||||
        description = "The log level selector of slapd.";
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
      configDir = mkOption {
 | 
			
		||||
        type = types.nullOr types.path;
 | 
			
		||||
        default = null;
 | 
			
		||||
@ -139,7 +146,7 @@ in
 | 
			
		||||
        chown -R "${cfg.user}:${cfg.group}" "${cfg.dataDir}"
 | 
			
		||||
      '';
 | 
			
		||||
      serviceConfig.ExecStart =
 | 
			
		||||
        "${openldap.out}/libexec/slapd -d 0 " +
 | 
			
		||||
        "${openldap.out}/libexec/slapd -d ${cfg.logLevel} " +
 | 
			
		||||
          "-u '${cfg.user}' -g '${cfg.group}' " +
 | 
			
		||||
          "-h '${concatStringsSep " " cfg.urlList}' " +
 | 
			
		||||
          "${configOpts}";
 | 
			
		||||
 | 
			
		||||
@ -49,6 +49,7 @@ in {
 | 
			
		||||
      description = "LIRC daemon socket";
 | 
			
		||||
      wantedBy = [ "sockets.target" ];
 | 
			
		||||
      socketConfig = {
 | 
			
		||||
        # default search path
 | 
			
		||||
        ListenStream = "/run/lirc/lircd";
 | 
			
		||||
        SocketUser = "lirc";
 | 
			
		||||
        SocketMode = "0660";
 | 
			
		||||
@ -66,9 +67,19 @@ in {
 | 
			
		||||
      serviceConfig = {
 | 
			
		||||
        RuntimeDirectory = "lirc";
 | 
			
		||||
 | 
			
		||||
        # socket lives in runtime directory; we have to keep is available
 | 
			
		||||
        # Service runtime directory and socket share same folder.
 | 
			
		||||
        # Following hacks are necessary to get everything right:
 | 
			
		||||
 | 
			
		||||
        # 1. prevent socket deletion during stop and restart
 | 
			
		||||
        RuntimeDirectoryPreserve = true;
 | 
			
		||||
 | 
			
		||||
        # 2. fix runtime folder owner-ship, happens when socket activation
 | 
			
		||||
        #    creates the folder
 | 
			
		||||
        PermissionsStartOnly = true;
 | 
			
		||||
        ExecStartPre = [
 | 
			
		||||
          "${pkgs.coreutils}/bin/chown lirc /run/lirc/"
 | 
			
		||||
        ];
 | 
			
		||||
 | 
			
		||||
        ExecStart = ''
 | 
			
		||||
          ${pkgs.lirc}/bin/lircd --nodaemon \
 | 
			
		||||
            ${escapeShellArgs cfg.extraArguments} \
 | 
			
		||||
 | 
			
		||||
@ -1,36 +0,0 @@
 | 
			
		||||
server-user             nscd
 | 
			
		||||
threads                 1
 | 
			
		||||
paranoia                no
 | 
			
		||||
debug-level             0
 | 
			
		||||
 | 
			
		||||
enable-cache            passwd          yes
 | 
			
		||||
positive-time-to-live   passwd          0
 | 
			
		||||
negative-time-to-live   passwd          0
 | 
			
		||||
suggested-size          passwd          211
 | 
			
		||||
check-files             passwd          yes
 | 
			
		||||
persistent              passwd          no
 | 
			
		||||
shared                  passwd          yes
 | 
			
		||||
 | 
			
		||||
enable-cache            group           yes
 | 
			
		||||
positive-time-to-live   group           0
 | 
			
		||||
negative-time-to-live   group           0
 | 
			
		||||
suggested-size          group           211
 | 
			
		||||
check-files             group           yes
 | 
			
		||||
persistent              group           no
 | 
			
		||||
shared                  group           yes
 | 
			
		||||
 | 
			
		||||
enable-cache            hosts           yes
 | 
			
		||||
positive-time-to-live   hosts           600
 | 
			
		||||
negative-time-to-live   hosts           5
 | 
			
		||||
suggested-size          hosts           211
 | 
			
		||||
check-files             hosts           yes
 | 
			
		||||
persistent              hosts           no
 | 
			
		||||
shared                  hosts           yes
 | 
			
		||||
 | 
			
		||||
enable-cache            services        yes
 | 
			
		||||
positive-time-to-live   services        0
 | 
			
		||||
negative-time-to-live   services        0
 | 
			
		||||
suggested-size          services        211
 | 
			
		||||
check-files             services        yes
 | 
			
		||||
persistent              services        no
 | 
			
		||||
shared                  services        yes
 | 
			
		||||
@ -75,7 +75,6 @@ in {
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
      system.nssModules = optional cfg.enable pkgs.sssd;
 | 
			
		||||
      services.nscd.config = builtins.readFile ./nscd-sssd.conf;
 | 
			
		||||
      services.dbus.packages = [ pkgs.sssd ];
 | 
			
		||||
    })
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -169,8 +169,9 @@ in {
 | 
			
		||||
          Sets the maximum amount of time (in seconds) a connection may be reused.
 | 
			
		||||
          For MySQL this setting should be shorter than the `wait_timeout' variable.
 | 
			
		||||
        '';
 | 
			
		||||
        default = 14400;
 | 
			
		||||
        type = types.int;
 | 
			
		||||
        default = "unlimited";
 | 
			
		||||
        example = 14400;
 | 
			
		||||
        type = types.either types.int (types.enum [ "unlimited" ]);
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -488,7 +488,7 @@ in {
 | 
			
		||||
      '') cfg.dynamicHosts.hostsDirs);
 | 
			
		||||
      serviceConfig = {
 | 
			
		||||
        Type = "oneshot";
 | 
			
		||||
        RemainAfterExist = true;
 | 
			
		||||
        RemainAfterExit = true;
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -1,28 +1,52 @@
 | 
			
		||||
# We basically use nscd as a proxy for forwarding nss requests to appropriate
 | 
			
		||||
# nss modules, as we run nscd with LD_LIBRARY_PATH set to the directory
 | 
			
		||||
# containing all such modules
 | 
			
		||||
# Note that we can not use `enable-cache no` As this will actually cause nscd
 | 
			
		||||
# to just reject the nss requests it receives, which then causes glibc to
 | 
			
		||||
# fallback to trying to handle the request by itself. Which won't work as glibc
 | 
			
		||||
# is not aware of the path in which the nss modules live.  As a workaround, we
 | 
			
		||||
# have `enable-cache yes` with an explicit ttl of 0
 | 
			
		||||
server-user             nscd
 | 
			
		||||
threads                 1
 | 
			
		||||
paranoia                no
 | 
			
		||||
debug-level             0
 | 
			
		||||
 | 
			
		||||
enable-cache            passwd          yes
 | 
			
		||||
positive-time-to-live   passwd          600
 | 
			
		||||
negative-time-to-live   passwd          20
 | 
			
		||||
positive-time-to-live   passwd          0
 | 
			
		||||
negative-time-to-live   passwd          0
 | 
			
		||||
suggested-size          passwd          211
 | 
			
		||||
check-files             passwd          yes
 | 
			
		||||
persistent              passwd          no
 | 
			
		||||
shared                  passwd          yes
 | 
			
		||||
 | 
			
		||||
enable-cache            group           yes
 | 
			
		||||
positive-time-to-live   group           3600
 | 
			
		||||
negative-time-to-live   group           60
 | 
			
		||||
positive-time-to-live   group           0
 | 
			
		||||
negative-time-to-live   group           0
 | 
			
		||||
suggested-size          group           211
 | 
			
		||||
check-files             group           yes
 | 
			
		||||
persistent              group           no
 | 
			
		||||
shared                  group           yes
 | 
			
		||||
 | 
			
		||||
enable-cache            netgroup        yes
 | 
			
		||||
positive-time-to-live   netgroup        0
 | 
			
		||||
negative-time-to-live   netgroup        0
 | 
			
		||||
suggested-size          netgroup        211
 | 
			
		||||
check-files             netgroup        yes
 | 
			
		||||
persistent              netgroup        no
 | 
			
		||||
shared                  netgroup        yes
 | 
			
		||||
 | 
			
		||||
enable-cache            hosts           yes
 | 
			
		||||
positive-time-to-live   hosts           600
 | 
			
		||||
negative-time-to-live   hosts           5
 | 
			
		||||
negative-time-to-live   hosts           0
 | 
			
		||||
suggested-size          hosts           211
 | 
			
		||||
check-files             hosts           yes
 | 
			
		||||
persistent              hosts           no
 | 
			
		||||
shared                  hosts           yes
 | 
			
		||||
 | 
			
		||||
enable-cache            services        yes
 | 
			
		||||
positive-time-to-live   services        0
 | 
			
		||||
negative-time-to-live   services        0
 | 
			
		||||
suggested-size          services        211
 | 
			
		||||
check-files             services        yes
 | 
			
		||||
persistent              services        no
 | 
			
		||||
shared                  services        yes
 | 
			
		||||
 | 
			
		||||
@ -484,4 +484,6 @@ in {
 | 
			
		||||
      };
 | 
			
		||||
    })
 | 
			
		||||
  ]);
 | 
			
		||||
 | 
			
		||||
  meta.doc = ./nextcloud.xml;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										99
									
								
								nixos/modules/services/web-apps/nextcloud.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										99
									
								
								nixos/modules/services/web-apps/nextcloud.xml
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,99 @@
 | 
			
		||||
<chapter xmlns="http://docbook.org/ns/docbook"
 | 
			
		||||
         xmlns:xlink="http://www.w3.org/1999/xlink"
 | 
			
		||||
         xmlns:xi="http://www.w3.org/2001/XInclude"
 | 
			
		||||
         version="5.0"
 | 
			
		||||
         xml:id="module-services-nextcloud">
 | 
			
		||||
 <title>Nextcloud</title>
 | 
			
		||||
 | 
			
		||||
 <para>
 | 
			
		||||
  <link xlink:href="https://nextcloud.com/">Nextcloud</link> is an open-source, self-hostable cloud
 | 
			
		||||
  platform. The server setup can be automated using
 | 
			
		||||
  <link linkend="opt-services.nextcloud.enable">services.nextcloud</link>. A desktop client is packaged
 | 
			
		||||
  at <literal>pkgs.nextcloud-client</literal>.
 | 
			
		||||
 </para>
 | 
			
		||||
 | 
			
		||||
 <section xml:id="module-services-nextcloud-basic-usage">
 | 
			
		||||
  <title>Basic usage</title>
 | 
			
		||||
  <para>
 | 
			
		||||
   Nextcloud is a PHP-based application which requires an HTTP server
 | 
			
		||||
   (<literal><link linkend="opt-services.nextcloud.enable">services.nextcloud</link></literal> optionally supports
 | 
			
		||||
   <literal><link linkend="opt-services.nginx.enable">services.nginx</link></literal>) and a database
 | 
			
		||||
   (it's recommended to use <literal><link linkend="opt-services.postgresql.enable">services.postgresql</link></literal>).
 | 
			
		||||
  </para>
 | 
			
		||||
  <para>
 | 
			
		||||
    A very basic configuration may look like this:
 | 
			
		||||
<programlisting>{ pkgs, ... }:
 | 
			
		||||
{
 | 
			
		||||
  services.nextcloud = {
 | 
			
		||||
    <link linkend="opt-services.nextcloud.enable">enable</link> = true;
 | 
			
		||||
    <link linkend="opt-services.nextcloud.hostName">hostName</link> = "nextcloud.tld";
 | 
			
		||||
    <link linkend="opt-services.nextcloud.nginx.enable">nginx.enable</link> = true;
 | 
			
		||||
    config = {
 | 
			
		||||
      <link linkend="opt-services.nextcloud.config.dbtype">dbtype</link> = "pgsql";
 | 
			
		||||
      <link linkend="opt-services.nextcloud.config.dbuser">dbuser</link> = "nextcloud";
 | 
			
		||||
      <link linkend="opt-services.nextcloud.config.dbhost">dbhost</link> = "/tmp"; # nextcloud will add /.s.PGSQL.5432 by itself
 | 
			
		||||
      <link linkend="opt-services.nextcloud.config.dbname">dbname</link> = "nextcloud";
 | 
			
		||||
      <link linkend="opt-services.nextcloud.config.adminpassFile">adminpassFile</link> = "/path/to/admin-pass-file";
 | 
			
		||||
      <link linkend="opt-services.nextcloud.config.adminuser">adminuser</link> = "root";
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  services.postgresql = {
 | 
			
		||||
    <link linkend="opt-services.postgresql.enable">enable</link> = true;
 | 
			
		||||
    <link linkend="opt-services.postgresql.initialScript">initialScript</link> = pkgs.writeText "psql-init" ''
 | 
			
		||||
      CREATE ROLE nextcloud WITH LOGIN;
 | 
			
		||||
      CREATE DATABASE nextcloud WITH OWNER nextcloud;
 | 
			
		||||
    '';
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  # ensure that postgres is running *before* running the setup
 | 
			
		||||
  systemd.services."nextcloud-setup" = {
 | 
			
		||||
    requires = ["postgresql.service"];
 | 
			
		||||
    after = ["postgresql.service"];
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  <link linkend="opt-networking.firewall.allowedTCPPorts">networking.firewall.allowedTCPPorts</link> = [ 80 443 ];
 | 
			
		||||
}</programlisting>
 | 
			
		||||
  </para>
 | 
			
		||||
  <para>
 | 
			
		||||
   The options <literal>hostName</literal> and <literal>nginx.enable</literal> are used internally to configure an
 | 
			
		||||
   HTTP server using <literal><link xlink:href="https://php-fpm.org/">PHP-FPM</link></literal> and <literal>nginx</literal>.
 | 
			
		||||
   The <literal>config</literal> attribute set is used for the <literal>config.php</literal> which is used
 | 
			
		||||
   for the application's configuration.
 | 
			
		||||
   <emphasis>Beware: this isn't entirely pure since the config is modified by the application's runtime!</emphasis>
 | 
			
		||||
  </para>
 | 
			
		||||
  <para>
 | 
			
		||||
    In case the application serves multiple hosts (those are checked with
 | 
			
		||||
    <literal><link xlink:href="http://php.net/manual/en/reserved.variables.server.php">$_SERVER['HTTP_HOST']</link></literal>)
 | 
			
		||||
    those can be added using
 | 
			
		||||
    <literal><link linkend="opt-services.nextcloud.config.extraTrustedDomains">services.nextcloud.config.extraTrustedDomains</link></literal>.
 | 
			
		||||
  </para>
 | 
			
		||||
 </section>
 | 
			
		||||
 | 
			
		||||
 <section xml:id="module-services-nextcloud-pitfalls-during-upgrade">
 | 
			
		||||
  <title>Pitfalls</title>
 | 
			
		||||
  <para>
 | 
			
		||||
   Unfortunately Nextcloud appears to be very stateful when it comes to managing its own configuration. The
 | 
			
		||||
   config file lives in the home directory of the <literal>nextcloud</literal> user (by default
 | 
			
		||||
   <literal>/var/lib/nextcloud/config/config.php</literal>) and is also used to track several
 | 
			
		||||
   states of the application (e.g. whether installed or not).
 | 
			
		||||
  </para>
 | 
			
		||||
  <para>
 | 
			
		||||
   Right now changes to the <literal>services.nextcloud.config</literal> attribute set won't take effect
 | 
			
		||||
   after the first install
 | 
			
		||||
   (except <literal><link linkend="opt-services.nextcloud.config.extraTrustedDomains">services.nextcloud.config.extraTrustedDomains</link></literal>) since the actual configuration
 | 
			
		||||
   file is generated by the NextCloud installer which also sets up critical parts such as the database
 | 
			
		||||
   structure.
 | 
			
		||||
  </para>
 | 
			
		||||
  <para>
 | 
			
		||||
   <emphasis>Warning: don't delete <literal>config.php</literal>! This file tracks the application's state and a deletion can cause unwanted side-effects!</emphasis>
 | 
			
		||||
  </para>
 | 
			
		||||
  <para>
 | 
			
		||||
   <emphasis>Warning: don't rerun <literal>nextcloud-occ maintenance:install</literal>! This command tries to install the application and can cause unwanted side-effects!</emphasis>
 | 
			
		||||
  </para>
 | 
			
		||||
  <para>
 | 
			
		||||
    The issues are known and reported in <link xlink:href="https://github.com/NixOS/nixpkgs/issues/49783">#49783</link>, for now it's unfortunately necessary to manually work around these issues.
 | 
			
		||||
  </para>
 | 
			
		||||
 </section>
 | 
			
		||||
 | 
			
		||||
</chapter>
 | 
			
		||||
@ -1,101 +0,0 @@
 | 
			
		||||
{ config, lib, pkgs, ... }:
 | 
			
		||||
 | 
			
		||||
with lib;
 | 
			
		||||
 | 
			
		||||
let
 | 
			
		||||
  cfg = config.services.quassel-webserver;
 | 
			
		||||
  quassel-webserver = cfg.pkg;
 | 
			
		||||
  settings = ''
 | 
			
		||||
    module.exports = {
 | 
			
		||||
      default: {
 | 
			
		||||
        host: '${cfg.quasselCoreHost}',  // quasselcore host
 | 
			
		||||
        port: ${toString cfg.quasselCorePort},  // quasselcore port
 | 
			
		||||
        initialBacklogLimit: ${toString cfg.initialBacklogLimit},  // Amount of backlogs to fetch per buffer on connection
 | 
			
		||||
        backlogLimit: ${toString cfg.backlogLimit},  // Amount of backlogs to fetch per buffer after first retrieval
 | 
			
		||||
        securecore: ${boolToString cfg.secureCore},  // Connect to the core using SSL
 | 
			
		||||
        theme: '${cfg.theme}'  // Default UI theme
 | 
			
		||||
      },
 | 
			
		||||
      themes: ['default', 'darksolarized'],  //  Available themes
 | 
			
		||||
      forcedefault: ${boolToString cfg.forceHostAndPort},  // Will force default host and port to be used, and will hide the corresponding fields in the UI
 | 
			
		||||
      prefixpath: '${cfg.prefixPath}'  // Configure this if you use a reverse proxy
 | 
			
		||||
    };
 | 
			
		||||
  '';
 | 
			
		||||
  settingsFile = pkgs.writeText "settings-user.js" settings;
 | 
			
		||||
in {
 | 
			
		||||
  options = {
 | 
			
		||||
    services.quassel-webserver = {
 | 
			
		||||
      enable = mkOption {
 | 
			
		||||
        default = false;
 | 
			
		||||
        type = types.bool;
 | 
			
		||||
        description = "Whether to enable the quassel webclient service";
 | 
			
		||||
      };
 | 
			
		||||
      pkg = mkOption {
 | 
			
		||||
        default = pkgs.quassel-webserver;
 | 
			
		||||
        defaultText = "pkgs.quassel-webserver";
 | 
			
		||||
        type = types.package;
 | 
			
		||||
        description = "The quassel-webserver package";
 | 
			
		||||
      };
 | 
			
		||||
      quasselCoreHost = mkOption {
 | 
			
		||||
        default = "";
 | 
			
		||||
        type = types.str;
 | 
			
		||||
        description = "The default host of the quassel core";
 | 
			
		||||
      };
 | 
			
		||||
      quasselCorePort = mkOption {
 | 
			
		||||
        default = 4242;
 | 
			
		||||
        type = types.int;
 | 
			
		||||
        description = "The default quassel core port";
 | 
			
		||||
      };
 | 
			
		||||
      initialBacklogLimit = mkOption {
 | 
			
		||||
        default = 20;
 | 
			
		||||
        type = types.int;
 | 
			
		||||
        description = "Amount of backlogs to fetch per buffer on connection";
 | 
			
		||||
      };
 | 
			
		||||
      backlogLimit = mkOption {
 | 
			
		||||
        default = 100;
 | 
			
		||||
        type = types.int;
 | 
			
		||||
        description = "Amount of backlogs to fetch per buffer after first retrieval";
 | 
			
		||||
      };
 | 
			
		||||
      secureCore = mkOption {
 | 
			
		||||
        default = true;
 | 
			
		||||
        type = types.bool;
 | 
			
		||||
        description = "Connect to the core using SSL";
 | 
			
		||||
      };
 | 
			
		||||
      theme = mkOption {
 | 
			
		||||
        default = "default";
 | 
			
		||||
        type = types.str;
 | 
			
		||||
        description = "default or darksolarized";
 | 
			
		||||
      };
 | 
			
		||||
      prefixPath = mkOption {
 | 
			
		||||
        default = "";
 | 
			
		||||
        type = types.str;
 | 
			
		||||
        description = "Configure this if you use a reverse proxy. Must start with a '/'";
 | 
			
		||||
        example = "/quassel";
 | 
			
		||||
      };
 | 
			
		||||
      port = mkOption {
 | 
			
		||||
        default = 60443;
 | 
			
		||||
        type = types.int;
 | 
			
		||||
        description = "The port the quassel webserver should listen on";
 | 
			
		||||
      };
 | 
			
		||||
      useHttps = mkOption {
 | 
			
		||||
        default = true;
 | 
			
		||||
        type = types.bool;
 | 
			
		||||
        description = "Whether the quassel webserver connection should be a https connection";
 | 
			
		||||
      };
 | 
			
		||||
      forceHostAndPort = mkOption {
 | 
			
		||||
        default = false;
 | 
			
		||||
        type = types.bool;
 | 
			
		||||
        description = "Force the users to use the quasselCoreHost and quasselCorePort defaults";
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  config = mkIf cfg.enable {
 | 
			
		||||
    systemd.services.quassel-webserver = {
 | 
			
		||||
      description = "A web server/client for Quassel";
 | 
			
		||||
      wantedBy = [ "multi-user.target" ];
 | 
			
		||||
      serviceConfig = {
 | 
			
		||||
        ExecStart = "${quassel-webserver}/lib/node_modules/quassel-webserver/bin/www -p ${toString cfg.port} -m ${if cfg.useHttps == true then "https" else "http"} -c ${settingsFile}";
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
@ -85,7 +85,7 @@ in rec {
 | 
			
		||||
    id = mkOption {
 | 
			
		||||
      default = "main";
 | 
			
		||||
      description = ''
 | 
			
		||||
        A unique identifier necessary to keep multiple owncloud server
 | 
			
		||||
        A unique identifier necessary to keep multiple Limesurvey server
 | 
			
		||||
        instances on the same machine apart.  This is used to
 | 
			
		||||
        disambiguate the administrative scripts, which get names like
 | 
			
		||||
        mediawiki-$id-change-password.
 | 
			
		||||
 | 
			
		||||
@ -1,608 +0,0 @@
 | 
			
		||||
{ config, lib, pkgs, serverInfo, php, ... }:
 | 
			
		||||
 | 
			
		||||
with lib;
 | 
			
		||||
 | 
			
		||||
let
 | 
			
		||||
 | 
			
		||||
  owncloudConfig = pkgs.writeText "config.php"
 | 
			
		||||
    ''
 | 
			
		||||
      <?php
 | 
			
		||||
 | 
			
		||||
      /* Only enable this for local development and not in productive environments */
 | 
			
		||||
      /* This will disable the minifier and outputs some additional debug informations */
 | 
			
		||||
      define("DEBUG", false);
 | 
			
		||||
 | 
			
		||||
      $CONFIG = array(
 | 
			
		||||
      /* Flag to indicate ownCloud is successfully installed (true = installed) */
 | 
			
		||||
      "installed" => true,
 | 
			
		||||
 | 
			
		||||
      /* Type of database, can be sqlite, mysql or pgsql */
 | 
			
		||||
      "dbtype" => "${config.dbType}",
 | 
			
		||||
 | 
			
		||||
      /* Name of the ownCloud database */
 | 
			
		||||
      "dbname" => "${config.dbName}",
 | 
			
		||||
 | 
			
		||||
      /* User to access the ownCloud database */
 | 
			
		||||
      "dbuser" => "${config.dbUser}",
 | 
			
		||||
 | 
			
		||||
      /* Password to access the ownCloud database */
 | 
			
		||||
      "dbpassword" => "${config.dbPassword}",
 | 
			
		||||
 | 
			
		||||
      /* Host running the ownCloud database. To specify a port use "HOSTNAME:####"; to specify a unix sockets use "localhost:/path/to/socket". */
 | 
			
		||||
      "dbhost" => "${config.dbServer}",
 | 
			
		||||
 | 
			
		||||
      /* Prefix for the ownCloud tables in the database */
 | 
			
		||||
      "dbtableprefix" => "",
 | 
			
		||||
 | 
			
		||||
      /* Force use of HTTPS connection (true = use HTTPS) */
 | 
			
		||||
      "forcessl" => ${config.forceSSL},
 | 
			
		||||
 | 
			
		||||
      /* Blacklist a specific file and disallow the upload of files with this name - WARNING: USE THIS ONLY IF YOU KNOW WHAT YOU ARE DOING. */
 | 
			
		||||
      "blacklisted_files" => array('.htaccess'),
 | 
			
		||||
 | 
			
		||||
      /* The automatic hostname detection of ownCloud can fail in certain reverse proxy and CLI/cron situations. This option allows to manually override the automatic detection. You can also add a port. For example "www.example.com:88" */
 | 
			
		||||
      "overwritehost" => "${config.overwriteHost}",
 | 
			
		||||
 | 
			
		||||
      /* The automatic protocol detection of ownCloud can fail in certain reverse proxy and CLI/cron situations. This option allows to manually override the protocol detection. For example "https" */
 | 
			
		||||
      "overwriteprotocol" => "${config.overwriteProtocol}",
 | 
			
		||||
 | 
			
		||||
      /* The automatic webroot detection of ownCloud can fail in certain reverse proxy and CLI/cron situations. This option allows to manually override the automatic detection. For example "/domain.tld/ownCloud". The value "/" can be used to remove the root. */
 | 
			
		||||
      "overwritewebroot" => "${config.overwriteWebRoot}",
 | 
			
		||||
 | 
			
		||||
      /* The automatic detection of ownCloud can fail in certain reverse proxy and CLI/cron situations. This option allows to define a manually override condition as regular expression for the remote ip address. For example "^10\.0\.0\.[1-3]$" */
 | 
			
		||||
      "overwritecondaddr" => "",
 | 
			
		||||
 | 
			
		||||
      /* A proxy to use to connect to the internet. For example "myproxy.org:88" */
 | 
			
		||||
      "proxy" => "",
 | 
			
		||||
 | 
			
		||||
      /* The optional authentication for the proxy to use to connect to the internet. The format is: [username]:[password] */
 | 
			
		||||
      "proxyuserpwd" => "",
 | 
			
		||||
 | 
			
		||||
      /* List of trusted domains, to prevent host header poisoning ownCloud is only using these Host headers */
 | 
			
		||||
      ${if config.trustedDomain != "" then "'trusted_domains' => array('${config.trustedDomain}')," else ""}
 | 
			
		||||
 | 
			
		||||
      /* Theme to use for ownCloud */
 | 
			
		||||
      "theme" => "",
 | 
			
		||||
 | 
			
		||||
      /* Optional ownCloud default language - overrides automatic language detection on public pages like login or shared items. This has no effect on the user's language preference configured under "personal -> language" once they have logged in */
 | 
			
		||||
      "default_language" => "${config.defaultLang}",
 | 
			
		||||
 | 
			
		||||
      /* Path to the parent directory of the 3rdparty directory */
 | 
			
		||||
      "3rdpartyroot" => "",
 | 
			
		||||
 | 
			
		||||
      /* URL to the parent directory of the 3rdparty directory, as seen by the browser */
 | 
			
		||||
      "3rdpartyurl" => "",
 | 
			
		||||
 | 
			
		||||
      /* Default app to open on login.
 | 
			
		||||
       * This can be a comma-separated list of app ids.
 | 
			
		||||
       * If the first app is not enabled for the current user,
 | 
			
		||||
       * it will try with the second one and so on. If no enabled app could be found,
 | 
			
		||||
       * the "files" app will be displayed instead. */
 | 
			
		||||
      "defaultapp" => "${config.defaultApp}",
 | 
			
		||||
 | 
			
		||||
      /* Enable the help menu item in the settings */
 | 
			
		||||
      "knowledgebaseenabled" => true,
 | 
			
		||||
 | 
			
		||||
      /* Enable installing apps from the appstore */
 | 
			
		||||
      "appstoreenabled" => ${config.appStoreEnable},
 | 
			
		||||
 | 
			
		||||
      /* URL of the appstore to use, server should understand OCS */
 | 
			
		||||
      "appstoreurl" => "https://api.owncloud.com/v1",
 | 
			
		||||
 | 
			
		||||
      /* Domain name used by ownCloud for the sender mail address, e.g. no-reply@example.com */
 | 
			
		||||
      "mail_domain" => "${config.mailFromDomain}",
 | 
			
		||||
 | 
			
		||||
      /* FROM address used by ownCloud for the sender mail address, e.g. owncloud@example.com
 | 
			
		||||
         This setting overwrites the built in 'sharing-noreply' and 'lostpassword-noreply'
 | 
			
		||||
         FROM addresses, that ownCloud uses
 | 
			
		||||
      */
 | 
			
		||||
      "mail_from_address" => "${config.mailFrom}",
 | 
			
		||||
 | 
			
		||||
      /* Enable SMTP class debugging */
 | 
			
		||||
      "mail_smtpdebug" => false,
 | 
			
		||||
 | 
			
		||||
      /* Mode to use for sending mail, can be sendmail, smtp, qmail or php, see PHPMailer docs */
 | 
			
		||||
      "mail_smtpmode" => "${config.SMTPMode}",
 | 
			
		||||
 | 
			
		||||
      /* Host to use for sending mail, depends on mail_smtpmode if this is used */
 | 
			
		||||
      "mail_smtphost" => "${config.SMTPHost}",
 | 
			
		||||
 | 
			
		||||
      /* Port to use for sending mail, depends on mail_smtpmode if this is used */
 | 
			
		||||
      "mail_smtpport" => ${config.SMTPPort},
 | 
			
		||||
 | 
			
		||||
      /* SMTP server timeout in seconds for sending mail, depends on mail_smtpmode if this is used */
 | 
			
		||||
      "mail_smtptimeout" => ${config.SMTPTimeout},
 | 
			
		||||
 | 
			
		||||
      /* SMTP connection prefix or sending mail, depends on mail_smtpmode if this is used.
 | 
			
		||||
         Can be "", ssl or tls */
 | 
			
		||||
      "mail_smtpsecure" => "${config.SMTPSecure}",
 | 
			
		||||
 | 
			
		||||
      /* authentication needed to send mail, depends on mail_smtpmode if this is used
 | 
			
		||||
       * (false = disable authentication)
 | 
			
		||||
       */
 | 
			
		||||
      "mail_smtpauth" => ${config.SMTPAuth},
 | 
			
		||||
 | 
			
		||||
      /* authentication type needed to send mail, depends on mail_smtpmode if this is used
 | 
			
		||||
       * Can be LOGIN (default), PLAIN or NTLM */
 | 
			
		||||
      "mail_smtpauthtype" => "${config.SMTPAuthType}",
 | 
			
		||||
 | 
			
		||||
      /* Username to use for sendmail mail, depends on mail_smtpauth if this is used */
 | 
			
		||||
      "mail_smtpname" => "${config.SMTPUser}",
 | 
			
		||||
 | 
			
		||||
      /* Password to use for sendmail mail, depends on mail_smtpauth if this is used */
 | 
			
		||||
      "mail_smtppassword" => "${config.SMTPPass}",
 | 
			
		||||
 | 
			
		||||
      /* memcached servers (Only used when xCache, APC and APCu are absent.) */
 | 
			
		||||
      "memcached_servers" => array(
 | 
			
		||||
          // hostname, port and optional weight. Also see:
 | 
			
		||||
          // http://www.php.net/manual/en/memcached.addservers.php
 | 
			
		||||
          // http://www.php.net/manual/en/memcached.addserver.php
 | 
			
		||||
          //array('localhost', 11211),
 | 
			
		||||
          //array('other.host.local', 11211),
 | 
			
		||||
      ),
 | 
			
		||||
 | 
			
		||||
      /* How long should ownCloud keep deleted files in the trash bin, default value:  30 days */
 | 
			
		||||
      'trashbin_retention_obligation' => 30,
 | 
			
		||||
 | 
			
		||||
      /* Disable/Enable auto expire for the trash bin, by default auto expire is enabled */
 | 
			
		||||
      'trashbin_auto_expire' => true,
 | 
			
		||||
 | 
			
		||||
      /* allow user to change his display name, if it is supported by the back-end */
 | 
			
		||||
      'allow_user_to_change_display_name' => true,
 | 
			
		||||
 | 
			
		||||
      /* Check 3rdparty apps for malicious code fragments */
 | 
			
		||||
      "appcodechecker" => true,
 | 
			
		||||
 | 
			
		||||
      /* Check if ownCloud is up to date */
 | 
			
		||||
      "updatechecker" => true,
 | 
			
		||||
 | 
			
		||||
      /* Are we connected to the internet or are we running in a closed network? */
 | 
			
		||||
      "has_internet_connection" => true,
 | 
			
		||||
 | 
			
		||||
      /* Check if the ownCloud WebDAV server is working correctly. Can be disabled if not needed in special situations*/
 | 
			
		||||
      "check_for_working_webdav" => true,
 | 
			
		||||
 | 
			
		||||
      /* Check if .htaccess protection of data is working correctly. Can be disabled if not needed in special situations*/
 | 
			
		||||
      "check_for_working_htaccess" => true,
 | 
			
		||||
 | 
			
		||||
      /* Place to log to, can be owncloud and syslog (owncloud is log menu item in admin menu) */
 | 
			
		||||
      "log_type" => "owncloud",
 | 
			
		||||
 | 
			
		||||
      /* File for the owncloud logger to log to, (default is ownloud.log in the data dir) */
 | 
			
		||||
      "logfile" => "${config.dataDir}/owncloud.log",
 | 
			
		||||
 | 
			
		||||
      /* Loglevel to start logging at. 0=DEBUG, 1=INFO, 2=WARN, 3=ERROR (default is WARN) */
 | 
			
		||||
      "loglevel" => "2",
 | 
			
		||||
 | 
			
		||||
      /* date format to be used while writing to the owncloud logfile */
 | 
			
		||||
      'logdateformat' => 'F d, Y H:i:s',
 | 
			
		||||
 | 
			
		||||
      ${tzSetting}
 | 
			
		||||
 | 
			
		||||
      /* Append all database queries and parameters to the log file.
 | 
			
		||||
       (watch out, this option can increase the size of your log file)*/
 | 
			
		||||
      "log_query" => false,
 | 
			
		||||
 | 
			
		||||
      /* Whether ownCloud should log the last successfull cron exec */
 | 
			
		||||
      "cron_log" => true,
 | 
			
		||||
 | 
			
		||||
      /*
 | 
			
		||||
       * Configure the size in bytes log rotation should happen, 0 or false disables the rotation.
 | 
			
		||||
       * This rotates the current owncloud logfile to a new name, this way the total log usage
 | 
			
		||||
       * will stay limited and older entries are available for a while longer. The
 | 
			
		||||
       * total disk usage is twice the configured size.
 | 
			
		||||
       * WARNING: When you use this, the log entries will eventually be lost.
 | 
			
		||||
       */
 | 
			
		||||
      'log_rotate_size' => "104857600", // 104857600, // 100 MiB
 | 
			
		||||
 | 
			
		||||
      /* Lifetime of the remember login cookie, default is 15 days */
 | 
			
		||||
      "remember_login_cookie_lifetime" => 1296000,
 | 
			
		||||
 | 
			
		||||
      /* Life time of a session after inactivity */
 | 
			
		||||
      "session_lifetime" => 86400,
 | 
			
		||||
 | 
			
		||||
      /*
 | 
			
		||||
       * Enable/disable session keep alive when a user is logged in in the Web UI.
 | 
			
		||||
       * This is achieved by sending a "heartbeat" to the server to prevent
 | 
			
		||||
       * the session timing out.
 | 
			
		||||
       */
 | 
			
		||||
      "session_keepalive" => true,
 | 
			
		||||
 | 
			
		||||
      /* Custom CSP policy, changing this will overwrite the standard policy */
 | 
			
		||||
      "custom_csp_policy" => "default-src 'self'; script-src 'self' 'unsafe-eval'; style-src 'self' 'unsafe-inline'; frame-src *; img-src *; font-src 'self' data:; media-src *",
 | 
			
		||||
 | 
			
		||||
      /* Enable/disable X-Frame-Restriction */
 | 
			
		||||
      /* HIGH SECURITY RISK IF DISABLED*/
 | 
			
		||||
      "xframe_restriction" => true,
 | 
			
		||||
 | 
			
		||||
      /* The directory where the user data is stored, default to data in the owncloud
 | 
			
		||||
       * directory. The sqlite database is also stored here, when sqlite is used.
 | 
			
		||||
       */
 | 
			
		||||
      "datadirectory" => "${config.dataDir}/storage",
 | 
			
		||||
 | 
			
		||||
      /* The directory where the skeleton files are located. These files will be copied to the data
 | 
			
		||||
       * directory of new users. Leave empty to not copy any skeleton files.
 | 
			
		||||
       */
 | 
			
		||||
      // "skeletondirectory" => "",
 | 
			
		||||
 | 
			
		||||
      /* Enable maintenance mode to disable ownCloud
 | 
			
		||||
         If you want to prevent users to login to ownCloud before you start doing some maintenance work,
 | 
			
		||||
         you need to set the value of the maintenance parameter to true.
 | 
			
		||||
         Please keep in mind that users who are already logged-in are kicked out of ownCloud instantly.
 | 
			
		||||
      */
 | 
			
		||||
      "maintenance" => false,
 | 
			
		||||
 | 
			
		||||
      "apps_paths" => array(
 | 
			
		||||
 | 
			
		||||
      /* Set an array of path for your apps directories
 | 
			
		||||
       key 'path' is for the fs path and the key 'url' is for the http path to your
 | 
			
		||||
       applications paths. 'writable' indicates whether the user can install apps in this folder.
 | 
			
		||||
       You must have at least 1 app folder writable or you must set the parameter 'appstoreenabled' to false
 | 
			
		||||
      */
 | 
			
		||||
          array(
 | 
			
		||||
              'path'=> '${config.dataDir}/apps',
 | 
			
		||||
              'url' => '/apps',
 | 
			
		||||
              'writable' => true,
 | 
			
		||||
          ),
 | 
			
		||||
      ),
 | 
			
		||||
      'user_backends'=>array(
 | 
			
		||||
          /*
 | 
			
		||||
          array(
 | 
			
		||||
              'class'=>'OC_User_IMAP',
 | 
			
		||||
              'arguments'=>array('{imap.gmail.com:993/imap/ssl}INBOX')
 | 
			
		||||
          )
 | 
			
		||||
          */
 | 
			
		||||
      ),
 | 
			
		||||
      //links to custom clients
 | 
			
		||||
      'customclient_desktop' => ''', //http://owncloud.org/sync-clients/
 | 
			
		||||
      'customclient_android' => ''', //https://play.google.com/store/apps/details?id=com.owncloud.android
 | 
			
		||||
      'customclient_ios' => ''', //https://itunes.apple.com/us/app/owncloud/id543672169?mt=8
 | 
			
		||||
 | 
			
		||||
      // PREVIEW
 | 
			
		||||
      'enable_previews' => true,
 | 
			
		||||
      /* the max width of a generated preview, if value is null, there is no limit */
 | 
			
		||||
      'preview_max_x' => null,
 | 
			
		||||
      /* the max height of a generated preview, if value is null, there is no limit */
 | 
			
		||||
      'preview_max_y' => null,
 | 
			
		||||
      /* the max factor to scale a preview, default is set to 10 */
 | 
			
		||||
      'preview_max_scale_factor' => 10,
 | 
			
		||||
      /* custom path for libreoffice / openoffice binary */
 | 
			
		||||
      'preview_libreoffice_path' => '${config.libreofficePath}',
 | 
			
		||||
      /* cl parameters for libreoffice / openoffice */
 | 
			
		||||
      'preview_office_cl_parameters' => ''',
 | 
			
		||||
 | 
			
		||||
      /* whether avatars should be enabled */
 | 
			
		||||
      'enable_avatars' => true,
 | 
			
		||||
 | 
			
		||||
      // Extra SSL options to be used for configuration
 | 
			
		||||
      'openssl' => array(
 | 
			
		||||
          'config' => '/etc/ssl/openssl.cnf',
 | 
			
		||||
      ),
 | 
			
		||||
 | 
			
		||||
      // default cipher used for file encryption, currently we support AES-128-CFB and AES-256-CFB
 | 
			
		||||
      'cipher' => 'AES-256-CFB',
 | 
			
		||||
 | 
			
		||||
      /* whether usage of the instance should be restricted to admin users only */
 | 
			
		||||
      'singleuser' => false,
 | 
			
		||||
 | 
			
		||||
      /* all css and js files will be served by the web server statically in one js file and ons css file*/
 | 
			
		||||
      'asset-pipeline.enabled' => false,
 | 
			
		||||
 | 
			
		||||
      /* where mount.json file should be stored, defaults to data/mount.json */
 | 
			
		||||
      'mount_file' => ''',
 | 
			
		||||
 | 
			
		||||
      /*
 | 
			
		||||
       * Location of the cache folder, defaults to "data/$user/cache" where "$user" is the current user.
 | 
			
		||||
       *
 | 
			
		||||
       * When specified, the format will change to "$cache_path/$user" where "$cache_path" is the configured
 | 
			
		||||
       * cache directory and "$user" is the user.
 | 
			
		||||
       *
 | 
			
		||||
       */
 | 
			
		||||
      'cache_path' => ''',
 | 
			
		||||
 | 
			
		||||
      /* EXPERIMENTAL: option whether to include external storage in quota calculation, defaults to false */
 | 
			
		||||
      'quota_include_external_storage' => false,
 | 
			
		||||
 | 
			
		||||
      /*
 | 
			
		||||
       * specifies how often the filesystem is checked for changes made outside owncloud
 | 
			
		||||
       * 0 -> never check the filesystem for outside changes, provides a performance increase when it's certain that no changes are made directly to the filesystem
 | 
			
		||||
       * 1 -> check each file or folder at most once per request, recomended for general use if outside changes might happen
 | 
			
		||||
       * 2 -> check every time the filesystem is used, causes a performance hit when using external storages, not recomended for regular use
 | 
			
		||||
       */
 | 
			
		||||
      'filesystem_check_changes' => 1,
 | 
			
		||||
 | 
			
		||||
      /* If true, prevent owncloud from changing the cache due to changes in the filesystem for all storage */
 | 
			
		||||
      'filesystem_cache_readonly' => false,
 | 
			
		||||
 | 
			
		||||
      /**
 | 
			
		||||
       * define default folder for shared files and folders
 | 
			
		||||
       */
 | 
			
		||||
      'share_folder' => '/',
 | 
			
		||||
 | 
			
		||||
      'version' => '${config.package.version}',
 | 
			
		||||
 | 
			
		||||
      'openssl' => '${pkgs.openssl.bin}/bin/openssl'
 | 
			
		||||
 | 
			
		||||
      );
 | 
			
		||||
 | 
			
		||||
    '';
 | 
			
		||||
 | 
			
		||||
  tzSetting = let tz = serverInfo.fullConfig.time.timeZone; in optionalString (!isNull tz) ''
 | 
			
		||||
    /* timezone used while writing to the owncloud logfile (default: UTC) */
 | 
			
		||||
    'logtimezone' => '${tz}',
 | 
			
		||||
  '';
 | 
			
		||||
 | 
			
		||||
  postgresql = serverInfo.fullConfig.services.postgresql.package;
 | 
			
		||||
 | 
			
		||||
  setupDb = pkgs.writeScript "setup-owncloud-db" ''
 | 
			
		||||
    #!${pkgs.runtimeShell}
 | 
			
		||||
    PATH="${postgresql}/bin"
 | 
			
		||||
    createuser --no-superuser --no-createdb --no-createrole "${config.dbUser}" || true
 | 
			
		||||
    createdb "${config.dbName}" -O "${config.dbUser}" || true
 | 
			
		||||
    psql -U postgres -d postgres -c "alter user ${config.dbUser} with password '${config.dbPassword}';" || true
 | 
			
		||||
 | 
			
		||||
    QUERY="CREATE TABLE appconfig
 | 
			
		||||
             ( appid       VARCHAR( 255 ) NOT NULL
 | 
			
		||||
             , configkey   VARCHAR( 255 ) NOT NULL
 | 
			
		||||
             , configvalue VARCHAR( 255 ) NOT NULL
 | 
			
		||||
             );
 | 
			
		||||
           GRANT ALL ON appconfig TO ${config.dbUser};
 | 
			
		||||
           ALTER TABLE appconfig OWNER TO ${config.dbUser};"
 | 
			
		||||
 | 
			
		||||
    psql -h "/tmp" -U postgres -d ${config.dbName} -Atw -c "$QUERY" || true
 | 
			
		||||
  '';
 | 
			
		||||
 | 
			
		||||
in
 | 
			
		||||
 | 
			
		||||
rec {
 | 
			
		||||
 | 
			
		||||
  extraConfig =
 | 
			
		||||
    ''
 | 
			
		||||
      ${if config.urlPrefix != "" then "Alias ${config.urlPrefix} ${config.package}" else ''
 | 
			
		||||
 | 
			
		||||
        RewriteEngine On
 | 
			
		||||
        RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-f
 | 
			
		||||
        RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-d
 | 
			
		||||
      ''}
 | 
			
		||||
 | 
			
		||||
      <Directory ${config.package}>
 | 
			
		||||
        Include ${config.package}/.htaccess
 | 
			
		||||
      </Directory>
 | 
			
		||||
    '';
 | 
			
		||||
 | 
			
		||||
  globalEnvVars = [
 | 
			
		||||
    { name = "OC_CONFIG_PATH"; value = "${config.dataDir}/config/"; }
 | 
			
		||||
  ];
 | 
			
		||||
 | 
			
		||||
  documentRoot = if config.urlPrefix == "" then config.package else null;
 | 
			
		||||
 | 
			
		||||
  enablePHP = true;
 | 
			
		||||
 | 
			
		||||
  options = {
 | 
			
		||||
 | 
			
		||||
    package = mkOption {
 | 
			
		||||
      type = types.package;
 | 
			
		||||
      default = pkgs.owncloud70;
 | 
			
		||||
      defaultText = "pkgs.owncloud70";
 | 
			
		||||
      example = literalExample "pkgs.owncloud70";
 | 
			
		||||
      description = ''
 | 
			
		||||
          ownCloud package to use.
 | 
			
		||||
      '';
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    urlPrefix = mkOption {
 | 
			
		||||
      default = "";
 | 
			
		||||
      example = "/owncloud";
 | 
			
		||||
      description = ''
 | 
			
		||||
        The URL prefix under which the owncloud service appears.
 | 
			
		||||
      '';
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    id = mkOption {
 | 
			
		||||
      default = "main";
 | 
			
		||||
      description = ''
 | 
			
		||||
        A unique identifier necessary to keep multiple owncloud server
 | 
			
		||||
        instances on the same machine apart.  This is used to
 | 
			
		||||
        disambiguate the administrative scripts, which get names like
 | 
			
		||||
        mediawiki-$id-change-password.
 | 
			
		||||
      '';
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    adminUser = mkOption {
 | 
			
		||||
      default = "owncloud";
 | 
			
		||||
      description = "The admin user name for accessing owncloud.";
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    adminPassword = mkOption {
 | 
			
		||||
      description = "The admin password for accessing owncloud.";
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    dbType = mkOption {
 | 
			
		||||
      default = "pgsql";
 | 
			
		||||
      description = "Type of database, in NixOS, for now, only pgsql.";
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    dbName = mkOption {
 | 
			
		||||
      default = "owncloud";
 | 
			
		||||
      description = "Name of the database that holds the owncloud data.";
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    dbServer = mkOption {
 | 
			
		||||
      default = "localhost:5432";
 | 
			
		||||
      description = ''
 | 
			
		||||
        The location of the database server.
 | 
			
		||||
      '';
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    dbUser = mkOption {
 | 
			
		||||
      default = "owncloud";
 | 
			
		||||
      description = "The user name for accessing the database.";
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    dbPassword = mkOption {
 | 
			
		||||
      example = "foobar";
 | 
			
		||||
      description = ''
 | 
			
		||||
        The password of the database user.  Warning: this is stored in
 | 
			
		||||
        cleartext in the Nix store!
 | 
			
		||||
      '';
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    forceSSL = mkOption {
 | 
			
		||||
      default = "false";
 | 
			
		||||
      description = "Force use of HTTPS connection.";
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    adminAddr = mkOption {
 | 
			
		||||
      default = serverInfo.serverConfig.adminAddr;
 | 
			
		||||
      example = "admin@example.com";
 | 
			
		||||
      description = ''
 | 
			
		||||
        Emergency contact e-mail address.  Defaults to the Apache
 | 
			
		||||
        admin address.
 | 
			
		||||
      '';
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    siteName = mkOption {
 | 
			
		||||
      default = "owncloud";
 | 
			
		||||
      example = "Foobar owncloud";
 | 
			
		||||
      description = "Name of the owncloud";
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    trustedDomain = mkOption {
 | 
			
		||||
      default = "";
 | 
			
		||||
      description = "Trusted domain";
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    defaultLang = mkOption {
 | 
			
		||||
      default = "";
 | 
			
		||||
      description = "Default language";
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    defaultApp = mkOption {
 | 
			
		||||
      default = "";
 | 
			
		||||
      description = "Default application";
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    appStoreEnable = mkOption {
 | 
			
		||||
      default = "true";
 | 
			
		||||
      description = "Enable app store";
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    mailFrom = mkOption {
 | 
			
		||||
      default = "no-reply";
 | 
			
		||||
      description = "Mail from";
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    mailFromDomain = mkOption {
 | 
			
		||||
      default = "example.xyz";
 | 
			
		||||
      description = "Mail from domain";
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    SMTPMode = mkOption {
 | 
			
		||||
      default = "smtp";
 | 
			
		||||
      description = "Which mode to use for sending mail: sendmail, smtp, qmail or php.";
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    SMTPHost = mkOption {
 | 
			
		||||
      default = "";
 | 
			
		||||
      description = "SMTP host";
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    SMTPPort = mkOption {
 | 
			
		||||
      default = "25";
 | 
			
		||||
      description = "SMTP port";
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    SMTPTimeout = mkOption {
 | 
			
		||||
      default = "10";
 | 
			
		||||
      description = "SMTP mode";
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    SMTPSecure = mkOption {
 | 
			
		||||
      default = "ssl";
 | 
			
		||||
      description = "SMTP secure";
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    SMTPAuth = mkOption {
 | 
			
		||||
      default = "true";
 | 
			
		||||
      description = "SMTP auth";
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    SMTPAuthType = mkOption {
 | 
			
		||||
      default = "LOGIN";
 | 
			
		||||
      description = "SMTP auth type";
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    SMTPUser = mkOption {
 | 
			
		||||
      default = "";
 | 
			
		||||
      description = "SMTP user";
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    SMTPPass = mkOption {
 | 
			
		||||
      default = "";
 | 
			
		||||
      description = "SMTP pass";
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    dataDir = mkOption {
 | 
			
		||||
      default = "/var/lib/owncloud";
 | 
			
		||||
      description = "Data dir";
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    libreofficePath = mkOption {
 | 
			
		||||
      default = "/usr/bin/libreoffice";
 | 
			
		||||
      description = "Path for LibreOffice/OpenOffice binary.";
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    overwriteHost = mkOption {
 | 
			
		||||
      default = "";
 | 
			
		||||
      description = "The automatic hostname detection of ownCloud can fail in
 | 
			
		||||
        certain reverse proxy and CLI/cron situations. This option allows to
 | 
			
		||||
        manually override the automatic detection. You can also add a port.";
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    overwriteProtocol = mkOption {
 | 
			
		||||
      default = "";
 | 
			
		||||
      description = "The automatic protocol detection of ownCloud can fail in
 | 
			
		||||
        certain reverse proxy and CLI/cron situations. This option allows to
 | 
			
		||||
        manually override the protocol detection.";
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    overwriteWebRoot = mkOption {
 | 
			
		||||
      default = "";
 | 
			
		||||
      description = "The automatic webroot detection of ownCloud can fail in
 | 
			
		||||
        certain reverse proxy and CLI/cron situations. This option allows to
 | 
			
		||||
        manually override the automatic detection.";
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  startupScript = pkgs.writeScript "owncloud_startup.sh" ''
 | 
			
		||||
 | 
			
		||||
    if [ ! -d ${config.dataDir}/config ]; then
 | 
			
		||||
      mkdir -p ${config.dataDir}/config
 | 
			
		||||
      cp ${owncloudConfig} ${config.dataDir}/config/config.php
 | 
			
		||||
      mkdir -p ${config.dataDir}/storage
 | 
			
		||||
      mkdir -p ${config.dataDir}/apps
 | 
			
		||||
      cp -r ${config.package}/apps/* ${config.dataDir}/apps/
 | 
			
		||||
      chmod -R ug+rw ${config.dataDir}
 | 
			
		||||
      chmod -R o-rwx ${config.dataDir}
 | 
			
		||||
      chown -R wwwrun:wwwrun ${config.dataDir}
 | 
			
		||||
 | 
			
		||||
      ${pkgs.sudo}/bin/sudo -u postgres ${setupDb}
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    if [ -e ${config.package}/config/ca-bundle.crt ]; then
 | 
			
		||||
      cp -f ${config.package}/config/ca-bundle.crt ${config.dataDir}/config/
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    ${php}/bin/php ${config.package}/occ upgrade >> ${config.dataDir}/upgrade.log || true
 | 
			
		||||
 | 
			
		||||
    chown wwwrun:wwwrun ${config.dataDir}/owncloud.log || true
 | 
			
		||||
 | 
			
		||||
    QUERY="INSERT INTO groups (gid) values('admin');
 | 
			
		||||
           INSERT INTO users (uid,password)
 | 
			
		||||
             values('${config.adminUser}','${builtins.hashString "sha1" config.adminPassword}');
 | 
			
		||||
           INSERT INTO group_user (gid,uid)
 | 
			
		||||
             values('admin','${config.adminUser}');"
 | 
			
		||||
    ${pkgs.sudo}/bin/sudo -u postgres ${postgresql}/bin/psql -h "/tmp" -U postgres -d ${config.dbName} -Atw -c "$QUERY" || true
 | 
			
		||||
  '';
 | 
			
		||||
}
 | 
			
		||||
@ -69,7 +69,7 @@ with lib;
 | 
			
		||||
    acmeRoot = mkOption {
 | 
			
		||||
      type = types.str;
 | 
			
		||||
      default = "/var/lib/acme/acme-challenge";
 | 
			
		||||
      description = "Directory to store certificates and keys managed by the ACME service.";
 | 
			
		||||
      description = "Directory for the acme challenge which is PUBLIC, don't put certs or keys in here";
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    acmeFallbackHost = mkOption {
 | 
			
		||||
 | 
			
		||||
@ -136,19 +136,17 @@ in {
 | 
			
		||||
 | 
			
		||||
    services.xserver.displayManager.extraSessionFilePackages = [ pkgs.gnome3.gnome-session ];
 | 
			
		||||
 | 
			
		||||
    services.xserver.displayManager.sessionCommands = ''
 | 
			
		||||
      if test "$XDG_CURRENT_DESKTOP" = "GNOME"; then
 | 
			
		||||
          ${concatMapStrings (p: ''
 | 
			
		||||
            if [ -d "${p}/share/gsettings-schemas/${p.name}" ]; then
 | 
			
		||||
              export XDG_DATA_DIRS=$XDG_DATA_DIRS''${XDG_DATA_DIRS:+:}${p}/share/gsettings-schemas/${p.name}
 | 
			
		||||
            fi
 | 
			
		||||
    environment.extraInit = ''
 | 
			
		||||
      ${concatMapStrings (p: ''
 | 
			
		||||
        if [ -d "${p}/share/gsettings-schemas/${p.name}" ]; then
 | 
			
		||||
          export XDG_DATA_DIRS=$XDG_DATA_DIRS''${XDG_DATA_DIRS:+:}${p}/share/gsettings-schemas/${p.name}
 | 
			
		||||
        fi
 | 
			
		||||
 | 
			
		||||
            if [ -d "${p}/lib/girepository-1.0" ]; then
 | 
			
		||||
              export GI_TYPELIB_PATH=$GI_TYPELIB_PATH''${GI_TYPELIB_PATH:+:}${p}/lib/girepository-1.0
 | 
			
		||||
              export LD_LIBRARY_PATH=$LD_LIBRARY_PATH''${LD_LIBRARY_PATH:+:}${p}/lib
 | 
			
		||||
            fi
 | 
			
		||||
          '') cfg.sessionPath}
 | 
			
		||||
      fi
 | 
			
		||||
        if [ -d "${p}/lib/girepository-1.0" ]; then
 | 
			
		||||
          export GI_TYPELIB_PATH=$GI_TYPELIB_PATH''${GI_TYPELIB_PATH:+:}${p}/lib/girepository-1.0
 | 
			
		||||
          export LD_LIBRARY_PATH=$LD_LIBRARY_PATH''${LD_LIBRARY_PATH:+:}${p}/lib
 | 
			
		||||
        fi
 | 
			
		||||
      '') cfg.sessionPath}
 | 
			
		||||
    '';
 | 
			
		||||
 | 
			
		||||
    environment.variables.GNOME_SESSION_DEBUG = optionalString cfg.debug "1";
 | 
			
		||||
 | 
			
		||||
@ -78,8 +78,7 @@ let
 | 
			
		||||
      # This is required by user units using the session bus.
 | 
			
		||||
      ${config.systemd.package}/bin/systemctl --user import-environment DISPLAY XAUTHORITY DBUS_SESSION_BUS_ADDRESS
 | 
			
		||||
 | 
			
		||||
      # Load X defaults.
 | 
			
		||||
      # FIXME: Check XDG_SESSION_TYPE against x11
 | 
			
		||||
      # Load X defaults. This should probably be safe on wayland too.
 | 
			
		||||
      ${xorg.xrdb}/bin/xrdb -merge ${xresourcesXft}
 | 
			
		||||
      if test -e ~/.Xresources; then
 | 
			
		||||
          ${xorg.xrdb}/bin/xrdb -merge ~/.Xresources
 | 
			
		||||
@ -194,6 +193,11 @@ let
 | 
			
		||||
      ${concatMapStrings (pkg: ''
 | 
			
		||||
        ${xorg.lndir}/bin/lndir ${pkg}/share/xsessions $out/share/xsessions
 | 
			
		||||
      '') cfg.displayManager.extraSessionFilePackages}
 | 
			
		||||
 | 
			
		||||
      mkdir -p "$out/share/wayland-sessions"
 | 
			
		||||
      ${concatMapStrings (pkg: ''
 | 
			
		||||
        ${xorg.lndir}/bin/lndir ${pkg}/share/wayland-sessions $out/share/wayland-sessions
 | 
			
		||||
      '') cfg.displayManager.extraSessionFilePackages}
 | 
			
		||||
    '';
 | 
			
		||||
 | 
			
		||||
in
 | 
			
		||||
@ -240,7 +244,10 @@ in
 | 
			
		||||
          ''
 | 
			
		||||
            xmessage "Hello World!" &
 | 
			
		||||
          '';
 | 
			
		||||
        description = "Shell commands executed just before the window or desktop manager is started.";
 | 
			
		||||
        description = ''
 | 
			
		||||
          Shell commands executed just before the window or desktop manager is
 | 
			
		||||
          started. These commands are not currently sourced for Wayland sessions.
 | 
			
		||||
        '';
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
      hiddenUsers = mkOption {
 | 
			
		||||
 | 
			
		||||
@ -196,7 +196,7 @@ in
 | 
			
		||||
      { assertion = cfg.autoLogin.enable -> dmDefault != "none" || wmDefault != "none";
 | 
			
		||||
        message = ''
 | 
			
		||||
          LightDM auto-login requires that services.xserver.desktopManager.default and
 | 
			
		||||
          services.xserver.windowMananger.default are set to valid values. The current
 | 
			
		||||
          services.xserver.windowManager.default are set to valid values. The current
 | 
			
		||||
          default session: ${defaultSessionName} is not valid.
 | 
			
		||||
        '';
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
@ -59,6 +59,7 @@ let
 | 
			
		||||
 | 
			
		||||
    [Wayland]
 | 
			
		||||
    EnableHidpi=${if cfg.enableHidpi then "true" else "false"}
 | 
			
		||||
    SessionDir=${dmcfg.session.desktops}/share/wayland-sessions
 | 
			
		||||
 | 
			
		||||
    ${optionalString cfg.autoLogin.enable ''
 | 
			
		||||
    [Autologin]
 | 
			
		||||
@ -202,7 +203,7 @@ in
 | 
			
		||||
      { assertion = cfg.autoLogin.enable -> elem defaultSessionName dmcfg.session.names;
 | 
			
		||||
        message = ''
 | 
			
		||||
          SDDM auto-login requires that services.xserver.desktopManager.default and
 | 
			
		||||
          services.xserver.windowMananger.default are set to valid values. The current
 | 
			
		||||
          services.xserver.windowManager.default are set to valid values. The current
 | 
			
		||||
          default session: ${defaultSessionName} is not valid.
 | 
			
		||||
        '';
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
@ -10,8 +10,13 @@ let
 | 
			
		||||
  checkExec = checkUnitConfig "Exec" [
 | 
			
		||||
    (assertOnlyFields [
 | 
			
		||||
      "Boot" "ProcessTwo" "Parameters" "Environment" "User" "WorkingDirectory"
 | 
			
		||||
      "Capability" "DropCapability" "KillSignal" "Personality" "MachineId"
 | 
			
		||||
      "PrivateUsers" "NotifyReady"
 | 
			
		||||
      "PivotRoot" "Capability" "DropCapability" "NoNewPrivileges" "KillSignal"
 | 
			
		||||
      "Personality" "MachineId" "PrivateUsers" "NotifyReady" "SystemCallFilter"
 | 
			
		||||
      "LimitCPU" "LimitFSIZE" "LimitDATA" "LimitSTACK" "LimitCORE" "LimitRSS"
 | 
			
		||||
      "LimitNOFILE" "LimitAS" "LimitNPROC" "LimitMEMLOCK" "LimitLOCKS"
 | 
			
		||||
      "LimitSIGPENDING" "LimitMSGQUEUE" "LimitNICE" "LimitRTPRIO" "LimitRTTIME"
 | 
			
		||||
      "OOMScoreAdjust" "CPUAffinity" "Hostname" "ResolvConf" "Timezone"
 | 
			
		||||
      "LinkJournal"
 | 
			
		||||
    ])
 | 
			
		||||
    (assertValueOneOf "Boot" boolValues)
 | 
			
		||||
    (assertValueOneOf "ProcessTwo" boolValues)
 | 
			
		||||
@ -20,8 +25,8 @@ let
 | 
			
		||||
 | 
			
		||||
  checkFiles = checkUnitConfig "Files" [
 | 
			
		||||
    (assertOnlyFields [
 | 
			
		||||
      "ReadOnly" "Volatile" "Bind" "BindReadOnly" "TemporaryFileSystems"
 | 
			
		||||
      "PrivateUsersChown"
 | 
			
		||||
      "ReadOnly" "Volatile" "Bind" "BindReadOnly" "TemporaryFileSystem"
 | 
			
		||||
      "Overlay" "OverlayReadOnly" "PrivateUsersChown"
 | 
			
		||||
    ])
 | 
			
		||||
    (assertValueOneOf "ReadOnly" boolValues)
 | 
			
		||||
    (assertValueOneOf "Volatile" (boolValues ++ [ "state" ]))
 | 
			
		||||
 | 
			
		||||
@ -601,8 +601,27 @@ in
 | 
			
		||||
      type = types.lines;
 | 
			
		||||
      example = "IdleAction=lock";
 | 
			
		||||
      description = ''
 | 
			
		||||
        Extra config options for systemd-logind. See man logind.conf for
 | 
			
		||||
        available options.
 | 
			
		||||
        Extra config options for systemd-logind. See
 | 
			
		||||
        <link xlink:href="https://www.freedesktop.org/software/systemd/man/logind.conf.html">
 | 
			
		||||
        logind.conf(5)</link> for available options.
 | 
			
		||||
      '';
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    services.logind.killUserProcesses = mkOption {
 | 
			
		||||
      default = false;
 | 
			
		||||
      type = types.bool;
 | 
			
		||||
      description = ''
 | 
			
		||||
        Specifies whether the processes of a user should be killed
 | 
			
		||||
        when the user logs out.  If true, the scope unit corresponding
 | 
			
		||||
        to the session and all processes inside that scope will be
 | 
			
		||||
        terminated.  If false, the scope is "abandoned" (see
 | 
			
		||||
        <link xlink:href="https://www.freedesktop.org/software/systemd/man/systemd.scope.html#">
 | 
			
		||||
        systemd.scope(5)</link>), and processes are not killed.
 | 
			
		||||
        </para>
 | 
			
		||||
 | 
			
		||||
        <para>
 | 
			
		||||
        See <link xlink:href="https://www.freedesktop.org/software/systemd/man/logind.conf.html#KillUserProcesses=">logind.conf(5)</link>
 | 
			
		||||
        for more details.
 | 
			
		||||
      '';
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
@ -771,7 +790,7 @@ in
 | 
			
		||||
 | 
			
		||||
      "systemd/logind.conf".text = ''
 | 
			
		||||
        [Login]
 | 
			
		||||
        KillUserProcesses=no
 | 
			
		||||
        KillUserProcesses=${if config.services.logind.killUserProcesses then "yes" else "no"}
 | 
			
		||||
        HandleLidSwitch=${config.services.logind.lidSwitch}
 | 
			
		||||
        HandleLidSwitchDocked=${config.services.logind.lidSwitchDocked}
 | 
			
		||||
        ${config.services.logind.extraConfig}
 | 
			
		||||
 | 
			
		||||
@ -39,6 +39,7 @@ in
 | 
			
		||||
  cfssl = handleTestOn ["x86_64-linux"] ./cfssl.nix {};
 | 
			
		||||
  chromium = (handleTestOn ["x86_64-linux"] ./chromium.nix {}).stable or {};
 | 
			
		||||
  cjdns = handleTest ./cjdns.nix {};
 | 
			
		||||
  clamav = handleTest ./clamav.nix {};
 | 
			
		||||
  cloud-init = handleTest ./cloud-init.nix {};
 | 
			
		||||
  codimd = handleTest ./codimd.nix {};
 | 
			
		||||
  containers-bridge = handleTest ./containers-bridge.nix {};
 | 
			
		||||
@ -106,7 +107,7 @@ in
 | 
			
		||||
  installer = handleTest ./installer.nix {};
 | 
			
		||||
  ipv6 = handleTest ./ipv6.nix {};
 | 
			
		||||
  jenkins = handleTest ./jenkins.nix {};
 | 
			
		||||
  kafka = handleTest ./kafka.nix {};
 | 
			
		||||
  #kafka = handleTest ./kafka.nix {}; # broken since openjdk: 8u181 -> 8u192
 | 
			
		||||
  kerberos = handleTest tests/kerberos/default.nix {};
 | 
			
		||||
  kernel-latest = handleTest ./kernel-latest.nix {};
 | 
			
		||||
  kernel-lts = handleTest ./kernel-lts.nix {};
 | 
			
		||||
@ -157,7 +158,6 @@ in
 | 
			
		||||
  openssh = handleTest ./openssh.nix {};
 | 
			
		||||
  osquery = handleTest ./osquery.nix {};
 | 
			
		||||
  ostree = handleTest ./ostree.nix {};
 | 
			
		||||
  owncloud = handleTest ./owncloud.nix {};
 | 
			
		||||
  pam-oath-login = handleTest ./pam-oath-login.nix {};
 | 
			
		||||
  peerflix = handleTest ./peerflix.nix {};
 | 
			
		||||
  pgjwt = handleTest ./pgjwt.nix {};
 | 
			
		||||
 | 
			
		||||
@ -130,6 +130,9 @@ in {
 | 
			
		||||
      # Make sure keepFile has the correct content
 | 
			
		||||
      $client->succeed("$borg extract '${localRepo}::${archiveName}'");
 | 
			
		||||
      $client->succeed('c=$(cat ${dataDir}/${keepFile}) && [[ "$c" == "${keepFileData}" ]]');
 | 
			
		||||
      # Make sure the same is true when using `borg mount`
 | 
			
		||||
      $client->succeed("mkdir -p /mnt/borg && $borg mount '${localRepo}::${archiveName}' /mnt/borg");
 | 
			
		||||
      $client->succeed('c=$(cat /mnt/borg/${dataDir}/${keepFile}) && [[ "$c" == "${keepFileData}" ]]');
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    subtest "remote", sub {
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										37
									
								
								nixos/tests/clamav.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								nixos/tests/clamav.nix
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,37 @@
 | 
			
		||||
import ./make-test.nix ({ pkgs, ... }: let
 | 
			
		||||
 | 
			
		||||
  eicarTestFile = pkgs.fetchurl {
 | 
			
		||||
    url = "http://2016.eicar.org/download/eicar.com.txt";
 | 
			
		||||
    sha256 = "03zxa7vap2jkqjif4bzcjp33yrnip5yrz2bisia9wj5npwdh4ni7";
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  clamavMain = builtins.fetchurl "http://database.clamav.net/main.cvd";
 | 
			
		||||
  clamavDaily = builtins.fetchurl "http://database.clamav.net/daily.cvd";
 | 
			
		||||
  clamavBytecode = builtins.fetchurl "http://database.clamav.net/bytecode.cvd";
 | 
			
		||||
 | 
			
		||||
in {
 | 
			
		||||
  name = "clamav";
 | 
			
		||||
  meta = with pkgs.stdenv.lib.maintainers; {
 | 
			
		||||
    maintainers = [ fpletz ];
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  nodes.machine = { ... }: {
 | 
			
		||||
    virtualisation.memorySize = 1024;
 | 
			
		||||
 | 
			
		||||
    services.clamav.daemon.enable = true;
 | 
			
		||||
    systemd.services.clamav-daemon.preStart = ''
 | 
			
		||||
      mkdir -p /var/lib/clamav
 | 
			
		||||
      ln -sf ${clamavMain} /var/lib/clamav/main.cvd
 | 
			
		||||
      ln -sf ${clamavDaily} /var/lib/clamav/daily.cvd
 | 
			
		||||
      ln -sf ${clamavBytecode} /var/lib/clamav/bytecode.cvd
 | 
			
		||||
    '';
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  testScript = ''
 | 
			
		||||
    startAll;
 | 
			
		||||
    $machine->waitForUnit("multi-user.target");
 | 
			
		||||
    $machine->waitForUnit("clamav-daemon.service");
 | 
			
		||||
    $machine->waitForFile("/run/clamav/clamd.ctl");
 | 
			
		||||
    $machine->fail("clamdscan ${eicarTestFile}");
 | 
			
		||||
  '';
 | 
			
		||||
})
 | 
			
		||||
@ -8,7 +8,7 @@ import ./make-test.nix ({ pkgs, lib, ...} : with lib; {
 | 
			
		||||
 | 
			
		||||
  nodes = {
 | 
			
		||||
    gitlab = { ... }: {
 | 
			
		||||
      virtualisation.memorySize = 2047;
 | 
			
		||||
      virtualisation.memorySize = if pkgs.stdenv.is64bit then 4096 else 2047;
 | 
			
		||||
      systemd.services.gitlab.serviceConfig.Restart = mkForce "no";
 | 
			
		||||
      systemd.services.gitlab-workhorse.serviceConfig.Restart = mkForce "no";
 | 
			
		||||
      systemd.services.gitaly.serviceConfig.Restart = mkForce "no";
 | 
			
		||||
 | 
			
		||||
@ -23,11 +23,21 @@ import ./make-test.nix ({ pkgs, ...} : {
 | 
			
		||||
      virtualisation.memorySize = 1024;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
  testScript =
 | 
			
		||||
    ''
 | 
			
		||||
      # wait for gdm to start and bring up X
 | 
			
		||||
  testScript = let
 | 
			
		||||
    # Keep line widths somewhat managable
 | 
			
		||||
    bus = "DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus";
 | 
			
		||||
    gdbus = "${bus} gdbus";
 | 
			
		||||
    # Call javascript in gnome shell, returns a tuple (success, output), where
 | 
			
		||||
    # `success` is true if the dbus call was successful and output is what the
 | 
			
		||||
    # javascript evaluates to.
 | 
			
		||||
    eval = "call --session -d org.gnome.Shell -o /org/gnome/Shell -m org.gnome.Shell.Eval";
 | 
			
		||||
    # False when startup is done
 | 
			
		||||
    startingUp = "${gdbus} ${eval} Main.layoutManager._startingUp";
 | 
			
		||||
    # Hopefully gnome-terminal's wm class
 | 
			
		||||
    wmClass = "${gdbus} ${eval} global.display.focus_window.wm_class";
 | 
			
		||||
  in ''
 | 
			
		||||
      # wait for gdm to start
 | 
			
		||||
      $machine->waitForUnit("display-manager.service");
 | 
			
		||||
      $machine->waitForX;
 | 
			
		||||
 | 
			
		||||
      # wait for alice to be logged in
 | 
			
		||||
      $machine->waitForUnit("default.target","alice");
 | 
			
		||||
@ -35,10 +45,16 @@ import ./make-test.nix ({ pkgs, ...} : {
 | 
			
		||||
      # Check that logging in has given the user ownership of devices.
 | 
			
		||||
      $machine->succeed("getfacl /dev/snd/timer | grep -q alice");
 | 
			
		||||
 | 
			
		||||
      # open a terminal and check it's there
 | 
			
		||||
      $machine->succeed("su - alice -c 'DISPLAY=:0.0 XAUTHORITY=/run/user/\$UID/gdm/Xauthority gnome-terminal'");
 | 
			
		||||
      $machine->succeed("xauth merge /run/user/1000/gdm/Xauthority");
 | 
			
		||||
      $machine->waitForWindow(qr/Terminal/);
 | 
			
		||||
      # Wait for the wayland server
 | 
			
		||||
      $machine->waitForFile("/run/user/1000/wayland-0");
 | 
			
		||||
 | 
			
		||||
      # Wait for gnome shell, correct output should be "(true, 'false')"
 | 
			
		||||
      $machine->waitUntilSucceeds("su - alice -c '${startingUp} | grep -q true,..false'");
 | 
			
		||||
 | 
			
		||||
      # open a terminal
 | 
			
		||||
      $machine->succeed("su - alice -c '${bus} gnome-terminal'");
 | 
			
		||||
      # and check it's there
 | 
			
		||||
      $machine->waitUntilSucceeds("su - alice -c '${wmClass} | grep -q gnome-terminal-server'");
 | 
			
		||||
 | 
			
		||||
      # wait to get a nice screenshot
 | 
			
		||||
      $machine->sleep(20);
 | 
			
		||||
 | 
			
		||||
@ -16,7 +16,7 @@ import ./make-test.nix ({ pkgs, ...} : {
 | 
			
		||||
      services.xserver.displayManager.lightdm.autoLogin.enable = true;
 | 
			
		||||
      services.xserver.displayManager.lightdm.autoLogin.user = "alice";
 | 
			
		||||
      services.xserver.desktopManager.gnome3.enable = true;
 | 
			
		||||
      services.xserver.desktopManager.default = "gnome";
 | 
			
		||||
      services.xserver.desktopManager.default = "gnome-xorg";
 | 
			
		||||
 | 
			
		||||
      virtualisation.memorySize = 1024;
 | 
			
		||||
    };
 | 
			
		||||
@ -33,7 +33,7 @@ import ./make-test.nix ({ pkgs, ...} : {
 | 
			
		||||
 | 
			
		||||
      $machine->succeed("su - alice -c 'DISPLAY=:0.0 gnome-terminal &'");
 | 
			
		||||
      $machine->succeed("xauth merge ~alice/.Xauthority");
 | 
			
		||||
      $machine->waitForWindow(qr/Terminal/);
 | 
			
		||||
      $machine->waitForWindow(qr/alice.*machine/);
 | 
			
		||||
      $machine->succeed("timeout 900 bash -c 'while read msg; do if [[ \$msg =~ \"GNOME Shell started\" ]]; then break; fi; done < <(journalctl -f)'");
 | 
			
		||||
      $machine->sleep(10);
 | 
			
		||||
      $machine->screenshot("screen");
 | 
			
		||||
 | 
			
		||||
@ -28,7 +28,7 @@ import ./make-test.nix ({ pkgs, ...} : {
 | 
			
		||||
    $machine->waitForFile("/home/alice/.config/i3/config");
 | 
			
		||||
    $machine->sleep(2);
 | 
			
		||||
    $machine->sendKeys("alt-ret");
 | 
			
		||||
    $machine->waitForWindow(qr/machine.*alice/);
 | 
			
		||||
    $machine->waitForWindow(qr/alice.*machine/);
 | 
			
		||||
    $machine->sleep(2);
 | 
			
		||||
    $machine->screenshot("terminal");
 | 
			
		||||
  '';
 | 
			
		||||
 | 
			
		||||
@ -1,6 +1,6 @@
 | 
			
		||||
{ system ? builtins.currentSystem,
 | 
			
		||||
  config ? {},
 | 
			
		||||
  pkgs ? import ../.. { inherit system config; }
 | 
			
		||||
  pkgs ? import ../../.. { inherit system config; }
 | 
			
		||||
}:
 | 
			
		||||
 | 
			
		||||
with import ../../lib/testing.nix { inherit system pkgs; };
 | 
			
		||||
 | 
			
		||||
@ -3,7 +3,6 @@ with pkgs.lib;
 | 
			
		||||
let
 | 
			
		||||
  base = {
 | 
			
		||||
    inherit roles;
 | 
			
		||||
    featureGates = ["AllAlpha"];
 | 
			
		||||
    flannel.enable = true;
 | 
			
		||||
    addons.dashboard.enable = true;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -1,39 +0,0 @@
 | 
			
		||||
import ./make-test.nix ({ ... }:
 | 
			
		||||
 | 
			
		||||
{
 | 
			
		||||
  name = "owncloud";
 | 
			
		||||
  nodes =
 | 
			
		||||
    { web =
 | 
			
		||||
        { ... }:
 | 
			
		||||
        {
 | 
			
		||||
          services.postgresql.enable = true;
 | 
			
		||||
          services.httpd = {
 | 
			
		||||
            enable = true;
 | 
			
		||||
            logPerVirtualHost = true;
 | 
			
		||||
            adminAddr = "example@example.com";
 | 
			
		||||
            virtualHosts = [
 | 
			
		||||
              {
 | 
			
		||||
                hostName = "owncloud";
 | 
			
		||||
                extraSubservices =
 | 
			
		||||
                  [
 | 
			
		||||
                    {
 | 
			
		||||
                      serviceType   = "owncloud";
 | 
			
		||||
                      adminPassword = "secret";
 | 
			
		||||
                      dbPassword    = "secret";
 | 
			
		||||
                    }
 | 
			
		||||
                  ];
 | 
			
		||||
              }
 | 
			
		||||
            ];
 | 
			
		||||
          };
 | 
			
		||||
        };
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
  testScript = ''
 | 
			
		||||
    startAll;
 | 
			
		||||
 | 
			
		||||
    $web->waitForUnit("postgresql");
 | 
			
		||||
    $web->waitForUnit("httpd");
 | 
			
		||||
 | 
			
		||||
    $web->succeed("curl -L 127.0.0.1:80");
 | 
			
		||||
  '';
 | 
			
		||||
})
 | 
			
		||||
@ -63,6 +63,12 @@ in {
 | 
			
		||||
            ensurePermissions = { "slurm_acct_db.*" = "ALL PRIVILEGES"; };
 | 
			
		||||
            name = "slurm";
 | 
			
		||||
          }];
 | 
			
		||||
          extraOptions = ''
 | 
			
		||||
            # recommendations from: https://slurm.schedmd.com/accounting.html#mysql-configuration
 | 
			
		||||
            innodb_buffer_pool_size=1024M
 | 
			
		||||
            innodb_log_file_size=64M
 | 
			
		||||
            innodb_lock_wait_timeout=900
 | 
			
		||||
          '';
 | 
			
		||||
        };
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
@ -95,6 +101,7 @@ in {
 | 
			
		||||
  subtest "can_start_slurmdbd", sub {
 | 
			
		||||
    $dbd->succeed("systemctl restart slurmdbd");
 | 
			
		||||
    $dbd->waitForUnit("slurmdbd.service");
 | 
			
		||||
    $dbd->waitForOpenPort(6819);
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  # there needs to be an entry for the current
 | 
			
		||||
 | 
			
		||||
@ -56,6 +56,11 @@ import ./make-test.nix {
 | 
			
		||||
      $machine->succeed('test -z $(ls -1 /var/log/journal)');
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    # Regression test for https://github.com/NixOS/nixpkgs/issues/50273
 | 
			
		||||
    subtest "DynamicUser actually allocates a user", sub {
 | 
			
		||||
        $machine->succeed('systemd-run --pty --property=Type=oneshot --property=DynamicUser=yes --property=User=iamatest whoami | grep iamatest');
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    # Regression test for https://github.com/NixOS/nixpkgs/issues/35268
 | 
			
		||||
    subtest "file system with x-initrd.mount is not unmounted", sub {
 | 
			
		||||
      $machine->shutdown;
 | 
			
		||||
 | 
			
		||||
@ -22,7 +22,7 @@ import ./make-test.nix ({ pkgs, ...} : {
 | 
			
		||||
    $machine->waitUntilSucceeds("xmonad --restart");
 | 
			
		||||
    $machine->sleep(3);
 | 
			
		||||
    $machine->sendKeys("alt-shift-ret");
 | 
			
		||||
    $machine->waitForWindow(qr/machine.*alice/);
 | 
			
		||||
    $machine->waitForWindow(qr/alice.*machine/);
 | 
			
		||||
    $machine->sleep(1);
 | 
			
		||||
    $machine->screenshot("terminal");
 | 
			
		||||
  '';
 | 
			
		||||
 | 
			
		||||
@ -45,7 +45,7 @@ rec {
 | 
			
		||||
  dcrd = callPackage ./dcrd.nix { };
 | 
			
		||||
  dcrwallet = callPackage ./dcrwallet.nix { };
 | 
			
		||||
 | 
			
		||||
  dero = callPackage ./dero.nix { };
 | 
			
		||||
  dero = callPackage ./dero.nix { boost = boost165; };
 | 
			
		||||
 | 
			
		||||
  dogecoin  = callPackage ./dogecoin.nix { boost = boost165; withGui = true; };
 | 
			
		||||
  dogecoind = callPackage ./dogecoin.nix { boost = boost165; withGui = false; };
 | 
			
		||||
@ -65,7 +65,7 @@ rec {
 | 
			
		||||
  };
 | 
			
		||||
  litecoind = litecoin.override { withGui = false; };
 | 
			
		||||
 | 
			
		||||
  masari = callPackage ./masari.nix { };
 | 
			
		||||
  masari = callPackage ./masari.nix { boost = boost165; };
 | 
			
		||||
 | 
			
		||||
  memorycoin  = callPackage ./memorycoin.nix { boost = boost165; withGui = true; };
 | 
			
		||||
  memorycoind = callPackage ./memorycoin.nix { boost = boost165; withGui = false; };
 | 
			
		||||
@ -79,7 +79,7 @@ rec {
 | 
			
		||||
 | 
			
		||||
  stellar-core = callPackage ./stellar-core.nix { };
 | 
			
		||||
 | 
			
		||||
  sumokoin = callPackage ./sumokoin.nix { };
 | 
			
		||||
  sumokoin = callPackage ./sumokoin.nix { boost = boost165; };
 | 
			
		||||
 | 
			
		||||
  wownero = callPackage ./wownero.nix {
 | 
			
		||||
    inherit (darwin.apple_sdk.frameworks) CoreData IOKit PCSC;
 | 
			
		||||
@ -94,5 +94,7 @@ rec {
 | 
			
		||||
  parity-beta = callPackage ./parity/beta.nix { };
 | 
			
		||||
  parity-ui = callPackage ./parity-ui { };
 | 
			
		||||
 | 
			
		||||
  polkadot = callPackage ./polkadot { };
 | 
			
		||||
 | 
			
		||||
  particl-core = callPackage ./particl/particl-core.nix { miniupnpc = miniupnpc_2; };
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -2,7 +2,7 @@
 | 
			
		||||
 | 
			
		||||
buildGoPackage rec {
 | 
			
		||||
  name = "go-ethereum-${version}";
 | 
			
		||||
  version = "1.8.19";
 | 
			
		||||
  version = "1.8.20";
 | 
			
		||||
  goPackagePath = "github.com/ethereum/go-ethereum";
 | 
			
		||||
 | 
			
		||||
  # Fix for usb-related segmentation faults on darwin
 | 
			
		||||
@ -16,7 +16,7 @@ buildGoPackage rec {
 | 
			
		||||
    owner = "ethereum";
 | 
			
		||||
    repo = "go-ethereum";
 | 
			
		||||
    rev = "v${version}";
 | 
			
		||||
    sha256 = "0shp8ak44v52ynlyawfh53wczd3zch7ydf6bmbrhm5rpbribirwr";
 | 
			
		||||
    sha256 = "0m2q1nz6f39pyr2rk6vflkwi4ykganzwr7wndpwr9rliw0x8jgi0";
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  meta = with stdenv.lib; {
 | 
			
		||||
 | 
			
		||||
@ -1,7 +1,7 @@
 | 
			
		||||
{ stdenv, fetchgit
 | 
			
		||||
, cmake, pkgconfig, git
 | 
			
		||||
, boost, miniupnpc, openssl, unbound, cppzmq
 | 
			
		||||
, zeromq, pcsclite, readline, libsodium
 | 
			
		||||
, zeromq, pcsclite, readline, libsodium, hidapi
 | 
			
		||||
, CoreData, IOKit, PCSC
 | 
			
		||||
}:
 | 
			
		||||
 | 
			
		||||
@ -24,7 +24,7 @@ stdenv.mkDerivation rec {
 | 
			
		||||
  buildInputs = [
 | 
			
		||||
    boost miniupnpc openssl unbound
 | 
			
		||||
    cppzmq zeromq pcsclite readline
 | 
			
		||||
    libsodium
 | 
			
		||||
    libsodium hidapi
 | 
			
		||||
  ] ++ optionals stdenv.isDarwin [ IOKit CoreData PCSC ];
 | 
			
		||||
 | 
			
		||||
  cmakeFlags = [
 | 
			
		||||
 | 
			
		||||
@ -1,9 +1,6 @@
 | 
			
		||||
let
 | 
			
		||||
  version     = "2.2.1";
 | 
			
		||||
  sha256      = "1m65pks2jk83j82f1i901p03qb54xhcp6gfjngcm975187zzvmcq";
 | 
			
		||||
  cargoSha256 = "1mf1jgphwvhlqkvzrgbhnqfyqgf3ljc1l9zckyilzmw5k4lf4g1w";
 | 
			
		||||
  patches     = [
 | 
			
		||||
    ./patches/vendored-sources-2.2.patch
 | 
			
		||||
  ];
 | 
			
		||||
  version     = "2.2.4";
 | 
			
		||||
  sha256      = "12qcfmc56vnay25nlflgwhm3iwlr7hd286wzzanlsalizaj5s5ja";
 | 
			
		||||
  cargoSha256 = "11cwzqd459ld0apl2wnarfc4nb6j9j0dh26y3smvr0zsxvaz1r53";
 | 
			
		||||
in
 | 
			
		||||
  import ./parity.nix { inherit version sha256 cargoSha256 patches; }
 | 
			
		||||
  import ./parity.nix { inherit version sha256 cargoSha256; }
 | 
			
		||||
 | 
			
		||||
@ -1,7 +1,6 @@
 | 
			
		||||
let
 | 
			
		||||
  version     = "2.1.6";
 | 
			
		||||
  sha256      = "0njkypszi0fjh9y0zfgxbycs4c1wpylk7wx6xn1pp6gqvvri6hav";
 | 
			
		||||
  cargoSha256 = "116sj7pi50k5gb1i618g4pgckqaf8kb13jh2a3shj2kwywzzcgjs";
 | 
			
		||||
  patches     = [ ./patches/vendored-sources-2.1.patch ];
 | 
			
		||||
  version     = "2.1.9";
 | 
			
		||||
  sha256      = "1xxpv2cxfcjwxfxkn2732y1wxh9rpiwmlb2ij09cg5nph669hy0v";
 | 
			
		||||
  cargoSha256 = "1v44l90bacw8d3ilnmrc49dxdpyckh7iamylkpa1pc0rrpiv5vy4";
 | 
			
		||||
in
 | 
			
		||||
  import ./parity.nix { inherit version sha256 cargoSha256 patches; }
 | 
			
		||||
  import ./parity.nix { inherit version sha256 cargoSha256; }
 | 
			
		||||
 | 
			
		||||
@ -1,7 +1,6 @@
 | 
			
		||||
{ version
 | 
			
		||||
, sha256
 | 
			
		||||
, cargoSha256
 | 
			
		||||
, patches
 | 
			
		||||
}:
 | 
			
		||||
 | 
			
		||||
{ stdenv
 | 
			
		||||
@ -16,7 +15,7 @@
 | 
			
		||||
 | 
			
		||||
rustPlatform.buildRustPackage rec {
 | 
			
		||||
  name = "parity-${version}";
 | 
			
		||||
  inherit cargoSha256 patches;
 | 
			
		||||
  inherit cargoSha256;
 | 
			
		||||
 | 
			
		||||
  src = fetchFromGitHub {
 | 
			
		||||
    owner = "paritytech";
 | 
			
		||||
@ -30,7 +29,7 @@ rustPlatform.buildRustPackage rec {
 | 
			
		||||
    systemd.lib systemd.dev openssl openssl.dev
 | 
			
		||||
  ];
 | 
			
		||||
 | 
			
		||||
  # Some checks failed
 | 
			
		||||
  # test result: FAILED. 80 passed; 12 failed; 0 ignored; 0 measured; 0 filtered out
 | 
			
		||||
  doCheck = false;
 | 
			
		||||
 | 
			
		||||
  meta = with stdenv.lib; {
 | 
			
		||||
 | 
			
		||||
@ -1,83 +0,0 @@
 | 
			
		||||
diff --git a/.cargo/config b/.cargo/config
 | 
			
		||||
index 72652ad2f..3c0eca89a 100644
 | 
			
		||||
--- a/.cargo/config
 | 
			
		||||
+++ b/.cargo/config
 | 
			
		||||
@@ -1,3 +1,78 @@
 | 
			
		||||
 [target.x86_64-pc-windows-msvc]
 | 
			
		||||
 # Link the C runtime statically ; https://github.com/paritytech/parity/issues/6643
 | 
			
		||||
 rustflags = ["-Ctarget-feature=+crt-static"]
 | 
			
		||||
+
 | 
			
		||||
+[source."https://github.com/alexcrichton/mio-named-pipes"]
 | 
			
		||||
+git = "https://github.com/alexcrichton/mio-named-pipes"
 | 
			
		||||
+branch = "master"
 | 
			
		||||
+replace-with = "vendored-sources"
 | 
			
		||||
+
 | 
			
		||||
+[source."https://github.com/nikvolf/parity-tokio-ipc"]
 | 
			
		||||
+git = "https://github.com/nikvolf/parity-tokio-ipc"
 | 
			
		||||
+rev = "c0f80b40399d7f08ef1e6869569640eb28645f56"
 | 
			
		||||
+replace-with = "vendored-sources"
 | 
			
		||||
+
 | 
			
		||||
+[source."https://github.com/nikvolf/tokio-named-pipes"]
 | 
			
		||||
+git = "https://github.com/nikvolf/tokio-named-pipes"
 | 
			
		||||
+branch = "master"
 | 
			
		||||
+replace-with = "vendored-sources"
 | 
			
		||||
+
 | 
			
		||||
+[source."https://github.com/paritytech/app-dirs-rs"]
 | 
			
		||||
+git = "https://github.com/paritytech/app-dirs-rs"
 | 
			
		||||
+branch = "master"
 | 
			
		||||
+replace-with = "vendored-sources"
 | 
			
		||||
+
 | 
			
		||||
+[source."https://github.com/paritytech/bn"]
 | 
			
		||||
+git = "https://github.com/paritytech/bn"
 | 
			
		||||
+branch = "master"
 | 
			
		||||
+replace-with = "vendored-sources"
 | 
			
		||||
+
 | 
			
		||||
+[source."https://github.com/paritytech/daemonize"]
 | 
			
		||||
+git = "https://github.com/paritytech/daemonize"
 | 
			
		||||
+branch = "master"
 | 
			
		||||
+replace-with = "vendored-sources"
 | 
			
		||||
+
 | 
			
		||||
+[source."https://github.com/paritytech/hidapi-rs"]
 | 
			
		||||
+git = "https://github.com/paritytech/hidapi-rs"
 | 
			
		||||
+branch = "master"
 | 
			
		||||
+replace-with = "vendored-sources"
 | 
			
		||||
+
 | 
			
		||||
+[source."https://github.com/paritytech/jsonrpc.git"]
 | 
			
		||||
+git = "https://github.com/paritytech/jsonrpc.git"
 | 
			
		||||
+branch = "parity-1.11"
 | 
			
		||||
+replace-with = "vendored-sources"
 | 
			
		||||
+
 | 
			
		||||
+[source."https://github.com/paritytech/libusb-rs"]
 | 
			
		||||
+git = "https://github.com/paritytech/libusb-rs"
 | 
			
		||||
+branch = "master"
 | 
			
		||||
+replace-with = "vendored-sources"
 | 
			
		||||
+
 | 
			
		||||
+[source."https://github.com/paritytech/libusb-sys"]
 | 
			
		||||
+git = "https://github.com/paritytech/libusb-sys"
 | 
			
		||||
+branch = "master"
 | 
			
		||||
+replace-with = "vendored-sources"
 | 
			
		||||
+
 | 
			
		||||
+[source."https://github.com/paritytech/ring"]
 | 
			
		||||
+git = "https://github.com/paritytech/ring"
 | 
			
		||||
+branch = "master"
 | 
			
		||||
+replace-with = "vendored-sources"
 | 
			
		||||
+
 | 
			
		||||
+[source."https://github.com/paritytech/rust-ctrlc.git"]
 | 
			
		||||
+git = "https://github.com/paritytech/rust-ctrlc.git"
 | 
			
		||||
+branch = "master"
 | 
			
		||||
+replace-with = "vendored-sources"
 | 
			
		||||
+
 | 
			
		||||
+[source."https://github.com/paritytech/rust-secp256k1"]
 | 
			
		||||
+git = "https://github.com/paritytech/rust-secp256k1"
 | 
			
		||||
+branch = "master"
 | 
			
		||||
+replace-with = "vendored-sources"
 | 
			
		||||
+
 | 
			
		||||
+[source."https://github.com/paritytech/trezor-sys"]
 | 
			
		||||
+git = "https://github.com/paritytech/trezor-sys"
 | 
			
		||||
+branch = "master"
 | 
			
		||||
+replace-with = "vendored-sources"
 | 
			
		||||
+
 | 
			
		||||
+[source."https://github.com/tomusdrw/ws-rs"]
 | 
			
		||||
+git = "https://github.com/tomusdrw/ws-rs"
 | 
			
		||||
+branch = "master"
 | 
			
		||||
+replace-with = "vendored-sources"
 | 
			
		||||
@ -1,98 +0,0 @@
 | 
			
		||||
diff --git a/.cargo/config b/.cargo/config
 | 
			
		||||
index 72652ad2f..3c0eca89a 100644
 | 
			
		||||
--- a/.cargo/config
 | 
			
		||||
+++ b/.cargo/config
 | 
			
		||||
@@ -1,3 +1,93 @@
 | 
			
		||||
 [target.x86_64-pc-windows-msvc]
 | 
			
		||||
 # Link the C runtime statically ; https://github.com/paritytech/parity/issues/6643
 | 
			
		||||
 rustflags = ["-Ctarget-feature=+crt-static"]
 | 
			
		||||
+
 | 
			
		||||
+[source."https://github.com/alexcrichton/mio-named-pipes"]
 | 
			
		||||
+git = "https://github.com/alexcrichton/mio-named-pipes"
 | 
			
		||||
+branch = "master"
 | 
			
		||||
+replace-with = "vendored-sources"
 | 
			
		||||
+
 | 
			
		||||
+[source."https://github.com/nikvolf/parity-tokio-ipc"]
 | 
			
		||||
+git = "https://github.com/nikvolf/parity-tokio-ipc"
 | 
			
		||||
+branch = "master"
 | 
			
		||||
+replace-with = "vendored-sources"
 | 
			
		||||
+
 | 
			
		||||
+[source."https://github.com/nikvolf/tokio-named-pipes"]
 | 
			
		||||
+git = "https://github.com/nikvolf/tokio-named-pipes"
 | 
			
		||||
+branch = "master"
 | 
			
		||||
+replace-with = "vendored-sources"
 | 
			
		||||
+
 | 
			
		||||
+[source."https://github.com/paritytech/app-dirs-rs"]
 | 
			
		||||
+git = "https://github.com/paritytech/app-dirs-rs"
 | 
			
		||||
+branch = "master"
 | 
			
		||||
+replace-with = "vendored-sources"
 | 
			
		||||
+
 | 
			
		||||
+[source."https://github.com/paritytech/bn"]
 | 
			
		||||
+git = "https://github.com/paritytech/bn"
 | 
			
		||||
+branch = "master"
 | 
			
		||||
+replace-with = "vendored-sources"
 | 
			
		||||
+
 | 
			
		||||
+[source."https://github.com/paritytech/daemonize"]
 | 
			
		||||
+git = "https://github.com/paritytech/daemonize"
 | 
			
		||||
+branch = "master"
 | 
			
		||||
+replace-with = "vendored-sources"
 | 
			
		||||
+
 | 
			
		||||
+[source."https://github.com/paritytech/hidapi-rs"]
 | 
			
		||||
+git = "https://github.com/paritytech/hidapi-rs"
 | 
			
		||||
+branch = "master"
 | 
			
		||||
+replace-with = "vendored-sources"
 | 
			
		||||
+
 | 
			
		||||
+[source."https://github.com/paritytech/jsonrpc.git"]
 | 
			
		||||
+git = "https://github.com/paritytech/jsonrpc.git"
 | 
			
		||||
+branch = "parity-2.2"
 | 
			
		||||
+replace-with = "vendored-sources"
 | 
			
		||||
+
 | 
			
		||||
+[source."https://github.com/paritytech/libusb-rs"]
 | 
			
		||||
+git = "https://github.com/paritytech/libusb-rs"
 | 
			
		||||
+branch = "master"
 | 
			
		||||
+replace-with = "vendored-sources"
 | 
			
		||||
+
 | 
			
		||||
+[source."https://github.com/paritytech/libusb-sys"]
 | 
			
		||||
+git = "https://github.com/paritytech/libusb-sys"
 | 
			
		||||
+branch = "master"
 | 
			
		||||
+replace-with = "vendored-sources"
 | 
			
		||||
+
 | 
			
		||||
+[source."https://github.com/paritytech/parity-common"]
 | 
			
		||||
+git = "https://github.com/paritytech/parity-common"
 | 
			
		||||
+branch = "master"
 | 
			
		||||
+replace-with = "vendored-sources"
 | 
			
		||||
+
 | 
			
		||||
+[source."https://github.com/paritytech/ring"]
 | 
			
		||||
+git = "https://github.com/paritytech/ring"
 | 
			
		||||
+branch = "master"
 | 
			
		||||
+replace-with = "vendored-sources"
 | 
			
		||||
+
 | 
			
		||||
+[source."https://github.com/paritytech/rust-ctrlc.git"]
 | 
			
		||||
+git = "https://github.com/paritytech/rust-ctrlc.git"
 | 
			
		||||
+branch = "master"
 | 
			
		||||
+replace-with = "vendored-sources"
 | 
			
		||||
+
 | 
			
		||||
+[source."https://github.com/paritytech/rust-rocksdb"]
 | 
			
		||||
+git = "https://github.com/paritytech/rust-rocksdb"
 | 
			
		||||
+branch = "master"
 | 
			
		||||
+replace-with = "vendored-sources"
 | 
			
		||||
+
 | 
			
		||||
+[source."https://github.com/paritytech/rust-secp256k1"]
 | 
			
		||||
+git = "https://github.com/paritytech/rust-secp256k1"
 | 
			
		||||
+branch = "master"
 | 
			
		||||
+replace-with = "vendored-sources"
 | 
			
		||||
+
 | 
			
		||||
+[source."https://github.com/paritytech/rust-snappy"]
 | 
			
		||||
+git = "https://github.com/paritytech/rust-snappy"
 | 
			
		||||
+branch = "master"
 | 
			
		||||
+replace-with = "vendored-sources"
 | 
			
		||||
+
 | 
			
		||||
+[source."https://github.com/paritytech/trezor-sys"]
 | 
			
		||||
+git = "https://github.com/paritytech/trezor-sys"
 | 
			
		||||
+branch = "master"
 | 
			
		||||
+replace-with = "vendored-sources"
 | 
			
		||||
+
 | 
			
		||||
+[source."https://github.com/tomusdrw/ws-rs"]
 | 
			
		||||
+git = "https://github.com/tomusdrw/ws-rs"
 | 
			
		||||
+branch = "master"
 | 
			
		||||
+replace-with = "vendored-sources"
 | 
			
		||||
							
								
								
									
										30
									
								
								pkgs/applications/altcoins/polkadot/default.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								pkgs/applications/altcoins/polkadot/default.nix
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,30 @@
 | 
			
		||||
{ stdenv
 | 
			
		||||
, fetchFromGitHub
 | 
			
		||||
, rustPlatform
 | 
			
		||||
, pkgconfig
 | 
			
		||||
, openssl
 | 
			
		||||
}:
 | 
			
		||||
 | 
			
		||||
rustPlatform.buildRustPackage rec {
 | 
			
		||||
  name = "polkadot-${version}";
 | 
			
		||||
  version = "0.2.17";
 | 
			
		||||
 | 
			
		||||
  src = fetchFromGitHub {
 | 
			
		||||
    owner = "paritytech";
 | 
			
		||||
    repo = "substrate";
 | 
			
		||||
    rev = "19f4f4d4df3bb266086b4e488739f73d3d5e588c";
 | 
			
		||||
    sha256 = "0v7g03rbml2afw0splmyjh9nqpjg0ldjw09hyc0jqd3qlhgxiiyj";
 | 
			
		||||
  }; 
 | 
			
		||||
 | 
			
		||||
  cargoSha256 = "0wwkaxqj2v5zach5xcqfzf6prc0gxy2v47janglp44xbxbx9xk08";
 | 
			
		||||
 | 
			
		||||
  buildInputs = [ pkgconfig openssl openssl.dev ];
 | 
			
		||||
 | 
			
		||||
  meta = with stdenv.lib; {
 | 
			
		||||
    description = "Polkadot Node Implementation";
 | 
			
		||||
    homepage = http://polkadot.network;
 | 
			
		||||
    license = licenses.gpl3;
 | 
			
		||||
    maintainers = [ maintainers.akru ];
 | 
			
		||||
    platforms = platforms.linux;
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
@ -2,11 +2,11 @@
 | 
			
		||||
 | 
			
		||||
stdenv.mkDerivation rec {
 | 
			
		||||
  name = "drumkv1-${version}";
 | 
			
		||||
  version = "0.9.3";
 | 
			
		||||
  version = "0.9.4";
 | 
			
		||||
 | 
			
		||||
  src = fetchurl {
 | 
			
		||||
    url = "mirror://sourceforge/drumkv1/${name}.tar.gz";
 | 
			
		||||
    sha256 = "0a38vpyyppjdwifidrhgj4bnsx4jjx413657s59j0r4q8rg55jca";
 | 
			
		||||
    sha256 = "02j10khl3wd17z0wfs3crr55wv7h9f0qhhg90xg0kvrxvw83vzy9";
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  buildInputs = [ libjack2 alsaLib libsndfile liblo lv2 qt5.qtbase qt5.qttools ];
 | 
			
		||||
 | 
			
		||||
@ -4,8 +4,8 @@
 | 
			
		||||
, gobject-introspection, wrapGAppsHook }:
 | 
			
		||||
 | 
			
		||||
python3.pkgs.buildPythonApplication rec  {
 | 
			
		||||
  pname = "lollypop";
 | 
			
		||||
  version = "0.9.611";
 | 
			
		||||
  name = "lollypop-${version}";
 | 
			
		||||
 | 
			
		||||
  format = "other";
 | 
			
		||||
  doCheck = false;
 | 
			
		||||
@ -40,7 +40,7 @@ python3.pkgs.buildPythonApplication rec  {
 | 
			
		||||
    libsoup
 | 
			
		||||
  ];
 | 
			
		||||
 | 
			
		||||
  pythonPath = with python3.pkgs; [
 | 
			
		||||
  propagatedBuildInputs = with python3.pkgs; [
 | 
			
		||||
    beautifulsoup4
 | 
			
		||||
    gst-python
 | 
			
		||||
    pillow
 | 
			
		||||
@ -56,15 +56,15 @@ python3.pkgs.buildPythonApplication rec  {
 | 
			
		||||
  '';
 | 
			
		||||
 | 
			
		||||
  preFixup = ''
 | 
			
		||||
    buildPythonPath "$out/libexec/lollypop-sp $pythonPath"
 | 
			
		||||
    buildPythonPath "$out $propagatedBuildInputs"
 | 
			
		||||
    patchPythonScript "$out/libexec/lollypop-sp"
 | 
			
		||||
  '';
 | 
			
		||||
 | 
			
		||||
  meta = with stdenv.lib; {
 | 
			
		||||
    description = "A modern music player for GNOME";
 | 
			
		||||
    homepage    = https://wiki.gnome.org/Apps/Lollypop;
 | 
			
		||||
    license     = licenses.gpl3Plus;
 | 
			
		||||
    homepage = https://wiki.gnome.org/Apps/Lollypop;
 | 
			
		||||
    license = licenses.gpl3Plus;
 | 
			
		||||
    maintainers = with maintainers; [ worldofpeace ];
 | 
			
		||||
    platforms   = platforms.linux;
 | 
			
		||||
    platforms = platforms.linux;
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -2,11 +2,11 @@
 | 
			
		||||
 | 
			
		||||
pythonPackages.buildPythonApplication rec {
 | 
			
		||||
  pname = "Mopidy-Iris";
 | 
			
		||||
  version = "3.31.2";
 | 
			
		||||
  version = "3.31.3";
 | 
			
		||||
 | 
			
		||||
  src = pythonPackages.fetchPypi {
 | 
			
		||||
    inherit pname version;
 | 
			
		||||
    sha256 = "0639ib5nicrabckjd17wdmhl8n3822gc2p1bn0xv8mq70paspar6";
 | 
			
		||||
    sha256 = "060kvwlch2jgiriafly8y03fp8gpbw9xiwhq8ncdij390a03iz8n";
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  propagatedBuildInputs = [
 | 
			
		||||
 | 
			
		||||
@ -44,13 +44,13 @@ let
 | 
			
		||||
  ];
 | 
			
		||||
in stdenv.mkDerivation rec {
 | 
			
		||||
  name = "pulseeffects-${version}";
 | 
			
		||||
  version = "4.4.0";
 | 
			
		||||
  version = "4.4.1";
 | 
			
		||||
 | 
			
		||||
  src = fetchFromGitHub {
 | 
			
		||||
    owner = "wwmm";
 | 
			
		||||
    repo = "pulseeffects";
 | 
			
		||||
    rev = "v${version}";
 | 
			
		||||
    sha256 = "0bjzlqyvcp9hxaq07nqr14k9kvan5myaxb7ci30gz0fgayib85lv";
 | 
			
		||||
    sha256 = "0hb575h9hdknhwvhn5lak89ddavn4v5c0nipnv8dsfnmjhfli5qm";
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  nativeBuildInputs = [
 | 
			
		||||
 | 
			
		||||
@ -7,11 +7,11 @@
 | 
			
		||||
 | 
			
		||||
stdenv.mkDerivation rec {
 | 
			
		||||
  name = "deja-dup-${version}";
 | 
			
		||||
  version = "38.0";
 | 
			
		||||
  version = "38.1";
 | 
			
		||||
 | 
			
		||||
  src = fetchurl {
 | 
			
		||||
    url = "https://launchpad.net/deja-dup/${stdenv.lib.versions.major version}/${version}/+download/deja-dup-${version}.tar.xz";
 | 
			
		||||
    sha256 = "1l3sa24v0v6xf312h36jikfi8zyx6z3nmc7pjzgdp7l89gkdm65v";
 | 
			
		||||
    sha256 = "0wm7z72qbsljzsysxg8h5sbpg56ignn9mp8v3xynn12dv3gv6rba";
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  patches = [
 | 
			
		||||
 | 
			
		||||
@ -18,9 +18,9 @@ let
 | 
			
		||||
    sha256Hash = "05rjwvcph0wx0p0hai5z6n9lnyhk3i5yvbvhr51jc8s3k3b6jyi5";
 | 
			
		||||
  };
 | 
			
		||||
  latestVersion = { # canary & dev
 | 
			
		||||
    version = "3.4.0.6"; # "Android Studio 3.4 Canary 7"
 | 
			
		||||
    build = "183.5159543";
 | 
			
		||||
    sha256Hash = "0r685qqx4w1hwbd8jgrh7ks8bw9m7823ffhd3x6pl7j4b9hpc858";
 | 
			
		||||
    version = "3.4.0.7"; # "Android Studio 3.4 Canary 8"
 | 
			
		||||
    build = "183.5173923";
 | 
			
		||||
    sha256Hash = "0bf96c9db15rw1k1znz6yxhbrn9q990zy3pkq0nsirnqfpgllvpi";
 | 
			
		||||
  };
 | 
			
		||||
in rec {
 | 
			
		||||
  # Old alias
 | 
			
		||||
 | 
			
		||||
@ -3,14 +3,14 @@
 | 
			
		||||
let
 | 
			
		||||
  versions = {
 | 
			
		||||
    atom = {
 | 
			
		||||
      version = "1.32.1";
 | 
			
		||||
      sha256 = "1x22jbhvagqw9mvq0v7z4z09qp727vl0rkyvaxn98xnj9gvcfkq9";
 | 
			
		||||
      version = "1.33.0";
 | 
			
		||||
      sha256 = "0f6m6zwgz94m3q11ipyiliap3s5a3zlrg3ldjwkqnxjl6gwlxc2r";
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    atom-beta = {
 | 
			
		||||
      version = "1.33.0";
 | 
			
		||||
      beta = 1;
 | 
			
		||||
      sha256 = "0sf98apmb57msgr5p1xly0mffzn2s808nsfsmbisk4qqmm9fv2m3";
 | 
			
		||||
      version = "1.34.0";
 | 
			
		||||
      beta = 0;
 | 
			
		||||
      sha256 = "1xnrr4z55sj46hqr0il26sfs6s3knv60m340cw3rzzic271b3ifw";
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
@ -79,7 +79,7 @@ let
 | 
			
		||||
      description = "A hackable text editor for the 21st Century";
 | 
			
		||||
      homepage = https://atom.io/;
 | 
			
		||||
      license = licenses.mit;
 | 
			
		||||
      maintainers = with maintainers; [ offline nequissimus synthetica ysndr ];
 | 
			
		||||
      maintainers = with maintainers; [ offline nequissimus ysndr ];
 | 
			
		||||
      platforms = platforms.x86_64;
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
@ -2,14 +2,14 @@
 | 
			
		||||
 | 
			
		||||
stdenv.mkDerivation rec {
 | 
			
		||||
  pname = "ghostwriter";
 | 
			
		||||
  version = "1.7.3";
 | 
			
		||||
  version = "1.7.4";
 | 
			
		||||
  name = "${pname}-${version}";
 | 
			
		||||
 | 
			
		||||
  src = fetchFromGitHub {
 | 
			
		||||
    owner = "wereturtle";
 | 
			
		||||
    repo = pname;
 | 
			
		||||
    rev = "v${version}";
 | 
			
		||||
    sha256 = "1xkxd59rw2dn6xphgcl06zzmfgs1zna2w0pxrk0f49ywffvkvs72";
 | 
			
		||||
    sha256 = "1pqlr08z5syqcq5p282asxwzrrm7c1w94baxyb467swh8yp3fj5m";
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  nativeBuildInputs = [ qmake pkgconfig ];
 | 
			
		||||
 | 
			
		||||
@ -4,17 +4,17 @@ with stdenv.lib;
 | 
			
		||||
 | 
			
		||||
pythonPackages.buildPythonPackage rec {
 | 
			
		||||
  pname = "neovim-remote";
 | 
			
		||||
  version = "2.1.0";
 | 
			
		||||
  version = "2.1.1";
 | 
			
		||||
  disabled = !pythonPackages.isPy3k;
 | 
			
		||||
 | 
			
		||||
  src = fetchFromGitHub {
 | 
			
		||||
    owner = "mhinz";
 | 
			
		||||
    repo = "neovim-remote";
 | 
			
		||||
    rev = "v${version}";
 | 
			
		||||
    sha256 = "0gri4d8gg5hvywffvj8r123d06x006qhink7d54yk6lvplw64gyc";
 | 
			
		||||
    sha256 = "1hkzcc141imjin03wpfykw50k0vs7vj1lr09czb2hsyf937gyjqn";
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  propagatedBuildInputs = with pythonPackages; [ neovim psutil ];
 | 
			
		||||
  propagatedBuildInputs = with pythonPackages; [ pynvim psutil ];
 | 
			
		||||
 | 
			
		||||
  meta = {
 | 
			
		||||
    description = "A tool that helps controlling nvim processes from a terminal";
 | 
			
		||||
 | 
			
		||||
@ -16,7 +16,6 @@ let
 | 
			
		||||
    , withPython3 ? true,  extraPython3Packages ? (_: []) /* the function you would have passed to python.withPackages */
 | 
			
		||||
    , withNodeJs? false
 | 
			
		||||
    , withRuby ? true
 | 
			
		||||
    , withPyGUI ? false
 | 
			
		||||
    , vimAlias ? false
 | 
			
		||||
    , viAlias ? false
 | 
			
		||||
    , configure ? {}
 | 
			
		||||
@ -43,13 +42,13 @@ let
 | 
			
		||||
 | 
			
		||||
  pluginPythonPackages = getDeps "pythonDependencies" requiredPlugins;
 | 
			
		||||
  pythonEnv = pythonPackages.python.withPackages(ps:
 | 
			
		||||
        (if withPyGUI then [ ps.neovim_gui ] else [ ps.neovim ])
 | 
			
		||||
        [ ps.pynvim ]
 | 
			
		||||
        ++ (extraPythonPackagesFun ps)
 | 
			
		||||
        ++ (concatMap (f: f ps) pluginPythonPackages));
 | 
			
		||||
 | 
			
		||||
  pluginPython3Packages = getDeps "python3Dependencies" requiredPlugins;
 | 
			
		||||
  python3Env = python3Packages.python.withPackages (ps:
 | 
			
		||||
        [ ps.neovim ]
 | 
			
		||||
        [ ps.pynvim ]
 | 
			
		||||
        ++ (extraPython3PackagesFun ps)
 | 
			
		||||
        ++ (concatMap (f: f ps) pluginPython3Packages));
 | 
			
		||||
 | 
			
		||||
@ -88,10 +87,6 @@ let
 | 
			
		||||
        makeWrapper ${python3Env}/bin/python3 $out/bin/nvim-python3 --unset PYTHONPATH
 | 
			
		||||
    '' + optionalString withRuby ''
 | 
			
		||||
      ln -s ${rubyEnv}/bin/neovim-ruby-host $out/bin/nvim-ruby
 | 
			
		||||
    ''
 | 
			
		||||
      + optionalString withPyGUI ''
 | 
			
		||||
      makeWrapper "${pythonEnv}/bin/pynvim" "$out/bin/pynvim" \
 | 
			
		||||
        --prefix PATH : "$out/bin"
 | 
			
		||||
    '' + optionalString vimAlias ''
 | 
			
		||||
      ln -s $out/bin/nvim $out/bin/vim
 | 
			
		||||
    '' + optionalString viAlias ''
 | 
			
		||||
 | 
			
		||||
@ -9,13 +9,19 @@ stdenv.mkDerivation rec {
 | 
			
		||||
    if stdenv.hostPlatform.system == "i686-linux" then
 | 
			
		||||
      fetchurl {
 | 
			
		||||
        name = "sublimetext-2.0.2.tar.bz2";
 | 
			
		||||
        url = http://c758482.r82.cf2.rackcdn.com/Sublime%20Text%202.0.2.tar.bz2;
 | 
			
		||||
        url = [
 | 
			
		||||
          http://c758482.r82.cf2.rackcdn.com/Sublime%20Text%202.0.2.tar.bz2
 | 
			
		||||
          https://download.sublimetext.com/Sublime%20Text%202.0.2.tar.bz2
 | 
			
		||||
        ];
 | 
			
		||||
        sha256 = "026g5mppk28lzzzn9ibykcqkrd5msfmg0sc0z8w8jd7v3h28wcq7";
 | 
			
		||||
      }
 | 
			
		||||
    else
 | 
			
		||||
      fetchurl {
 | 
			
		||||
        name = "sublimetext-2.0.2.tar.bz2";
 | 
			
		||||
        url = http://c758482.r82.cf2.rackcdn.com/Sublime%20Text%202.0.2%20x64.tar.bz2;
 | 
			
		||||
        url = [
 | 
			
		||||
          http://c758482.r82.cf2.rackcdn.com/Sublime%20Text%202.0.2.tar.bz2
 | 
			
		||||
          https://download.sublimetext.com/Sublime%20Text%202.0.2%20x64.tar.bz2
 | 
			
		||||
        ];
 | 
			
		||||
        sha256 = "115b71nbv9mv8cz6bkjwpbdf2ywnjc1zy2d3080f6ck4sqqfvfh1";
 | 
			
		||||
      };
 | 
			
		||||
  buildCommand = ''
 | 
			
		||||
 | 
			
		||||
@ -1,4 +1,4 @@
 | 
			
		||||
{ stdenv, fetchgit
 | 
			
		||||
{ stdenv, fetchFromGitHub
 | 
			
		||||
, ncurses }:
 | 
			
		||||
 | 
			
		||||
stdenv.mkDerivation rec {
 | 
			
		||||
@ -6,20 +6,27 @@ stdenv.mkDerivation rec {
 | 
			
		||||
  name = "tecoc-git-${version}";
 | 
			
		||||
  version = "20150606";
 | 
			
		||||
 | 
			
		||||
  src = fetchgit {
 | 
			
		||||
    url = "https://github.com/blakemcbride/TECOC.git";
 | 
			
		||||
  src = fetchFromGitHub {
 | 
			
		||||
    owner = "blakemcbride";
 | 
			
		||||
    repo = "TECOC";
 | 
			
		||||
    rev = "d7dffdeb1dfb812e579d6d3b518545b23e1b50cb";
 | 
			
		||||
    sha256 = "11zfa73dlx71c0hmjz5n3wqcvk6082rpb4sss877nfiayisc0njj";
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  buildInputs = [ ncurses ];
 | 
			
		||||
 | 
			
		||||
  configurePhase = ''
 | 
			
		||||
    cp src/makefile.linux src/Makefile    
 | 
			
		||||
  '';
 | 
			
		||||
  buildPhase = ''
 | 
			
		||||
    make CC=${stdenv.cc}/bin/cc -C src/
 | 
			
		||||
  '';
 | 
			
		||||
  makefile = if stdenv.hostPlatform.isDarwin
 | 
			
		||||
  	     then "makefile.osx"
 | 
			
		||||
	     else if stdenv.hostPlatform.isFreeBSD
 | 
			
		||||
  	     then "makefile.bsd"
 | 
			
		||||
  	     else if stdenv.hostPlatform.isOpenBSD
 | 
			
		||||
  	     then "makefile.bsd"
 | 
			
		||||
  	     else if stdenv.hostPlatform.isWindows
 | 
			
		||||
  	     then "makefile.win"
 | 
			
		||||
	     else "makefile.linux"; # I think Linux is a safe default...
 | 
			
		||||
 | 
			
		||||
  makeFlags = [ "CC=${stdenv.cc}/bin/cc" "-C src/" ];
 | 
			
		||||
 | 
			
		||||
  installPhase = ''
 | 
			
		||||
    mkdir -p $out/bin $out/share/doc/${name} $out/lib/teco/macros
 | 
			
		||||
    cp src/tecoc $out/bin
 | 
			
		||||
@ -31,26 +38,26 @@ stdenv.mkDerivation rec {
 | 
			
		||||
     ln -s tecoc teco
 | 
			
		||||
     ln -s tecoc Inspect )
 | 
			
		||||
  '';
 | 
			
		||||
	
 | 
			
		||||
 | 
			
		||||
  meta = with stdenv.lib; {
 | 
			
		||||
    description = "A clone of the good old TECO editor";
 | 
			
		||||
    longDescription = ''
 | 
			
		||||
      For those who don't know: TECO is the acronym of Tape Editor and
 | 
			
		||||
      COrrector (because it was a paper tape edition tool in its debut 
 | 
			
		||||
      days). Now the acronym follows after Text Editor and Corrector, 
 | 
			
		||||
      or Text Editor Character-Oriented.
 | 
			
		||||
      
 | 
			
		||||
      TECO is a character-oriented text editor, originally developed
 | 
			
		||||
      bu Dan Murphy at MIT circa 1962. It is also a Turing-complete
 | 
			
		||||
      imperative interpreted programming language for text
 | 
			
		||||
      manipulation, done via user-loaded sets of macros. In fact, Emacs
 | 
			
		||||
      was born as a set of Editor MACroS for TECO.
 | 
			
		||||
      For those who don't know: TECO is the acronym of Tape Editor and COrrector
 | 
			
		||||
      (because it was a paper tape edition tool in its debut days). Now the
 | 
			
		||||
      acronym follows after Text Editor and Corrector, or Text Editor
 | 
			
		||||
      Character-Oriented.
 | 
			
		||||
 | 
			
		||||
      TECO is a character-oriented text editor, originally developed by Dan
 | 
			
		||||
      Murphy at MIT circa 1962. It is also a Turing-complete imperative
 | 
			
		||||
      interpreted programming language for text manipulation, done via
 | 
			
		||||
      user-loaded sets of macros. In fact, the venerable Emacs was born as a set
 | 
			
		||||
      of Editor MACroS for TECO.
 | 
			
		||||
 | 
			
		||||
      TECOC is a portable C implementation of TECO-11.
 | 
			
		||||
 '';
 | 
			
		||||
    homepage = https://github.com/blakemcbride/TECOC;
 | 
			
		||||
    license = {  url = https://github.com/blakemcbride/TECOC/tree/master/doc/readme-1st.txt; };
 | 
			
		||||
    maintainers = [ maintainers.AndersonTorres ];
 | 
			
		||||
    platforms = platforms.linux;
 | 
			
		||||
    platforms = platforms.unix;
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
# TODO: test in other platforms - especially Darwin
 | 
			
		||||
 | 
			
		||||
@ -2,14 +2,14 @@
 | 
			
		||||
 | 
			
		||||
stdenv.mkDerivation rec {
 | 
			
		||||
  pname = "texstudio";
 | 
			
		||||
  version = "2.12.10";
 | 
			
		||||
  version = "2.12.14";
 | 
			
		||||
  name = "${pname}-${version}";
 | 
			
		||||
 | 
			
		||||
  src = fetchFromGitHub {
 | 
			
		||||
    owner = "${pname}-org";
 | 
			
		||||
    repo = pname;
 | 
			
		||||
    rev = version;
 | 
			
		||||
    sha256 = "0mkx7fym41hwd7cdg31ji2hxlv3gxx0sa6bnap51ryxmq8sxdjhq";
 | 
			
		||||
    sha256 = "08vfhkgzhh1227wcvr5wwpnw0072c80nf2crhmxwh3jgjfgi538f";
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  nativeBuildInputs = [ qt5.qmake pkgconfig ];
 | 
			
		||||
 | 
			
		||||
@ -1,12 +1,12 @@
 | 
			
		||||
{ lib, fetchFromGitHub }:
 | 
			
		||||
rec {
 | 
			
		||||
  version = "8.1.0535";
 | 
			
		||||
  version = "8.1.0578";
 | 
			
		||||
 | 
			
		||||
  src = fetchFromGitHub {
 | 
			
		||||
    owner = "vim";
 | 
			
		||||
    repo = "vim";
 | 
			
		||||
    rev = "v${version}";
 | 
			
		||||
    sha256 = "0kgh213ca2qfrwdqfimrnhlxidjbrg26icxw00rivjiv1blii7ck";
 | 
			
		||||
    sha256 = "0sawqxp2737y6mga9da36qya47h0idnnaxblzpsx8clw002piyv2";
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  enableParallelBuilding = true;
 | 
			
		||||
 | 
			
		||||
@ -12,9 +12,9 @@ let
 | 
			
		||||
  }.${stdenv.hostPlatform.system};
 | 
			
		||||
 | 
			
		||||
  sha256 = {
 | 
			
		||||
    "i686-linux" = "0r19i3gg6iz8j7plb89c0k8r3wlh9vxbv7mwbssy0yvhid2af3ww";
 | 
			
		||||
    "x86_64-linux" = "1r66mjz4lgv3dk0rjb9p27ha9y7vj7xld9x9gqnjxqx9ify71r9i";
 | 
			
		||||
    "x86_64-darwin" = "0akr8675hnppxwr8xy5lr6rlqz8zg1fj823vks5mx3ssmd3sg189";
 | 
			
		||||
    "i686-linux" = "0bd2jdn67vnbhrsqy54bymz4di3fw3p18ni5j2wikqkl4d9h4jj1";
 | 
			
		||||
    "x86_64-linux" = "1zbnyff0q15xkvkrs14rfgyn6xb9v0xivcnbl8yckl71s45vb2l1";
 | 
			
		||||
    "x86_64-darwin" = "1qgzhpfzcwym1qyzx2v14336l106hzhs7ii84g356vxkm219x7kw";
 | 
			
		||||
  }.${stdenv.hostPlatform.system};
 | 
			
		||||
 | 
			
		||||
  archive_fmt = if stdenv.hostPlatform.system == "x86_64-darwin" then "zip" else "tar.gz";
 | 
			
		||||
@ -31,7 +31,7 @@ let
 | 
			
		||||
in
 | 
			
		||||
  stdenv.mkDerivation rec {
 | 
			
		||||
    name = "vscode-${version}";
 | 
			
		||||
    version = "1.29.1";
 | 
			
		||||
    version = "1.30.0";
 | 
			
		||||
 | 
			
		||||
    src = fetchurl {
 | 
			
		||||
      name = "VSCode_${version}_${plat}.${archive_fmt}";
 | 
			
		||||
 | 
			
		||||
@ -6,11 +6,11 @@ with stdenv.lib;
 | 
			
		||||
 | 
			
		||||
stdenv.mkDerivation rec {
 | 
			
		||||
  name = "feh-${version}";
 | 
			
		||||
  version = "3.0";
 | 
			
		||||
  version = "3.1.1";
 | 
			
		||||
 | 
			
		||||
  src = fetchurl {
 | 
			
		||||
    url = "https://feh.finalrewind.org/${name}.tar.bz2";
 | 
			
		||||
    sha256 = "00fwf8yz7k8vzd30ly5ndlj6ax9w85dkjzjnlk95vd0zdrf4wyxn";
 | 
			
		||||
    sha256 = "1sy8z6rv5sy1bhk3846hgfdy96wdi874yr2fnxfprks46qp29l31";
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  outputs = [ "out" "man" "doc" ];
 | 
			
		||||
 | 
			
		||||
@ -7,19 +7,19 @@ let
 | 
			
		||||
  custom_swig = fetchFromGitHub {
 | 
			
		||||
    owner = "baldurk";
 | 
			
		||||
    repo = "swig";
 | 
			
		||||
    rev = "renderdoc-modified-5";
 | 
			
		||||
    sha256 = "0ihrxbx56p5wn589fbbsns93fp91sypqdzfxdy7l7v9sf69a41mw";
 | 
			
		||||
    rev = "renderdoc-modified-6";
 | 
			
		||||
    sha256 = "00ykqlzx1k9iwqjlc54kfch7cnzsj53hxn7ql70dj3rxqzrnadc0";
 | 
			
		||||
  };
 | 
			
		||||
in
 | 
			
		||||
stdenv.mkDerivation rec {
 | 
			
		||||
  version = "1.1";
 | 
			
		||||
  version = "1.2";
 | 
			
		||||
  name = "renderdoc-${version}";
 | 
			
		||||
 | 
			
		||||
  src = fetchFromGitHub {
 | 
			
		||||
    owner = "baldurk";
 | 
			
		||||
    repo = "renderdoc";
 | 
			
		||||
    rev = "v${version}";
 | 
			
		||||
    sha256 = "0kb9m1dm0mnglqyh1srvl0f1bgjghxzbqarn0xfqw49wphqwhmcd";
 | 
			
		||||
    sha256 = "0s1q5d58x18yz3nf94pv5i1qd2hc0a4gdj4qkpcn8s6ms2x05pz4";
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  buildInputs = [
 | 
			
		||||
 | 
			
		||||
@ -1,8 +1,8 @@
 | 
			
		||||
diff --git a/src/akonadicontrol/agentmanager.cpp b/src/akonadicontrol/agentmanager.cpp
 | 
			
		||||
index 2e9f1acf4..ecc80afdc 100644
 | 
			
		||||
index d85c1a79b..8df02710c 100644
 | 
			
		||||
--- a/src/akonadicontrol/agentmanager.cpp
 | 
			
		||||
+++ b/src/akonadicontrol/agentmanager.cpp
 | 
			
		||||
@@ -84,12 +84,12 @@ AgentManager::AgentManager(bool verbose, QObject *parent)
 | 
			
		||||
@@ -78,12 +78,12 @@ AgentManager::AgentManager(bool verbose, QObject *parent)
 | 
			
		||||
     mStorageController = new Akonadi::ProcessControl;
 | 
			
		||||
     mStorageController->setShutdownTimeout(15 * 1000);   // the server needs more time for shutdown if we are using an internal mysqld
 | 
			
		||||
     connect(mStorageController, &Akonadi::ProcessControl::unableToStart, this, &AgentManager::serverFailure);
 | 
			
		||||
@ -15,8 +15,8 @@ index 2e9f1acf4..ecc80afdc 100644
 | 
			
		||||
-        mAgentServer->start(QStringLiteral("akonadi_agent_server"), serviceArgs, Akonadi::ProcessControl::RestartOnCrash);
 | 
			
		||||
+        mAgentServer->start(QLatin1String(NIX_OUT "/bin/akonadi_agent_server"), serviceArgs, Akonadi::ProcessControl::RestartOnCrash);
 | 
			
		||||
     }
 | 
			
		||||
 }
 | 
			
		||||
 
 | 
			
		||||
 #ifndef QT_NO_DEBUG
 | 
			
		||||
diff --git a/src/akonadicontrol/agentprocessinstance.cpp b/src/akonadicontrol/agentprocessinstance.cpp
 | 
			
		||||
index be1cc4afb..6d0c1d7e5 100644
 | 
			
		||||
--- a/src/akonadicontrol/agentprocessinstance.cpp
 | 
			
		||||
@ -31,7 +31,7 @@ index be1cc4afb..6d0c1d7e5 100644
 | 
			
		||||
     }
 | 
			
		||||
     return true;
 | 
			
		||||
diff --git a/src/server/storage/dbconfigmysql.cpp b/src/server/storage/dbconfigmysql.cpp
 | 
			
		||||
index a32e86602..48ea4e52e 100644
 | 
			
		||||
index 8b057b459..3fa4548ad 100644
 | 
			
		||||
--- a/src/server/storage/dbconfigmysql.cpp
 | 
			
		||||
+++ b/src/server/storage/dbconfigmysql.cpp
 | 
			
		||||
@@ -63,7 +63,6 @@ bool DbConfigMysql::init(QSettings &settings)
 | 
			
		||||
@ -121,7 +121,7 @@ index a32e86602..48ea4e52e 100644
 | 
			
		||||
     const QString actualConfig = StandardDirs::saveDir("data") + QLatin1String("/mysql.conf");
 | 
			
		||||
     if (globalConfig.isEmpty()) {
 | 
			
		||||
diff --git a/src/server/storage/dbconfigpostgresql.cpp b/src/server/storage/dbconfigpostgresql.cpp
 | 
			
		||||
index 60e6272f2..ad7cefbfe 100644
 | 
			
		||||
index 6b50ae50e..f94a8c5eb 100644
 | 
			
		||||
--- a/src/server/storage/dbconfigpostgresql.cpp
 | 
			
		||||
+++ b/src/server/storage/dbconfigpostgresql.cpp
 | 
			
		||||
@@ -58,7 +58,6 @@ bool DbConfigPostgresql::init(QSettings &settings)
 | 
			
		||||
@ -132,7 +132,7 @@ index 60e6272f2..ad7cefbfe 100644
 | 
			
		||||
     QString defaultInitDbPath;
 | 
			
		||||
     QString defaultPgData;
 | 
			
		||||
 
 | 
			
		||||
@@ -70,34 +69,7 @@ bool DbConfigPostgresql::init(QSettings &settings)
 | 
			
		||||
@@ -70,35 +69,7 @@ bool DbConfigPostgresql::init(QSettings &settings)
 | 
			
		||||
 
 | 
			
		||||
     mInternalServer = settings.value(QStringLiteral("QPSQL/StartServer"), defaultInternalServer).toBool();
 | 
			
		||||
     if (mInternalServer) {
 | 
			
		||||
@ -144,7 +144,8 @@ index 60e6272f2..ad7cefbfe 100644
 | 
			
		||||
-            postgresSearchPath << QStringLiteral(POSTGRES_PATH);
 | 
			
		||||
-        }
 | 
			
		||||
-#endif
 | 
			
		||||
-        postgresSearchPath << QStringLiteral("/usr/sbin")
 | 
			
		||||
-        postgresSearchPath << QStringLiteral("/usr/bin")
 | 
			
		||||
-                           << QStringLiteral("/usr/sbin")
 | 
			
		||||
-                           << QStringLiteral("/usr/local/sbin");
 | 
			
		||||
-        // Locale all versions in /usr/lib/postgresql (i.e. /usr/lib/postgresql/X.Y) in reversed
 | 
			
		||||
-        // sorted order, so we search from the newest one to the oldest.
 | 
			
		||||
@ -168,7 +169,7 @@ index 60e6272f2..ad7cefbfe 100644
 | 
			
		||||
         defaultHostName = Utils::preferredSocketDirectory(StandardDirs::saveDir("data", QStringLiteral("db_misc")));
 | 
			
		||||
         defaultPgData = StandardDirs::saveDir("data", QStringLiteral("db_data"));
 | 
			
		||||
     }
 | 
			
		||||
@@ -117,10 +89,7 @@ bool DbConfigPostgresql::init(QSettings &settings)
 | 
			
		||||
@@ -118,10 +89,7 @@ bool DbConfigPostgresql::init(QSettings &settings)
 | 
			
		||||
     mUserName = settings.value(QStringLiteral("User")).toString();
 | 
			
		||||
     mPassword = settings.value(QStringLiteral("Password")).toString();
 | 
			
		||||
     mConnectionOptions = settings.value(QStringLiteral("Options"), defaultOptions).toString();
 | 
			
		||||
@ -180,7 +181,7 @@ index 60e6272f2..ad7cefbfe 100644
 | 
			
		||||
     qCDebug(AKONADISERVER_LOG) << "Found pg_ctl:" << mServerPath;
 | 
			
		||||
     mInitDbPath = settings.value(QStringLiteral("InitDbPath"), defaultInitDbPath).toString();
 | 
			
		||||
     if (mInternalServer && mInitDbPath.isEmpty()) {
 | 
			
		||||
@@ -141,7 +110,6 @@ bool DbConfigPostgresql::init(QSettings &settings)
 | 
			
		||||
@@ -142,7 +110,6 @@ bool DbConfigPostgresql::init(QSettings &settings)
 | 
			
		||||
         settings.setValue(QStringLiteral("Port"), mHostPort);
 | 
			
		||||
     }
 | 
			
		||||
     settings.setValue(QStringLiteral("Options"), mConnectionOptions);
 | 
			
		||||
 | 
			
		||||
@ -165,7 +165,6 @@ let
 | 
			
		||||
      pim-sieve-editor = callPackage ./pim-sieve-editor.nix {};
 | 
			
		||||
      print-manager = callPackage ./print-manager.nix {};
 | 
			
		||||
      spectacle = callPackage ./spectacle.nix {};
 | 
			
		||||
      syndication = callPackage ./syndication.nix {};
 | 
			
		||||
      # Okteta was removed from kde applications and will now be released independently
 | 
			
		||||
      # Lets keep an alias for compatibility reasons
 | 
			
		||||
      inherit okteta;
 | 
			
		||||
 | 
			
		||||
@ -1 +1 @@
 | 
			
		||||
WGET_ARGS=( https://download.kde.org/stable/applications/18.08.1/ -A '*.tar.xz' )
 | 
			
		||||
WGET_ARGS=( https://download.kde.org/stable/applications/18.12.0/ -A '*.tar.xz' )
 | 
			
		||||
 | 
			
		||||
@ -5,7 +5,7 @@
 | 
			
		||||
  akonadi, akonadi-calendar, akonadi-contacts, akonadi-mime, akonadi-notes,
 | 
			
		||||
  kalarmcal, kcalutils, kcontacts, kdav, kdelibs4support, kidentitymanagement,
 | 
			
		||||
  kimap, kmailtransport, kmbox, kmime, knotifications, knotifyconfig,
 | 
			
		||||
  pimcommon, qtwebengine, libkgapi
 | 
			
		||||
  pimcommon, qtwebengine, libkgapi, qtspeech
 | 
			
		||||
}:
 | 
			
		||||
 | 
			
		||||
mkDerivation {
 | 
			
		||||
@ -19,7 +19,7 @@ mkDerivation {
 | 
			
		||||
    akonadi akonadi-calendar akonadi-contacts akonadi-mime akonadi-notes
 | 
			
		||||
    kalarmcal kcalutils kcontacts kdav kdelibs4support kidentitymanagement kimap
 | 
			
		||||
    kmailtransport kmbox kmime knotifications knotifyconfig qtwebengine
 | 
			
		||||
    pimcommon libkgapi
 | 
			
		||||
    pimcommon libkgapi qtspeech
 | 
			
		||||
  ];
 | 
			
		||||
  # Attempts to build some files before dependencies have been generated
 | 
			
		||||
  enableParallelBuilding = false;
 | 
			
		||||
 | 
			
		||||
@ -1,7 +1,7 @@
 | 
			
		||||
{
 | 
			
		||||
  mkDerivation, lib, kdepimTeam,
 | 
			
		||||
  extra-cmake-modules, kdoctools,
 | 
			
		||||
  kmime, qtbase,
 | 
			
		||||
  kmime, qtbase, kcodecs
 | 
			
		||||
}:
 | 
			
		||||
 | 
			
		||||
mkDerivation {
 | 
			
		||||
@ -11,6 +11,6 @@ mkDerivation {
 | 
			
		||||
    maintainers = kdepimTeam;
 | 
			
		||||
  };
 | 
			
		||||
  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
 | 
			
		||||
  buildInputs = [ kmime qtbase ];
 | 
			
		||||
  buildInputs = [ kmime qtbase kcodecs ];
 | 
			
		||||
  outputs = [ "out" "dev" ];
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -2,7 +2,8 @@
 | 
			
		||||
  mkDerivation, lib, kdepimTeam,
 | 
			
		||||
  extra-cmake-modules, kdoctools,
 | 
			
		||||
  grantlee, kcodecs, kconfigwidgets, kemoticons, ki18n, kiconthemes, kio,
 | 
			
		||||
  kdesignerplugin, ktextwidgets, sonnet, syntax-highlighting, qttools,
 | 
			
		||||
  kdesignerplugin, ktextwidgets, sonnet, syntax-highlighting, qttools, 
 | 
			
		||||
  qtspeech
 | 
			
		||||
}:
 | 
			
		||||
 | 
			
		||||
mkDerivation {
 | 
			
		||||
@ -14,7 +15,7 @@ mkDerivation {
 | 
			
		||||
  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
 | 
			
		||||
  buildInputs = [
 | 
			
		||||
    grantlee kcodecs kconfigwidgets kemoticons ki18n kiconthemes kio kdesignerplugin
 | 
			
		||||
    sonnet syntax-highlighting qttools
 | 
			
		||||
    sonnet syntax-highlighting qttools qtspeech
 | 
			
		||||
  ];
 | 
			
		||||
  propagatedBuildInputs = [ ktextwidgets ];
 | 
			
		||||
  outputs = [ "out" "dev" ];
 | 
			
		||||
 | 
			
		||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@ -1,16 +0,0 @@
 | 
			
		||||
{
 | 
			
		||||
  mkDerivation, lib, kdepimTeam,
 | 
			
		||||
  extra-cmake-modules, kdoctools,
 | 
			
		||||
  kio
 | 
			
		||||
}:
 | 
			
		||||
 | 
			
		||||
mkDerivation {
 | 
			
		||||
  name = "syndication";
 | 
			
		||||
  meta = {
 | 
			
		||||
    license = with lib.licenses; [ gpl2 lgpl21 fdl12 ];
 | 
			
		||||
    maintainers = kdepimTeam;
 | 
			
		||||
  };
 | 
			
		||||
  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
 | 
			
		||||
  propagatedBuildInputs = [ kio ];
 | 
			
		||||
  outputs = [ "out" "dev" ];
 | 
			
		||||
}
 | 
			
		||||
@ -1,37 +0,0 @@
 | 
			
		||||
{ stdenv, go, fetchFromGitHub }:
 | 
			
		||||
 | 
			
		||||
stdenv.mkDerivation rec {
 | 
			
		||||
  name = "acbuild-${version}";
 | 
			
		||||
  version = "0.4.0";
 | 
			
		||||
 | 
			
		||||
  src = fetchFromGitHub {
 | 
			
		||||
    owner = "appc";
 | 
			
		||||
    repo = "acbuild";
 | 
			
		||||
    rev = "v${version}";
 | 
			
		||||
    sha256 = "0s81xlaw75d05b4cidxml978hnxak8parwpnk9clanwqjbj66c7x";
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  buildInputs = [ go ];
 | 
			
		||||
 | 
			
		||||
  patchPhase = ''
 | 
			
		||||
    sed -i -e 's|\git describe --dirty|echo "${version}"|' build
 | 
			
		||||
  '';
 | 
			
		||||
 | 
			
		||||
  buildPhase = ''
 | 
			
		||||
    patchShebangs build
 | 
			
		||||
    ./build
 | 
			
		||||
  '';
 | 
			
		||||
 | 
			
		||||
  installPhase = ''
 | 
			
		||||
    mkdir -p $out
 | 
			
		||||
    mv bin $out
 | 
			
		||||
  '';
 | 
			
		||||
 | 
			
		||||
  meta = with stdenv.lib; {
 | 
			
		||||
    description = "A build tool for ACIs";
 | 
			
		||||
    homepage = https://github.com/appc/acbuild;
 | 
			
		||||
    license = licenses.asl20;
 | 
			
		||||
    maintainers = with maintainers; [ dgonyeo ];
 | 
			
		||||
    platforms = platforms.linux;
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
@ -1,5 +1,5 @@
 | 
			
		||||
{ stdenv, fetchFromGitHub, qtbase, qtquick1, qmltermwidget,
 | 
			
		||||
qtquickcontrols, qtgraphicaleffects, qmake }:
 | 
			
		||||
{ stdenv, fetchFromGitHub, qtbase, qtquick1, qmltermwidget
 | 
			
		||||
, qtquickcontrols, qtgraphicaleffects, qmake }:
 | 
			
		||||
 | 
			
		||||
stdenv.mkDerivation rec {
 | 
			
		||||
  version = "1.0.1";
 | 
			
		||||
@ -25,6 +25,8 @@ stdenv.mkDerivation rec {
 | 
			
		||||
    mv $out/usr/share $out/share
 | 
			
		||||
    mv $out/usr/bin $out/bin
 | 
			
		||||
    rmdir $out/usr
 | 
			
		||||
  '' + stdenv.lib.optionalString stdenv.isDarwin ''
 | 
			
		||||
    ln -s $out/bin/cool-retro-term.app/Contents/MacOS/cool-retro-term $out/bin/cool-retro-term
 | 
			
		||||
  '';
 | 
			
		||||
 | 
			
		||||
  enableParallelBuilding = true;
 | 
			
		||||
@ -37,8 +39,8 @@ stdenv.mkDerivation rec {
 | 
			
		||||
      eye-candy, customizable, and reasonably lightweight.
 | 
			
		||||
    '';
 | 
			
		||||
    homepage = https://github.com/Swordfish90/cool-retro-term;
 | 
			
		||||
    license = with stdenv.lib.licenses; [ gpl2 gpl3 ];
 | 
			
		||||
    platforms = stdenv.lib.platforms.linux;
 | 
			
		||||
    license = stdenv.lib.licenses.gpl3Plus;
 | 
			
		||||
    platforms = with stdenv.lib.platforms; linux ++ darwin;
 | 
			
		||||
    maintainers = with stdenv.lib.maintainers; [ skeidel ];
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -5,13 +5,13 @@
 | 
			
		||||
 | 
			
		||||
stdenv.mkDerivation rec {
 | 
			
		||||
  name = "CopyQ-${version}";
 | 
			
		||||
  version = "3.7.0";
 | 
			
		||||
  version = "3.7.1";
 | 
			
		||||
 | 
			
		||||
  src  = fetchFromGitHub {
 | 
			
		||||
    owner = "hluk";
 | 
			
		||||
    repo = "CopyQ";
 | 
			
		||||
    rev = "v${version}";
 | 
			
		||||
    sha256 = "1dm02l1ry7ndn283774nzmg89wy1933f4iyf6n02p152zgx4llyf";
 | 
			
		||||
    sha256 = "0b3lrhrffvq46n9xc0lzbxhhn1lzmq2lrijjdwizc52458d6h90y";
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  nativeBuildInputs = [ cmake ];
 | 
			
		||||
 | 
			
		||||
@ -7,7 +7,7 @@
 | 
			
		||||
 | 
			
		||||
stdenv.mkDerivation rec {
 | 
			
		||||
  name = "dbeaver-ce-${version}";
 | 
			
		||||
  version = "5.2.5";
 | 
			
		||||
  version = "5.3.0";
 | 
			
		||||
 | 
			
		||||
  desktopItem = makeDesktopItem {
 | 
			
		||||
    name = "dbeaver";
 | 
			
		||||
@ -30,7 +30,7 @@ stdenv.mkDerivation rec {
 | 
			
		||||
 | 
			
		||||
  src = fetchurl {
 | 
			
		||||
    url = "https://dbeaver.io/files/${version}/dbeaver-ce-${version}-linux.gtk.x86_64.tar.gz";
 | 
			
		||||
    sha256 = "0xjggjq2brhi9x3i4d7hqfi18cd8czs6rzvihvspfxaqilsai0dm";
 | 
			
		||||
    sha256 = "1gn52bffjn2fw9yhi1rv4iy9dfdn5qxc51gv6qri5g0c8pblvh7m";
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  installPhase = ''
 | 
			
		||||
 | 
			
		||||
@ -7,14 +7,14 @@ let
 | 
			
		||||
in
 | 
			
		||||
 | 
			
		||||
python3Packages.buildPythonApplication rec {
 | 
			
		||||
  version = "3.3.1";
 | 
			
		||||
  version = "3.3.2";
 | 
			
		||||
  name = "electron-cash-${version}";
 | 
			
		||||
 | 
			
		||||
  src = fetchurl {
 | 
			
		||||
    url = "https://electroncash.org/downloads/${version}/win-linux/ElectronCash-${version}.tar.gz";
 | 
			
		||||
    # Verified using official SHA-1 and signature from
 | 
			
		||||
    # https://github.com/fyookball/keys-n-hashes
 | 
			
		||||
    sha256 = "1jdy89rfdwc2jadx3rqj5yvynpcn90cx6482ax9f1cj9gfxp9j2b";
 | 
			
		||||
    sha256 = "4538044cfaa4f87a847635849e0733f32b183ac79abbd2797689c86dc3cb0d53";
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  propagatedBuildInputs = with python3Packages; [
 | 
			
		||||
@ -29,7 +29,7 @@ python3Packages.buildPythonApplication rec {
 | 
			
		||||
    pysocks
 | 
			
		||||
    qrcode
 | 
			
		||||
    requests
 | 
			
		||||
    tlslite
 | 
			
		||||
    tlslite-ng
 | 
			
		||||
 | 
			
		||||
    # plugins
 | 
			
		||||
    keepkey
 | 
			
		||||
 | 
			
		||||
@ -22,7 +22,7 @@ python2Packages.buildPythonApplication rec {
 | 
			
		||||
    qrcode
 | 
			
		||||
    requests
 | 
			
		||||
    pyaes
 | 
			
		||||
    tlslite
 | 
			
		||||
    tlslite-ng
 | 
			
		||||
    x11_hash
 | 
			
		||||
    mnemonic
 | 
			
		||||
    jsonrpclib
 | 
			
		||||
 | 
			
		||||
@ -35,7 +35,7 @@ python3Packages.buildPythonApplication rec {
 | 
			
		||||
    qdarkstyle
 | 
			
		||||
    qrcode
 | 
			
		||||
    requests
 | 
			
		||||
    tlslite
 | 
			
		||||
    tlslite-ng
 | 
			
		||||
    typing
 | 
			
		||||
 | 
			
		||||
    # plugins
 | 
			
		||||
 | 
			
		||||
@ -1,4 +1,4 @@
 | 
			
		||||
{ stdenv, fetchFromGitHub, pkgconfig
 | 
			
		||||
{ stdenv, fetchFromGitHub, fetchpatch, pkgconfig
 | 
			
		||||
, bzip2, curl, expat, fribidi, libunibreak, sqlite, zlib
 | 
			
		||||
, uiTarget ? if !stdenv.isDarwin then "desktop" else "macosx"
 | 
			
		||||
, uiType ? if !stdenv.isDarwin then "qt4" else "cocoa"
 | 
			
		||||
@ -25,7 +25,14 @@ stdenv.mkDerivation {
 | 
			
		||||
    sha256 = "0lzafk02mv0cf2l2a61q5y4743zi913byik4bw1ix0gr1drnsa7y";
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  patches = [ ./typecheck.patch ];
 | 
			
		||||
  patches = [
 | 
			
		||||
    ./typecheck.patch
 | 
			
		||||
    (fetchpatch {
 | 
			
		||||
      name = "curl-7_62.diff"; # see https://github.com/geometer/FBReader/pull/311
 | 
			
		||||
      url = "https://github.com/geometer/FBReader/commit/b7c78e965d06f780.diff";
 | 
			
		||||
      sha256 = "1dgnx9wps7hcf8fkidc7037vcf92fr3ccnjx7bgxm9x02j0hngjg";
 | 
			
		||||
    })
 | 
			
		||||
  ];
 | 
			
		||||
 | 
			
		||||
  postPatch = ''
 | 
			
		||||
    cat << EOF > makefiles/target.mk
 | 
			
		||||
 | 
			
		||||
@ -33,7 +33,7 @@ stdenv.mkDerivation rec {
 | 
			
		||||
    description = "Gnuradio block for gsm";
 | 
			
		||||
    homepage = https://github.com/ptrkrysik/gr-gsm;
 | 
			
		||||
    license = licenses.gpl3Plus;
 | 
			
		||||
    platforms = platforms.linux ++ platforms.darwin;
 | 
			
		||||
    platforms = platforms.linux;
 | 
			
		||||
    maintainers = with maintainers; [ mog ];
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -32,7 +32,7 @@ in stdenv.mkDerivation rec {
 | 
			
		||||
    description = "Gnuradio source and sink blocks for LimeSDR";
 | 
			
		||||
    homepage = https://wiki.myriadrf.org/Gr-limesdr_Plugin_for_GNURadio;
 | 
			
		||||
    license = licenses.mit;
 | 
			
		||||
    platforms = platforms.linux ++ platforms.darwin;
 | 
			
		||||
    platforms = platforms.linux;
 | 
			
		||||
    maintainers = [ maintainers.markuskowa ];
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -1,13 +1,14 @@
 | 
			
		||||
{ stdenv, fetchgit, cmake, pkgconfig, libusb, fftwSinglePrec }:
 | 
			
		||||
{ stdenv, fetchFromGitHub, cmake, pkgconfig, libusb, fftwSinglePrec }:
 | 
			
		||||
 | 
			
		||||
stdenv.mkDerivation rec {
 | 
			
		||||
  name = "hackrf-${version}";
 | 
			
		||||
  version = "2017.02.1";
 | 
			
		||||
  version = "2018.01.1";
 | 
			
		||||
 | 
			
		||||
  src = fetchgit {
 | 
			
		||||
    url = "git://github.com/mossmann/hackrf";
 | 
			
		||||
    rev = "refs/tags/v${version}";
 | 
			
		||||
    sha256 = "16hd61icvzaciv7s9jpgm9c8q6m4mwvj97gxrb20sc65p5gjb7hv";
 | 
			
		||||
  src = fetchFromGitHub {
 | 
			
		||||
    owner = "mossmann";
 | 
			
		||||
    repo = "hackrf";
 | 
			
		||||
    rev = "v${version}";
 | 
			
		||||
    sha256 = "0idh983xh6gndk9kdgx5nzz76x3mxb42b02c5xvdqahadsfx3b9w";
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  nativeBuildInputs = [ pkgconfig ];
 | 
			
		||||
 | 
			
		||||
@ -2,12 +2,12 @@
 | 
			
		||||
 | 
			
		||||
stdenv.mkDerivation rec {
 | 
			
		||||
  name = "ipmicfg-${version}";
 | 
			
		||||
  version = "1.28.0";
 | 
			
		||||
  buildVersion = "180302";
 | 
			
		||||
  version = "1.29.0";
 | 
			
		||||
  buildVersion = "181029";
 | 
			
		||||
 | 
			
		||||
  src = fetchzip {
 | 
			
		||||
    url = "ftp://ftp.supermicro.com/utility/IPMICFG/IPMICFG_${version}_build.${buildVersion}.zip";
 | 
			
		||||
    sha256 = "0hw853cwaaxmxy1sa3m7l9gqalwpbbvp4ghk8inr7dzwxjljmr02";
 | 
			
		||||
    sha256 = "18nljs4xg6hffahyd0d5zlg1jhbwl7zr9ym925bkzwcnrkgqs2v3";
 | 
			
		||||
    extraPostFetch = "chmod u+rwX,go-rwx+X $out/";
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -2,11 +2,11 @@
 | 
			
		||||
 | 
			
		||||
stdenv.mkDerivation rec {
 | 
			
		||||
  name = "josm-${version}";
 | 
			
		||||
  version = "14382";
 | 
			
		||||
  version = "14460";
 | 
			
		||||
 | 
			
		||||
  src = fetchurl {
 | 
			
		||||
    url = "https://josm.openstreetmap.de/download/josm-snapshot-${version}.jar";
 | 
			
		||||
    sha256 = "1a2nx9jr1fvw95gdvl9kj3z0cs6ndafm0k4l0lwfx9p9qn4lgzjg";
 | 
			
		||||
    sha256 = "1j95319dvj4cwi1af94n1p8m1z1191j1jx6x06l4vz8bcjxaaqf5";
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  buildInputs = [ jdk11 makeWrapper ];
 | 
			
		||||
 | 
			
		||||
@ -3,12 +3,12 @@
 | 
			
		||||
 | 
			
		||||
mkDerivation rec {
 | 
			
		||||
  pname = "latte-dock";
 | 
			
		||||
  version = "0.8.2";
 | 
			
		||||
  version = "0.8.3";
 | 
			
		||||
  name = "${pname}-${version}";
 | 
			
		||||
 | 
			
		||||
  src = fetchurl {
 | 
			
		||||
    url = "https://download.kde.org/stable/${pname}/${name}.tar.xz";
 | 
			
		||||
    sha256 = "1acwgxg9swmazi9bg5a0iyyin07h2gvp3mhbn6cfqqhpmndqxfdx";
 | 
			
		||||
    sha256 = "1jgg1ag8sxrkif1bqgz5pizn1xmiljas00rqcskszx10j0595mnk";
 | 
			
		||||
    name = "${name}.tar.xz";
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -1,16 +1,16 @@
 | 
			
		||||
{ stdenv, fetchFromGitHub, autoreconfHook, pkgconfig
 | 
			
		||||
, pcsclite, talloc, python2
 | 
			
		||||
, pcsclite, talloc, python2, gnutls
 | 
			
		||||
}:
 | 
			
		||||
 | 
			
		||||
stdenv.mkDerivation rec {
 | 
			
		||||
  name = "libosmocore-${version}";
 | 
			
		||||
  version = "0.9.6";
 | 
			
		||||
  version = "0.12.1";
 | 
			
		||||
 | 
			
		||||
  src = fetchFromGitHub {
 | 
			
		||||
    owner = "osmocom";
 | 
			
		||||
    repo = "libosmocore";
 | 
			
		||||
    rev = "3cc757df1822114bf446dc2d5f6a95da92321a25";
 | 
			
		||||
    sha256 = "0dk7065qcy2kjra0p8q2124p73jcyvvzz3cmhid1kx5scyxmr017";
 | 
			
		||||
    rev = version;
 | 
			
		||||
    sha256 = "140c9jii0qs00s50kji1znc2339s22x8sz259x4pj35rrjzyyjgp";
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  propagatedBuildInputs = [
 | 
			
		||||
@ -22,7 +22,7 @@ stdenv.mkDerivation rec {
 | 
			
		||||
  ];
 | 
			
		||||
 | 
			
		||||
  buildInputs = [
 | 
			
		||||
    pcsclite python2
 | 
			
		||||
    pcsclite python2 gnutls
 | 
			
		||||
  ];
 | 
			
		||||
 | 
			
		||||
  enableParallelBuilding = true;
 | 
			
		||||
@ -31,7 +31,7 @@ stdenv.mkDerivation rec {
 | 
			
		||||
    description = "libosmocore";
 | 
			
		||||
    homepage = https://github.com/osmocom/libosmocore;
 | 
			
		||||
    license = licenses.gpl2Plus;
 | 
			
		||||
    platforms = platforms.linux ++ platforms.darwin;
 | 
			
		||||
    platforms = platforms.linux;
 | 
			
		||||
    maintainers = with maintainers; [ mog ];
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -2,11 +2,11 @@
 | 
			
		||||
, desktop-file-utils, libSM, imagemagick }:
 | 
			
		||||
 | 
			
		||||
stdenv.mkDerivation rec {
 | 
			
		||||
  version = "18.08.1";
 | 
			
		||||
  version = "18.12";
 | 
			
		||||
  name = "mediainfo-gui-${version}";
 | 
			
		||||
  src = fetchurl {
 | 
			
		||||
    url = "https://mediaarea.net/download/source/mediainfo/${version}/mediainfo_${version}.tar.xz";
 | 
			
		||||
    sha256 = "0rq2dczjq26g5i0ac8px7xmxjvqq4h0rzd97fy5824yb2c5ksxs9";
 | 
			
		||||
    sha256 = "01pk57ff297lifm3g2hrbmfmchgyy5rir8103n2j3l0dkn2i0g3d";
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  nativeBuildInputs = [ autoreconfHook pkgconfig ];
 | 
			
		||||
 | 
			
		||||
@ -1,6 +1,6 @@
 | 
			
		||||
{ stdenv, fetchFromGitHub, autoreconfHook, bison, flex, pkgconfig
 | 
			
		||||
, libuuid, cppunit, protobuf3_1, zlib, avahi, libmicrohttpd
 | 
			
		||||
, perl, python3, python3Packages
 | 
			
		||||
, perl, python36 # Replace by python3 after the next update
 | 
			
		||||
}:
 | 
			
		||||
 | 
			
		||||
stdenv.mkDerivation rec {
 | 
			
		||||
@ -15,10 +15,10 @@ stdenv.mkDerivation rec {
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  nativeBuildInputs = [ autoreconfHook bison flex pkgconfig perl ];
 | 
			
		||||
  buildInputs = [ libuuid cppunit protobuf3_1 zlib avahi libmicrohttpd python3 ];
 | 
			
		||||
  buildInputs = [ libuuid cppunit protobuf3_1 zlib avahi libmicrohttpd python36 ];
 | 
			
		||||
  propagatedBuildInputs = [
 | 
			
		||||
    (python3Packages.protobuf.override { protobuf = protobuf3_1; })
 | 
			
		||||
    python3Packages.numpy
 | 
			
		||||
    (python36.pkgs.protobuf.override { protobuf = protobuf3_1; })
 | 
			
		||||
    python36.pkgs.numpy
 | 
			
		||||
  ];
 | 
			
		||||
 | 
			
		||||
  configureFlags = [ "--enable-python-libs" ];
 | 
			
		||||
 | 
			
		||||
@ -33,6 +33,9 @@ stdenv.mkDerivation rec {
 | 
			
		||||
    "INTROSPECTION_TYPELIBDIR=$(out)/lib/girepository-1.0"
 | 
			
		||||
  ];
 | 
			
		||||
 | 
			
		||||
  # Make plank's application launcher hidden in Pantheon
 | 
			
		||||
  patches = [ ./hide-in-pantheon.patch ];
 | 
			
		||||
 | 
			
		||||
  postPatch = ''
 | 
			
		||||
    substituteInPlace ./configure \
 | 
			
		||||
      --replace "/usr/bin/file" "${file}/bin/file"
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										9
									
								
								pkgs/applications/misc/plank/hide-in-pantheon.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								pkgs/applications/misc/plank/hide-in-pantheon.patch
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,9 @@
 | 
			
		||||
diff --git a/data/plank.desktop.in b/data/plank.desktop.in
 | 
			
		||||
index 330c3a4..e1bdf5f 100644
 | 
			
		||||
--- a/data/plank.desktop.in
 | 
			
		||||
+++ b/data/plank.desktop.in
 | 
			
		||||
@@ -8,3 +8,4 @@ Exec=plank
 | 
			
		||||
 Icon=plank
 | 
			
		||||
 Terminal=false
 | 
			
		||||
 NoDisplay=false
 | 
			
		||||
+NotShowIn=Pantheon;
 | 
			
		||||
@ -34,7 +34,7 @@ stdenv.mkDerivation rec {
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    meta = with stdenv.lib; {
 | 
			
		||||
      description = "A fast and easy-to-use tool for creatin status bars.";
 | 
			
		||||
      description = "A fast and easy-to-use tool for creating status bars";
 | 
			
		||||
      longDescription = ''
 | 
			
		||||
        Polybar aims to help users build beautiful and highly customizable
 | 
			
		||||
        status bars for their desktop environment, without the need of
 | 
			
		||||
 | 
			
		||||
@ -26,13 +26,7 @@ stdenv.mkDerivation rec {
 | 
			
		||||
    grep -q "Requires:" "$pcfile" && { echo "Upstream has added 'Requires:' in $(basename "$pcfile"); update nix expression."; exit 1; }
 | 
			
		||||
    echo "Requires: libusb-1.0" >> "$pcfile"
 | 
			
		||||
  '';
 | 
			
		||||
  patches = lib.optionals stdenv.isDarwin [
 | 
			
		||||
    (fetchpatch {
 | 
			
		||||
      name = "linker-fix.patch";
 | 
			
		||||
      url = "https://github.com/lukeadams/rtl-sdr/commit/7a66dcf268305b5aa507d1756799942c74549b72.patch";
 | 
			
		||||
      sha256 = "0cn9fyf4ay4i3shvxj1ivgyxjvfm401irk560jdjl594nzadrcsl";
 | 
			
		||||
    })
 | 
			
		||||
  ];
 | 
			
		||||
 | 
			
		||||
  meta = with stdenv.lib; {
 | 
			
		||||
    description = "Turns your Realtek RTL2832 based DVB dongle into a SDR receiver";
 | 
			
		||||
    homepage = http://sdr.osmocom.org/trac/wiki/rtl-sdr;
 | 
			
		||||
 | 
			
		||||
@ -4,7 +4,7 @@
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
let
 | 
			
		||||
  version = "0.6.3";
 | 
			
		||||
  version = "0.6.5";
 | 
			
		||||
  sqlGda = libgda.override {
 | 
			
		||||
    mysqlSupport = true;
 | 
			
		||||
    postgresSupport = true;
 | 
			
		||||
@ -17,7 +17,7 @@ in stdenv.mkDerivation rec {
 | 
			
		||||
    owner = "Alecaddd";
 | 
			
		||||
    repo = "sequeler";
 | 
			
		||||
    rev = "v${version}";
 | 
			
		||||
    sha256 = "14a0i9y003m4pvdfp4ax7jfxvyzvyfg45zhln44rm08rfngb0f7k";
 | 
			
		||||
    sha256 = "18d0dwrsn69fx1lwm6ihhk2r4996pxiy4hfv608gc1kl4s4f4sqp";
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  nativeBuildInputs = [ meson ninja pkgconfig vala gobject-introspection gettext wrapGAppsHook python3 desktop-file-utils ];
 | 
			
		||||
 | 
			
		||||
Some files were not shown because too many files have changed in this diff Show More
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user