1{2 description = "Jrsonnet";3 inputs = {4 nixpkgs.url = "github:nixos/nixpkgs";5 flake-parts = {6 url = "github:hercules-ci/flake-parts";7 inputs.nixpkgs-lib.follows = "nixpkgs";8 };9 rust-overlay = {10 url = "github:oxalica/rust-overlay";11 inputs.nixpkgs.follows = "nixpkgs";12 };13 crane = {14 url = "github:ipetkov/crane";15 inputs.nixpkgs.follows = "nixpkgs";16 };17 shelly = {18 url = "github:CertainLach/shelly";19 inputs = {20 flake-parts.follows = "flake-parts";21 nixpkgs.follows = "nixpkgs";22 };23 };24 };25 outputs = inputs @ {26 nixpkgs,27 flake-parts,28 rust-overlay,29 crane,30 ...31 }:32 flake-parts.lib.mkFlake {inherit inputs;} {33 imports = [inputs.shelly.flakeModule ./nix/nixos-modules.nix];34 systems = nixpkgs.lib.systems.flakeExposed;35 perSystem = {36 config,37 system,38 pkgs,39 ...40 }: let41 rust = pkgs.rust-bin.fromRustupToolchainFile ./rust-toolchain.toml;42 craneLib = (crane.mkLib pkgs).overrideToolchain rust;43 in {44 _module.args.pkgs = import nixpkgs {45 inherit system;46 overlays = [rust-overlay.overlays.default];47 };48 packages.polkit-backend = pkgs.callPackage ./nix/polkit-backend.nix {49 inherit craneLib;50 };51 shelly.shells.default = {52 factory = craneLib.devShell;53 packages = with pkgs; [54 cargo-edit55 cargo-asm56 cargo-outdated57 lld58 hyperfine59 valgrind60 kcachegrind61 graphviz62 cargo-release63 rustPlatform.bindgenHook64 pam65 just66 ];67 };68 formatter = pkgs.alejandra;69 };70 };71}