[{"columns":["rid","dst_apid","dst_ap","src_apid","src_ap","alid","airline","codeshare"],"name":"routes","type":"grid"}]

How can I build a Guix package for Nextcloud server?

{"text":"Building a package for Nextcloud server using the Guix package manager involves a few steps:\n\n    Familiarize yourself with the Guix system and its packaging process: Before building a package, it is important to understand how Guix handles packages and how it builds and installs software. You can start by reading the official Guix manual and tutorial.\n\n    Get the Nextcloud source code: You can download the Nextcloud source code from the Nextcloud website or from its GitHub repository.\n\n    Write a Guix package definition: A Guix package definition is a Scheme file that describes the package, including its dependencies, build process, and installation instructions. The definition should specify the Nextcloud source code tarball as an input, and provide all necessary information for Guix to build and install the software.\n\n    Build the package: You can build the package by running the \"guix build\" command and specifying the package definition file. Guix will download the necessary dependencies, build the software, and create a package file.\n\n    Install the package: You can install the Nextcloud server by running the \"guix package -i\" command and specifying the package file. Guix will take care of the installation process, including setting up the necessary configuration files and directories.\n\nIt is recommended to seek out existing package definitions for similar software and to use them as a reference when writing your own definition. The Guix community also provides a mailing list and a repository of packages that you can use as a resource.","dsl":{}}

How do I submit the package definition to the guix repositories?

