summaryrefslogtreecommitdiffstats
path: root/flake.nix
blob: c2039b7cf9a850e189f0c3469b2dedfbe7b648e7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
{
  description = "Description for the project";

  # don't lock to give precedence to a USB live-installer's registry
  inputs.nixpkgs.url = "nixpkgs";

  outputs = { self, nixpkgs, ... }: {
    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;
    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");
      };
  };
}