Skip to content

Commit

Permalink
Cut over to new style
Browse files Browse the repository at this point in the history
  • Loading branch information
thomasjm committed Sep 17, 2024
1 parent 95777bf commit cbbb0e4
Show file tree
Hide file tree
Showing 7 changed files with 88 additions and 175 deletions.
85 changes: 27 additions & 58 deletions codedown.nix
Original file line number Diff line number Diff line change
Expand Up @@ -10,84 +10,53 @@ let

callPackage = pkgsStable.callPackage;

# Languages
# First argument controls whether attributes get filtered to the valid ones.
# This can be expensive to evaluate for languages like Haskell where there are tons of
# Stackage snapshots and one nix file for each. So, we don't bother with that when evaluating
# the languages attrset normally--only when building the languagesSearcher.
languagesFn = filterToValid: pkgsStable.lib.zipAttrsWith (n: v: pkgsStable.lib.head v) [
(callPackage ./languages/bash {})
(callPackage ./languages/clojure {})
(callPackage ./languages/coq {})
(pkgsMaster.callPackage ./languages/cpp {})
(callPackage ./languages/go {})
(pkgsMaster.callPackage ./languages/haskell {})
(callPackage ./languages/julia {})
(callPackage ./languages/octave {})
(callPackage ./languages/postgres {})
(callPackage ./languages/python {
poetry2nix = import (pkgsStable.fetchFromGitHub {
owner = "nix-community";
repo = "poetry2nix";
rev = "78fc8882411c29c8eb5f162b09fcafe08b8b03a3";
sha256 = "1dfgm286c48ac6yrk16xz41d0rsg6bv08122ngy420b0z88la9nj";
}) {
pkgs = pkgsStable;
};
})
(callPackage ./languages/r {})
(pkgsMaster.callPackage ./languages/ruby {})
(pkgsMaster.callPackage ./languages/rust {})
];

lib = pkgsStable.lib;

in

rec {
spellchecker = pkgsUnstable.callPackage ./language_servers/markdown-spellcheck-lsp {};

languages = languagesFn false;

shells = {
zsh = callPackage ./shells/zsh {};
fish = callPackage ./shells/fish {};
bash = callPackage ./shells/bash {};
};

exporters = {
nbconvert-small = pkgsMaster.callPackage ./exporters/nbconvert.nix { texliveScheme = pkgsStable.texlive.combined.scheme-small; };
nbconvert-large = pkgsMaster.callPackage ./exporters/nbconvert.nix { texliveScheme = pkgsStable.texlive.combined.scheme-full; };
};

testing = {
builds-forever = pkgsMaster.callPackage ./misc/builds-forever.nix {};
};

# Exported so clients can build searchers for other package sets, like "codedown.searcher nixpkgs"
searcher = common.searcher;

codedownSearcher = common.searcher' {
# Note that we deliberately don't include "testing" packages in the searcher
packages = languagesFn true
// (lib.mapAttrs' (n: v: lib.nameValuePair ("shells." + n) v) shells)
// (lib.mapAttrs' (n: v: lib.nameValuePair ("exporters." + n) v) exporters)
// { inherit spellchecker; };
};

languagesIcons = common.searcherIcons' {
packages = languagesFn true;
packageMustBeDerivation = false;
};

settingsSchemas = lib.mapAttrs (attr: value:
common.safeEval (lib.attrByPath ["meta" "settingsSchema"] [] value)
) languages;

mkCodeDownEnvironment = callPackage ./codedown/mkCodeDownEnvironment.nix {
inherit requiredPackages languages;
evaluateConfig = callPackage ./codedown/evaluate-config.nix {
pkgs = pkgsStable;
};

everythingConfig = let
base = evaluateConfig {};
kernelNames = builtins.attrNames base.options.kernels;
shellNames = builtins.attrNames base.options.shells;
exporterNames = builtins.attrNames base.options.exporters;
in
builtins.foldl' lib.recursiveUpdate {} (
(map (n: { kernels.${n}.enable = true; }) kernelNames)
++ (map (n: { shells.${n}.enable = true; }) shellNames)
++ (map (n: { exporters.${n}.enable = true; }) exporterNames)
);

everythingEnv = evaluateConfig everythingConfig;

