Welcome to Incremental Social! Learn more about this project here!
Check out lemmyverse to find more communities to join from here!

Shareni

@Shareni@programming.dev

This profile is from a federated server and may be incomplete. Browse more on the original instance.

Shareni ,

It's far more simple than that. The students are predominantly nobles, and they pretty much completely cut all ties to their previous lives.

So why would you send a hot daughter to become a witch when you can marry her and make political gains? You send the disfigured one so you don't have to waste any more money on her.

The 5th son doesn't need to be disfigured to be essentially useless in the political world.

Shareni ,

OpenBlade reunites with his long lost family

Shareni ,

MilTek scrapped the internet to make OpenBlade

MATACORP saw the project and thought "What if we had AIs think instead of our customers?" and so web 4.0 was born

Shareni ,

hmmmmmm

  • phallic
  • penetrates people
  • gives out unsolicited bro science to improve your stabbing performance
Shareni ,

Gitlab: For profit (wouldn’t say it’s much better than github)

It's got that added excitement that comes with a risk of someone doing a rm -rf on the production DB

Shareni ,

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.

Shareni ,

Sure, but if you do that, and then follow it up with often outage and security issues, I'm going to seriously rethink using your services.

Shareni OP ,

It's pretty easy for home-manager use, but still really useful. You can:

  • choose which packages to install from stable and which from unstable
  • add packages from repos that have flake.nix in them
  • correctly match nix and home-manager versions, and always update them at the same time
  • allow-unfree without nixpkgs conf, so 1 less directory required in .config (if they accepted the "experimental" features it'd be down to 1)

Here's an example:

flake.nix
{
  description = "home flake";

  inputs = {
    nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
    home-manager.url = "github:nix-community/home-manager/master";
    home-manager.inputs.nixpkgs.follows = "nixpkgs";
    nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-23.11";

    # nixgl.url = "github:guibou/nixGL";
  };

  outputs =
    {
      self,
      nixpkgs,
      nixpkgs-stable,
      home-manager,
      # nixgl,
      ...
    }@inputs:
    let
      system = "x86_64-linux";
      pkgs = import nixpkgs {
        system = system;
        config = {
          allowUnfree = true;
        };
      };
      pkgsStable = import nixpkgs-stable {
        system = system;
        config = {
          allowUnfree = true;
        };
      };
    in
    {
      homeConfigurations = {
        shareni = home-manager.lib.homeManagerConfiguration {
          inherit pkgs;
          modules = [ ./home.nix ];
          extraSpecialArgs = {
            inherit inputs;
            inherit system;

            kmonad = pkgsStable.kmonad;
          };
        };
      };
    };
}
Shareni OP ,

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.

Shareni OP ,

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".

Shareni OP ,

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.

Shareni OP , (edited )

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.

Shareni OP ,

In case you missed topic of the whole discussion:

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...

Shareni OP ,

That's such a bad name, I only see lixmaballs.

How do you like it, that's one of the earlier forks, right?

Shareni OP ,

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).

Shareni OP ,

declarative > imperative all day, every day

Shareni ,

RHEL - 16 free licences and you can use them for whatever you want

Ubuntu pro - 5 free licences for personal use

SEL - you can try it out for 60 days or cobble something together while testing our enterprise packages

Shareni ,

And how is SEL less for a rich person than RHEL?

Shareni ,

Got it working on my ThinkPad t480 - realised I can only maybe sometimes log into the user account. Can't replace sudo, gpg, or any other type of password, and if I remember correctly it couldn't even unlock the screen. Gave up on that idea completely.

Funnily enough, the actual fingerprint recognition was more often successful on Linux than on windows.

Shareni ,

Can confirm, am currently at the country. Still not at the point I want or can permanently move, but it's so good for the mind.

Shareni ,

Oh definitely, but far more physically than mentally when you start getting used to the country life. The good thing is that work comes in sprints with spring being the hardest by far.

