diff --git a/format.sh b/format.sh index 00cb9c6..8dce3e7 100755 --- a/format.sh +++ b/format.sh @@ -1,5 +1,5 @@ #!/usr/bin/env nix-shell -#!nix-shell -i bash -I "nixpkgs=https://github.com/nixos/nixpkgs/archive/nixos-24.05.tar.gz" -p nixfmt-rfc-style +#!nix-shell -i bash -I "nixpkgs=https://github.com/nixos/nixpkgs/archive/nixos-unstable.tar.gz" -p nixfmt-rfc-style files=$(find . -name "*.nix" -type f) diff --git a/lib/src/dag/default.nix b/lib/src/dag/default.nix index d6f1888..87f2275 100644 --- a/lib/src/dag/default.nix +++ b/lib/src/dag/default.nix @@ -47,12 +47,10 @@ lib: { in if sorted ? result then { - result = builtins.map - (value: { - name = value.name; - value = value.value; - }) - sorted.result; + result = builtins.map (value: { + name = value.name; + value = value.value; + }) sorted.result; } else sorted; @@ -66,26 +64,24 @@ lib: { defaults = graph: defaults: let - result = builtins.mapAttrs - ( - name: entry: - if defaults ? ${name} then - if builtins.isString entry then - { - value = entry; - before = defaults.${name}.before or [ ]; - after = defaults.${name}.after or [ ]; - } - else - entry - // { - before = (entry.before or [ ]) ++ (defaults.${name}.before or [ ]); - after = (entry.after or [ ]) ++ (defaults.${name}.after or [ ]); - } - else - entry - ) - graph; + result = builtins.mapAttrs ( + name: entry: + if defaults ? ${name} then + if builtins.isString entry then + { + value = entry; + before = defaults.${name}.before or [ ]; + after = defaults.${name}.after or [ ]; + } + else + entry + // { + before = (entry.before or [ ]) ++ (defaults.${name}.before or [ ]); + after = (entry.after or [ ]) ++ (defaults.${name}.after or [ ]); + } + else + entry + ) graph; in defaults // result; }; diff --git a/lib/src/lists/default.nix b/lib/src/lists/default.nix index 22a3d29..7cd6f10 100644 --- a/lib/src/lists/default.nix +++ b/lib/src/lists/default.nix @@ -23,12 +23,10 @@ lib: { parts = lib.strings.split "(0|[1-9][0-9]*)" string; in builtins.map serialize parts; - prepared = builtins.map - (value: [ - (vectorize value) - value - ]) - list; + prepared = builtins.map (value: [ + (vectorize value) + value + ]) list; isLess = a: b: (lib.lists.compare lib.numbers.compare (builtins.head a) (builtins.head b)) < 0; in builtins.map (x: builtins.elemAt x 1) (builtins.sort isLess prepared); @@ -125,8 +123,8 @@ lib: { ## @type List a -> a last = list: - assert lib.errors.trace (list != [ ]) "List cannot be empty"; - builtins.elemAt list (builtins.length list - 1); + assert lib.errors.trace (list != [ ]) "List cannot be empty"; + builtins.elemAt list (builtins.length list - 1); ## Slice part of a list to create a new list. ## @@ -165,8 +163,8 @@ lib: { ## @type List -> List init = list: - assert lib.errors.trace (builtins.length list != 0) "lib.lists.init: list must not be empty."; - lib.lists.take (builtins.length list - 1) list; + assert lib.errors.trace (builtins.length list != 0) "lib.lists.init: list must not be empty."; + lib.lists.take (builtins.length list - 1) list; ## Reverse a list. ## @@ -191,12 +189,10 @@ lib: { list else builtins.tail ( - builtins.concatMap - (part: [ - separator - part - ]) - list + builtins.concatMap (part: [ + separator + part + ]) list ); ## Create a list of integers from a starting number to an ending @@ -232,10 +228,7 @@ lib: { ## Flatten a list of lists into a single list. ## ## @type List (List a) -> List a - flatten = value: - if builtins.isList value then - builtins.concatMap lib.lists.flatten value - else - [ value ]; + flatten = + value: if builtins.isList value then builtins.concatMap lib.lists.flatten value else [ value ]; }; } diff --git a/tidepool/src/builders/basic.nix b/tidepool/src/builders/basic.nix index 0f8b3c2..30992b8 100644 --- a/tidepool/src/builders/basic.nix +++ b/tidepool/src/builders/basic.nix @@ -36,10 +36,7 @@ in hooks.target.target ]; in - builtins.foldl' - (final: defaults: lib.dag.apply.defaults final defaults) - package.phases - all; + builtins.foldl' (final: defaults: lib.dag.apply.defaults final defaults) package.phases all; phases = lib.dag.apply.defaults phasesWithHooks { unpack = lib.dag.entry.before [ "patch" ] ""; @@ -55,9 +52,7 @@ in sorted = lib.dag.sort.topological phases; - script = lib.strings.concatMapSep "\n" - (entry: entry.value) - sorted.result; + script = lib.strings.concatMapSep "\n" (entry: entry.value) sorted.result; built = builtins.derivation ( package.env diff --git a/tidepool/src/lib/packages.nix b/tidepool/src/lib/packages.nix index ccd43a0..cfc979a 100644 --- a/tidepool/src/lib/packages.nix +++ b/tidepool/src/lib/packages.nix @@ -9,7 +9,7 @@ in get = dependencies: let - exists = value: ! (builtins.isNull value); + exists = value: !(builtins.isNull value); available = builtins.filter exists dependencies; in builtins.map (dependency: dependency.package) available; @@ -18,46 +18,55 @@ in build': host': target': builtins.mapAttrs (name: dep: lib'.packages.build dep build' host' target'); - collect = package: + collect = + package: let isPropagated = name: package: package.propagate or false; getPropagatedDependencies = target: builtins.attrValues (lib.attrs.filter isPropagated target); - process = dependencies: + process = + dependencies: let - getDeps = name: dependency: + getDeps = + name: dependency: let - deps = - { - build = { - only = getPropagatedDependencies dependency.deps.build.only ++ process dependency.deps.build.only; - build = getPropagatedDependencies dependency.deps.build.build ++ process dependency.deps.build.build; - host = getPropagatedDependencies dependency.deps.build.host ++ process dependency.deps.build.host; - target = getPropagatedDependencies dependency.deps.build.target ++ process dependency.deps.build.target; - }; - host = { - only = getPropagatedDependencies dependency.deps.host.only ++ process dependency.deps.host.only; - host = getPropagatedDependencies dependency.deps.host.host ++ process dependency.deps.host.host; - target = getPropagatedDependencies dependency.deps.host.target ++ process dependency.deps.host.target; - }; - target = { - only = getPropagatedDependencies dependency.deps.target.only ++ process dependency.deps.target.only; - target = getPropagatedDependencies dependency.deps.target.target ++ process dependency.deps.target.target; - }; + deps = { + build = { + only = getPropagatedDependencies dependency.deps.build.only ++ process dependency.deps.build.only; + build = + getPropagatedDependencies dependency.deps.build.build + ++ process dependency.deps.build.build; + host = getPropagatedDependencies dependency.deps.build.host ++ process dependency.deps.build.host; + target = + getPropagatedDependencies dependency.deps.build.target + ++ process dependency.deps.build.target; }; + host = { + only = getPropagatedDependencies dependency.deps.host.only ++ process dependency.deps.host.only; + host = getPropagatedDependencies dependency.deps.host.host ++ process dependency.deps.host.host; + target = + getPropagatedDependencies dependency.deps.host.target + ++ process dependency.deps.host.target; + }; + target = { + only = getPropagatedDependencies dependency.deps.target.only ++ process dependency.deps.target.only; + target = + getPropagatedDependencies dependency.deps.target.target + ++ process dependency.deps.target.target; + }; + }; in - lib.lists.flatten - [ - deps.build.only - deps.build.build - deps.build.host - deps.build.target - deps.host.only - deps.host.host - deps.host.target - deps.target.only - deps.target.target - ]; + lib.lists.flatten [ + deps.build.only + deps.build.build + deps.build.host + deps.build.target + deps.host.only + deps.host.host + deps.host.target + deps.target.only + deps.target.target + ]; propagated = lib.attrs.mapToList getDeps dependencies; in @@ -83,122 +92,176 @@ in }; context = { - create = collected: ctx: + create = + collected: ctx: let - process = path: + process = + path: let dependencies = lib.attrs.selectOrThrow path collected; contexts = builtins.map (dependency: dependency.context or { }) dependencies; result = lib.modules.run { - modules = - builtins.map - (context: { config = context; }) - contexts - ++ [ - { - freeform = lib.types.any; + modules = builtins.map (context: { config = context; }) contexts ++ [ + { + freeform = lib.types.any; - options = config.packages.context.options // { - target = lib.options.create { - description = "The dependency target that is being generated."; - type = lib.types.enum [ - "build.only" - "build.build" - "build.host" - "build.target" - "host.only" - "host.host" - "host.target" - "target.only" - "target.target" - ]; - writable = false; - default.value = builtins.concatStringsSep "." path; - }; + options = config.packages.context.options // { + target = lib.options.create { + description = "The dependency target that is being generated."; + type = lib.types.enum [ + "build.only" + "build.build" + "build.host" + "build.target" + "host.only" + "host.host" + "host.target" + "target.only" + "target.target" + ]; + writable = false; + default.value = builtins.concatStringsSep "." path; + }; - deps = lib.options.create { - description = "The collected dependencies."; - writable = false; - default.value = collected; - type = lib.types.submodule { - options = { - build = { - only = lib.options.create { type = lib.types.list.of lib'.types.package; }; - build = lib.options.create { type = lib.types.list.of lib'.types.package; }; - host = lib.options.create { type = lib.types.list.of lib'.types.package; }; - target = lib.options.create { type = lib.types.list.of lib'.types.package; }; - }; - host = { - only = lib.options.create { type = lib.types.list.of lib'.types.package; }; - host = lib.options.create { type = lib.types.list.of lib'.types.package; }; - target = lib.options.create { type = lib.types.list.of lib'.types.package; }; - }; - target = { - only = lib.options.create { type = lib.types.list.of lib'.types.package; }; - target = lib.options.create { type = lib.types.list.of lib'.types.package; }; - }; + deps = lib.options.create { + description = "The collected dependencies."; + writable = false; + default.value = collected; + type = lib.types.submodule { + options = { + build = { + only = lib.options.create { type = lib.types.list.of lib'.types.package; }; + build = lib.options.create { type = lib.types.list.of lib'.types.package; }; + host = lib.options.create { type = lib.types.list.of lib'.types.package; }; + target = lib.options.create { type = lib.types.list.of lib'.types.package; }; + }; + host = { + only = lib.options.create { type = lib.types.list.of lib'.types.package; }; + host = lib.options.create { type = lib.types.list.of lib'.types.package; }; + target = lib.options.create { type = lib.types.list.of lib'.types.package; }; + }; + target = { + only = lib.options.create { type = lib.types.list.of lib'.types.package; }; + target = lib.options.create { type = lib.types.list.of lib'.types.package; }; }; }; }; }; + }; - config = ctx; - } - ]; + config = ctx; + } + ]; }; in result.config; in { build = { - only = process [ "build" "only" ]; - build = process [ "build" "build" ]; - host = process [ "build" "host" ]; - target = process [ "build" "target" ]; + only = process [ + "build" + "only" + ]; + build = process [ + "build" + "build" + ]; + host = process [ + "build" + "host" + ]; + target = process [ + "build" + "target" + ]; }; host = { - only = process [ "host" "only" ]; - host = process [ "host" "host" ]; - target = process [ "host" "target" ]; + only = process [ + "host" + "only" + ]; + host = process [ + "host" + "host" + ]; + target = process [ + "host" + "target" + ]; }; target = { - only = process [ "target" "only" ]; - target = process [ "target" "target" ]; + only = process [ + "target" + "only" + ]; + target = process [ + "target" + "target" + ]; }; }; }; hooks = { - create = collected: ctx: + create = + collected: ctx: let - process = path: + process = + path: let dependencies = lib.attrs.selectOrThrow path collected; - hooks = builtins.map - (dependency: - let - getHooks = dependency.hooks or (lib.fp.const { }); - in - getHooks ctx) - dependencies; + hooks = builtins.map ( + dependency: + let + getHooks = dependency.hooks or (lib.fp.const { }); + in + getHooks ctx + ) dependencies; in hooks; in { build = { - only = process [ "build" "only" ]; - build = process [ "build" "build" ]; - host = process [ "build" "host" ]; - target = process [ "build" "target" ]; + only = process [ + "build" + "only" + ]; + build = process [ + "build" + "build" + ]; + host = process [ + "build" + "host" + ]; + target = process [ + "build" + "target" + ]; }; host = { - only = process [ "host" "only" ]; - host = process [ "host" "host" ]; - target = process [ "host" "target" ]; + only = process [ + "host" + "only" + ]; + host = process [ + "host" + "host" + ]; + target = process [ + "host" + "target" + ]; }; target = { - only = process [ "target" "only" ]; - target = process [ "target" "target" ]; + only = process [ + "target" + "only" + ]; + target = process [ + "target" + "target" + ]; }; }; }; diff --git a/tidepool/src/packages/aux/b.nix b/tidepool/src/packages/aux/b.nix index 329806b..ae180c7 100644 --- a/tidepool/src/packages/aux/b.nix +++ b/tidepool/src/packages/aux/b.nix @@ -30,11 +30,7 @@ in cflags = [ "-I $AUX_B/include" ]; }; - hooks = ctx: { - "aux:b:env" = lib.dag.entry.after - [ "unpack" ] - ''export AUX_B=${config.package}''; - }; + hooks = ctx: { "aux:b:env" = lib.dag.entry.after [ "unpack" ] ''export AUX_B=${config.package}''; }; phases = { install = '' diff --git a/tidepool/src/packages/default.nix b/tidepool/src/packages/default.nix index 725d760..11bccee 100644 --- a/tidepool/src/packages/default.nix +++ b/tidepool/src/packages/default.nix @@ -55,34 +55,32 @@ in config = { packages.cross = lib.attrs.generate doubles ( system: - builtins.mapAttrs - ( - namespace: - builtins.mapAttrs ( - name: alias: - let - setHost = - package: - package - // { - __modules__ = package.__modules__ ++ [ - { - config.platform = { - host = lib.modules.override 5 system; - target = lib.modules.override 5 system; - }; - } - ]; - }; + builtins.mapAttrs ( + namespace: + builtins.mapAttrs ( + name: alias: + let + setHost = + package: + package + // { + __modules__ = package.__modules__ ++ [ + { + config.platform = { + host = lib.modules.override 5 system; + target = lib.modules.override 5 system; + }; + } + ]; + }; - updated = alias // { - versions = builtins.mapAttrs (version: package: setHost package) alias.versions; - }; - in - updated - ) + updated = alias // { + versions = builtins.mapAttrs (version: package: setHost package) alias.versions; + }; + in + updated ) - packages + ) packages ); }; }