summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLassulus <github@lassul.us>2022-12-09 14:45:51 +0100
committerGitHub <noreply@github.com>2022-12-09 14:45:51 +0100
commit12cda2489936794f8541c7fc530f9aadcac6d4ea (patch)
tree179790af97cb58b8a18540fb3f61082e6482ce2d
parent66add2cd9edab96f5e87477229772bf2b3ca513a (diff)
parent17d17217d81c66d9e3fe5cd72155088c99f35155 (diff)
Merge pull request #74 from nix-community/other-archs
-rw-r--r--flake.nix59
-rw-r--r--package.nix34
-rw-r--r--tests/lib.nix2
3 files changed, 54 insertions, 41 deletions
diff --git a/flake.nix b/flake.nix
index c2039b7..0344eb0 100644
--- a/flake.nix
+++ b/flake.nix
@@ -1,57 +1,36 @@
{
- description = "Description for the project";
+ description = "Disko - declarative disk partitioning";
# don't lock to give precedence to a USB live-installer's registry
inputs.nixpkgs.url = "nixpkgs";
- outputs = { self, nixpkgs, ... }: {
+ outputs = { self, nixpkgs, ... }: let
+ supportedSystems = [
+ "x86_64-linux"
+ "i686-linux"
+ "aarch64-linux"
+ ];
+ forAllSystems = nixpkgs.lib.genAttrs supportedSystems;
+ in {
nixosModules.disko = import ./module.nix;
lib = import ./. {
inherit (nixpkgs) lib;
};
- packages.x86_64-linux.disko = let
- pkgs = nixpkgs.legacyPackages.x86_64-linux;
- inherit (pkgs) lib;
- inclFiles = {src, name}: files: lib.cleanSourceWith {
- inherit src name;
- filter = _path: _type: _type == "regular"
- && lib.any (file: builtins.baseNameOf _path == file) files;
- };
- in derivation rec{
- system = "x86_64-linux";
- name = "disko";
- builder = "/bin/sh";
- PATH = "${pkgs.coreutils}/bin:${pkgs.gnused}/bin";
- passAsFile = ["buildPhase"];
- buildPhase = ''
- mkdir -p $out/bin $out/share/disko
- cp -r $src/* $out/share/disko
- sed \
- -e "s|libexec_dir=\".*\"|libexec_dir=\"$out/share/disko\"|" \
- -e "s|#!/usr/bin/env.*|#!/usr/bin/env bash|" \
- $src/disko > $out/bin/disko
- chmod 755 $out/bin/disko
- '';
- args = ["-c" ". $buildPhasePath"];
- src = inclFiles { inherit name; src = ./.; } [
- "disko"
- "cli.nix"
- "default.nix"
- "types.nix"
- "options.nix"
- ];
- } // {
- meta.description = "Format disks with nix-config";
- };
- packages.x86_64-linux.default = self.packages.x86_64-linux.disko;
- checks.x86_64-linux = let
- pkgs = nixpkgs.legacyPackages.x86_64-linux;
+ packages = forAllSystems (system: let
+ pkgs = nixpkgs.legacyPackages.${system};
+ in {
+ disko = pkgs.callPackage ./package.nix {};
+ default = self.packages.${system}.disko;
+ });
+ # TODO: disable bios-related tests on aarch64...
+ checks = forAllSystems (system: let
+ pkgs = nixpkgs.legacyPackages.${system};
in
# Run tests: nix flake check -L
import ./tests {
inherit pkgs;
makeTest = import (pkgs.path + "/nixos/tests/make-test-python.nix");
eval-config = import (pkgs.path + "/nixos/lib/eval-config.nix");
- };
+ });
};
}
diff --git a/package.nix b/package.nix
new file mode 100644
index 0000000..6e63310
--- /dev/null
+++ b/package.nix
@@ -0,0 +1,34 @@
+{ stdenvNoCC, lib }:
+
+let
+ inclFiles = {src, name}: files: lib.cleanSourceWith {
+ inherit src name;
+ filter = _path: _type: _type == "regular" && lib.any (file: builtins.baseNameOf _path == file) files;
+ };
+in
+stdenvNoCC.mkDerivation rec {
+ name = "disko";
+ src = inclFiles { inherit name; src = ./.; } [
+ "disko"
+ "cli.nix"
+ "default.nix"
+ "types.nix"
+ "options.nix"
+ ];
+ installPhase = ''
+ mkdir -p $out/bin $out/share/disko
+ cp -r $src/* $out/share/disko
+ sed \
+ -e "s|libexec_dir=\".*\"|libexec_dir=\"$out/share/disko\"|" \
+ -e "s|#!/usr/bin/env.*|#!/usr/bin/env bash|" \
+ $src/disko > $out/bin/disko
+ chmod 755 $out/bin/disko
+ '';
+ meta = with lib; {
+ description = "Format disks with nix-config";
+ homepage = "https://github.com/nix-community/disko";
+ license = licenses.mit;
+ maintainers = with maintainers; [ lassulus ];
+ platforms = platforms.linux;
+ };
+}
diff --git a/tests/lib.nix b/tests/lib.nix
index 95f267e..4b81da7 100644
--- a/tests/lib.nix
+++ b/tests/lib.nix
@@ -66,7 +66,7 @@
};
installedTopLevel = (eval-config {
modules = [ installed-system ];
- system = "x86_64-linux";
+ inherit (pkgs) system;
}).config.system.build.toplevel;
in
makeTest' {