codedownSearcher = common.searcher' {
# Note that we deliberately don't include "testing" packages in the searcher
packages = everythingEnv.config.builtKernels
// everythingEnv.config.builtShells
// everythingEnv.config.builtExporters
// { inherit spellchecker; }
;
};

languages = everythingEnv.config.builtKernels;

makeEnvironment = callPackage ./codedown/makeEnvironment.nix {
inherit pkgsStable pkgsUnstable pkgsMaster;
};
Expand Down
45 changes: 45 additions & 0 deletions codedown/evaluate-config.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
{ lib
, pkgs
}:

config:

lib.evalModules {
specialArgs = {
nixosOptionsToSettingsSchema = pkgs.callPackage ../modules/base/nixos-options-to-settings-schema.nix {};
};
modules = [
../modules/base.nix

../exporters/module.nix

../languages/bash/module.nix
../languages/clojure/module.nix
../languages/coq/module.nix
../languages/cpp/module.nix
../languages/go/module.nix
../languages/haskell/module.nix
../languages/julia/module.nix
../languages/octave/module.nix
../languages/postgres/module.nix
../languages/python/module.nix
../languages/r/module.nix
../languages/ruby/module.nix
../languages/rust/module.nix

../language_servers/markdown-spellcheck-lsp/module.nix

../shells/bash/module.nix
../shells/fish/module.nix
../shells/zsh/module.nix

{
config = {
inherit pkgs;
};
}
{
inherit config;
}
];
}
42 changes: 4 additions & 38 deletions codedown/makeEnvironment.nix
Original file line number Diff line number Diff line change
Expand Up @@ -19,46 +19,12 @@ config:
with lib;

let
evaluated = lib.evalModules {
specialArgs = {
nixosOptionsToSettingsSchema = pkgsStable.callPackage ../modules/base/nixos-options-to-settings-schema.nix {};
};
modules = [
../modules/base.nix

../exporters/module.nix

../languages/bash/module.nix
../languages/clojure/module.nix
../languages/coq/module.nix
../languages/cpp/module.nix
../languages/go/module.nix
../languages/haskell/module.nix
../languages/julia/module.nix
../languages/octave/module.nix
../languages/postgres/module.nix
../languages/python/module.nix
../languages/r/module.nix
../languages/ruby/module.nix
../languages/rust/module.nix

../language_servers/markdown-spellcheck-lsp/module.nix

../shells/bash/module.nix
../shells/fish/module.nix
../shells/zsh/module.nix

{
config = {
pkgs = pkgsStable;
};
}
{
inherit config;
}
];
evaluateConfig = callPackage ./evaluate-config.nix {
pkgs = pkgsStable;
};

evaluated = evaluateConfig config;

builtKernels = mapAttrs (_: kernel:
kernel.overrideAttrs (old: {
passthru = old.passthru // {
Expand Down
76 changes: 0 additions & 76 deletions codedown/mkCodeDownEnvironment.nix

This file was deleted.

2 changes: 1 addition & 1 deletion flake.nix
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
in
rec {
packages = {
# inherit (codedown) spellchecker codedownSearcher languagesIcons;
# inherit codedown;

jupyter-runner = pkgsMaster.callPackage ./nix/jupyter-runner.nix {};

Expand Down
4 changes: 2 additions & 2 deletions languages/cpp/full.nix
Original file line number Diff line number Diff line change
Expand Up @@ -60,10 +60,10 @@ symlinkJoin {

passthru = {
meta = clang.meta // {
baseName = x;
baseName = "cpp";
inherit displayName;
version = clang.version;
icon = getAttr x icons;
icon = getAttr flavor icons;
inherit settingsSchema;
};
inherit packageOptions packageSearch;
Expand Down
9 changes: 9 additions & 0 deletions languages/python/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,15 @@
, stdenv
}:

# poetry2nix = import (pkgsStable.fetchFromGitHub {
# owner = "nix-community";
# repo = "poetry2nix";
# rev = "78fc8882411c29c8eb5f162b09fcafe08b8b03a3";
# sha256 = "1dfgm286c48ac6yrk16xz41d0rsg6bv08122ngy420b0z88la9nj";
# }) {
# pkgs = pkgsStable;
# };

let
common = callPackage ../common.nix {};

Expand Down

0 comments on commit cbbb0e4

Please sign in to comment.