• 0 Posts
  • 52 Comments
Joined 1 year ago
cake
Cake day: June 10th, 2024

help-circle

  • It should work. The only practical issues are:

    • Usually, you will have to manually install the proprietary drivers (I think Fedora makes this relatively easy)
    • Wayland (the protocol most desktop environmentss use nowadays) support may be hit-and-miss at times (it will mostly work but it’s not as polished as with Intel/AMD), and Proton (the thing that lets you play Windows games) may not play well either.

    The ideological issue (which you probably don’t care about) is that it pretty much requires proprietary (non-FOSS) drivers which run in kernel space and so in theory have complete access to all data on your computer (but then so does Intel ME). This is the main reason I personally will never use NVidia cards.


  • While I’m usually all for Free software (as opposed to open-source software),

    His problem is the exact reason GPL was created.

    Nah, his problem is that Microsoft has much billions of dollars and so doesn’t give a fuck about any licenses on projects by small developers. They simply ignored even the terms of the MIT license (which required MS to keep the original copyright notice, which they didn’t). GPL would’ve done squat here since it also allows for forking (by design), but also because the US legal system is cooked, and people don’t have many rights left when it comes to a dispute with a corpo.




  • I’ve stolen a bunch of Git aliases from somewhere (I don’t remember where), here are the ones I ended up using the most:

    g=git
    ga='git add'
    gau='git add --update'
    gcfu='git commit --fixup'
    gc='git commit --verbose'
    'gc!'='git commit --verbose --amend'
    gcmsg='git commit --message'
    gca='git com
    gd='git diff'
    gf='git fetch'
    gl='git pull'
    gst='git status'
    gstall='git stash --all'
    gstaa='git stash apply'
    gp='git push'
    'gpf!'='git push --force-with-lease'
    grb='git rebase'
    grba='git rebase --abort'
    grbc='git rebase --continue'
    

    I also often use

    ls='eza'
    md='mkdir -p'
    mcd() { mkdir -p "$1" && cd "$1" }
    

    And finally some Nix things:

    b='nix build'
    bf='nix build -f'
    bb=nix build -f .'
    s='nix shell'
    sf='nix shell -f'
    snp='nix shell np#'
    d='nix develop'
    df='nix develop -f'
    


  • all you did was hammer out configs

    Yeah, that’s my point, all the software is there already, with a little bit of persuasion and glue it runs fairly well together. I’m not claiming I wrote actual drivers or whatever. What I did was figured out how to adapt the existing software to work on NixOS, so you can just take your desktop NixOS config, add a couple lines to it, and run it on the phone.

    Now you have a phone where half the hardware doesn’t work

    All hardware on Librem 5 worked with NixOS as I expected. The reason I’m not dailying it anymore is because the hardware kinda sucks, it’s outdated and slow. If I could get the same software stack running on more modern hardware I’d gladly use it. Perhaps the battery life could be improved if the power management was better, but that’s about my only complaint software-wise.

    Without a solid BASE, and a DRIVER LAYER, you won’t have a successful project to push a UI of anything

    I’m not sure what you mean by “solid BASE”. Do you want to rewrite all of the existing software that implements the “desktop Linux” userspace? Who would be doing this and why, when existing stuff mostly works?

    “DRIVER LAYER” in the FOSS world is just Linux. Drivers can live in the Linux tree or as small patches on top of it, with common open interfaces allowing compatibility between software and hardware. Just like they have been doing on the desktop for the past 30 years. The problem is plain: there are no open-source drivers or documentation for most phone hardware. Vendors don’t have this issue because they have access to private documentation and the sources of proprietary drivers. Writing FOSS drivers requires reverse-engineering the proprietary drivers, which is very resource-intensive. The proprietary drivers that are there lock you into a particular Linux version (usually a very particular Linux version, and there’s no way to solve this with any driver layer, at least without sacrificing performance and resource usage) and sometimes have proprietary interfaces with the userspace as well, which aren’t easy to write a compat layer for (if that’s what you’re proposing). And in any case, if you are fine with proprietary stuff running in EL1, why not just run Android?

    All this is completely orthogonal to making a DE on top of open standards, which is the point of open standards. For hardware that works with (mostly) mainline Linux, desktop userspace with plasma-mobile/phosh on top work well enough already. For hardware that doesn’t, adding support is a lot of work, not because of any issues with the DE or userspace, but because hardware manufacturers don’t publish the driver sources.


  • I’ve built and run Mobile NixOS on my OnePlus 6 (without modem, fingerprint or GPU accel support but meh) before it became officially supported (this was relatively easy, compared to most other vendors, but did require a bunch of hacking to get the Linux fork OnePlus provides to work with the Nix kernel compilation machinery and the NixOS userspace).

    I have also implemented initial support for running NixOS proper on Librem 5, packaged/fixed some stuff 1 2 3 (and more which didn’t make it to nixpkgs) to make it semi-daily-usable with Plasma Mobile, and daily-used it for a couple of weeks and then on and off for a couple of months.

    I know how mobile Linux works, from the bootloader to the kernel to the userspace to the DE to apps that run on it. I also have a cursory understanding of how Android works, enough to know that it’s not feasible to build “a base that replaces AOSP”, let alone make it work with vendor-provided driver blobs and proprietary Android apps (which is what you’re proposing?). What manufacturers actually do is take AOSP, patch it to fit their needs/work with their shitty drivers, and ship it on the device as a bunch of blobs because it’s Apache-licensed.




  • Phones tend to have more specialized and proprietary hardware, so you can’t just take the standard Linux kernel, use it there, and call it a day.

    Eh, you sort of can on some phones, e.g. OnePlus 5 and 6; on some others it’s just a couple dozen patches away from working.

    But I’d be surprised if the people working on this weren’t aware of that fact, and I hope they are working on abstracting the hardware layers more so that every mobile Linux project doesn’t have to start from scratch every time.

    The problem with other phones isn’t “abstracting the hardware” (this is done by the Linux kernel), it’s reverse-engineering the drivers so that they run on whatever kernel you want and use the open standards required by the “desktop linux” userspace. In fact, if you look at the “supported devices” list for all those mobile Linux distros you’ll find a fairly similar set; that’s simply all devices for which manufacturer’s (or reverse-engineered) drivers are available. It’s not like FOSS people are writing drivers specifically for their distro, which wouldn’t work with any other - only corporate Android vendors do that!


  • solid base

    GNU+Linux

    driver layer

    Linux

    and then UI layer.

    Plasma mobile

    The split is already there, the problem is that most Android phone manufacturers never publish the drivers (let alone make them open-source) and the only way to get anything but stock image running is to just rip parts out of the stock image, which significantly limits what you can put below it (i.e. Linux version) and on top of it (i.e Android Java gubbins). And you can’t “just replace AOSP”, as it’s a huge complicated thing (kind of by design) which allows vendors to tightly couple the drivers to the system image. The idea of all these “mobile Linux-es” is to get rid of AOSP entirely, replacing it with “desktop Linux userspace” (systemd, musl, D-BUS, NetworkManager, pipewire, upower, mpris, libnotify, Qt/GTK, Plasma/Gnome, etc etc etc). A DE is an integral part of this; you can’t build and run Nova launcher just with Wayland and Pipewire but without Dalvik and Android SDK/NDK, and remaking all of that from scratch would be an insanely hard undertaking.

    To put it another way,

    Get a good base that is removed from Google, THEN do this project.

    This project is required if you want to make a “good base”, otherwise that “good base” would just be an empty TTY that you can’t interact with because there’s no on-screen keyboard; besides, that “base” is already there and has been for 20 years, what’s missing is the drivers.


  • I’m doing Nix consulting-type jobs - it can mean anything from simply packaging some stuff for Nix and making a devShell to refactoring existing Nix-based infra (which can be hundreds of thousands of SLOC) to building entirely new developer UX, CI/CD and even production deployments on Nix/NixOS. I’ve also been paid to implement some cool features into Nix itself, fix bugs, etc. I’m really quite happy with the job, even though it could probably pay more :)


  • Eh, probably if Guix becomes significantly better I’ll switch to it (from NixOS). I really like how seriously they take user freedom, bootstrapping (only 357 bytes of binary to bootstrap everything else from source!) and consistent user interfaces (scheme everywhere). But unfortunately the package repo is just not big and mature enough yet, and declarative configuration options are not as good as they are with NixOS. My job is also Nix-related, and that’s another major reason I’m staying for now.


  • Touchscreen (and 2-in-1) support in general is quite good, both Gnome and Plasma (two most popular “desktop environments”) support it well. It should be about as responsive as it is on Windows, because the response time generally comes from hardware and not software. However, I must warn you that I’ve had a similar HP 2-in-1 (although a different model) and there simply wasn’t a Linux driver for the touchscreen so it didn’t work at all; all the other tablet-like features worked fine. I would first check on a liveUSB - the touchscreen should work there the same as it will on the installed distro. If it doesn’t work, well, there’s your answer.