From c5cc13fad8986021a24588ba9ad8b959e4223827 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Wed, 29 Oct 2025 12:21:18 +0100 Subject: [PATCH 1/2] Add nixgen package MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reviewed-by: Aleix Boné --- overlay.nix | 1 + pkgs/nixgen/default.nix | 22 ++++++++++ pkgs/nixgen/nixgen | 97 +++++++++++++++++++++++++++++++++++++++++ 3 files changed, 120 insertions(+) create mode 100644 pkgs/nixgen/default.nix create mode 100755 pkgs/nixgen/nixgen diff --git a/overlay.nix b/overlay.nix index 3b02ae30..b737daed 100644 --- a/overlay.nix +++ b/overlay.nix @@ -37,6 +37,7 @@ let nanos6 = callPackage ./pkgs/nanos6/default.nix { }; nanos6Debug = final.nanos6.override { enableDebug = true; }; nixtools = callPackage ./pkgs/nixtools/default.nix { }; + nixgen = callPackage ./pkgs/nixgen/default.nix { }; # Broken because of pkgsStatic.libcap # See: https://github.com/NixOS/nixpkgs/pull/268791 #nix-wrap = callPackage ./pkgs/nix-wrap/default.nix { }; diff --git a/pkgs/nixgen/default.nix b/pkgs/nixgen/default.nix new file mode 100644 index 00000000..455556b7 --- /dev/null +++ b/pkgs/nixgen/default.nix @@ -0,0 +1,22 @@ +{ + stdenv +, lib +}: + +stdenv.mkDerivation { + pname = "nixgen"; + version = "0.0.1"; + src = ./nixgen; + dontUnpack = true; + phases = [ "installPhase" ]; + installPhase = '' + mkdir -p $out/bin + cp -a $src $out/bin/nixgen + ''; + meta = { + description = "Quickly generate flake.nix from command line"; + maintainers = with lib.maintainers.bsc; [ rarias ]; + platforms = lib.platforms.linux; + license = lib.licenses.gpl3Plus; + }; +} diff --git a/pkgs/nixgen/nixgen b/pkgs/nixgen/nixgen new file mode 100755 index 00000000..557e0fed --- /dev/null +++ b/pkgs/nixgen/nixgen @@ -0,0 +1,97 @@ +#!/bin/sh +# +# Copyright (c) 2025, Barcelona Supercomputing Center (BSC) +# SPDX-License-Identifier: GPL-3.0+ +# Author: Rodrigo Arias Mallo + +function usage() { + echo "USAGE: nixgen [-f] [package [...]] [-b package [...]]" >&2 + echo " Generates a flake.nix file with the given packages." >&2 + echo " After flake.nix is created, use 'nix develop' to enter the shell." >&2 + echo "OPTIONS" >&2 + echo " -f Overwrite existing flake.nix (default: no)." >&2 + echo " packages... Add these packages to the shell." >&2 + echo " -b packages... Add the dependencies needed to build these packages." >&2 + echo "EXAMPLE" >&2 + echo " $ nixgen ovni bigotes -b nosv tampi" >&2 + echo " Adds the packages ovni and bigotes as well as all required dependencies" >&2 + echo " to build nosv and tampi." >&2 + echo "AUTHOR" >&2 + echo " Rodrigo Arias Mallo " >&2 + exit 1 +} + +mode=package +packages= +inputsFrom= +force= + +if [[ $# -eq 0 ]]; then + usage +fi + +while [[ $# -gt 0 ]]; do + case $1 in -b) + mode=build + shift + ;; + -f) + force=1 + shift + ;; + -h) + usage + ;; + -*|--*) + echo "error: unknown option $1" >&2 + exit 1 + ;; + *) + if [ "$mode" == "package" ]; then + packages+="${packages:+ }$1" + else + inputsFrom+="${inputsFrom:+ }$1" + fi + shift + ;; + esac +done + +if [ ! "$force" -a -e flake.nix ]; then + echo "error: flake.nix exists, force overwrite with -f" >&2 + exit 1 +fi + +cat > flake.nix < Date: Wed, 29 Oct 2025 12:39:05 +0100 Subject: [PATCH 2/2] Add nixgen to all machines MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reviewed-by: Aleix Boné --- m/common/base/env.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/m/common/base/env.nix b/m/common/base/env.nix index e5530501..d23dc73c 100644 --- a/m/common/base/env.nix +++ b/m/common/base/env.nix @@ -5,8 +5,8 @@ vim wget git htop tmux pciutils tcpdump ripgrep nix-index nixos-option nix-diff ipmitool freeipmi ethtool lm_sensors cmake gnumake file tree ncdu config.boot.kernelPackages.perf ldns pv - # From bsckgs overlay - osumb + # From jungle overlay + osumb nixgen ]; programs.direnv.enable = true; -- 2.49.0