Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
992 commits
Select commit Hold shift + click to select a range
43c6a58
flake.lock: Update
youwen5 May 8, 2025
92f1216
chore: rename automatic flake.lock update pr title
youwen5 May 8, 2025
537999a
flake.lock: Update
github-actions[bot] May 11, 2025
61330f1
feat: install valkyrie font
youwen5 May 11, 2025
cbc245f
feat: add source sans 3 font
youwen5 May 12, 2025
a0811c2
flake.lock: Update
youwen5 May 17, 2025
1b32210
feat: use hyprscroller fork
youwen5 May 17, 2025
715283c
flake.lock: Update
youwen5 May 18, 2025
7b0d37b
fix: hyprscroller correctly
youwen5 May 18, 2025
9de7b07
feat: add idle inhibitor to waybar
youwen5 May 21, 2025
c49a60f
flake.lock: Update
youwen5 May 22, 2025
0978bf6
feat: switch to upstream nixos-apple-silicon
youwen5 May 23, 2025
1d368d4
chore: update colorscheme and wallpaper
youwen5 May 24, 2025
bf40bdb
flake.lock: Update
github-actions[bot] May 25, 2025
a24aa8f
fix: switch back to fork of nixos-apple-silicon with patches applied
youwen5 May 25, 2025
19812d4
chore: sync harper dictionary
youwen5 May 27, 2025
3c3d13f
feat: tint the fastfetch image with system colors for consistency
youwen5 May 27, 2025
b4ea8ae
fixup! chore: sync harper dictionary
youwen5 May 27, 2025
8fba9f8
chore: update wallpaper
youwen5 May 27, 2025
7cff32c
flake.lock: Update
github-actions[bot] Jun 1, 2025
a9de0fa
feat(callisto): reduce swapfile from 32gb -> 4gb
youwen5 Jun 2, 2025
495a177
chore: switch to new upstream nix-community/nixos-apple-silicon
youwen5 Jun 2, 2025
87d39bd
chore: disable experimentalGPUDriver since mesa upstream supports
youwen5 Jun 2, 2025
d1a4a2e
feat: update tuigreet
youwen5 Jun 2, 2025
df7f667
feat: enable gvfs
youwen5 Jun 2, 2025
63d4a1b
feat: replace thunar with nautilus
youwen5 Jun 2, 2025
2f48a2c
chore: use lib.getExe wherever possible
youwen5 Jun 2, 2025
8d63371
flake.lock: Update
youwen5 Jun 3, 2025
0f0303d
feat: configure iamb
youwen5 Jun 5, 2025
cfee3ac
feat: use iamb flake for nightly build because 0.10 is broken
youwen5 Jun 5, 2025
9fdaf30
feat: add element-desktop
youwen5 Jun 6, 2025
b306858
feat: configure some iamb options
youwen5 Jun 6, 2025
7b8dbf2
feat: add macros to iamb
youwen5 Jun 6, 2025
52636dc
feat: add loupe image viewer
youwen5 Jun 6, 2025
80e4ece
feat(iamb): add keybind to view unreads
youwen5 Jun 6, 2025
ba75beb
chore(iamb): adjust user color
youwen5 Jun 7, 2025
4aa6f32
flake.lock: Update
github-actions[bot] Jun 8, 2025
614dbad
feat: add functor.systems matrix account
youwen5 Jun 12, 2025
3491c54
flake.lock: Update
github-actions[bot] Jun 15, 2025
a8a330f
feat: switch to personal iamb fork
youwen5 Jun 16, 2025
c10cd71
feat: update ssh port for kaitotlex.systems
youwen5 Jun 18, 2025
060b053
feat: add ssh secret for code.functor.systems auth
youwen5 Jun 18, 2025
60c5946
chore: dont specify url for functor.systems matrix
youwen5 Jun 19, 2025
8a0286a
Revert "chore: dont specify url for functor.systems matrix"
youwen5 Jun 19, 2025
a5e6da5
feat: add textfox
youwen5 Jun 21, 2025
e22e6d7
fix: correct color for textfox background
youwen5 Jun 21, 2025
2f9110c
chore: some textfox tweaks
youwen5 Jun 22, 2025
d6e9d22
feat: switch to tidal-hifi
youwen5 Jun 22, 2025
a0566d8
feat: add tidal hifi module and stylix theming
youwen5 Jun 23, 2025
0845614
flake.lock: Update
youwen5 Jun 23, 2025
a774012
chore: add firefox to windowrules
youwen5 Jun 23, 2025
f54fb94
feat: declaratively configure vesktop
youwen5 Jun 24, 2025
6925ccb
feat: add element for windowrule
youwen5 Jun 25, 2025
d5c290f
flake.lock: Update
youwen5 Jun 25, 2025
d8e1abc
fix: tidal-hifi only works on x86_64
youwen5 Jun 26, 2025
ec85fd6
feat: enable systemd-resolved
youwen5 Jul 2, 2025
16bcf4b
chore(callisto): set time zone and enable mullvad vpn
youwen5 Jul 2, 2025
c76e01b
feat: add tsinghua university TUNA binary cache
youwen5 Jul 22, 2025
75303d6
chore: chase hyprscroller
youwen5 Jul 25, 2025
5b40f77
flake.lock: Update
youwen5 Jul 25, 2025
5fff929
chore(callisto): remove hardware.asahi.withRust
youwen5 Jul 25, 2025
8c59919
feat: remove google fonts
youwen5 Jul 25, 2025
13416e0
chore: deprecated option
youwen5 Jul 25, 2025
2d9888d
feat: split tunnel THU TUNA mirror through mullvad
youwen5 Jul 25, 2025
4b51d6d
fix(callisto): remove hyprland explicit_sync option
youwen5 Jul 25, 2025
65e681d
chore: force priorities of substituters
youwen5 Jul 25, 2025
009b8bf
fix: temporary patch for opengl on hyprland
youwen5 Jul 25, 2025
d939e9a
feat: use mirrors4 to force ipv4 on TUNA
youwen5 Jul 25, 2025
55b0db1
feat: laptop mode
youwen5 Jul 17, 2025
e10689d
feat: china adjustments for adrastea
youwen5 Jul 26, 2025
a52c9b3
feat: disable tidal-hifi and use high-tide
youwen5 Jul 26, 2025
8c56482
feat: some laptop tweaks
youwen5 Jul 29, 2025
fcee8ea
feat: add chinese hanyu input methods
youwen5 Aug 3, 2025
5ec277c
flake.lock: Update
youwen5 Aug 4, 2025
3c601da
fix(nu): deprecated -i to -o
youwen5 Aug 4, 2025
7c619b0
feat: create option for china optimizations
youwen5 Aug 8, 2025
0f08f1e
flake.lock: Update
youwen5 Aug 8, 2025
3373285
chore: ryujinx -> ryubing
youwen5 Aug 8, 2025
ebe3224
feat: add windowrule for high-tide
youwen5 Aug 8, 2025
c5c53cc
fix: use non broken nvidia driver
youwen5 Aug 8, 2025
5a007fb
fix: do not force set hydra key
youwen5 Aug 8, 2025
90b0489
feat: enable hdr for demeter
youwen5 Aug 8, 2025
d0bf3e0
feat: enable hdr on demeter
youwen5 Aug 8, 2025
52c6e4c
feat: use high-tide on aarch, tidal-hifi on x86_64
youwen5 Aug 8, 2025
8e07639
chore(callisto): set time zone
youwen5 Aug 9, 2025
a239943
feat: switch tuigreet message back
youwen5 Aug 9, 2025
d7d3af0
feat: disable hdr
youwen5 Aug 8, 2025
da9f6aa
feat: add mullvad vpn
youwen5 Aug 11, 2025
df21dca
feat: switch modrinth to prism launcher
youwen5 Aug 11, 2025
2f3437b
feat: install high tide on all machines and use latest
youwen5 Aug 11, 2025
a84f6f4
feat: enable waydroid
youwen5 Aug 13, 2025
1c10372
feat: re-enable spotify
youwen5 Aug 14, 2025
5e92488
flake.lock: Update
youwen5 Aug 15, 2025
7f3569d
style: use shanghai wallpaper
youwen5 Aug 15, 2025
601fda2
fix: do not enable waydroid on all machines
youwen5 Aug 16, 2025
e1dd7fa
fix: do not duplicate mullvad-vpn configuration
youwen5 Aug 16, 2025
54d7e06
feat: adrastea fixes
youwen5 Aug 16, 2025
13964a9
fix: use new /var/lib/sbctl directory instead of /etc/secureboot
youwen5 Aug 17, 2025
06284c1
fix(demeter): select correct console mode for systemd-boot
youwen5 Aug 17, 2025
859fc61
chore(pkg): remove high-tide
youwen5 Aug 18, 2025
c67cce8
chore: regenerate demeter hardware-configuration
youwen5 Aug 18, 2025
4b055a7
chore(demeter): re-enable waydroid
youwen5 Aug 18, 2025
d54bd37
secrets: add sourcehut ssh key
youwen5 Aug 18, 2025
db62f97
feat: add nix-community binary cache
youwen5 Aug 19, 2025
0f785cd
feat: add mangohud configuration
youwen5 Aug 19, 2025
23d2a2d
feat: create steam runner convenience script
youwen5 Aug 19, 2025
595a22b
theme: change to tokyo-night-{dark,light}
youwen5 Aug 21, 2025
2840d05
fix(demeter): reference correct monitor
youwen5 Aug 23, 2025
82d4a1b
flake.lock: Update
youwen5 Aug 25, 2025
6859acb
flake.lock: Update
youwen5 Aug 27, 2025
7c298bd
docs: update readme for functorOS transition
youwen5 Aug 18, 2025
cf7281d
refactor: further decouple reference/ from main tree
youwen5 Aug 28, 2025
df72fe2
chore: commit flake.lock to reference/
youwen5 Aug 28, 2025
3b86e92
refactor: move textfox/nur to user configuration
youwen5 Aug 28, 2025
e5718f7
chore: bump functorOS lock in reference/
youwen5 Aug 28, 2025
85361ab
feat: improve documentation rendering
youwen5 Aug 28, 2025
a2838ca
ci: add pages deployment action
youwen5 Aug 28, 2025
879412e
ci: deploy gh pages on push
youwen5 Aug 28, 2025
e81c916
fix(ci): do not use token
youwen5 Aug 28, 2025
5fdf2ed
fix(ci): give write perms
youwen5 Aug 28, 2025
dfc6b3f
fixup! fix(ci): give write perms
youwen5 Aug 28, 2025
8df5881
docs: add link to module options
youwen5 Aug 28, 2025
c3fc181
reference/flake.lock: Update
youwen5 Aug 28, 2025
d0104cf
refactor: replace most occurrences of liminalOS with functorOS
youwen5 Aug 28, 2025
181581a
refactor: create minimal functorOS lib
youwen5 Aug 29, 2025
45fe9ca
chore: delete reference/ directory
youwen5 Aug 29, 2025
ac6435e
chore: remove firefox config from stylix
youwen5 Aug 29, 2025
ca53194
chore: remove todos.md
youwen5 Aug 29, 2025
3b6ff5c
chore: remove doas user specific configuration
youwen5 Aug 29, 2025
9e71d0b
fix: import functorOS modules automatically
youwen5 Aug 29, 2025
c98f493
fix: some options
youwen5 Aug 29, 2025
833d317
feat: revamp template
youwen5 Aug 29, 2025
6c04109
feat: add an option that tracks all users configured in system
youwen5 Aug 29, 2025
c213adb
docs: update readme with template information
youwen5 Aug 29, 2025
eaa3f80
docs: add reference implementations to readme
youwen5 Aug 29, 2025
db5848f
feat: set realtimeAudioUsers automatically
youwen5 Aug 29, 2025
b837c35
docs: add mermaid flowchart
youwen5 Aug 29, 2025
3c2ec18
docs: remove mention of darwin
youwen5 Aug 29, 2025
53bdf7d
fix: correct hardware configuration in template
youwen5 Aug 29, 2025
191eba8
feat: overhaul waybar rice
youwen5 Aug 29, 2025
c079628
feat: add configurable waybar
youwen5 Aug 30, 2025
a1edb43
chore: update default wallpaper
youwen5 Aug 30, 2025
77972dc
feat: custom functorOS /etc/os-release and fastfetch image
youwen5 Aug 30, 2025
f779872
fix: get docs building again
youwen5 Aug 30, 2025
16ae08e
chore: disable some workflows
youwen5 Aug 30, 2025
8b9bc5a
fix: use new default branch main
youwen5 Aug 30, 2025
4f6db1e
fix: extra paren in docs
youwen5 Aug 30, 2025
eb3d77d
refactor: better way to mark option internal
youwen5 Aug 30, 2025
5ae56a5
feat: add better extensions
Quantalabs Aug 31, 2025
6339b75
docs: add more comments to template
youwen5 Sep 1, 2025
b567e97
chore: remove ucode
youwen5 Sep 2, 2025
97a3ccd
flake.lock: Update
youwen5 Sep 4, 2025
0ff2ef9
chore: fix a few warnings
youwen5 Sep 4, 2025
aa9b831
feat: switch display manager from tuigreet to ly
youwen5 Sep 4, 2025
8338b8d
fixup! feat: switch display manager from tuigreet to ly
youwen5 Sep 4, 2025
32f95c9
fixup! fixup! feat: switch display manager from tuigreet to ly
youwen5 Sep 4, 2025
b4630c7
chore: remove extraneous flake inputs
youwen5 Sep 6, 2025
a69ebe1
feat: install and enable onibotoke
youwen5 Sep 6, 2025
835a0cb
feat: replace doas with run0
youwen5 Sep 6, 2025
f20825e
chore: add .aider to gitignore
youwen5 Sep 6, 2025
53d72dc
flake.lock: Update
youwen5 Sep 8, 2025
dfe3160
feat: implement compatibility shim for old nushell
youwen5 Sep 8, 2025
f5ebbc3
chore: remove unused inputs
youwen5 Sep 8, 2025
3297b0f
chore: synchronize flake.lock
youwen5 Sep 8, 2025
88db2dc
feat: unfollow nixpkgs for onibotoke
youwen5 Sep 8, 2025
40359eb
fix: correct nushell sed
youwen5 Sep 8, 2025
8fb6776
feat: no more nushell compat
youwen5 Sep 8, 2025
21b593a
fix: revert pin of onibotoke/nixpkgs
youwen5 Sep 10, 2025
f97ea45
flake.lock: Update
youwen5 Sep 16, 2025
292273e
fix(rofi): rofi-wayland merged into rofi
youwen5 Sep 17, 2025
bad4e79
flake.lock: Update
youwen5 Sep 23, 2025
603941e
fix: guard spicetify behind x86_64-linux
youwen5 Sep 23, 2025
6db1574
feat(waybar): add compact variant
youwen5 Sep 28, 2025
4ac8aae
chore: chase hyprscroller
youwen5 Sep 28, 2025
ca0eea1
feat: make fcitx5 the default input engine
youwen5 Sep 28, 2025
8f5477c
feat: add command-not-found for nushell
youwen5 Sep 28, 2025
d6dc65c
feat: pass functorOS inputs to hm and nixos modules
youwen5 Sep 28, 2025
c59b2db
fix: nix-index command_not_found for nushell
youwen5 Sep 28, 2025
b90748d
flake.lock: Update
youwen5 Oct 2, 2025
d65e9c1
flake.lock: Update
youwen5 Oct 12, 2025
1dd7868
chore: move functorOS logos to assets directory
youwen5 Oct 12, 2025
0a41243
feat: use functorOS logo in plymouth
youwen5 Oct 12, 2025
24fd56f
feat: add treefmt
youwen5 Oct 12, 2025
1754c2e
treewide: run nix fmt
youwen5 Oct 12, 2025
72aa1e8
feat: use functor.systems identity repository instead of vendored assets
youwen5 Oct 12, 2025
c3d78a7
fix: override hyprutils to fix gtk regression
youwen5 Oct 17, 2025
b7d71bb
refactor: pass entire pkgs object into docs
youwen5 Oct 17, 2025
0ab69df
fix: install wineWowPackages.full for wine
youwen5 Oct 24, 2025
cb8abf4
fix: use config._module.check instead of doCheck
youwen5 Oct 24, 2025
5b0c9fb
flake.lock: Update
youwen5 Oct 24, 2025
b641f54
chore: anticipate next nixos-unstable bump
youwen5 Oct 24, 2025
85d141b
flake.lock: Update
youwen5 Nov 1, 2025
ed5f115
fix: deprecations and changed names
youwen5 Nov 1, 2025
0258bab
feat: use wine unstableFull
youwen5 Nov 11, 2025
db88b9e
flake.lock: Update
youwen5 Nov 11, 2025
5b35d91
chore: update hyprscroller rev
youwen5 Nov 12, 2025
71cd848
chore: fix deprecated delta enablement
youwen5 Nov 12, 2025
9034ace
feat: new git configuration scheme
youwen5 Nov 12, 2025
78f5fad
chore: use pkgs.stdenv.hostPlatform.system instead of pkgs.system
youwen5 Nov 12, 2025
073839e
fix: go back to regular wine
youwen5 Dec 5, 2025
c21ebc6
flake.lock: Update
youwen5 Dec 5, 2025
c0e992f
feat: codename zardini
youwen5 Dec 8, 2025
fba0379
fix: bring nix-index-database back to life for nushell
youwen5 Dec 8, 2025
e17ac99
feat: delete hyprscroller, add hyprscrolling
youwen5 Dec 8, 2025
1c3feda
feat: configure hyprscrolling for maximum feature parity
youwen5 Dec 8, 2025
9c6639f
fix(hyprscrolling): correct movewindow up/down
youwen5 Dec 8, 2025
719edb3
flake.lock: Update
youwen5 Dec 12, 2025
da65144
flake.lock: Update
youwen5 Dec 15, 2025
32b291e
fix: use building version of nvidia drivers
youwen5 Dec 15, 2025
dd11dc8
feat: delete easyeffects configuration
youwen5 Dec 17, 2025
7ba8085
feat: add location services module with automatic timezone
youwen5 Dec 23, 2025
8c56654
feat: add locationServices.enable to template
youwen5 Dec 23, 2025
94833ac
flake.lock: Update
youwen5 Dec 23, 2025
08011e9
refactor(linux/core): use mkMerge pattern
youwen5 Dec 25, 2025
8d9fbbe
refactor(linux/location-services): use mkMerge pattern
youwen5 Dec 25, 2025
e186ff1
refactor(linux/audio-prod): use mkMerge pattern
youwen5 Dec 25, 2025
18c2ab6
feat: bitwarden-desktop now supported on x86_64-linux
youwen5 Dec 30, 2025
e00db6b
flake.lock: Update
youwen5 Dec 30, 2025
c70aafe
chore: remove unused homebrew flake inputs
youwen5 Dec 30, 2025
130463d
flake.lock: Update
youwen5 Jan 1, 2026
841965e
flake.lock: Update
youwen5 Jan 9, 2026
4a2632c
refactor: rewrite layerrules/windowrules for hyprland v0.53.0
youwen5 Jan 14, 2026
106309b
feat: use xray blur for power efficiency
youwen5 Jan 14, 2026
7169a55
fix: use patched hyprscrolling with gaps_out fix
youwen5 Jan 14, 2026
d4208ae
chore: formatting of markdown docs
youwen5 Dec 24, 2025
024737a
flake.lock: Update
youwen5 Jan 28, 2026
72b1920
feat: pass cache.nixos.org through excluded IPs too
youwen5 Feb 19, 2026
1d64c2a
fix: do not install reaper without correct option set
youwen5 Feb 19, 2026
b80f394
flake.lock: Update
youwen5 Feb 19, 2026
022d2f5
fix: do not use pipe operator
youwen5 Feb 19, 2026
472df06
fix: various deprecations
youwen5 Feb 19, 2026
4c03ec3
fix: windowrule syntax
youwen5 Feb 19, 2026
5440d83
fix: start-hyprland needs --no-nixgl flag
youwen5 Feb 19, 2026
6683c0d
feat: add photography suite
youwen5 Feb 19, 2026
4ae616b
feat: create functoros-desktop
youwen5 Feb 26, 2026
d8d1ecf
fix: do not do weird hyprland overlay
youwen5 Feb 26, 2026
de92aad
feat: use iwd backend with NM frontend
youwen5 Feb 26, 2026
20827b3
feat: functorOS session
youwen5 Feb 26, 2026
2e168ce
feat: spanish support with fcitx5 (#18)
quantum9Innovation Feb 28, 2026
114921e
flake.lock: Update
youwen5 Mar 5, 2026
bec7dcc
chore: rename description to functorOS
youwen5 Mar 5, 2026
40d2e45
fix: don't add wheel to Nix trusted users by default
i-love-lean Mar 6, 2026
a328ca9
Merge pull request 'fix: don't add wheel to Nix trusted users by defa…
youwen5 Mar 8, 2026
1ac3890
feat: update readme.md
KaitoTLex Mar 24, 2026
326f7ce
feat: sway
KaitoTLex Mar 26, 2026
e3bec32
feat: fix
KaitoTLex Mar 26, 2026
0e94eda
feat: fix
KaitoTLex Mar 26, 2026
c5af442
feat: fix
KaitoTLex Mar 26, 2026
28699b6
feat: fix
KaitoTLex Mar 26, 2026
53a8c36
feat: fix
KaitoTLex Mar 26, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 21 additions & 0 deletions .github/workflows/auto-merge.yml.disabled
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
name: Auto Merge Dependency Updates

on:
- pull_request_target

jobs:
auto-merge-dependency-updates:
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
concurrency:
group: "auto-merge:${{ github.head_ref }}"
cancel-in-progress: true
steps:
- uses: Mic92/auto-merge@main
with:
merge-method: rebase
approve: true
required-labels: dependencies,auto-merge
use-auto-merge: true
28 changes: 28 additions & 0 deletions .github/workflows/build-and-deploy-docs.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
name: Build system documentation and deploy it
on:
push:
branches:
- "main"
jobs:
build-and-deploy-docs:
runs-on: ubuntu-24.04
permissions:
contents: read
pages: write
id-token: write
steps:
- name: Checkout
uses: actions/checkout@v4
- uses: DeterminateSystems/nix-installer-action@main
- name: Build docs
run: |
nix build .#docs-rendered
- name: Setup Pages
uses: actions/configure-pages@v5
- name: Upload artifact
uses: actions/upload-pages-artifact@v3
with:
path: "./result"
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
42 changes: 42 additions & 0 deletions .github/workflows/build-system.yml.disabled
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
name: Build system configurations

on:
pull_request:

jobs:
build-x86_64-demeter:
runs-on: ubuntu-24.04
permissions:
contents: read
id-token: write
steps:
- name: Free Disk Space (Ubuntu)
uses: Jayllyz/free-disk-space@perf/use-rmz
- uses: actions/checkout@v4
- name: Check Nix flake Nixpkgs inputs
uses: DeterminateSystems/flake-checker-action@main
- uses: DeterminateSystems/nix-installer-action@main
with:
github-token: ${{ secrets.GH_TOKEN_FOR_UPDATES }}
- name: Build demeter
run: |
# nix flake check --all-systems
nix build .#nixosConfigurations.demeter.config.system.build.toplevel
build-aarch64-callisto:
runs-on: ubuntu-24.04-arm
permissions:
contents: read
id-token: write
steps:
- name: Free Disk Space (Ubuntu)
uses: Jayllyz/free-disk-space@perf/use-rmz
- uses: actions/checkout@v4
- name: Check Nix flake Nixpkgs inputs
uses: DeterminateSystems/flake-checker-action@main
- uses: DeterminateSystems/nix-installer-action@main
with:
github-token: ${{ secrets.GH_TOKEN_FOR_UPDATES }}
- name: Build callisto
run: |
# nix flake check --all-systems
nix build .#nixosConfigurations.callisto.config.system.build.toplevel
24 changes: 24 additions & 0 deletions .github/workflows/lock.yml.disabled
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
name: update-flake-lock
on:
workflow_dispatch: # allows manual triggering
schedule:
# Runs weekly at 00:00 UTC on Sunday
- cron: "0 0 * * 0"
jobs:
lockfile:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Install Nix
uses: DeterminateSystems/nix-installer-action@main
with:
github-token: ${{ secrets.GH_TOKEN_FOR_UPDATES }}
- name: Update flake.lock
uses: DeterminateSystems/update-flake-lock@main
with:
token: ${{ secrets.GH_TOKEN_FOR_UPDATES }}
pr-title: "deps(flake.lock): update"
pr-labels: |
dependencies,auto-merge
pr-assignees: youwen5
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
result
.direnv/
.aider*
240 changes: 115 additions & 125 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,125 +1,115 @@
# liminalOS

This is a repository that implements liminalOS, my personal Linux distribution
based on [NixOS](https://nixos.org/).

Time wasted writing Nix code:
![](https://wakatime.com/badge/user/018dc5b8-ba5a-4572-a38a-b526d1b28240/project/c59b3d5e-0c9c-4bd5-a752-e75522ab0cdc.svg)

<!-- prettier-ignore -->
> **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 (computers) at the same time, without the minor disparities, issues, and
inconsistencies that arise from traditional approaches such as scripting. 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.

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 thus 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. Also, updating existing machines and rolling back to previous states
is a separate, even more difficult issue to solve with this approach.

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_. This is what NixOS
does, and it gives you remote syncing, versioning (via `git`), and rollbacks
_for free_.

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.

## Installation guide

TBD. May use `deploy-rs` or the in-house
[dartgun](https://github.com/youwen5/dartgun) tool for easy deployment.

## FAQ

### This looks like a collection of NixOS configuration files and modules. What makes it a distinct distribution?

Most Linux[^1] users will agree that any self-respecting distribution must
include at least the following: installer, package manager, and some set of
default packages. Therefore, anything that implements the aforementioned items
must also be a Linux distribution.

liminalOS comes with the Nix package manager (nobody said you need a _unique_
package manager - Ubuntu and Debian are distinct distributions yet both use
`apt`), a custom desktop environment comprised of Waybar, Hyprland, rofi, as
well as various applications installed by default, and
[the means to generate an installer](https://nixos.wiki/wiki/Creating_a_NixOS_live_CD).
Therefore, liminalOS is a Linux distribution. QED.[^2]

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

## Hosts

The modules in liminalOS are designed to be utilized by a wide variety of
machine configurations, including via nix-darwin on macOS. To that end, modules
are organized by operating system (darwin vs. linux), architecture (x86_64 vs.
aarch-64), and form factor (desktop vs laptop). Anything that is agnostic of
these distinctions is considered a "common module" and allows configuration to
be shared between the various host types. This generally includes core programs
like CLI tools, the window manager, etc.

The [flake.nix](/flake.nix) currently contains my configuration for four 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. |
| "adrastea" | Razer Blade 14 (2021) with RTX 3070. Imports the laptop module, the core NixOS modules, and the gaming module. |

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

## Keybinds

| Shortcut | Action |
| -------------------------------------------------------------------------------------------------------- | -------------------------------- |
| <kbd>Super</kbd> + <kbd>W</kbd> | Toggle floating |
| <kbd>Super</kbd> + <kbd>J</kbd> | Toggle layout |
| <kbd>Super</kbd> + <kbd>E</kbd> | Open Dolphin |
| <kbd>Super</kbd> + <kbd>T</kbd> | Open kitty |
| <kbd>Super</kbd> + <kbd>F</kbd> | Open librewolf |
| <kbd>Super</kbd> + <kbd>R</kbd> | Open pavucontrol |
| <kbd>Super</kbd> + <kbd>Space</kbd> | Open rofi |
| <kbd>Super</kbd> + <kbd>Backspace</kbd> | Open logout menu |
| <kbd>Super</kbd> + <kbd>P</kbd> | Screenshot region |
| <kbd>Super</kbd> + <kbd>Y</kbd><kbd>U</kbd><kbd>I</kbd><kbd>O</kbd> | Move around |
| <kbd>Super</kbd> + <kbd>Ctrl</kbd> + <kbd>Y</kbd><kbd>O</kbd> | Move workspaces |
| <kbd>Super</kbd> + <kbd>Alt</kbd> + <kbd>Ctrl</kbd> + <kbd>Y</kbd><kbd>U</kbd><kbd>I</kbd><kbd>O</kbd> | Move windows around workspaces |
| <kbd>Super</kbd> + <kbd>Shift</kbd> + <kbd>Ctrl</kbd> + <kbd>Y</kbd><kbd>U</kbd><kbd>I</kbd><kbd>O</kbd> | Move windows around |
| <kbd>Super</kbd> + <kbd>S</kbd> | Open Special Workspace |
| <kbd>Super</kbd> + <kbd>Enter</kbd> | Fullscreen Window |
| <kbd>Super</kbd> + <kbd>Alt</kbd> + <kbd>S</kbd> | Move Window to Special Workspace |
# functorOS

This is a modification of functorOS with support for sway and other experimental UI elements.
All of the core modules are from and will be fetched from upstream functorOS.

A highly experimental NixOS-based Linux distribution, descended from liminalOS.

Currently under heavy development and not suitable for daily use. Please see
[the project wiki](https://code.functor.systems/functor.systems/functorOS/wiki)
for more details.

See [os.functor.systems](https://os.functor.systems/) for module options.

## Try it

functorOS is ready for power users to test drive. You first need to install
NixOS on your desired machine. To install functorOS, run the following command
and look inside `flake.nix`, containing a minimal self-documenting configuration
for functorOS.

```sh
nix flake init -t "git+https://code.functor.systems/functor.systems/functorOS"
```

## Technical overview

```mermaid
flowchart TB
subgraph Core
NixOS[NixOS Base System]
SysCore["System Core"]:::core
BuildTools["System Building Tools"]:::core
end

subgraph PlatformModules
direction TB
Linux["Linux Modules"]:::linux

subgraph LinuxComponents
direction TB
Audio["Audio System"]:::linux
Gaming["Gaming Support"]:::linux
Graphics["Graphics System"]:::linux
Network["Networking"]:::linux
Theme["Theming System"]:::linux
end
end

subgraph HomeManager
direction TB
HMCore["Home Manager Core"]:::hm
Desktop["Desktop Environment"]:::hm
Shell["Shell Environment"]:::hm
Platform["Platform-Specific Tweaks"]:::hm
end

subgraph ConfigLayer
direction TB
HostConfig["Host Configurations"]:::config
UserConfig["User Configurations"]:::config
Secrets["Secrets Management"]:::security
Pkgs["Package Management"]:::pkg
end

%% Relationships
NixOS --> SysCore
SysCore --> Linux
BuildTools --> HostConfig

Linux --> LinuxComponents
Linux --> Desktop

HMCore --> Shell
HMCore --> Platform
HMCore --> Desktop

HostConfig --> UserConfig
UserConfig --> Secrets
Pkgs --> HostConfig

%% Click Events
click SysCore "https://github.com/youwen5/liminalos/tree/main/modules/linux/core/"
click BuildTools "https://github.com/youwen5/liminalos/blob/main/lib/buildLiminalOS.nix"
click Linux "https://github.com/youwen5/liminalos/tree/main/modules/linux/"
click Audio "https://github.com/youwen5/liminalos/tree/main/modules/linux/audio/"
click Gaming "https://github.com/youwen5/liminalos/tree/main/modules/linux/gaming/"
click Graphics "https://github.com/youwen5/liminalos/tree/main/modules/linux/graphics/"
click Network "https://github.com/youwen5/liminalos/tree/main/modules/linux/networking/"
click Theme "https://github.com/youwen5/liminalos/tree/main/modules/linux/stylix/"
click HMCore "https://github.com/youwen5/liminalos/tree/main/hm/modules/common/"
click Desktop "https://github.com/youwen5/liminalos/tree/main/hm/modules/linux/desktop-environment/"
click Shell "https://github.com/youwen5/liminalos/tree/main/hm/modules/common/shellenv/"
click Platform "https://github.com/youwen5/liminalos/tree/main/hm/modules/linux/platform-tweaks/"
click HostConfig "https://github.com/youwen5/liminalos/tree/main/reference/hosts/"
click UserConfig "https://github.com/youwen5/liminalos/tree/main/reference/users/"
click Secrets "https://github.com/youwen5/liminalos/tree/main/reference/secrets/"
click Pkgs "https://github.com/youwen5/liminalos/tree/main/pkgs/"

%% Styling
classDef core fill:#2196F3,stroke:#1565C0,color:white
classDef linux fill:#4CAF50,stroke:#2E7D32,color:white
classDef hm fill:#FF9800,stroke:#EF6C00,color:white
classDef config fill:#795548,stroke:#4E342E,color:white
classDef security fill:#F44336,stroke:#C62828,color:white
classDef pkg fill:#607D8B,stroke:#37474F,color:white

```

## Reference implementations

- Minimal template --- see [Try it](#try-it).
- @kaitotlex --- [ame](https://github.com/kaitotlex/ame). A simple functorOS deployment relied completely on the flake, including additional flake support, and advanced host configs tailored specifically to the hardware. The primary use case is for functional roll back with the name derived from a fictional detective time traveler.
<!-- - @youwen --- [shezhi](https://code.functor.systems/youwen/shezhi). An advanced -->
<!-- functorOS deployment featuring multiple hosts, additional flake inputs, custom -->
<!-- configurations, and secret management. -->
9 changes: 0 additions & 9 deletions TODOS.md

This file was deleted.

Loading