In order to switch from Arch to NixOS we first need to package the apps that are not available in the Nix repos manually.
In order to switch from Arch to NixOS we first need to package the apps that are not available in the [Nix repos](https://search.nixos.org/packages) manually.
Based on the output of pacman -Qe, I think we need to package the following software:
certbot-dns-porkbun
collabora-online-server-nodocker
guacamole-client
guacamole-server
mx-puppet-discord (Nix version is out of date)
plugin-git
woodpecker
woodpecker-agent
xorgxrdp-glamor
zenmonitor3-git
Overall I'm suprised though at how extensive the Nix repos are, which should make the switch a lot easier.
Anyways, I'm glad @codedotjs you're taking the initiative to work on Nix packaging!
Based on the output of `pacman -Qe`, I think we need to package the following software:
- certbot-dns-porkbun
- collabora-online-server-nodocker
- guacamole-client
- guacamole-server
- mx-puppet-discord (Nix version is out of date)
- plugin-git
- woodpecker
- woodpecker-agent
- xorgxrdp-glamor
- zenmonitor3-git
Overall I'm suprised though at how extensive the Nix repos are, which should make the switch a lot easier.
Anyways, I'm glad @codedotjs you're taking the initiative to work on Nix packaging!
An alternative could be to use an Arch Linux container for these packages that aren't in Nix, but we'll have to package guacamole-client, guacamole-server, and xorgxrdp-glamor at least since those packages should be run bare-metal.
An alternative could be to use an Arch Linux container for these packages that aren't in Nix, but we'll have to package `guacamole-client`, `guacamole-server`, and `xorgxrdp-glamor` at least since those packages should be run bare-metal.
We could also run some of the programs in a docker container.
That's a good idea for a temporary solution, but I want to avoid Docker in the long run and migrate everything to Nix.
> We could also run some of the programs in a docker container.
That's a good idea for a temporary solution, but I want to avoid Docker in the long run and migrate everything to Nix.
We could probably use one of these tools to automate packaging of go applications like woodpecker:
* [vgo2nix](https://github.com/nix-community/vgo2nix)
* [gomod2nix](https://github.com/tweag/gomod2nix) – doesn't seem to be working right now
* [go2nix](https://github.com/kamilchm/go2nix) – archived
Woodpecker is packaged now. I got some friendly help from the Nix community. One of the devs already created a nixpkg for woodpecker but it hasn't been released yet. There are still two issues within the script but I hope they will get fixed soon. I will create a repository in the exozyme project where all our packages can be put in.
Woodpecker is packaged now. I got some friendly help from the [Nix community](https://app.element.io/#/room/#dev:nixos.org). One of the devs already created a [nixpkg](https://git.pixie.town/f0x/nixos/src/branch/main/common/packages/woodpecker/server.nix) for woodpecker but it hasn't been released yet. There are still two issues within the script but I hope they will get fixed soon. I will create a repository in the exozyme project where all our packages can be put in.
I messed up the git repos on my laptop so I have to recreate the packages repository. I also created another project board but it doesn't seem to be necessary. #justplayingaround 😁
I messed up the git repos on my laptop so I have to recreate the `packages` repository. I also created another project board but it doesn't seem to be necessary. #justplayingaround 😁
As a next step I will try packaging **guacamole**.
* [website](https://guacamole.apache.org/)
* [download page](https://guacamole.apache.org/releases/1.4.0/)
* [documentation](https://guacamole.apache.org/doc/1.4.0/gug/)
* [installation process](https://guacamole.apache.org/doc/1.4.0/gug/installing-guacamole.html)
Building the guacamole-server package works. There are just not all extentions working. We have to take a look at that later.
Guacamole-client seems to be a bit harder to package.
Building the guacamole-server package works. There are just not all extentions working. We have to take a look at that later.
Guacamole-client seems to be a bit harder to package.
Well it seems like there have been some other people also struggling with guacamole out there:
* https://github.com/NixOS/nixpkgs/pull/48140
* https://github.com/NixOS/nixpkgs/issues/17879
I added a project in the packages repo. That should help us keeping this issue more clean. We can also create issues for one application specifically there.
I added a [project](https://git.exozy.me/exozyme/packages/projects/4) in the packages repo. That should help us keeping this issue more clean. We can also create issues for one application specifically there.
In the future, if I don't respond for a week, that means I probably didn't see the comment and just ping me on Matrix about it!
> @Ta180m could you please provide a link to the source code or a website of plugin-git? I wasn't able to find it on my short internet research.
Sorry, I didn't see this comment. Here's the website for it: https://github.com/woodpecker-ci/plugin-git
In the future, if I don't respond for a week, that means I probably didn't see the comment and just ping me on Matrix about it!
Yes if they get through our tests. The problem is that I don't have a GitHub account in the moment. That is one of my todos in order to contribute to nixpkgs in the future.
Yes if they get through our tests. The problem is that I don't have a GitHub account in the moment. That is one of my todos in order to contribute to nixpkgs in the future.
@thehedgehog Would you like to help with submitting our Nix packages to upstream nixpkgs? I think Guacamole and GLAuth have already been packaged: https://git.exozy.me/exozyme/packages/
> @thehedgehog Would you like to help with submitting our Nix packages to upstream nixpkgs? I think Guacamole and GLAuth have already been packaged: https://git.exozy.me/exozyme/packages/
I'd be glad to do that!
@thehedgehog do you know how to prefetch packages or dependencies for other applications?
We have got an issue with the Guacamole client. The package is written in Java and needs Maven to compile. Maven itself requires a plugin which can't be fetched during the installation since the Nix sandbox doesn't have an internet connection. As a workaround we have got an installation script that installs a prebuilt webapp.
What do you think about that? Would it be possible to somehow prefetch the plugin and is that step even needed (or does the script suffice)?
@thehedgehog do you know how to prefetch packages or dependencies for other applications?
We have got an issue with the [Guacamole client](https://git.exozy.me/exozyme/packages/issues/5). The package is written in Java and needs Maven to compile. Maven itself requires a plugin which can't be fetched during the installation since the Nix sandbox doesn't have an internet connection. As a workaround we have got an installation script that installs a prebuilt webapp.
What do you think about that? Would it be possible to somehow prefetch the plugin and is that step even needed (or does the script suffice)?
@thehedgehog do you know how to prefetch packages or dependencies for other applications?
We have got an issue with the Guacamole client. The package is written in Java and needs Maven to compile. Maven itself requires a plugin which can't be fetched during the installation since the Nix sandbox doesn't have an internet connection. As a workaround we have got an installation script that installs a prebuilt webapp.
What do you think about that? Would it be possible to somehow prefetch the plugin and is that step even needed (or does the script suffice)?
Looking into this right now. Seems like there's a bit of JSON generation with some external tools that needs to happen. Currently building a test version, if this works, I'm going to clean it up and send a PR. Java packaging in Nix sucks as so much java tooling depends on having network access(same with most package managers tbh), and there is just SO MUCH STUFF to download. It's downloading like 6 versions of every package I swear.
> @thehedgehog do you know how to prefetch packages or dependencies for other applications?
> We have got an issue with the [Guacamole client](https://git.exozy.me/exozyme/packages/issues/5). The package is written in Java and needs Maven to compile. Maven itself requires a plugin which can't be fetched during the installation since the Nix sandbox doesn't have an internet connection. As a workaround we have got an installation script that installs a prebuilt webapp.
> What do you think about that? Would it be possible to somehow prefetch the plugin and is that step even needed (or does the script suffice)?
Looking into this right now. Seems like there's a bit of JSON generation with some external tools that needs to happen. Currently building a test version, if this works, I'm going to clean it up and send a PR. Java packaging in Nix sucks as so much java tooling depends on having network access(same with most package managers tbh), and there is just **SO MUCH STUFF** to download. It's downloading like 6 versions of every package I swear.
In order to switch from Arch to NixOS we first need to package the apps that are not available in the Nix repos manually.
Based on the output of
pacman -Qe
, I think we need to package the following software:Overall I'm suprised though at how extensive the Nix repos are, which should make the switch a lot easier.
Anyways, I'm glad @codedotjs you're taking the initiative to work on Nix packaging!
An alternative could be to use an Arch Linux container for these packages that aren't in Nix, but we'll have to package
guacamole-client
,guacamole-server
, andxorgxrdp-glamor
at least since those packages should be run bare-metal.We could also run some of the programs in a docker container.
I created my first nix application using their guide at https://nixos.org/guides/dev-environment.html 😄
That's a good idea for a temporary solution, but I want to avoid Docker in the long run and migrate everything to Nix.
Here are some links:
Important
I think I'll start packaging
woodpecker-ci
.https://github.com/woodpecker-ci/woodpecker
We could probably use one of these tools to automate packaging of go applications like woodpecker:
Well they don't seem to be needed.
Woodpecker is packaged now. I got some friendly help from the Nix community. One of the devs already created a nixpkg for woodpecker but it hasn't been released yet. There are still two issues within the script but I hope they will get fixed soon. I will create a repository in the exozyme project where all our packages can be put in.
I messed up the git repos on my laptop so I have to recreate the
packages
repository. I also created another project board but it doesn't seem to be necessary. #justplayingaround 😁Admin rights are dangerous. I have to watch out not to delete anything important.
Ok the woodpecker
default.nix
is in the repo now.The woodpecker default.nix seems to be only the server package. We will have to change that if we want the whole toolkit.
Ok. We will package each woodpecker subpackage seperately.
The woodpecker packages are added now (server, agent and cli).
As a next step I will try packaging guacamole.
I accidently closed this issue 🤦.
Building the guacamole-server package works. There are just not all extentions working. We have to take a look at that later.
Guacamole-client seems to be a bit harder to package.
Well it seems like there have been some other people also struggling with guacamole out there:
We probably have to build the maven-build-helper-plugin first.
In fact it is called ”build-helper-maven-plugin“.
Oh no! I deleted the
default.nix
for the guacamole-server package. I really really need to clean up my folder system.Ok I was able to restore it from the git diff 😌.
I added a project in the packages repo. That should help us keeping this issue more clean. We can also create issues for one application specifically there.
@Ta180m could you please provide a link to the source code or a website of plugin-git? I wasn't able to find it on my short internet research.
Sorry, I didn't see this comment. Here's the website for it: https://github.com/woodpecker-ci/plugin-git
In the future, if I don't respond for a week, that means I probably didn't see the comment and just ping me on Matrix about it!
No problem 👍
@codedotjs We are planning on upstreaming these packages to nixpkgs, right?
Yes if they get through our tests. The problem is that I don't have a GitHub account in the moment. That is one of my todos in order to contribute to nixpkgs in the future.
I can use my GitHub account to submit PRs, if that's OK with you.
That would be totally fine 👍
@thehedgehog Would you like to help with submitting our Nix packages to upstream nixpkgs? I think Guacamole and GLAuth have already been packaged: https://git.exozy.me/exozyme/packages/
I'd be glad to do that!
@thehedgehog do you know how to prefetch packages or dependencies for other applications?
We have got an issue with the Guacamole client. The package is written in Java and needs Maven to compile. Maven itself requires a plugin which can't be fetched during the installation since the Nix sandbox doesn't have an internet connection. As a workaround we have got an installation script that installs a prebuilt webapp.
What do you think about that? Would it be possible to somehow prefetch the plugin and is that step even needed (or does the script suffice)?
Looking into this right now. Seems like there's a bit of JSON generation with some external tools that needs to happen. Currently building a test version, if this works, I'm going to clean it up and send a PR. Java packaging in Nix sucks as so much java tooling depends on having network access(same with most package managers tbh), and there is just SO MUCH STUFF to download. It's downloading like 6 versions of every package I swear.