Compare commits

...

3 commits

4 changed files with 46 additions and 22 deletions

View file

@ -2,12 +2,27 @@
This is a repository that implements liminalOS, my personal Linux distribution based on [NixOS](https://nixos.org/).
Traditional Linux distributions are either _rolling_ or _fixed_ release. liminalOS operates on a new kind of release schedule: _liminal_ release.
Traditionally, we expect to configure each of our computers separately. We have a general idea of the programs, settings, and minor tweaks that we like
to make on every computer, but we have to manually set all of these up. Many Unix hackers have therefore created sprawling installation scripts to manage
their various systems so they can be deployed in a predictable manner each time. Of course, scripts are still heavily dependent on environment and prone to breakage.
When they inevitably break, the system is left in a malformed state, where some setup actions have been taken and others have not, and it is up to the system
administrator to fix the failing script and ensure the system is set up properly.
In essence, the primary failure of setup scripts is that they are _imperative_ - they must specify precisely _how_ to set up the system, down to minute details, whereas in a _declarative_ approach, the user can simply specify what the system _should look like_, and abstractions take care of the _how_.
NixOS provides the key tools for reliably deploying systems - namely, a _purely functional_ package manager that's reproducible by default and
the necessary abstractions needed for a declarative system configuration. liminalOS is my set of opinionated NixOS and `home-manager` modules that aim to
set up a computing environment _independent of the host_. This makes it possible for me to share common configuration between a multitude of entirely distinct machines,
including an `x86_64` desktop, an `x86_64` laptop, an Apple Silicon Macbook running NixOS `aarch64` using [Asahi Linux](https://asahilinux.org/), and the same Macbook running macOS with `nix-darwin`, sharing `home-manager` configuration with NixOS. Specific configuration necessary to adjust hardware-specific details
between each machines are isolated to the [hosts](./hosts) directory.
> **lim·i·nal**
> 2. relating to a transitional or initial stage of a process.
>
> 1. between or belonging to two different places, states, etc.
Users who install liminalOS may feel a sense of eeriness similar to a [liminal space](<https://en.wikipedia.org/wiki/Liminal_space_(aesthetic)>) - the system has clearly been configured exactly according to someone's preferences and specifications, yet they stand alone in an empty OS, with the usual user nowhere to be found, and a home directory devoid of human presence. System updates are released at random times, and upon installing, it appears that someone has adjusted minute configuration details, yet no other users exist in the system.
The goal of liminalOS is to allow my computing environment to exist in different places at the same time, without the twiddling and settings syncing
and minor disparities that arise from traditional approaches. This works exceptionally well, demonstrated by the fact that I have the exact same environment across
three separate machines, spanning two completely different CPU architectures.
## Installation guide
@ -23,7 +38,7 @@ liminalOS comes with the Nix package manager (nobody said you need a _unique_ pa
### Should I actually install this?
No.
No. You should instead use the modules as configuration examples if you need them as they are heavily customized for my needs, which are not the same as yours.
## Hosts
@ -32,14 +47,14 @@ The modules in liminalOS are designed to be utilized by a wide variety of machin
The [flake.nix](/flake.nix) currently contains configuration for three hosts:
| Hostname | Description |
| ---------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| "callisto" | a Macbook Pro M1 (2021) running under Asahi Linux. Imports the laptop module sets as well as the core NixOS module sets. |
| "demeter" | a custom desktop with an i7-13700KF and RTX 4080. Imports the desktop module, the core NixOS modules, and additionally the gaming module. |
| "phobos" | Macbook Pro M1 (2021) running macOS with nix-darwin. Imports the core home-manager module as well as some darwin-specific modules for window managers and the like. |
[^1]: also known as GNU/Linux, GNU+Linux, Freedesktop/systemd/musl/busybox Linux, Linux+friends, etc
[^2]: disclaimer: this is unfortunately not actually how the converse works. A => B does not necessarily imply B => A. I hope this satiates the rigor-hungry mathematicians reading.
[^2]: although this is not actually how the converse works, the rigor-hungry mathematicians reading can cry about it.
## Keybinds

View file

@ -24,11 +24,11 @@
},
"bleedingpkgs": {
"locked": {
"lastModified": 1723280855,
"narHash": "sha256-dWd+EJyKzAISTZ858pk+EpleCrYTtBbmLqLpopZbohI=",
"lastModified": 1723402691,
"narHash": "sha256-XZFMIWgGzdnHzTVxJ+suHRro+2boj3yBPNAVS3xQRRk=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "edf4b8c18bc1ea3e705a5df6b0ed402fd248a308",
"rev": "df09a0b48e08dff76d8847406884ef84c9d9b4c5",
"type": "github"
},
"original": {
@ -241,11 +241,11 @@
]
},
"locked": {
"lastModified": 1723015306,
"narHash": "sha256-jQnFEtH20/OsDPpx71ntZzGdRlpXhUENSQCGTjn//NA=",
"lastModified": 1723399884,
"narHash": "sha256-97wn0ihhGqfMb8WcUgzzkM/TuAxce2Gd20A8oiruju4=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "b3d5ea65d88d67d4ec578ed11d4d2d51e3de525e",
"rev": "086f619dd991a4d355c07837448244029fc2d9ab",
"type": "github"
},
"original": {
@ -257,11 +257,11 @@
"homebrew-cask": {
"flake": false,
"locked": {
"lastModified": 1723279238,
"narHash": "sha256-THB2aN5MGrncwDsDLsVybQtDSnX2qBbAkqmZOq1itLo=",
"lastModified": 1723398597,
"narHash": "sha256-7hWKUGb0l8N3xHMiuiukTNdf9D7aj7UM4EAYCrtSpP0=",
"owner": "homebrew",
"repo": "homebrew-cask",
"rev": "5cf910bafda28a1308fa756aad22ca88f52854ab",
"rev": "672769ef7a4aee91ed12248345785998d4169ace",
"type": "github"
},
"original": {
@ -273,11 +273,11 @@
"homebrew-core": {
"flake": false,
"locked": {
"lastModified": 1723274475,
"narHash": "sha256-Gd08xPeH5DhCyDWVoo3pYAegF544McwVIjxsNWsR6Io=",
"lastModified": 1723402347,
"narHash": "sha256-2oTBjifhBSIF9KCyeth6yUTdf3Yuv4JtxojXOV4s9I4=",
"owner": "homebrew",
"repo": "homebrew-core",
"rev": "dd1b5e772c68ff2d0d9736d1da1e186bf0f8509d",
"rev": "2f5175a2c8dd4249955d8df4b2b74332e646bb75",
"type": "github"
},
"original": {
@ -554,11 +554,11 @@
},
"stablepkgs": {
"locked": {
"lastModified": 1722987190,
"narHash": "sha256-68hmex5efCiM2aZlAAEcQgmFI4ZwWt8a80vOeB/5w3A=",
"lastModified": 1723282977,
"narHash": "sha256-oTK91aOlA/4IsjNAZGMEBz7Sq1zBS0Ltu4/nIQdYDOg=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "21cc704b5e918c5fbf4f9fff22b4ac2681706d90",
"rev": "a781ff33ae258bbcfd4ed6e673860c3e923bf2cc",
"type": "github"
},
"original": {

View file

@ -104,6 +104,14 @@
];
};
}
{
nixpkgs.overlays = [
(self: super: {
signal-desktop =
bleedingpkgs.legacyPackages.${self.system}.signal-desktop;
})
];
}
];
};
adrastea = nixpkgs.lib.nixosSystem {

View file

@ -99,6 +99,7 @@
services.udev.extraRules = ''
KERNEL=="cpu_dma_latency", GROUP="realtime"
KERNEL=="macsmc-battery", SUBSYSTEM=="power_supply", ATTR{charge_control_end_threshold}="80", ATTR{charge_control_start_threshold}="70"
'';
security.pam.loginLimits = [