flake.nix

2.0 KB · raw

1{2  description = "nina — the nix helper";34  inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";56  outputs = { self, nixpkgs }:7    let8      systems = [ "x86_64-linux" "aarch64-linux" "aarch64-darwin" "x86_64-darwin" ];9      forSystems = f: nixpkgs.lib.genAttrs systems f;10      version = builtins.replaceStrings [ "\n" "\r" " " "\t" ] [ "" "" "" "" ]11        (builtins.readFile ./VERSION);12    in {13      packages = forSystems (system:14        let pkgs = nixpkgs.legacyPackages.${system};15        in rec {16          nina = pkgs.stdenv.mkDerivation {17            pname = "nina";18            inherit version;19            src = self;20            nativeBuildInputs = [ pkgs.zig_0_16 ];21            dontConfigure = true;22            buildPhase = ''23              export ZIG_GLOBAL_CACHE_DIR="$TMPDIR/zig-cache"24              zig build -Doptimize=ReleaseSafe25            '';26            installPhase = ''27              install -Dm755 zig-out/bin/nina $out/bin/nina28            '';29            meta = with nixpkgs.lib; {30              description = "The nix helper — manage your NixOS system from the command line";31              mainProgram = "nina";32              platforms = platforms.unix;33              license = licenses.mit;34            };35          };36          default = nina;37        }38      );3940      nixosModules.default = { config, pkgs, lib, ... }:41        let cfg = config.programs.nina;42        in {43          options.programs.nina = {44            enable = lib.mkEnableOption "nina, the NixOS helper";45            package = lib.mkOption {46              type = lib.types.package;47              default = self.packages.${pkgs.system}.default;48              defaultText = lib.literalExpression "nina.packages.\${pkgs.system}.default";49              description = "The nina package to install.";50            };51          };52          config = lib.mkIf cfg.enable {53            environment.systemPackages = [ cfg.package ];54          };55        };5657      nixosModules.nina = self.nixosModules.default;58    };59}