/ 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 }