/ flake.nix
flake.nix
 1  {
 2    description = "Template";
 3  
 4    inputs = {
 5      nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable";
 6      flake-utils.url = "github:numtide/flake-utils";
 7    };
 8  
 9    outputs =
10      {
11        self,
12        nixpkgs,
13        flake-utils,
14        ...
15      }:
16      flake-utils.lib.eachSystem [ "x86_64-linux" "aarch64-linux" ] (
17        system:
18        let
19          pkgs = import nixpkgs {
20            inherit system;
21            config.allowUnfree = true;
22            overlays = [
23              self.overlays.default
24            ];
25          };
26        in
27        {
28          packages = {
29            inherit (pkgs) dt-cli;
30            default = pkgs.dt-cli;
31          };
32        }
33      )
34      // {
35        overlays = {
36          default =
37            final: prev:
38            let
39              mtime = self.lastModifiedDate;
40              date = builtins.substring 2 6 mtime;
41              rev = self.rev or (nixpkgs.lib.warn "Git changes are not committed" (self.dirtyRev or "dirty"));
42              version = "${date}+${builtins.substring 0 8 rev}";
43            in
44            {
45              dt-cli = final.rustPlatform.buildRustPackage {
46                pname = "dt-cli";
47                version = "v0.8.0";
48                src = ./.;
49  
50                cargoLock.lockFile = ./Cargo.lock;
51                cargoBuildFlags = [
52                  "-p"
53                  "dt-cli"
54                ];
55  
56                shellHook = ''
57                  SHELL="$(grep "^$USER:" /etc/passwd | awk -F: '{ print $NF }')"
58                  [[ $- == *i* ]] && exec "$SHELL"
59                '';
60              };
61            };
62        };
63        hydraJobs = self.packages;
64      };
65  }