diff --git a/fn.nix b/fn.nix index bd0a071..3d57527 100644 --- a/fn.nix +++ b/fn.nix @@ -17,4 +17,17 @@ rec { lsf = p: (lst { p = p; }); lsd = p: (lst { p = p; t = "directory"; b = true; }); lsfRec = p: b: flatten ((map (np: lsfRec np b) (lsd p)) ++ (lst { p = p; b = b; })); + hasAttrs = aList: d: (map + (a: + (ifelse (isList a) + (hasAttrByPath a d) + (hasAttr a d))) + aList); + pkgFilter = l: (filter + (p: ( + ifelse (elem true (hasAttrs [["meta" "broken"]] p)) + (warn "Package ${p.name} is marked as broken." false) + true) + ) + l); } diff --git a/options/machine.nix b/options/machine.nix index 322cde6..598cd4e 100644 --- a/options/machine.nix +++ b/options/machine.nix @@ -7,14 +7,14 @@ let cfg = config.machine; fn = import (toString ../fn.nix) { inherit lib; }; metapkgs = let - pPath = (toString ./../pkgs/pkgsets); + pPath = (toString ../pkgsets); in (lists.forEach (fn.lsfRec pPath true) (v: replaceStrings [ "${pPath}/" "/" ".nix" ] [ "" "::" "" ] v)); pkgOption = pname: { name = pname; value = rec { pkgwrap = mkOption { type = with types; oneOf [ package (listOf package) ]; - default = cfg.pkgsets."${pname}".pkgs; + default = (fn.pkgFilter cfg.pkgsets."${pname}".pkgs); description = '' Package Wrapper for packages using a wrapper function (like python, emacs, haskell, ...) ''; diff --git a/pkgs/systemPackages.nix b/pkgs/systemPackages.nix index 0930b4f..53801cb 100644 --- a/pkgs/systemPackages.nix +++ b/pkgs/systemPackages.nix @@ -5,7 +5,7 @@ with lib; let cfg = config.machine; fn = import (toString ../fn.nix) { inherit lib; }; - pkgsets = map (v: (toString ./.) + "/pkgsets/${v}") (fn.lsf (toString ./pkgsets)); + pkgsets = map (v: (toString ../.) + "/pkgsets/${v}") (fn.lsf (toString ../pkgsets)); in { imports = pkgsets; diff --git a/pkgs/pkgsets/base.nix b/pkgsets/base.nix similarity index 100% rename from pkgs/pkgsets/base.nix rename to pkgsets/base.nix diff --git a/pkgs/pkgsets/cpp.nix b/pkgsets/cpp.nix similarity index 100% rename from pkgs/pkgsets/cpp.nix rename to pkgsets/cpp.nix diff --git a/pkgs/pkgsets/dict.nix b/pkgsets/dict.nix similarity index 100% rename from pkgs/pkgsets/dict.nix rename to pkgsets/dict.nix diff --git a/pkgs/pkgsets/emacs.nix b/pkgsets/emacs.nix similarity index 98% rename from pkgs/pkgsets/emacs.nix rename to pkgsets/emacs.nix index 4422fc6..2e86b6d 100644 --- a/pkgs/pkgsets/emacs.nix +++ b/pkgsets/emacs.nix @@ -4,7 +4,7 @@ with lib; let gitpkgs = import /nixpkgs {}; - fn = import (toString ../../fn.nix) { inherit lib; }; + fn = import (toString ../fn.nix) { inherit lib; }; modefiles = fn.lst { p = (toString ./emacs); b = true; }; in rec { # nixpkgs.overlays = [ @@ -13,7 +13,7 @@ in rec { # })) # ]; imports = [ - ../../options/emacs-init.nix + ../options/emacs-init.nix ] ++ modefiles; programs.emacs.init = { diff --git a/pkgs/pkgsets/emacs/company.nix b/pkgsets/emacs/company.nix similarity index 100% rename from pkgs/pkgsets/emacs/company.nix rename to pkgsets/emacs/company.nix diff --git a/pkgs/pkgsets/emacs/doom-modeline.nix b/pkgsets/emacs/doom-modeline.nix similarity index 100% rename from pkgs/pkgsets/emacs/doom-modeline.nix rename to pkgsets/emacs/doom-modeline.nix diff --git a/pkgs/pkgsets/emacs/doom-themes.nix b/pkgsets/emacs/doom-themes.nix similarity index 100% rename from pkgs/pkgsets/emacs/doom-themes.nix rename to pkgsets/emacs/doom-themes.nix diff --git a/pkgs/pkgsets/emacs/elpy.nix b/pkgsets/emacs/elpy.nix similarity index 100% rename from pkgs/pkgsets/emacs/elpy.nix rename to pkgsets/emacs/elpy.nix diff --git a/pkgs/pkgsets/emacs/fcitx.nix b/pkgsets/emacs/fcitx.nix similarity index 100% rename from pkgs/pkgsets/emacs/fcitx.nix rename to pkgsets/emacs/fcitx.nix diff --git a/pkgs/pkgsets/emacs/flycheck.nix b/pkgsets/emacs/flycheck.nix similarity index 100% rename from pkgs/pkgsets/emacs/flycheck.nix rename to pkgsets/emacs/flycheck.nix diff --git a/pkgs/pkgsets/emacs/flyspell.nix b/pkgsets/emacs/flyspell.nix similarity index 100% rename from pkgs/pkgsets/emacs/flyspell.nix rename to pkgsets/emacs/flyspell.nix diff --git a/pkgs/pkgsets/emacs/latex.nix b/pkgsets/emacs/latex.nix similarity index 100% rename from pkgs/pkgsets/emacs/latex.nix rename to pkgsets/emacs/latex.nix diff --git a/pkgs/pkgsets/emacs/lsp.nix b/pkgsets/emacs/lsp.nix similarity index 100% rename from pkgs/pkgsets/emacs/lsp.nix rename to pkgsets/emacs/lsp.nix diff --git a/pkgs/pkgsets/emacs/magit.nix b/pkgsets/emacs/magit.nix similarity index 100% rename from pkgs/pkgsets/emacs/magit.nix rename to pkgsets/emacs/magit.nix diff --git a/pkgs/pkgsets/emacs/mu4e.nix b/pkgsets/emacs/mu4e.nix similarity index 100% rename from pkgs/pkgsets/emacs/mu4e.nix rename to pkgsets/emacs/mu4e.nix diff --git a/pkgs/pkgsets/emacs/nix-mode.nix b/pkgsets/emacs/nix-mode.nix similarity index 100% rename from pkgs/pkgsets/emacs/nix-mode.nix rename to pkgsets/emacs/nix-mode.nix diff --git a/pkgs/pkgsets/emacs/org.nix b/pkgsets/emacs/org.nix similarity index 100% rename from pkgs/pkgsets/emacs/org.nix rename to pkgsets/emacs/org.nix diff --git a/pkgs/pkgsets/emacs/powerline.nix b/pkgsets/emacs/powerline.nix similarity index 100% rename from pkgs/pkgsets/emacs/powerline.nix rename to pkgsets/emacs/powerline.nix diff --git a/pkgs/pkgsets/emacs/rust.nix b/pkgsets/emacs/rust.nix similarity index 100% rename from pkgs/pkgsets/emacs/rust.nix rename to pkgsets/emacs/rust.nix diff --git a/pkgs/pkgsets/emacs/solarized-theme.nix b/pkgsets/emacs/solarized-theme.nix similarity index 100% rename from pkgs/pkgsets/emacs/solarized-theme.nix rename to pkgsets/emacs/solarized-theme.nix diff --git a/pkgs/pkgsets/emacs/transmission.nix b/pkgsets/emacs/transmission.nix similarity index 100% rename from pkgs/pkgsets/emacs/transmission.nix rename to pkgsets/emacs/transmission.nix diff --git a/pkgs/pkgsets/emacs/web-mode.nix b/pkgsets/emacs/web-mode.nix similarity index 100% rename from pkgs/pkgsets/emacs/web-mode.nix rename to pkgsets/emacs/web-mode.nix diff --git a/pkgs/pkgsets/emacs/yasnippet.nix b/pkgsets/emacs/yasnippet.nix similarity index 100% rename from pkgs/pkgsets/emacs/yasnippet.nix rename to pkgsets/emacs/yasnippet.nix diff --git a/pkgs/pkgsets/extra.nix b/pkgsets/extra.nix similarity index 100% rename from pkgs/pkgsets/extra.nix rename to pkgsets/extra.nix diff --git a/pkgs/pkgsets/haskell-tools.nix b/pkgsets/haskell-tools.nix similarity index 100% rename from pkgs/pkgsets/haskell-tools.nix rename to pkgsets/haskell-tools.nix diff --git a/pkgs/pkgsets/haskell.nix b/pkgsets/haskell.nix similarity index 100% rename from pkgs/pkgsets/haskell.nix rename to pkgsets/haskell.nix diff --git a/pkgs/pkgsets/java.nix b/pkgsets/java.nix similarity index 100% rename from pkgs/pkgsets/java.nix rename to pkgsets/java.nix diff --git a/pkgs/pkgsets/mail_utils.nix b/pkgsets/mail_utils.nix similarity index 100% rename from pkgs/pkgsets/mail_utils.nix rename to pkgsets/mail_utils.nix diff --git a/pkgs/pkgsets/python3.nix b/pkgsets/python3.nix similarity index 100% rename from pkgs/pkgsets/python3.nix rename to pkgsets/python3.nix diff --git a/pkgs/pkgsets/rustpkgs.nix b/pkgsets/rustpkgs.nix similarity index 100% rename from pkgs/pkgsets/rustpkgs.nix rename to pkgsets/rustpkgs.nix diff --git a/pkgs/pkgsets/server.nix b/pkgsets/server.nix similarity index 100% rename from pkgs/pkgsets/server.nix rename to pkgsets/server.nix diff --git a/pkgs/pkgsets/uniProgs.nix b/pkgsets/uniProgs.nix similarity index 100% rename from pkgs/pkgsets/uniProgs.nix rename to pkgsets/uniProgs.nix diff --git a/pkgs/pkgsets/xpkgs.nix b/pkgsets/xpkgs.nix similarity index 100% rename from pkgs/pkgsets/xpkgs.nix rename to pkgsets/xpkgs.nix