{"text":"Development is done using the Git distributed version control system. Thus, access to the repository is not strictly necessary. We welcome contributions in the form of patches as produced by git format-patch sent to the guix-patches@gnu.org mailing list (see Submitting patches to a project in Git User Manual). Contributors are encouraged to take a moment to set some Git repository options (see Configuring Git) first, which can improve the readability of patches. Seasoned Guix developers may also want to look at the section on commit access (see Commit Access).\n\nThis mailing list is backed by a Debbugs instance, which allows us to keep track of submissions (see Tracking Bugs and Patches). Each message sent to that mailing list gets a new tracking number assigned; people can then follow up on the submission by sending email to ISSUE_NUMBER@debbugs.gnu.org, where ISSUE_NUMBER is the tracking number (see Sending a Patch Series).\n\nPlease write commit logs in the ChangeLog format (see Change Logs in GNU Coding Standards); you can check the commit history for examples.\n\nBefore submitting a patch that adds or modifies a package definition, please run through this check list:\n\nIf the authors of the packaged software provide a cryptographic signature for the release tarball, make an effort to verify the authenticity of the archive. For a detached GPG signature file this would be done with the gpg --verify command.\nTake some time to provide an adequate synopsis and description for the package. See Synopses and Descriptions, for some guidelines.\nRun guix lint package, where package is the name of the new or modified package, and fix any errors it reports (see Invoking guix lint).\nRun guix style package to format the new package definition according to the project\u2019s conventions (see Invoking guix style).\nMake sure the package builds on your platform, using guix build package.\nWe recommend you also try building the package on other supported platforms. As you may not have access to actual hardware platforms, we recommend using the qemu-binfmt-service-type to emulate them. In order to enable it, add the virtualization service module and the following service to the list of services in your operating-system configuration:\n\n(service qemu-binfmt-service-type\n (qemu-binfmt-configuration\n   (platforms (lookup-qemu-platforms \"arm\" \"aarch64\"))))\n\nThen reconfigure your system.\n\nYou can then build packages for different platforms by specifying the --system option. For example, to build the \"hello\" package for the armhf or aarch64 architectures, you would run the following commands, respectively:\n\nguix build --system=armhf-linux --rounds=2 hello\nguix build --system=aarch64-linux --rounds=2 hello\n\nMake sure the package does not use bundled copies of software already available as separate packages.\nSometimes, packages include copies of the source code of their dependencies as a convenience for users. However, as a distribution, we want to make sure that such packages end up using the copy we already have in the distribution, if there is one. This improves resource usage (the dependency is built and stored only once), and allows the distribution to make transverse changes such as applying security updates for a given software package in a single place and have them affect the whole system\u2014something that bundled copies prevent.\n\nTake a look at the profile reported by guix size (see Invoking guix size). This will allow you to notice references to other packages unwillingly retained. It may also help determine whether to split the package (see Packages with Multiple Outputs), and which optional dependencies should be used. In particular, avoid adding texlive as a dependency: because of its extreme size, use the texlive-tiny package or texlive-union procedure instead.\nFor important changes, check that dependent packages (if applicable) are not affected by the change; guix refresh --list-dependent package will help you do that (see Invoking guix refresh).\nDepending on the number of dependent packages and thus the amount of rebuilding induced, commits go to different branches, along these lines:\n\n300 dependent packages or less\nmaster branch (non-disruptive changes).\n\nbetween 300 and 1,800 dependent packages\nstaging branch (non-disruptive changes). This branch is intended to be merged in master every 6 weeks or so. Topical changes (e.g., an update of the GNOME stack) can instead go to a specific branch (say, gnome-updates). This branch is not expected to be buildable or usable until late in its development process.\n\nmore than 1,800 dependent packages\ncore-updates branch (may include major and potentially disruptive changes). This branch is intended to be merged in master every 6 months or so. This branch is not expected to be buildable or usable until late in its development process.\n\nAll these branches are tracked by our build farm and merged into master once everything has been successfully built. This allows us to fix issues before they hit users, and to reduce the window during which pre-built binaries are not available.\n\nWhen we decide to start building the staging or core-updates branches, they will be forked and renamed with the suffix -frozen, at which time only bug fixes may be pushed to the frozen branches. The core-updates and staging branches will remain open to accept patches for the next cycle. Please ask on the mailing list or IRC if unsure where to place a patch.\n\nCheck whether the package\u2019s build process is deterministic. This typically means checking whether an independent build of the package yields the exact same result that you obtained, bit for bit.\nA simple way to do that is by building the same package several times in a row on your machine (see Invoking guix build):\n\nguix build --rounds=2 my-package\n\nThis is enough to catch a class of common non-determinism issues, such as timestamps or randomly-generated output in the build result.\n\nAnother option is to use guix challenge (see Invoking guix challenge). You may run it once the package has been committed and built by ci.guix.gnu.org to check whether it obtains the same result as you did. Better yet: Find another machine that can build it and run guix publish. Since the remote build machine is likely different from yours, this can catch non-determinism issues related to the hardware\u2014e.g., use of different instruction set extensions\u2014or to the operating system kernel\u2014e.g., reliance on uname or /proc files.\n\nWhen writing documentation, please use gender-neutral wording when referring to people, such as singular \u201cthey\u201d, \u201ctheir\u201d, \u201cthem\u201d, and so forth.\nVerify that your patch contains only one set of related changes. Bundling unrelated changes together makes reviewing harder and slower.\nExamples of unrelated changes include the addition of several packages, or a package update along with fixes to that package.\n\nPlease follow our code for GUIX formatting rules, possibly running guix style script to do that automatically for you.\nWhen possible, use mirrors in the source URL (see Invoking guix download). Use reliable URLs, not generated ones. For instance, GitHub archives are not necessarily identical from one generation to the next, so in this case it\u2019s often better to clone the repository. \nDon\u2019t use the name field in the URL: it is not very useful and if the name changes, the URL will probably be wrong.\nCheck if Guix builds (see Building from Git) and address the warnings, especially those about use of undefined symbols.\nMake sure your changes do not break Guix and simulate a guix pull with:\n\nguix pull --url=/path/to/your/checkout --profile=/tmp/guix.master\n\nWhen posting a patch to the mailing list, use \u2018[PATCH] \u2026\u2019 as a subject, if your patch is to be applied on a branch other than master, say core-updates, specify it in the subject like \u2018[PATCH core-updates] \u2026\u2019.\n\nYou may use your email client or the git send-email command (see Sending a Patch Series). We prefer to get patches in plain text messages, either inline or as MIME attachments. You are advised to pay attention if your email client changes anything like line breaks or indentation which could potentially break the patches.\n\nExpect some delay when you submit your very first patch to guix-patches@gnu.org. You have to wait until you get an acknowledgement with the assigned tracking number. Future acknowledgements should not be delayed.\n\n[information pulled from https://guix.gnu.org/manual/en/html_node/Submitting-Patches.html]","dsl":{}}