summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--default.nix24
-rw-r--r--flake.nix100
-rw-r--r--nix/fetchTree.nix215
-rw-r--r--nix/package.nix8
-rw-r--r--shell.nix41
5 files changed, 169 insertions, 219 deletions
diff --git a/default.nix b/default.nix
index 580f989..714dd75 100644
--- a/default.nix
+++ b/default.nix
@@ -3,15 +3,15 @@ let
fetchTree = import ./nix/fetchTree.nix;
flakeSources = builtins.mapAttrs (_: node: fetchTree node.locked) lock.nodes;
in
- {
- pkgs ?
- import sources.nixpkgs {
- inherit system;
- config = {};
- overlays = [];
- },
- system ? builtins.currentSystem,
- sources ? flakeSources,
- }: {
- website = pkgs.callPackage ./nix/package.nix {};
- }
+{
+ pkgs ? import sources.nixpkgs {
+ inherit system;
+ config = { };
+ overlays = [ ];
+ },
+ system ? builtins.currentSystem,
+ sources ? flakeSources,
+}:
+{
+ website = pkgs.callPackage ./nix/package.nix { };
+}
diff --git a/flake.nix b/flake.nix
index 9450302..a10ed5b 100644
--- a/flake.nix
+++ b/flake.nix
@@ -6,57 +6,59 @@
flake-checks.url = "github:getchoo/flake-checks";
};
- outputs = {
- self,
- nixpkgs,
- flake-checks,
- }: let
- systems = [
- "x86_64-linux"
- "aarch64-linux"
- "x86_64-darwin"
- "aarch64-darwin"
- ];
+ outputs =
+ {
+ self,
+ nixpkgs,
+ flake-checks,
+ }:
+ let
+ systems = [
+ "x86_64-linux"
+ "aarch64-linux"
+ "x86_64-darwin"
+ "aarch64-darwin"
+ ];
- forAllSystems = fn: nixpkgs.lib.genAttrs systems (system: fn nixpkgs.legacyPackages.${system});
- in {
- checks = forAllSystems (pkgs: let
- flake-checks' = flake-checks.lib.mkChecks {
- root = ./.;
- inherit pkgs;
- };
- in {
- inherit
- (flake-checks')
- actionlint
- alejandra
- deadnix
- statix
- ;
- });
+ forAllSystems = fn: nixpkgs.lib.genAttrs systems (system: fn nixpkgs.legacyPackages.${system});
+ in
+ {
+ checks = forAllSystems (
+ pkgs:
+ let
+ flake-checks' = flake-checks.lib.mkChecks {
+ root = ./.;
+ inherit pkgs;
+ };
+ in
+ {
+ inherit (flake-checks')
+ actionlint
+ alejandra
+ deadnix
+ statix
+ ;
+ }
+ );
- devShells = forAllSystems ({
- pkgs,
- system,
- ...
- }: {
- default = import ./shell.nix {
- inherit pkgs system;
- formatter = self.formatter.${system};
- };
- });
+ devShells = forAllSystems (
+ { pkgs, system, ... }:
+ {
+ default = import ./shell.nix {
+ inherit pkgs system;
+ formatter = self.formatter.${system};
+ };
+ }
+ );
- formatter = forAllSystems (pkgs: pkgs.alejandra);
+ formatter = forAllSystems (pkgs: pkgs.nixfmt-rfc-style);
- packages = forAllSystems ({
- pkgs,
- system,
- ...
- }: let
- pkgs' = import ./. {
- inherit pkgs system;
- };
- in
- pkgs' // {default = pkgs'.website;});
- };
+ packages = forAllSystems (
+ { pkgs, system, ... }:
+ let
+ pkgs' = import ./. { inherit pkgs system; };
+ in
+ pkgs' // { default = pkgs'.website; }
+ );
+ };
}
diff --git a/nix/fetchTree.nix b/nix/fetchTree.nix
index 26de85b..67c41eb 100644
--- a/nix/fetchTree.nix
+++ b/nix/fetchTree.nix
@@ -21,152 +21,103 @@
## OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
## WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
let
- formatSecondsSinceEpoch = t: let
- rem = x: y: x - x / y * y;
- days = t / 86400;
- secondsInDay = rem t 86400;
- hours = secondsInDay / 3600;
- minutes = (rem secondsInDay 3600) / 60;
- seconds = rem t 60;
+ formatSecondsSinceEpoch =
+ t:
+ let
+ rem = x: y: x - x / y * y;
+ days = t / 86400;
+ secondsInDay = rem t 86400;
+ hours = secondsInDay / 3600;
+ minutes = (rem secondsInDay 3600) / 60;
+ seconds = rem t 60;
- # Courtesy of https://stackoverflow.com/a/32158604.
- z = days + 719468;
- era =
- (
- if z >= 0
- then z
- else z - 146096
- )
- / 146097;
- doe = z - era * 146097;
- yoe = (doe - doe / 1460 + doe / 36524 - doe / 146096) / 365;
- y = yoe + era * 400;
- doy = doe - (365 * yoe + yoe / 4 - yoe / 100);
- mp = (5 * doy + 2) / 153;
- d = doy - (153 * mp + 2) / 5 + 1;
- m =
- mp
- + (
- if mp < 10
- then 3
- else -9
- );
- y' =
- y
- + (
- if m <= 2
- then 1
- else 0
- );
+ # Courtesy of https://stackoverflow.com/a/32158604.
+ z = days + 719468;
+ era = (if z >= 0 then z else z - 146096) / 146097;
+ doe = z - era * 146097;
+ yoe = (doe - doe / 1460 + doe / 36524 - doe / 146096) / 365;
+ y = yoe + era * 400;
+ doy = doe - (365 * yoe + yoe / 4 - yoe / 100);
+ mp = (5 * doy + 2) / 153;
+ d = doy - (153 * mp + 2) / 5 + 1;
+ m = mp + (if mp < 10 then 3 else -9);
+ y' = y + (if m <= 2 then 1 else 0);
- pad = s:
- if builtins.stringLength s < 2
- then "0" + s
- else s;
- in "${toString y'}${pad (toString m)}${pad (toString d)}${pad (toString hours)}${pad (toString minutes)}${pad (toString seconds)}";
+ pad = s: if builtins.stringLength s < 2 then "0" + s else s;
+ in
+ "${toString y'}${pad (toString m)}${pad (toString d)}${pad (toString hours)}${pad (toString minutes)}${pad (toString seconds)}";
- fetchTree = info:
- if info.type == "github"
- then {
- outPath =
- fetchTarball
- (
- {url = "https://api.${info.host or "github.com"}/repos/${info.owner}/${info.repo}/tarball/${info.rev}";}
- // (
- if info ? narHash
- then {sha256 = info.narHash;}
- else {}
- )
+ fetchTree =
+ info:
+ if info.type == "github" then
+ {
+ outPath = fetchTarball (
+ {
+ url = "https://api.${info.host or "github.com"}/repos/${info.owner}/${info.repo}/tarball/${info.rev}";
+ }
+ // (if info ? narHash then { sha256 = info.narHash; } else { })
);
- inherit (info) rev lastModified narHash;
- shortRev = builtins.substring 0 7 info.rev;
- lastModifiedDate = formatSecondsSinceEpoch info.lastModified;
- }
- else if info.type == "git"
- then
+ inherit (info) rev lastModified narHash;
+ shortRev = builtins.substring 0 7 info.rev;
+ lastModifiedDate = formatSecondsSinceEpoch info.lastModified;
+ }
+ else if info.type == "git" then
{
- outPath =
- builtins.fetchGit
- (
- {inherit (info) url;}
- // (
- if info ? rev
- then {inherit (info) rev;}
- else {}
- )
- // (
- if info ? ref
- then {inherit (info) ref;}
- else {}
- )
- // (
- if info ? submodules
- then {inherit (info) submodules;}
- else {}
- )
- );
+ outPath = builtins.fetchGit (
+ {
+ inherit (info) url;
+ }
+ // (if info ? rev then { inherit (info) rev; } else { })
+ // (if info ? ref then { inherit (info) ref; } else { })
+ // (if info ? submodules then { inherit (info) submodules; } else { })
+ );
inherit (info) lastModified narHash;
lastModifiedDate = formatSecondsSinceEpoch info.lastModified;
}
// (
- if info ? rev
- then {
- inherit (info) rev;
- shortRev = builtins.substring 0 7 info.rev;
- }
- else {
- }
+ if info ? rev then
+ {
+ inherit (info) rev;
+ shortRev = builtins.substring 0 7 info.rev;
+ }
+ else
+ { }
)
- else if info.type == "path"
- then {
- outPath = builtins.path {inherit (info) path;};
- inherit (info) narHash;
- }
- else if info.type == "tarball"
- then {
- outPath =
- fetchTarball
- (
- {inherit (info) url;}
- // (
- if info ? narHash
- then {sha256 = info.narHash;}
- else {}
- )
+ else if info.type == "path" then
+ {
+ outPath = builtins.path { inherit (info) path; };
+ inherit (info) narHash;
+ }
+ else if info.type == "tarball" then
+ {
+ outPath = fetchTarball (
+ { inherit (info) url; } // (if info ? narHash then { sha256 = info.narHash; } else { })
);
- }
- else if info.type == "gitlab"
- then {
- inherit (info) rev narHash lastModified;
- outPath =
- fetchTarball
- (
- {url = "https://${info.host or "gitlab.com"}/api/v4/projects/${info.owner}%2F${info.repo}/repository/archive.tar.gz?sha=${info.rev}";}
- // (
- if info ? narHash
- then {sha256 = info.narHash;}
- else {}
- )
+ }
+ else if info.type == "gitlab" then
+ {
+ inherit (info) rev narHash lastModified;
+ outPath = fetchTarball (
+ {
+ url = "https://${info.host or "gitlab.com"}/api/v4/projects/${info.owner}%2F${info.repo}/repository/archive.tar.gz?sha=${info.rev}";
+ }
+ // (if info ? narHash then { sha256 = info.narHash; } else { })
);
- shortRev = builtins.substring 0 7 info.rev;
- }
- else if info.type == "sourcehut"
- then {
- inherit (info) rev narHash lastModified;
- outPath =
- fetchTarball
- (
- {url = "https://${info.host or "git.sr.ht"}/${info.owner}/${info.repo}/archive/${info.rev}.tar.gz";}
- // (
- if info ? narHash
- then {sha256 = info.narHash;}
- else {}
- )
+ shortRev = builtins.substring 0 7 info.rev;
+ }
+ else if info.type == "sourcehut" then
+ {
+ inherit (info) rev narHash lastModified;
+ outPath = fetchTarball (
+ {
+ url = "https://${info.host or "git.sr.ht"}/${info.owner}/${info.repo}/archive/${info.rev}.tar.gz";
+ }
+ // (if info ? narHash then { sha256 = info.narHash; } else { })
);
- shortRev = builtins.substring 0 7 info.rev;
- }
+ shortRev = builtins.substring 0 7 info.rev;
+ }
else
# FIXME: add Mercurial, tarball inputs.
throw "flake input has unsupported input type '${info.type}'";
in
- fetchTree
+fetchTree
diff --git a/nix/package.nix b/nix/package.nix
index 997bff3..a875712 100644
--- a/nix/package.nix
+++ b/nix/package.nix
@@ -18,9 +18,7 @@ stdenvNoCC.mkDerivation {
];
};
- nativeBuildInputs = [
- zola
- ];
+ nativeBuildInputs = [ zola ];
dontConfigure = true;
doCheck = false;
@@ -40,7 +38,7 @@ stdenvNoCC.mkDerivation {
passthru = {
serve = writeShellApplication {
name = "serve";
- runtimeInputs = [zola];
+ runtimeInputs = [ zola ];
text = ''
zola serve
@@ -51,6 +49,6 @@ stdenvNoCC.mkDerivation {
meta = {
homepage = "https://github.com/getchoo/website";
license = lib.licenses.mit;
- maintainers = with lib.maintainers; [getchoo];
+ maintainers = with lib.maintainers; [ getchoo ];
};
}
diff --git a/shell.nix b/shell.nix
index 1ba11b5..61095bb 100644
--- a/shell.nix
+++ b/shell.nix
@@ -3,25 +3,24 @@ let
fetchTree = import ./nix/fetchTree.nix;
flakeSources = builtins.mapAttrs (_: node: fetchTree node.locked) lock.nodes;
in
- {
- pkgs ?
- import sources.nixpkgs {
- inherit system;
- config = {};
- overlays = [];
- },
- system ? builtins.currentSystem,
- sources ? flakeSources,
- formatter ? pkgs.alejandra,
- }:
- pkgs.mkShellNoCC {
- packages = [
- pkgs.zola
+{
+ pkgs ? import sources.nixpkgs {
+ inherit system;
+ config = { };
+ overlays = [ ];
+ },
+ system ? builtins.currentSystem,
+ sources ? flakeSources,
+ formatter ? pkgs.nixfmt-rfc-style,
+}:
+pkgs.mkShellNoCC {
+ packages = [
+ pkgs.zola
- # linters + formatters
- formatter
- pkgs.actionlint
- pkgs.nodePackages.alex
- pkgs.nodePackages.prettier
- ];
- }
+ # linters + formatters
+ formatter
+ pkgs.actionlint
+ pkgs.nodePackages.alex
+ pkgs.nodePackages.prettier
+ ];
+}