I've been pretty much only trimming for days just to get everything under control and I'm still not done. And in like 2-3 weeks I'll need to do it all over again because you can practically see the grass and weeds growing. When it gets hotter and drier, the growth slows down significantly and it's more manageable. It's the same with crops, you break your back in spring and work hard in autumn, but summer and winter are pretty chill. Those sprints make it easier to get used to because you're not doing the same things day in and day out.

There's a surprising amount of overlap between programming and farming. Research, diagnosing, solving issues, refactoring, etc. And it definitely favours a DIY mindset for fixing and making things. For example I'm planning on building an automated watering system with microcontrollers because I could make it for a fraction of the price of a commercial product.

Organic is not that much more difficult if you're only growing for yourself. But being good to nature definitely makes everything harder. Like we could use chemicals to kill everything except grass, but leaving native plants is good for the ecosystem while making trimming far harder.

Shareni , (edited )

But it's been an uphill battle because XOrg is the final boss of legacy codebases.

Also because Wayland forces every compositor to be an unmodifiable monolith instead of following the UNIX philosophy. For example I'm currently running i3 inside of Xfce because the de, wm, compositor, and every other part are doing their own thing and can be replaced. With Wayland I'd need to fork the compositor and spend a ridiculous amount of time on something that's trivial in xorg.

And let's not forget the garbage pile of tools that got abandoned a week after release because Wayland introduces breaking changes on a regular basis. You want unified shortcuts across multiple compositors like with sxhkd? Tough luck, the only tool was abandoned after the first version and doesn't work anymore. On the other side you've got 15 rofi alternatives you need to dig through to find out which ones are still maintained and might work on your device.

On top of that Nvidia GPUs have so many issues, and while that's not solvable by Wayland, it's still a major issue that still hasn't been fixed after 15 years, but might maybe soon™.

Finally, the security improvements have gave me nothing but headaches whenever I tried using Wayland. No matter the distro or compositor, screen sharing and recording never worked for me. Give permissions, share whole screen or just window, it's either black or the program is not showing I'm trying to share ate all.

You can't blame it all on xorg when Wayland is still simply far worse for a large part of the community.

Shareni ,

I also think that the Unix philosophy holds back software that could be good.

IMO the UNIX philosophy is the reason why Linux survived. Imagine if every distro had a single DE, or you had issues with pulseaudio and couldn't replace it with pipewire.

You shouldn’t prioritize it over good battery life and low overhead.

And why would separating functionality into different tools cause you to have a worse battery life? You don't get to have tlp on other OS because it's all integrated

Shareni ,

Wait a bit Ubuntu is next. They already added terminal ads, embedded affiliate links for amazon, and sold user data to amazon.

Shareni ,

Oh i know, I'm running MX

Shareni ,

It was ok at best. I first tried Linux around the time opensuse was released, and even then the only reason it was more popular was due to coming out a bit earlier and sending live CDs. Then Suse fucked the Linux community alongside MS for like a decade, and now it's canonical's turn to help out.

I could write a whole rant about the tablet with 64-bit processor but 32-bit eufi bios

If you have <4gb RAM, just use a x86 version of the distro. AFAIK it essentially has no downsides, and possibly requires less resources.

I'd prefer something debian based but I can't stand flicking in video playback or scrolling through a webpage. Which is why I like Wayland at the moment, since it fixes those things.

So why not use Wayland on Debian?

Shareni ,

Yeah, I hate it when I update Debian and it fails to boot. Oh wait...

Shareni ,

Arch has no reason to exist as almost all of it's benefits are replicated with nix without having your system fail to boot because you dared to update it.

Shareni ,

Problems I had were because of software not being on the latest version

I really need to get someone to make a jingle for this: just use flatpak/appimage/distrobox/nix...

Things just work on Arch for me.

And how long have you been using that install? I ran arch and derivatives for 2+ years on multiple devices and can't count how many times they failed to boot due to an update.

