From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp11.migadu.com ([2001:41d0:2:bcc0::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms5.migadu.com with LMTPS id UGX2Jk8DTGOvFAAAbAwnHQ (envelope-from ) for ; Sun, 16 Oct 2022 15:12:47 +0200 Received: from aspmx1.migadu.com ([2001:41d0:2:bcc0::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp11.migadu.com with LMTPS id qMYUJ08DTGN6ugAA9RJhRA (envelope-from ) for ; Sun, 16 Oct 2022 15:12:47 +0200 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id 66A93DB5B for ; Sun, 16 Oct 2022 15:12:47 +0200 (CEST) Received: from localhost ([::1]:49018 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ok3Re-0000K7-HT for larch@yhetil.org; Sun, 16 Oct 2022 09:12:46 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:42690) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ok3Qe-0000J4-NJ for guix-devel@gnu.org; Sun, 16 Oct 2022 09:11:44 -0400 Received: from mail-ed1-x542.google.com ([2a00:1450:4864:20::542]:37824) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ok3Qc-0006o5-AY for guix-devel@gnu.org; Sun, 16 Oct 2022 09:11:43 -0400 Received: by mail-ed1-x542.google.com with SMTP id m16so12641194edc.4 for ; Sun, 16 Oct 2022 06:11:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:user-agent:content-transfer-encoding:references :in-reply-to:date:to:from:subject:message-id:from:to:cc:subject:date :message-id:reply-to; bh=IXrb7joyMZ+Xsej0OgEMMWP6o23MgwSgbeo5mG5YHYo=; b=An1U7uctes0XZ8750YaypsDzmdBibS2dIBbPokc2cwFReJui0tPTBOtwurV13Fm3Rl MBPr1XZhbrWKfw8TfSwNtr49idrGoK3Zez/pcJve92oanRtXzWYykrMtQsVliiYqQqjE K4BgqhbXDFhRFuUfH/Rm11skNeySBv0f0G1i7fe3I5ZgvosSfsR+75omDPpKLAreMjjF /VuhzCR7/pcss3gkwJtUMEg9NmonU0hUGAC4BOYql3ga2ioUCUVMSUivrzoYypAUwveP Gs46Q40a4VqklVE1wOcK/vk8FWR6jnp1AoIk4/jEcUorzTKArLYAtddmoMtlwJ4Nj8V+ kH6Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=mime-version:user-agent:content-transfer-encoding:references :in-reply-to:date:to:from:subject:message-id:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=IXrb7joyMZ+Xsej0OgEMMWP6o23MgwSgbeo5mG5YHYo=; b=TLnPKO3PLzqJkjTAtL6Mvk79jxMpVH+ocCenhCh0THOvghjIeEcDrGP3eHXHyTfcnG CErla1FHM8kR5gaswFE2FOwy9Sb5PVf/n8mUJbfW8D3TSU7mAqKXLHDT60nhTzLeMBjh ZVJXpsQC/CylpszFmjU9Xm/612ltPNNMZ4kFvdPYwjkSi7pRxkTA45jYf0ZuLb4nhp8D K7EuyfcFCJK0iAQtSD8vQVpfd0ezttCchMeErvey+jLHKh6PFsblqf70en0kviIdgjuF 4U0U0/MA/b/7Ff6UXk04A9PdxJtkJlc0Mb2ObIbkSKJJKpswAU1wNInj+vlBUROkFZDA Hd2Q== X-Gm-Message-State: ACrzQf2nfPLU8i/yhg6S2qB5QswrqosVu3DY7Vqp5exWBFKiFNkdJFEs AjknbLDTJF0jrzFFXD8jmhU= X-Google-Smtp-Source: AMsMyM4tbdY0qsFOrPLmkQkxXciTsna5fj+s/OBhRYMa/SinAqyYZuBLsoPmD6bsY2AG6r/mPVdmlw== X-Received: by 2002:a05:6402:35cc:b0:45d:4a39:2a43 with SMTP id z12-20020a05640235cc00b0045d4a392a43mr6228479edc.304.1665925900488; Sun, 16 Oct 2022 06:11:40 -0700 (PDT) Received: from lumine.fritz.box (85-127-52-93.dsl.dynamic.surfer.at. [85.127.52.93]) by smtp.gmail.com with ESMTPSA id o17-20020aa7d3d1000000b0045ce1012193sm5498256edr.48.2022.10.16.06.11.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 16 Oct 2022 06:11:39 -0700 (PDT) Message-ID: <866dce757bafc9e92c64582b3bc3b50a792c4e7e.camel@gmail.com> Subject: Re: Guix Goals: One Hackable Developer Tool To Rule Them All From: Liliana Marie Prikler To: jgart , Guix Devel Date: Sun, 16 Oct 2022 15:11:38 +0200 In-Reply-To: <20221013010703.GB27375@dismail.de> References: <20221013010703.GB27375@dismail.de> Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable User-Agent: Evolution 3.46.0 MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::542; envelope-from=liliana.prikler@gmail.com; helo=mail-ed1-x542.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: guix-devel@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "Development of GNU Guix and the GNU System distribution." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-devel-bounces+larch=yhetil.org@gnu.org Sender: "Guix-devel" X-Migadu-Flow: FLOW_IN X-Migadu-Country: US ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1665925967; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post:dkim-signature; bh=IXrb7joyMZ+Xsej0OgEMMWP6o23MgwSgbeo5mG5YHYo=; b=XI2LJO1cSpWLi7P1bHsO6NHBKiBzbZXgaMhXZdsQNNi2i3prQluOvWcYpC0uUIy721KVnr J17duiEyWQYpR0ROKi05DRt6Wc9P3FDGI6TuVW5Xt6sorvN5JuFeClbTQjaAIkvqoufw71 hzFGA4ay3NS1oGCAGP56ra5nKWyAhnasU7XNpUsGcgulbUwPSwybH3cTLy34Fnc8nNBsC/ qBIOggRmmAtzrH/4JEV97uQ0BY0+xFD8sokjeLnFNUTOp0sd0CWeeyCAswTbzZFA/JBF2u k4fQXyAxm5WoLIhOKF2i3hROn9tZHrPJ3qZkKEJGVPQA9fchoxGpc8dn8jV5FQ== ARC-Seal: i=1; s=key1; d=yhetil.org; t=1665925967; a=rsa-sha256; cv=none; b=IPvjYNtycAzy53fiwV0FNBPzKj/lXsCtlXrbJgz01zi7F5zsdfduzBc+m73YxoxIX+E7Dj LqrJYtbBSlUrmkC7NTUXBJWVthlAhMi2R586V6829+gHQyn2B+sbJiM5hnqZJDSUggMULB UWc68zm1sUVAXrH/1LnHaIr6nKLqwF9c11hOSRreTJMphmOLquLlVj2SG4Taumv4J3ffJW opKYqaKv1nzC91wzurSHF9PUC2iUfaqNSIkyDOBcuC6uGFncnDj9LdY+8JXMqPOHZ5nZWf EN/2fiI7sLQoyJpvXRaZ9/j3D80GTZQbKGITaBlq2K3nbl1nY/4XkbarX4vX6A== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=An1U7uct; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (aspmx1.migadu.com: domain of "guix-devel-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="guix-devel-bounces+larch=yhetil.org@gnu.org" X-Migadu-Spam-Score: -2.40 Authentication-Results: aspmx1.migadu.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=An1U7uct; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (aspmx1.migadu.com: domain of "guix-devel-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="guix-devel-bounces+larch=yhetil.org@gnu.org" X-Migadu-Queue-Id: 66A93DB5B X-Spam-Score: -2.40 X-Migadu-Scanner: scn1.migadu.com X-TUID: LZuLMUzdHZEb Am Donnerstag, dem 13.10.2022 um 01:07 -0500 schrieb jgart: > Hi Guixers, >=20 > What do you think if we were to implement "Guix Goals"? >=20 > The various language ecosystems have their own linters, formatters, > typecheckers, repls, test runners, etc. >=20 > What if Guix could manage them all? >=20 > `guix lint` in a python project would run mypy. > `guix lint` in a haskell project would run hlint. > `guix lint` in an erlang project would run dialyzer. >=20 > `guix fmt` in a python project would run black. > `guix fmt` in a haskell project would run ormolu. > `guix fmt` in a erlang project would run erlfmt. >=20 > `guix repl` in a python project would run ptpython or some other > configured repl. > `guix repl` in a haskell project would run ghci. > `guix repl` in a erlang project would run erl. >=20 > `guix test` in a python project would run pytest or unittest. > `guix test` in a haskell project would run hunit. > `guix test` in a erlang project would run eunit. >=20 > `guix run` in a python project could start a flask app listening on a > particular port. > `guix run` in a ruby project could start a puma server. > `guix run` in a haskell project could run a pre-configured script or > Main.hs > `guix run` in a erlang project could start a cowboy server. >=20 > The idea would be to have Guix provide a configurable CLI wrapper > subcommand around all language ecosystem developer tools. In other > words it's the same Guixy thesis applied to developer tooling. I > think this could take the Guix developer experience to the next > level. Completely unnecessary. You can already do this with guix shell or gwl if you prefer. To elaborate, note that only the last variable in a file or manifest needs to evaluate to a list of packages or manifest. That is, you can write a self-reading manifest/script wrapper relatively easy. #!/bin/sh exec guix shell -m "$0" -- guile -e main -s "$0" "$@"=20 !# (define (main args) ...) ... (specifications->manifest ...) Of course, it'd be hell of a lot cleaner to separate manifest and business logic, but who am I to stop you? Cheers