mirror of
https://github.com/youwen5/nixos.git
synced 2024-11-25 02:03:51 -08:00
Compare commits
No commits in common. "21f836924c49c70a88bdb901f8cb9f192a0a6734" and "da7a98cbc7bdfe5ec64ce4a4a41d7d47568c71d8" have entirely different histories.
21f836924c
...
da7a98cbc7
4 changed files with 22 additions and 46 deletions
29
README.md
29
README.md
|
@ -2,27 +2,12 @@
|
|||
|
||||
This is a repository that implements liminalOS, my personal Linux distribution based on [NixOS](https://nixos.org/).
|
||||
|
||||
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.
|
||||
Traditional Linux distributions are either _rolling_ or _fixed_ release. liminalOS operates on a new kind of release schedule: _liminal_ release.
|
||||
|
||||
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_.
|
||||
> **lim·i·nal**
|
||||
> 2. relating to a transitional or initial stage of a process.
|
||||
|
||||
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**
|
||||
>
|
||||
> 1. between or belonging to two different places, states, etc.
|
||||
|
||||
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.
|
||||
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.
|
||||
|
||||
## Installation guide
|
||||
|
||||
|
@ -38,7 +23,7 @@ liminalOS comes with the Nix package manager (nobody said you need a _unique_ pa
|
|||
|
||||
### Should I actually install this?
|
||||
|
||||
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.
|
||||
No.
|
||||
|
||||
## Hosts
|
||||
|
||||
|
@ -47,14 +32,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]: although this is not actually how the converse works, the rigor-hungry mathematicians reading can cry about it.
|
||||
[^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.
|
||||
|
||||
## Keybinds
|
||||
|
||||
|
|
30
flake.lock
30
flake.lock
|
@ -24,11 +24,11 @@
|
|||
},
|
||||
"bleedingpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1723402691,
|
||||
"narHash": "sha256-XZFMIWgGzdnHzTVxJ+suHRro+2boj3yBPNAVS3xQRRk=",
|
||||
"lastModified": 1723280855,
|
||||
"narHash": "sha256-dWd+EJyKzAISTZ858pk+EpleCrYTtBbmLqLpopZbohI=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "df09a0b48e08dff76d8847406884ef84c9d9b4c5",
|
||||
"rev": "edf4b8c18bc1ea3e705a5df6b0ed402fd248a308",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -241,11 +241,11 @@
|
|||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1723399884,
|
||||
"narHash": "sha256-97wn0ihhGqfMb8WcUgzzkM/TuAxce2Gd20A8oiruju4=",
|
||||
"lastModified": 1723015306,
|
||||
"narHash": "sha256-jQnFEtH20/OsDPpx71ntZzGdRlpXhUENSQCGTjn//NA=",
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"rev": "086f619dd991a4d355c07837448244029fc2d9ab",
|
||||
"rev": "b3d5ea65d88d67d4ec578ed11d4d2d51e3de525e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -257,11 +257,11 @@
|
|||
"homebrew-cask": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1723398597,
|
||||
"narHash": "sha256-7hWKUGb0l8N3xHMiuiukTNdf9D7aj7UM4EAYCrtSpP0=",
|
||||
"lastModified": 1723279238,
|
||||
"narHash": "sha256-THB2aN5MGrncwDsDLsVybQtDSnX2qBbAkqmZOq1itLo=",
|
||||
"owner": "homebrew",
|
||||
"repo": "homebrew-cask",
|
||||
"rev": "672769ef7a4aee91ed12248345785998d4169ace",
|
||||
"rev": "5cf910bafda28a1308fa756aad22ca88f52854ab",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -273,11 +273,11 @@
|
|||
"homebrew-core": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1723402347,
|
||||
"narHash": "sha256-2oTBjifhBSIF9KCyeth6yUTdf3Yuv4JtxojXOV4s9I4=",
|
||||
"lastModified": 1723274475,
|
||||
"narHash": "sha256-Gd08xPeH5DhCyDWVoo3pYAegF544McwVIjxsNWsR6Io=",
|
||||
"owner": "homebrew",
|
||||
"repo": "homebrew-core",
|
||||
"rev": "2f5175a2c8dd4249955d8df4b2b74332e646bb75",
|
||||
"rev": "dd1b5e772c68ff2d0d9736d1da1e186bf0f8509d",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -554,11 +554,11 @@
|
|||
},
|
||||
"stablepkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1723282977,
|
||||
"narHash": "sha256-oTK91aOlA/4IsjNAZGMEBz7Sq1zBS0Ltu4/nIQdYDOg=",
|
||||
"lastModified": 1722987190,
|
||||
"narHash": "sha256-68hmex5efCiM2aZlAAEcQgmFI4ZwWt8a80vOeB/5w3A=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "a781ff33ae258bbcfd4ed6e673860c3e923bf2cc",
|
||||
"rev": "21cc704b5e918c5fbf4f9fff22b4ac2681706d90",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
|
|
@ -104,14 +104,6 @@
|
|||
];
|
||||
};
|
||||
}
|
||||
{
|
||||
nixpkgs.overlays = [
|
||||
(self: super: {
|
||||
signal-desktop =
|
||||
bleedingpkgs.legacyPackages.${self.system}.signal-desktop;
|
||||
})
|
||||
];
|
||||
}
|
||||
];
|
||||
};
|
||||
adrastea = nixpkgs.lib.nixosSystem {
|
||||
|
|
|
@ -99,7 +99,6 @@
|
|||
|
||||
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 = [
|
||||
|
|
Loading…
Reference in a new issue