MX + nix unstable give me the same bleeding edge packages without risking my system exploding randomly, while also giving me a bunch of other benefits.

Shareni ,

I decided to dump arch when I was working in a foreign country for a month, had bad internet, and had to weigh whether -Syu or -S would be more likely to break my system. Shit's way too stressful.

Shareni ,

Run pacman -Syu, reboot, and it fails to boot. Had it happen many times with arch and derivatives on multiple devices. It's far more likely to happen if you don't update for like a month.

Shareni ,

A dumb one using Arch on a backup media device. At least that one dodged the bad grub release.

I've had it also happen on the main device that was updated multiple times a week.

Shareni ,

Also have a copy of pacman-static somewhere so that you can fix your shit in case of a partial upgrade (and trust me, it can go horribly wrong)

Oh I know, I quickly learned to never update it without having live media nearby to arch-chroot with.

if you make your arch system unable to boot..... Don't use arch

The only thing I did to make it unbootable is to update it. Going by that logic nobody should use it.

This is not my attempt at elitism. Arch was never meant to be a hassle free distro and it sure as shit is not one.

I definitely agree, that's why I'm commenting against dumbasses suggesting it to beginners. Especially when they glorify AUR.

Can I offer you a Debian in these trying times?

No need, I already landed on MX + nix after 2+ years of arch. Nix unstable gives me all of the benefits of arch (except for the DE) and then plenty more on top. Different downsides, but far less stressful. I'm

Shareni ,

Oh I had a far simpler method: update and it fails to boot? Rollback and try updating again in a week. It usually works then, but I had to wait a bit more a couple of times.

The only exception was that bad GRUB release. I think that's the only update fail that absolutely required arch-chroot.

Shareni ,

Wait a bit more and you'll go back to Debian when you get tired of failing to boot after an update.

Source: personal experience

Shareni ,

Sure it is...

Shareni ,

literally no one ever said it unironically.

Tell me you don't know the origin of the meme without telling me you don't know the origin of the meme.

Shareni ,

maybe do a google search before attacking people on the internet … or don’t, I’m not your manager.

On November 16th, Redditor[4] SusuKacangSoya commented a possible explanation of the meme's origin, writing, "Someone gave the following narrative: That when Arch was new, it was distrusted by the rest of the community because of some stability, etc. issues. However, as it got more and more usable, Arch users began telling everyone else that they were using Arch, to bring more awareness about Arch and prove that it's usable (they were using it just fine, after all). With this strategy released onto the wild, rolling across the community, Arch's usage share quickly went from laughable to that of major distribution. Of course, with the end goal completed, the meme is supposed to be obsolete, but… it stuck, its original purpose lost to time."

source

Shareni ,

Yup. There was that bad GRUB update as well.

You can usually just rollback, but it's annoying to weigh whether -Syu or -S is more likely to break your system.

Shareni ,

I3 only accepts xrandr configs, I don't know what you're expecting endeavour Devs to do besides preinstall arandr...

Shareni ,

is that something that has to be built in to the wm/dm?

Yes, AFAIK

Is that something arandr can do?

Yes

Shareni , (edited )

Then I misunderstood your question. I'm pretty sure you can do all of these things:

"only primary, "only secondary", "mirrored" "side by side"

But it's not like in a DE where you jump through those modes with a keybinding. Instead you generate an xrandr config. It can preserve the position if you unplug an extra monitor and then plug it back in.

If you need that quickswitch functionality, you can generate configs for all of those scenarios and just use a script to cycle through them.

You could also use built in wm functionality. For example you can create modes (I think that's what it's called) in i3. Press a shortcut, it opens up a menu, and you can choose your option (load an xrandr config).

Another option is to use Xfce or KDE, and replace the default wm. It's the best option if you're lazy about setting everything up. That's why I'm currently running Xfce + I3. That functionality is useless for me as the Xfce version doesn't seem to allow you to customise those configurations. The regular display configuration is pretty useful though.

