You know what I just realised? These “universal formats” were created to make it easier for developers to package software for Linux, and there just so happens to be this thing called the Open Build Service by OpenSUSE, which allows you to package for Debian and Ubuntu (deb), Fedora and RHEL (rpm) and SUSE and OpenSUSE (also...
Oh, yes we have. Gitlab, Codeberg, Notabug, etc. You can even host your own Gitea or Forgejo instance if you want.
Self-hosting is right out for most people. It’s pretty expensive to even get started without compromising your home network (router with VLAN, switch, multiple servers (at least thinclients)), and then on top of that you need to maintain it, and can’t really ever max out your download/upload speeds because people are depending on your internet to interact with the repo.
Gitlab is also for-profit, but also has blackouts and devs going rm -rf on the production DB. It’s often in the news for bad things, so I’ve generally avoided it.
Codeberg is great for personal repos, but most smaller git hosting services have horrible SEO. Like I’ve had issues finding repos when searching for their exact name, if I had to use general search terms I’d only see github repos.
Julia, Clojure and Go. Are any of these good for a beginner or should I start with something else?
That totally depends on what you want to do.
Go should be easiest since it’s purposefully simplified in order to make learning it easier. There are some more difficult concepts, but the start should be easy enough. I know about go with tests, but it’s not really programming beginner friendly.
I’d avoid clojure as a beginner. It’s more for people who know java, but don’t want to write java. Common lisp and schemes are good for learning programming, but they’re not a popular group of languages and that can be a problem.
Reports in the New York Post newspaper said that viewers in the US had seen people in Dublin exposing body parts, making inappropriate gestures and holding up footage of 9/11 since the installation opened last week.
Aaah, so that’s why it takes them so long to update packages.
I’ll bet you anything they’re not reading the code for every random package and dependency. But yeah, with free distros it’s at least possible to read everything that’s on your machine.
It’s much simpler because you’re using text files to define the expected state, the cli is there only to tell nix to figure out what it needs to do and to get on with it. Meanwhile with git you’re manually doing each of the steps until you reach the desired state.
I only need cd ~/dotfiles/nix/ && nix-channel --update && nix flake update && home-manager switch for everyday package management. It’s the nix version of apt update upgrade and install.
nix shell and nix run are pretty useful as well, and you’d want home-manager generations to rollback.
The confusion arises because there are 5 different ways to do the same thing, the non-experimental methods shouldn’t be used even though they’re recommended in the official docs, and you need to get lucky to get the info that you can use home-manager and that one liner.
You’re ignoring the difference between using something declaratory and imperatively. Just because it’s difficult to get to that one liner, it doesn’t change the fact you’ll still only use that one command. Git by it’s nature requires you to use different commands to achieve different results. Home-manager allows you to both update your packages and delete all of them with the same command, because that command is “sync the state with the source of truth”.
It’s far better in theory, but in practice it’s got some massive issues:
non-free packages are taboo in the official guix community
binary support was lacking the last time I used it (firefox didn’t have a precompiled bin for example, and that means you need to leave your browser to compile overnight)
far less packages than nixpkgs even when you account for the non-free repo
packages are seriously out of date (I tried using it as an additional pm a few months ago, and debian 12 was newer in a lot of cases)
essentially no support for some programming languages and package managers (node and npm for example)
In it’s current state it’s really only good for emacs, lisps, and some other languages like haskell.
I don’t really care about the declarative/imperative thing, to me how many commands you “really need” is beside the point.
Caring is not required, but you need to at least understand the difference.
This is essentially the same argument as the people who say “git is not complex because you only really need checkout/commit/push, just ignore all the other commands.”
It’s really not.
Stage,commit,push,fetch,merge,etc. are all commands you need issue to git in order to manually create a desired state. You need to know what you’re doing, and what to do differently if there’s an issue.
home-manager switch does all of it on its own. You don’t use a different cli command if something’s broken, you change the source of truth. All of the commands you might use in an imperative package manager like apt update/upgrade/install/remove are instead that one command.
Even home-manager has this warning at the very top of the page that basically tells you “you need to understand all the other commands first before you use this,” and “if your directory gets messed up you have to fix it yourself.”
It’s quite a disingenuous interpretation of “beware: home-manager uses the nix language and so gives nix language errors” and “choosing to create configuration files might overwrite the existing ones for that package”…
If you’re using a programming language, expect error messages specific to that language/compiler/interpreter/whatever. And it’s not like every other PM is using standardised error messages, you still need to learn to read them.
Config files aren’t generated randomly, you need to manually enable the configuration of each package. If someone is capable of getting to the info required to know how to configure a package, it’s reasonable to expect that they can guess that changing a config might overwrite the existing one.
These are exactly the same kinds of problems people have with git.
Do tell me how you can solve git problems without changing the git commands.
You’re essentially saying that the terraform cli has the exact same problems as the aws cli, and that’s just ridiculous. They both let you host your blog, but they do it in a completely different way and therefore have different issues.
Nix has the same mix of conceptual simplicity and atrocious user interface as git,
Nobody at any point compared the difficulty of learning the entirety of each of those systems, and my entire point is that the complexity of nix is not in the cli commands…
I’m going to have to come back to Nix/NixOS in a bit.
Use nix + home-manager first for sure. It’s far easier, and you can slowly get into it while making a list of bleeding edge packages.
I’ll probably wait until the official docs catch up as it appears that they are quite a bit behind
Skip them altogether when you’re starting out. I gave up on trying nix the first few times due to how bad they are. zero-to-nix.com is better for learning the basics of nix.
That and I’m not sure how I feel about a DSL for package management. I’d much rather use JSON or YAML, or even INI or TOML.
The closest you can get is home-manager with a list of packages in a json-like format. It’s really not practical to develop a declarative system without a programming language. A basic example would be variables, more advanced would be to write a wrapper that modifies the package so it automatically runs the required cli commands to use your dediated gpu and nixGL with specific packages (nvidia-run-mx nixVulkanNvidia-525.147.05 obs for example).
It’s sort of like IaC where you’ve got terraform (dsl), pulumi (various languages), and cloudformation (json/yaml). Can you guess which one is universally despised?
Maybe if I were a LISP or Haskell guy.
Then you’d use guix and a dsl made within an actual programming language (much better approach IMO).
Edit: sadly, Auto Tab Discard did not fix my issue. Firefox is also set to block audio (including video with audio to my understanding) by default, which I never changed so I don’t think that helps with this issue either....
I’ve been using konsole (and iterm2 on my work mac) for most of my working career, but on the linux side, I’ve recently switched to Kitty, but now I’m wondering if I can finally get used to just using emacs on both....
As far as I remember it was working fine like a year ago when I was trying to make my own config (just vterm and evil packages were required). At the time the Doom people were saying it was impossible due to how terminal emulation works. Now it’s mostly working in Doom unless you go over 1 line. If you do, you’re not in a good place since you can’t use ESC to jump between words.
Did I just solve the packaging problem? (please feel free to tell me why I'm wrong)
You know what I just realised? These “universal formats” were created to make it easier for developers to package software for Linux, and there just so happens to be this thing called the Open Build Service by OpenSUSE, which allows you to package for Debian and Ubuntu (deb), Fedora and RHEL (rpm) and SUSE and OpenSUSE (also...
Why FOSS projects are using proprietary, privacy invasive infrastructure?
cross-posted from: lemmy.ml/post/15691030...
Start learning at 50
Start learning at 50...
Anyone else think this "portal" art installation in NYC looks a bit familiar? (lemmy.world)
Context: www.usatoday.com/story/news/world/…/73633531007/
Does any distro read through 100% of the source-code of a package before adding it to its repo?
The genesis of a nixOS user (programming.dev)
cross-posted from: programming.dev/post/14020506...
Wait, it's all Linux? (lemmy.zip)
Laptop randomly playing media
Edit: sadly, Auto Tab Discard did not fix my issue. Firefox is also set to block audio (including video with audio to my understanding) by default, which I never changed so I don’t think that helps with this issue either....
Does anyone use emacs as their main terminal emulator?
I’ve been using konsole (and iterm2 on my work mac) for most of my working career, but on the linux side, I’ve recently switched to Kitty, but now I’m wondering if I can finally get used to just using emacs on both....
How do you prefer to install compilers, interpreters, sdks e.t.c
Usually, I prefer manually installing the packages needed for getting started with a new language or technlogy....