Shareni ,

Here's an extremely simple solution, just bind this to a shortcut:

#!/bin/bash

if [[ -z "${MONITOR}" || "${MONITOR}" == "internal" ]]; then
    export MONITOR="external" 
    ~/dotfiles/xrandr/external.sh
else
    export MONITOR="internal" 
    ~/dotfiles/xrandr/internal.sh
fi

and just autostart internal.sh

I'd most likely keep it like that and go on with my day, but here's an ai response for automating it:

To trigger a script when an external monitor is connected or disconnected, you can use udev, the device manager for the Linux kernel.

Here's a step-by-step plan:

  1. Create a script that will be triggered when the monitor is connected or disconnected. For example, /usr/local/bin/monitor-hotplug.sh. Make sure to make it executable with chmod +x /usr/local/bin/monitor-hotplug.sh.
#!/bin/bash

export DISPLAY=:0
export XAUTHORITY=/home/username/.Xauthority  # replace "username" with your actual username

xrandr | grep "HDMI1 connected"  # replace "HDMI1" with your actual monitor identifier
if [ $? -eq 0 ]; then
    # commands to run when the monitor is connected
else
    # commands to run when the monitor is disconnected
fi
  1. Create a udev rule that will trigger the script. For example, /etc/udev/rules.d/95-monitor-hotplug.rules.
SUBSYSTEM=="drm", ACTION=="change", RUN+="/usr/local/bin/monitor-hotplug.sh"
  1. Reload udev rules with the following command:
sudo udevadm control --reload-rules

Now, whenever an external monitor is connected or disconnected, the monitor-hotplug.sh script will be triggered.

Please note that you'll need to replace "HDMI1" with your actual monitor identifier, which you can find by running xrandr without any arguments. Also, replace "username" with your actual username.

And here's an example of using modes in i3 if you need to switch between multiple configurations:

set $mode_system System (k) lock, (l) logout, (u) suspend, (h) hibernate, (r) reboot, (s) shutdown
mode "$mode_system" {
    bindsym k exec --no-startup-id ~/dotfiles/.config/i3/scripts/i3exit.sh lock, mode "default"
    bindsym l exec --no-startup-id ~/dotfiles/.config/i3/scripts/i3exit.sh logout, mode "default"
    bindsym u exec --no-startup-id ~/dotfiles/.config/i3/scripts/i3exit.sh suspend, mode "default"
    bindsym h exec --no-startup-id ~/dotfiles/.config/i3/scripts/i3exit.sh hibernate, mode "default"
    bindsym r exec --no-startup-id ~/dotfiles/.config/i3/scripts/i3exit.sh reboot, mode "default"
    bindsym s exec --no-startup-id ~/dotfiles/.config/i3/scripts/i3exit.sh shutdown, mode "default"

    # back to normal: Enter or Escape
    bindsym Return mode "default"
    bindsym Escape mode "default"
}

bindsym control+mod1+X mode "$mode_system"

Doesn’t xfce use a dm?

Display manager?

A gui for manually configuring the layout or something more?

Basic stuff you'd expect, and it has a quick switch keybinding to go between a few basic configurations.

Shareni , (edited )

X11 DEs have a built in wm. For example xfce has something like xfce-wm. If you disable its autostart and replace it with a different one like I3, you get the best of both worlds.

You can't do that in Wayland because compositors are a monolith.

i'm currently on ubuntu, but many of the packets being 15 years out of date is starting to get annoying

Use an external package manager. For simplicity I suggest flatpak or snap. I prefer nix, but the setup is more complicated. That way you've got a rock solid system, but fresh or bleeding edge userland packages.

Shareni ,

They fought hard to make Steamboat Willie FOSS

Shareni ,

Someone's feeling that Emacs envy...

  • All
  • Subscribed
  • Moderated
  • Favorites
  • incremental_games
  • meta
  • All magazines