From dd31fa121254918047009fd5b2a195cc13f82e15 Mon Sep 17 00:00:00 2001 From: Sridhar Ratnakumar <3998+srid@users.noreply.github.com> Date: Sat, 28 Sep 2024 18:01:53 -0400 Subject: [PATCH] Convention-over-configuration layout (#62) --- .envrc | 5 +- .gitignore | 5 +- README.md | 21 ++--- config.nix | 12 +++ .../darwin/appreciate.nix | 9 +-- configurations/home/srid@ubuntu.nix | 13 +++ .../nixos/immediacy.nix | 15 ++-- flake-module.nix | 52 ++++++++++++ flake.nix | 80 +++---------------- home/default.nix | 45 ----------- .../darwin/all}/zsh-completion-fix.nix | 0 modules/darwin/default.nix | 20 +++++ modules/flake-parts/config.nix | 35 ++++++++ modules/flake-parts/devshell.nix | 24 ++++++ modules/flake-parts/nixos-flake.nix | 23 ++++++ {home => modules/home/all}/_1password.nix | 9 +-- {home => modules/home/all}/bash.nix | 0 {home => modules/home/all}/direnv.nix | 0 {home => modules/home/all}/git.nix | 6 +- {home => modules/home/all}/helix.nix | 0 {home => modules/home/all}/himalaya.nix | 0 {home => modules/home/all}/juspay.nix | 0 {home => modules/home/all}/just.nix | 0 {home => modules/home/all}/kitty.nix | 0 {home => modules/home/all}/neovim.nix | 8 +- {home => modules/home/all}/nix.nix | 0 {home => modules/home/all}/nushell.nix | 0 {home => modules/home/all}/nushell/config.nu | 0 {home => modules/home/all}/nushell/env.nu | 0 {home => modules/home/all}/powershell.nix | 0 {home => modules/home/all}/ssh.nix | 0 {home => modules/home/all}/starship.nix | 0 {home => modules/home/all}/terminal.nix | 10 ++- {home => modules/home/all}/tmux.nix | 0 {home => modules/home/all}/vscode-server.nix | 0 .../home/all}/wezterm/default.nix | 0 .../home/all}/wezterm/wezterm.lua | 0 {home => modules/home/all}/zellij.nix | 0 {home => modules/home/all}/zsh.nix | 0 modules/home/darwin-only.nix | 8 ++ modules/home/default.nix | 19 +++++ modules/home/linux-only.nix | 6 ++ modules/nixos/common.nix | 8 ++ modules/nixos/default.nix | 23 ++++++ .../nixos/linux}/actualism-app.nix | 0 .../nixos/linux}/current-location.nix | 0 .../nixos/linux}/disko/trivial.nix | 0 .../linux}/disko/two-raids-on-two-disks.nix | 0 .../nixos/linux}/distributed-build.nix | 0 {nixos => modules/nixos/linux}/docker.nix | 2 +- .../nixos/linux}/email/default.nix | 0 .../nixos/linux}/email/protonmail-bridge.nix | 0 .../nixos/linux}/gui/desktopish/README.md | 0 .../nixos/linux}/gui/desktopish/autolock.nix | 0 .../nixos/linux}/gui/desktopish/default.nix | 0 .../nixos/linux}/gui/desktopish/fonts.nix | 0 .../linux}/gui/desktopish/gnome-keyring.nix | 0 .../nixos/linux}/gui/desktopish/guiapps.nix | 0 .../nixos/linux}/gui/desktopish/hidpi.nix | 0 .../nixos/linux}/gui/desktopish/hotplug.nix | 0 .../linux}/gui/desktopish/light-terminal.nix | 0 .../gui/desktopish/monitor-brightness.nix | 4 +- .../nixos/linux}/gui/desktopish/polybar | 0 .../nixos/linux}/gui/desktopish/polybar.nix | 0 .../nixos/linux}/gui/desktopish/redshift.nix | 0 .../linux}/gui/desktopish/screencapture.nix | 0 .../nixos/linux}/gui/desktopish/steam.nix | 0 .../linux}/gui/desktopish/swap-caps-ctrl.nix | 0 .../gui/desktopish/taffybar/default.nix | 0 .../taffybar/taffybar-srid/.gitignore | 0 .../taffybar-srid/.vscode/extensions.json | 0 .../taffybar-srid/.vscode/settings.json | 0 .../taffybar/taffybar-srid/CHANGELOG.md | 0 .../desktopish/taffybar/taffybar-srid/Main.hs | 0 .../taffybar/taffybar-srid/README.md | 0 .../taffybar/taffybar-srid/Setup.hs | 0 .../desktopish/taffybar/taffybar-srid/bin/run | 0 .../taffybar/taffybar-srid/default.nix | 0 .../dep/gitignoresrc/default.nix | 0 .../dep/gitignoresrc/github.json | 0 .../taffybar-srid/dep/gitignoresrc/thunk.nix | 0 .../taffybar/taffybar-srid/hie.yaml | 0 .../taffybar-srid/taffybar-srid.cabal | 0 .../gui/desktopish/touchpad-trackpoint.nix | 0 .../nixos/linux}/gui/desktopish/vscode.nix | 0 .../linux}/gui/desktopish/xmobar/default.nix | 0 .../desktopish/xmobar/xmobar-srid/.gitignore | 0 .../xmobar-srid/.vscode/extensions.json | 0 .../xmobar/xmobar-srid/.vscode/settings.json | 0 .../xmobar/xmobar-srid/.vscode/tasks.json | 0 .../xmobar/xmobar-srid/CHANGELOG.md | 0 .../gui/desktopish/xmobar/xmobar-srid/Main.hs | 0 .../desktopish/xmobar/xmobar-srid/Setup.hs | 0 .../desktopish/xmobar/xmobar-srid/default.nix | 0 .../desktopish/xmobar/xmobar-srid/hie.yaml | 0 .../xmobar/xmobar-srid/xmobar-srid.cabal | 0 .../linux}/gui/desktopish/xmonad/default.nix | 0 .../desktopish/xmonad/xmonad-srid/.gitignore | 0 .../xmonad-srid/.vscode/extensions.json | 0 .../xmonad/xmonad-srid/.vscode/settings.json | 0 .../xmonad/xmonad-srid/.vscode/tasks.json | 0 .../xmonad/xmonad-srid/CHANGELOG.md | 0 .../gui/desktopish/xmonad/xmonad-srid/Main.hs | 0 .../desktopish/xmonad/xmonad-srid/README.md | 0 .../desktopish/xmonad/xmonad-srid/Setup.hs | 0 .../desktopish/xmonad/xmonad-srid/default.nix | 0 .../xmonad-srid/dep/gitignoresrc/default.nix | 0 .../xmonad-srid/dep/gitignoresrc/github.json | 0 .../xmonad-srid/dep/gitignoresrc/thunk.nix | 0 .../desktopish/xmonad/xmonad-srid/hie.yaml | 0 .../desktopish/xmonad/xmonad-srid/overlay.nix | 0 .../xmonad/xmonad-srid/xmonad-srid.cabal | 0 {nixos => modules/nixos/linux}/gui/gnome.nix | 0 {nixos => modules/nixos/linux}/gui/kde.nix | 0 .../nixos/linux}/gui/virtualbox.nix | 2 +- {nixos => modules/nixos/linux}/hedgedoc.nix | 5 +- {nixos => modules/nixos/linux}/lxd.nix | 2 +- .../nixos/linux}/nixos-container.nix | 0 .../nixos/linux}/parallels-vm.nix | 0 .../nixos/linux}/passwordstore.nix | 0 {nixos => modules/nixos/linux}/postgres.nix | 0 {nixos => modules/nixos/linux}/postgrest.nix | 0 {nixos => modules/nixos/linux}/protonvpn.nix | 2 +- .../self => modules/nixos/linux}/self-ide.nix | 2 +- .../nixos/linux}/server/harden/basics.nix | 0 .../nixos/linux}/server/harden/default.nix | 0 .../nixos/linux}/server/unlaptop.nix | 0 .../nixos/linux}/server/wakeonlan.nix | 0 .../nixos/shared/caches.nix | 0 modules/nixos/shared/github-runner.nix | 17 ++++ {nixos => modules/nixos/shared}/nix.nix | 11 +-- .../nixos/shared}/primary-as-admin.nix | 6 +- nix-darwin/default.nix | 22 ----- nixos/caches/default.nix | 6 -- nixos/default.nix | 33 -------- nixos/github-runner.nix | 8 -- overlays/default.nix | 18 +++++ packages/overlay.nix | 13 --- secrets/secrets.nix | 4 +- users/config.nix | 12 --- users/default.nix | 44 ---------- 141 files changed, 359 insertions(+), 310 deletions(-) create mode 100644 config.nix rename systems/darwin.nix => configurations/darwin/appreciate.nix (86%) create mode 100644 configurations/home/srid@ubuntu.nix rename systems/ax41.nix => configurations/nixos/immediacy.nix (77%) create mode 100644 flake-module.nix delete mode 100644 home/default.nix rename {nix-darwin => modules/darwin/all}/zsh-completion-fix.nix (100%) create mode 100644 modules/darwin/default.nix create mode 100644 modules/flake-parts/config.nix create mode 100644 modules/flake-parts/devshell.nix create mode 100644 modules/flake-parts/nixos-flake.nix rename {home => modules/home/all}/_1password.nix (87%) rename {home => modules/home/all}/bash.nix (100%) rename {home => modules/home/all}/direnv.nix (100%) rename {home => modules/home/all}/git.nix (89%) rename {home => modules/home/all}/helix.nix (100%) rename {home => modules/home/all}/himalaya.nix (100%) rename {home => modules/home/all}/juspay.nix (100%) rename {home => modules/home/all}/just.nix (100%) rename {home => modules/home/all}/kitty.nix (100%) rename {home => modules/home/all}/neovim.nix (93%) rename {home => modules/home/all}/nix.nix (100%) rename {home => modules/home/all}/nushell.nix (100%) rename {home => modules/home/all}/nushell/config.nu (100%) rename {home => modules/home/all}/nushell/env.nu (100%) rename {home => modules/home/all}/powershell.nix (100%) rename {home => modules/home/all}/ssh.nix (100%) rename {home => modules/home/all}/starship.nix (100%) rename {home => modules/home/all}/terminal.nix (89%) rename {home => modules/home/all}/tmux.nix (100%) rename {home => modules/home/all}/vscode-server.nix (100%) rename {home => modules/home/all}/wezterm/default.nix (100%) rename {home => modules/home/all}/wezterm/wezterm.lua (100%) rename {home => modules/home/all}/zellij.nix (100%) rename {home => modules/home/all}/zsh.nix (100%) create mode 100644 modules/home/darwin-only.nix create mode 100644 modules/home/default.nix create mode 100644 modules/home/linux-only.nix create mode 100644 modules/nixos/common.nix create mode 100644 modules/nixos/default.nix rename {nixos => modules/nixos/linux}/actualism-app.nix (100%) rename {nixos => modules/nixos/linux}/current-location.nix (100%) rename {nixos => modules/nixos/linux}/disko/trivial.nix (100%) rename {nixos => modules/nixos/linux}/disko/two-raids-on-two-disks.nix (100%) rename {nixos => modules/nixos/linux}/distributed-build.nix (100%) rename {nixos => modules/nixos/linux}/docker.nix (66%) rename {nixos => modules/nixos/linux}/email/default.nix (100%) rename {nixos => modules/nixos/linux}/email/protonmail-bridge.nix (100%) rename {nixos => modules/nixos/linux}/gui/desktopish/README.md (100%) rename {nixos => modules/nixos/linux}/gui/desktopish/autolock.nix (100%) rename {nixos => modules/nixos/linux}/gui/desktopish/default.nix (100%) rename {nixos => modules/nixos/linux}/gui/desktopish/fonts.nix (100%) rename {nixos => modules/nixos/linux}/gui/desktopish/gnome-keyring.nix (100%) rename {nixos => modules/nixos/linux}/gui/desktopish/guiapps.nix (100%) rename {nixos => modules/nixos/linux}/gui/desktopish/hidpi.nix (100%) rename {nixos => modules/nixos/linux}/gui/desktopish/hotplug.nix (100%) rename {nixos => modules/nixos/linux}/gui/desktopish/light-terminal.nix (100%) rename {nixos => modules/nixos/linux}/gui/desktopish/monitor-brightness.nix (86%) rename {nixos => modules/nixos/linux}/gui/desktopish/polybar (100%) rename {nixos => modules/nixos/linux}/gui/desktopish/polybar.nix (100%) rename {nixos => modules/nixos/linux}/gui/desktopish/redshift.nix (100%) rename {nixos => modules/nixos/linux}/gui/desktopish/screencapture.nix (100%) rename {nixos => modules/nixos/linux}/gui/desktopish/steam.nix (100%) rename {nixos => modules/nixos/linux}/gui/desktopish/swap-caps-ctrl.nix (100%) rename {nixos => modules/nixos/linux}/gui/desktopish/taffybar/default.nix (100%) rename {nixos => modules/nixos/linux}/gui/desktopish/taffybar/taffybar-srid/.gitignore (100%) rename {nixos => modules/nixos/linux}/gui/desktopish/taffybar/taffybar-srid/.vscode/extensions.json (100%) rename {nixos => modules/nixos/linux}/gui/desktopish/taffybar/taffybar-srid/.vscode/settings.json (100%) rename {nixos => modules/nixos/linux}/gui/desktopish/taffybar/taffybar-srid/CHANGELOG.md (100%) rename {nixos => modules/nixos/linux}/gui/desktopish/taffybar/taffybar-srid/Main.hs (100%) rename {nixos => modules/nixos/linux}/gui/desktopish/taffybar/taffybar-srid/README.md (100%) rename {nixos => modules/nixos/linux}/gui/desktopish/taffybar/taffybar-srid/Setup.hs (100%) rename {nixos => modules/nixos/linux}/gui/desktopish/taffybar/taffybar-srid/bin/run (100%) rename {nixos => modules/nixos/linux}/gui/desktopish/taffybar/taffybar-srid/default.nix (100%) rename {nixos => modules/nixos/linux}/gui/desktopish/taffybar/taffybar-srid/dep/gitignoresrc/default.nix (100%) rename {nixos => modules/nixos/linux}/gui/desktopish/taffybar/taffybar-srid/dep/gitignoresrc/github.json (100%) rename {nixos => modules/nixos/linux}/gui/desktopish/taffybar/taffybar-srid/dep/gitignoresrc/thunk.nix (100%) rename {nixos => modules/nixos/linux}/gui/desktopish/taffybar/taffybar-srid/hie.yaml (100%) rename {nixos => modules/nixos/linux}/gui/desktopish/taffybar/taffybar-srid/taffybar-srid.cabal (100%) rename {nixos => modules/nixos/linux}/gui/desktopish/touchpad-trackpoint.nix (100%) rename {nixos => modules/nixos/linux}/gui/desktopish/vscode.nix (100%) rename {nixos => modules/nixos/linux}/gui/desktopish/xmobar/default.nix (100%) rename {nixos => modules/nixos/linux}/gui/desktopish/xmobar/xmobar-srid/.gitignore (100%) rename {nixos => modules/nixos/linux}/gui/desktopish/xmobar/xmobar-srid/.vscode/extensions.json (100%) rename {nixos => modules/nixos/linux}/gui/desktopish/xmobar/xmobar-srid/.vscode/settings.json (100%) rename {nixos => modules/nixos/linux}/gui/desktopish/xmobar/xmobar-srid/.vscode/tasks.json (100%) rename {nixos => modules/nixos/linux}/gui/desktopish/xmobar/xmobar-srid/CHANGELOG.md (100%) rename {nixos => modules/nixos/linux}/gui/desktopish/xmobar/xmobar-srid/Main.hs (100%) rename {nixos => modules/nixos/linux}/gui/desktopish/xmobar/xmobar-srid/Setup.hs (100%) rename {nixos => modules/nixos/linux}/gui/desktopish/xmobar/xmobar-srid/default.nix (100%) rename {nixos => modules/nixos/linux}/gui/desktopish/xmobar/xmobar-srid/hie.yaml (100%) rename {nixos => modules/nixos/linux}/gui/desktopish/xmobar/xmobar-srid/xmobar-srid.cabal (100%) rename {nixos => modules/nixos/linux}/gui/desktopish/xmonad/default.nix (100%) rename {nixos => modules/nixos/linux}/gui/desktopish/xmonad/xmonad-srid/.gitignore (100%) rename {nixos => modules/nixos/linux}/gui/desktopish/xmonad/xmonad-srid/.vscode/extensions.json (100%) rename {nixos => modules/nixos/linux}/gui/desktopish/xmonad/xmonad-srid/.vscode/settings.json (100%) rename {nixos => modules/nixos/linux}/gui/desktopish/xmonad/xmonad-srid/.vscode/tasks.json (100%) rename {nixos => modules/nixos/linux}/gui/desktopish/xmonad/xmonad-srid/CHANGELOG.md (100%) rename {nixos => modules/nixos/linux}/gui/desktopish/xmonad/xmonad-srid/Main.hs (100%) rename {nixos => modules/nixos/linux}/gui/desktopish/xmonad/xmonad-srid/README.md (100%) rename {nixos => modules/nixos/linux}/gui/desktopish/xmonad/xmonad-srid/Setup.hs (100%) rename {nixos => modules/nixos/linux}/gui/desktopish/xmonad/xmonad-srid/default.nix (100%) rename {nixos => modules/nixos/linux}/gui/desktopish/xmonad/xmonad-srid/dep/gitignoresrc/default.nix (100%) rename {nixos => modules/nixos/linux}/gui/desktopish/xmonad/xmonad-srid/dep/gitignoresrc/github.json (100%) rename {nixos => modules/nixos/linux}/gui/desktopish/xmonad/xmonad-srid/dep/gitignoresrc/thunk.nix (100%) rename {nixos => modules/nixos/linux}/gui/desktopish/xmonad/xmonad-srid/hie.yaml (100%) rename {nixos => modules/nixos/linux}/gui/desktopish/xmonad/xmonad-srid/overlay.nix (100%) rename {nixos => modules/nixos/linux}/gui/desktopish/xmonad/xmonad-srid/xmonad-srid.cabal (100%) rename {nixos => modules/nixos/linux}/gui/gnome.nix (100%) rename {nixos => modules/nixos/linux}/gui/kde.nix (100%) rename {nixos => modules/nixos/linux}/gui/virtualbox.nix (62%) rename {nixos => modules/nixos/linux}/hedgedoc.nix (89%) rename {nixos => modules/nixos/linux}/lxd.nix (65%) rename {nixos => modules/nixos/linux}/nixos-container.nix (100%) rename {nixos => modules/nixos/linux}/parallels-vm.nix (100%) rename {nixos => modules/nixos/linux}/passwordstore.nix (100%) rename {nixos => modules/nixos/linux}/postgres.nix (100%) rename {nixos => modules/nixos/linux}/postgrest.nix (100%) rename {nixos => modules/nixos/linux}/protonvpn.nix (86%) rename {nixos/self => modules/nixos/linux}/self-ide.nix (84%) rename {nixos => modules/nixos/linux}/server/harden/basics.nix (100%) rename {nixos => modules/nixos/linux}/server/harden/default.nix (100%) rename {nixos => modules/nixos/linux}/server/unlaptop.nix (100%) rename {nixos => modules/nixos/linux}/server/wakeonlan.nix (100%) rename nixos/caches/oss.nix => modules/nixos/shared/caches.nix (100%) create mode 100644 modules/nixos/shared/github-runner.nix rename {nixos => modules/nixos/shared}/nix.nix (83%) rename {nixos/self => modules/nixos/shared}/primary-as-admin.nix (82%) delete mode 100644 nix-darwin/default.nix delete mode 100644 nixos/caches/default.nix delete mode 100644 nixos/default.nix delete mode 100644 nixos/github-runner.nix create mode 100644 overlays/default.nix delete mode 100644 packages/overlay.nix delete mode 100644 users/config.nix delete mode 100644 users/default.nix diff --git a/.envrc b/.envrc index 8392d15..ff023a6 100644 --- a/.envrc +++ b/.envrc @@ -1 +1,4 @@ -use flake \ No newline at end of file +watch_file \ + flake-parts/devshell.nix \ + flake-module.nix +use flake diff --git a/.gitignore b/.gitignore index 7cb2b88..acf271d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,2 @@ -result -.direnv -*.qcow2 \ No newline at end of file +/result +/.direnv diff --git a/README.md b/README.md index 2bd418f..03878ed 100644 --- a/README.md +++ b/README.md @@ -25,16 +25,16 @@ To use this repository as base configuration for your new machine running: - X1 Carbon: https://srid.ca/x1c7-install - Windows (via WSL): https://github.com/nix-community/NixOS-WSL - Clone this repo anywhere -- Edit `flake.nix` to use your system hostname as a key of the `nixosConfigurations` set -- Edit `users/config.nix` to contain your users +- Rename `./modules/nixos/??.nix` to match your current system hostname +- Edit `config.nix` to set your primary user information - Run `nix run`. That's it. Re-open your terminal. ### macOS - [Install Nix](https://nixos.asia/en/install) - Clone this repo anywhere -- Edit `flake.nix` to use your system hostname as a key of the `darwinConfigurations` set -- Edit `users/config.nix` to contain your users +- Rename `./modules/darwin/??.nix` to match your current system hostname +- Edit `config.nix` to set your primary user information - Run `nix run`.[^cleanup] That's it. Re-open your terminal. [^cleanup]: You might have to `rm -rf /etc/nix/nix.conf`, so our flake.nix can do its thing. @@ -45,11 +45,14 @@ Start from `flake.nix` (see [Flakes](https://nixos.wiki/wiki/Flakes)). [`flake-p ### Directory layout -- `home`: home-manager config (shared between Linux and macOS) -- `nixos`: nixos modules for Linux -- `nix-darwin`: nix-darwin modules for macOS -- `users`: user information -- `systems`: top-level configuration.nix('ish) for various systems +>[!TIP] +> See `flake-module.nix` for autowiring of flake outputs based on this directory structure. + +- `configurations`: top-level `flake.{}Configurations` for various systems (`nixos`, `darwin`, `home`) +- `modules`: top-level `flake.{}Modiules` for various systems (`nixos`, `darwin`, `home`, `flake-parts`) +- `overlays`: Overlays +- `packages`: Packages +- `secrets`: agenix secrets configuration ## Tips diff --git a/config.nix b/config.nix new file mode 100644 index 0000000..1844e39 --- /dev/null +++ b/config.nix @@ -0,0 +1,12 @@ +# Configuration for this repo +# See ./modules/flake-parts/config.nix for module options. +{ + me = { + username = "srid"; + fullname = "Sridhar Ratnakumar"; + email = "srid@srid.ca"; + # Legacy + # "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCYQ003p7fB5ICQehLwhDBomY9WzkNBeijkSw9ADGU+ECrPakeIH3pntUWRJH1W93vKnLqpkn6HLGEXD9MCR0s98uhh8hT7uAYCxQTbEeKT3PYkfz3oe7XaR8rE601sds0ZyFwH7l8cvK97pGr+uhFXAaohiV6VqmLVXhManEjZZ8GfYWBD9BCmIJk43G3OGa5QYFeHqztprXaJNU5dFPv2Uq2C+L6EvfCfkK2OO1BLZgL+Rai5jjyy6k0fcfsxxd9BdGUwqDhcBeyTIzX9rePMugf/xD+6uNRxTU+vjVpGUtFOw6rpgmVyFv9mn3QMNdQBc5hYKVbIQwMNGTzGgcQv srid@nixos" + sshKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHQRxPoqlThDrkR58pKnJgmeWPY9/wleReRbZ2MOZRyd"; + }; +} diff --git a/systems/darwin.nix b/configurations/darwin/appreciate.nix similarity index 86% rename from systems/darwin.nix rename to configurations/darwin/appreciate.nix index e475ce5..a689b8d 100644 --- a/systems/darwin.nix +++ b/configurations/darwin/appreciate.nix @@ -1,3 +1,4 @@ +# Configuration for my M1 Macbook Max (using nix-darwin) { flake, ... }: let @@ -7,8 +8,7 @@ in { imports = [ self.darwinModules.default - "${self}/nix-darwin/zsh-completion-fix.nix" - "${self}/nixos/github-runner.nix" + "${self}/modules/nixos/shared/github-runner.nix" ]; nixpkgs.hostPlatform = "aarch64-darwin"; @@ -17,9 +17,8 @@ in security.pam.enableSudoTouchIdAuth = true; # For home-manager to work. - users.users.${flake.config.people.myself} = { - name = flake.config.people.myself; - home = "/Users/${flake.config.people.myself}"; + users.users.${flake.config.me.username} = { + home = "/Users/${flake.config.me.username}"; }; system.keyboard = { diff --git a/configurations/home/srid@ubuntu.nix b/configurations/home/srid@ubuntu.nix new file mode 100644 index 0000000..10e3af0 --- /dev/null +++ b/configurations/home/srid@ubuntu.nix @@ -0,0 +1,13 @@ +# My Ubuntu VM +{ flake, ... }: +let + inherit (flake.inputs) self; +in +{ + imports = [ + self.homeModules.default + self.homeModules.linux-only + ]; + home.username = "srid"; + home.homeDirectory = "/home/srid"; +} diff --git a/systems/ax41.nix b/configurations/nixos/immediacy.nix similarity index 77% rename from systems/ax41.nix rename to configurations/nixos/immediacy.nix index 65f387e..8de3b9a 100644 --- a/systems/ax41.nix +++ b/configurations/nixos/immediacy.nix @@ -1,3 +1,4 @@ +# Hetzner dedicated: AX41-NVMe { flake, ... }: let @@ -8,14 +9,12 @@ in imports = [ inputs.disko.nixosModules.disko self.nixosModules.default - "${self}/nixos/disko/trivial.nix" - "${self}/nixos/nix.nix" - "${self}/nixos/self/primary-as-admin.nix" - "${self}/nixos/docker.nix" - "${self}/nixos/actualism-app.nix" - "${self}/nixos/hedgedoc.nix" - "${self}/nixos/github-runner.nix" - "${self}/nixos/server/harden/basics.nix" + "${self}/modules/nixos/linux/disko/trivial.nix" + "${self}/modules/nixos/linux/docker.nix" + "${self}/modules/nixos/linux/actualism-app.nix" + "${self}/modules/nixos/linux/hedgedoc.nix" + "${self}/modules/nixos/linux/server/harden/basics.nix" + "${self}/modules/nixos/shared/github-runner.nix" ]; nixos-flake.sshTarget = "srid@immediacy"; diff --git a/flake-module.nix b/flake-module.nix new file mode 100644 index 0000000..72fd9ef --- /dev/null +++ b/flake-module.nix @@ -0,0 +1,52 @@ +# An opinionated module that creates flake outputs based on a known directory structure. +# +# cf. Convention over configuration +# +# TODO: Upstream this in some fashion. To srid/nixos-flake? +# cf. https://github.com/juspay/nix-dev-home/issues/86 +{ inputs, self, ... }: +let + inherit (inputs.nixpkgs) lib; + forAllNixFiles = dir: f: + lib.pipe dir [ + builtins.readDir + (lib.filterAttrs (_: type: type == "regular")) + (lib.mapAttrs' (fn: _: + let name = lib.removeSuffix ".nix" fn; in + lib.nameValuePair name (f "${dir}/${fn}") + )) + ]; +in +{ + flake = { + darwinConfigurations = + forAllNixFiles "${self}/configurations/darwin" + (fn: self.nixos-flake.lib.mkMacosSystem { home-manager = true; } fn); + + nixosConfigurations = + forAllNixFiles "${self}/configurations/nixos" + (fn: self.nixos-flake.lib.mkLinuxSystem { home-manager = true; } fn); + + darwinModules = + forAllNixFiles "${self}/modules/darwin" + (fn: fn); + + nixosModules = + forAllNixFiles "${self}/modules/nixos" + (fn: fn); + + homeModules = + forAllNixFiles "${self}/modules/home" + (fn: fn); + + overlays = + forAllNixFiles "${self}/overlays" + (fn: import fn self.nixos-flake.lib.specialArgsFor.common); + }; + + perSystem = { pkgs, ... }: { + legacyPackages.homeConfigurations = + forAllNixFiles "${self}/configurations/home" + (fn: self.nixos-flake.lib.mkHomeConfiguration pkgs fn); + }; +} diff --git a/flake.nix b/flake.nix index e4f5dfb..55632ab 100644 --- a/flake.nix +++ b/flake.nix @@ -36,81 +36,21 @@ outputs = inputs@{ self, ... }: inputs.flake-parts.lib.mkFlake { inherit inputs; } { systems = [ "x86_64-linux" "aarch64-linux" "aarch64-darwin" ]; - imports = [ - inputs.treefmt-nix.flakeModule - inputs.nixos-flake.flakeModule - inputs.nixos-flake.flakeModule - ./users - ./home - ./nixos - ./nix-darwin + imports = (with builtins; + map + (fn: ./modules/flake-parts/${fn}) + (attrNames (readDir ./modules/flake-parts))) ++ + [ + ./flake-module.nix ]; - - flake = { - # Configuration for my M1 Macbook Max (using nix-darwin) - darwinConfigurations.appreciate = - self.nixos-flake.lib.mkMacosSystem - { home-manager = true; } - ./systems/darwin.nix; - - # Hetzner dedicated - nixosConfigurations.immediacy = - self.nixos-flake.lib.mkLinuxSystem - { home-manager = true; } - ./systems/ax41.nix; - }; - - perSystem = { self', inputs', pkgs, system, config, ... }: { - # My Ubuntu VM - legacyPackages.homeConfigurations."srid@ubuntu" = - self.nixos-flake.lib.mkHomeConfiguration pkgs { - imports = [ - self.homeModules.common-linux - ]; - home.username = "srid"; - home.homeDirectory = "/home/srid"; - }; - - # Flake inputs we want to update periodically - # Run: `nix run .#update`. - nixos-flake = { - primary-inputs = [ - "nixpkgs" - "home-manager" - "nix-darwin" - "nixos-flake" - "nix-index-database" - "nixvim" - "omnix" - ]; - }; - - treefmt.config = { - projectRootFile = "flake.nix"; - programs.nixpkgs-fmt.enable = true; - }; - - packages.default = self'.packages.activate; - - devShells.default = pkgs.mkShell { - name = "nixos-config-shell"; - meta.description = "Dev environment for nixos-config"; - inputsFrom = [ config.treefmt.build.devShell ]; - packages = with pkgs; [ - just - colmena - nixd - inputs'.ragenix.packages.default - ]; - }; + perSystem = { self', pkgs, lib, system, ... }: { # Make our overlay available to the devShell + # "Flake parts does not yet come with an endorsed module that initializes the pkgs argument."" + # So we must do this manually; https://flake.parts/overlays#consuming-an-overlay _module.args.pkgs = import inputs.nixpkgs { inherit system; - overlays = [ - inputs.nuenv.overlays.default - (import ./packages/overlay.nix { inherit system; flake = { inherit inputs; }; }) - ]; + overlays = lib.attrValues self.overlays; }; }; }; diff --git a/home/default.nix b/home/default.nix deleted file mode 100644 index f32faf2..0000000 --- a/home/default.nix +++ /dev/null @@ -1,45 +0,0 @@ -{ self, inputs, ... }: -{ - flake = { - homeModules = { - common = { - home.stateVersion = "22.11"; - imports = [ - inputs.nixvim.homeManagerModules.nixvim - inputs.nix-index-database.hmModules.nix-index - ./tmux.nix - ./neovim.nix - # ./helix.nix - ./ssh.nix - ./starship.nix - ./terminal.nix - ./nix.nix - ./git.nix - ./direnv.nix - ./zellij.nix - # ./nushell.nix - ./just.nix - # ./powershell.nix - ./juspay.nix - ]; - }; - common-linux = { - imports = [ - self.homeModules.common - ./bash.nix - ./vscode-server.nix - ]; - }; - common-darwin = { - imports = [ - self.homeModules.common - ./zsh.nix - # ./bash.nix - ./wezterm - ./himalaya.nix - ./_1password.nix - ]; - }; - }; - }; -} diff --git a/nix-darwin/zsh-completion-fix.nix b/modules/darwin/all/zsh-completion-fix.nix similarity index 100% rename from nix-darwin/zsh-completion-fix.nix rename to modules/darwin/all/zsh-completion-fix.nix diff --git a/modules/darwin/default.nix b/modules/darwin/default.nix new file mode 100644 index 0000000..eaccea1 --- /dev/null +++ b/modules/darwin/default.nix @@ -0,0 +1,20 @@ +# Configuration common to all macOS systems +{ flake, ... }: +let + inherit (flake) config inputs; + inherit (inputs) self; +in +{ + imports = [ + { + home-manager.users.${config.me.username} = { }; + home-manager.sharedModules = [ + self.homeModules.default + self.homeModules.darwin-only + ]; + } + self.nixosModules.common + inputs.ragenix.darwinModules.default + ./all/zsh-completion-fix.nix + ]; +} diff --git a/modules/flake-parts/config.nix b/modules/flake-parts/config.nix new file mode 100644 index 0000000..72aa3d4 --- /dev/null +++ b/modules/flake-parts/config.nix @@ -0,0 +1,35 @@ +# Top-level configuration for everything in this repo. +# +# Values are set in 'config.nix' in repo root. +{ lib, ... }: +let + userSubmodule = lib.types.submodule { + options = { + username = lib.mkOption { + type = lib.types.str; + }; + fullname = lib.mkOption { + type = lib.types.str; + }; + email = lib.mkOption { + type = lib.types.str; + }; + sshKey = lib.mkOption { + type = lib.types.str; + description = '' + SSH public key + ''; + }; + }; + }; +in +{ + imports = [ + ../../config.nix + ]; + options = { + me = lib.mkOption { + type = userSubmodule; + }; + }; +} diff --git a/modules/flake-parts/devshell.nix b/modules/flake-parts/devshell.nix new file mode 100644 index 0000000..aaef98d --- /dev/null +++ b/modules/flake-parts/devshell.nix @@ -0,0 +1,24 @@ +{ inputs, ... }: +{ + imports = [ + inputs.treefmt-nix.flakeModule + ]; + perSystem = { inputs', config, pkgs, ... }: { + devShells.default = pkgs.mkShell { + name = "nixos-config-shell"; + meta.description = "Dev environment for nixos-config"; + inputsFrom = [ config.treefmt.build.devShell ]; + packages = with pkgs; [ + just + colmena + nixd + inputs'.ragenix.packages.default + ]; + }; + + treefmt.config = { + projectRootFile = "flake.nix"; + programs.nixpkgs-fmt.enable = true; + }; + }; +} diff --git a/modules/flake-parts/nixos-flake.nix b/modules/flake-parts/nixos-flake.nix new file mode 100644 index 0000000..0ca4957 --- /dev/null +++ b/modules/flake-parts/nixos-flake.nix @@ -0,0 +1,23 @@ +{ inputs, ... }: +{ + imports = [ + inputs.nixos-flake.flakeModule + ]; + perSystem = { self', ... }: { + packages.default = self'.packages.activate; + + # Flake inputs we want to update periodically + # Run: `nix run .#update`. + nixos-flake = { + primary-inputs = [ + "nixpkgs" + "home-manager" + "nix-darwin" + "nixos-flake" + "nix-index-database" + "nixvim" + "omnix" + ]; + }; + }; +} diff --git a/home/_1password.nix b/modules/home/all/_1password.nix similarity index 87% rename from home/_1password.nix rename to modules/home/all/_1password.nix index ad087f0..5449bdb 100644 --- a/home/_1password.nix +++ b/modules/home/all/_1password.nix @@ -1,7 +1,4 @@ -{ flake, config, pkgs, lib, ... }: -let - userConfig = flake.config.people.users.${config.home.username}; -in +{ flake, pkgs, lib, ... }: { home.packages = with pkgs; [ _1password @@ -25,13 +22,13 @@ in }; # https://developer.1password.com/docs/ssh/git-commit-signing/ - # + # # For this to work on GitHub, you must have added the SSH pub key as a signing key, see # https://1password.community/discussion/comment/667515/#Comment_667515 programs.git.includes = [{ condition = "gitdir:~/code/**"; # Personal repos only contents = { - user.signingKey = userConfig.sshKey; + user.signingKey = flake.config.me.sshKey; gpg.format = "ssh"; gpg.ssh.program = "/Applications/1Password.app/Contents/MacOS/op-ssh-sign"; commit.gpgsign = true; diff --git a/home/bash.nix b/modules/home/all/bash.nix similarity index 100% rename from home/bash.nix rename to modules/home/all/bash.nix diff --git a/home/direnv.nix b/modules/home/all/direnv.nix similarity index 100% rename from home/direnv.nix rename to modules/home/all/direnv.nix diff --git a/home/git.nix b/modules/home/all/git.nix similarity index 89% rename from home/git.nix rename to modules/home/all/git.nix index 8eab13a..cebefc0 100644 --- a/home/git.nix +++ b/modules/home/all/git.nix @@ -1,4 +1,4 @@ -{ pkgs, config, flake, ... }: +{ pkgs, flake, ... }: { home.packages = with pkgs; [ git-filter-repo @@ -7,8 +7,8 @@ programs.git = { package = pkgs.gitAndTools.gitFull; enable = true; - userName = flake.config.people.users.${config.home.username}.name; - userEmail = flake.config.people.users.${config.home.username}.email; + userName = flake.config.me.fullname; + userEmail = flake.config.me.email; aliases = { co = "checkout"; ci = "commit"; diff --git a/home/helix.nix b/modules/home/all/helix.nix similarity index 100% rename from home/helix.nix rename to modules/home/all/helix.nix diff --git a/home/himalaya.nix b/modules/home/all/himalaya.nix similarity index 100% rename from home/himalaya.nix rename to modules/home/all/himalaya.nix diff --git a/home/juspay.nix b/modules/home/all/juspay.nix similarity index 100% rename from home/juspay.nix rename to modules/home/all/juspay.nix diff --git a/home/just.nix b/modules/home/all/just.nix similarity index 100% rename from home/just.nix rename to modules/home/all/just.nix diff --git a/home/kitty.nix b/modules/home/all/kitty.nix similarity index 100% rename from home/kitty.nix rename to modules/home/all/kitty.nix diff --git a/home/neovim.nix b/modules/home/all/neovim.nix similarity index 93% rename from home/neovim.nix rename to modules/home/all/neovim.nix index bfc5bb1..70d9d8a 100644 --- a/home/neovim.nix +++ b/modules/home/all/neovim.nix @@ -1,6 +1,12 @@ -{ pkgs, ... }: +{ flake, ... }: +let + inherit (flake) inputs; +in { + imports = [ + inputs.nixvim.homeManagerModules.nixvim + ]; programs.nixvim = { enable = true; diff --git a/home/nix.nix b/modules/home/all/nix.nix similarity index 100% rename from home/nix.nix rename to modules/home/all/nix.nix diff --git a/home/nushell.nix b/modules/home/all/nushell.nix similarity index 100% rename from home/nushell.nix rename to modules/home/all/nushell.nix diff --git a/home/nushell/config.nu b/modules/home/all/nushell/config.nu similarity index 100% rename from home/nushell/config.nu rename to modules/home/all/nushell/config.nu diff --git a/home/nushell/env.nu b/modules/home/all/nushell/env.nu similarity index 100% rename from home/nushell/env.nu rename to modules/home/all/nushell/env.nu diff --git a/home/powershell.nix b/modules/home/all/powershell.nix similarity index 100% rename from home/powershell.nix rename to modules/home/all/powershell.nix diff --git a/home/ssh.nix b/modules/home/all/ssh.nix similarity index 100% rename from home/ssh.nix rename to modules/home/all/ssh.nix diff --git a/home/starship.nix b/modules/home/all/starship.nix similarity index 100% rename from home/starship.nix rename to modules/home/all/starship.nix diff --git a/home/terminal.nix b/modules/home/all/terminal.nix similarity index 89% rename from home/terminal.nix rename to modules/home/all/terminal.nix index d77b3ea..63d2fcc 100644 --- a/home/terminal.nix +++ b/modules/home/all/terminal.nix @@ -1,7 +1,13 @@ -{ pkgs, ... }: - # Platform-independent terminal setup +{ flake, pkgs, ... }: + +let + inherit (flake) inputs; +in { + imports = [ + inputs.nix-index-database.hmModules.nix-index + ]; home.packages = with pkgs; [ # Unixy tools ripgrep diff --git a/home/tmux.nix b/modules/home/all/tmux.nix similarity index 100% rename from home/tmux.nix rename to modules/home/all/tmux.nix diff --git a/home/vscode-server.nix b/modules/home/all/vscode-server.nix similarity index 100% rename from home/vscode-server.nix rename to modules/home/all/vscode-server.nix diff --git a/home/wezterm/default.nix b/modules/home/all/wezterm/default.nix similarity index 100% rename from home/wezterm/default.nix rename to modules/home/all/wezterm/default.nix diff --git a/home/wezterm/wezterm.lua b/modules/home/all/wezterm/wezterm.lua similarity index 100% rename from home/wezterm/wezterm.lua rename to modules/home/all/wezterm/wezterm.lua diff --git a/home/zellij.nix b/modules/home/all/zellij.nix similarity index 100% rename from home/zellij.nix rename to modules/home/all/zellij.nix diff --git a/home/zsh.nix b/modules/home/all/zsh.nix similarity index 100% rename from home/zsh.nix rename to modules/home/all/zsh.nix diff --git a/modules/home/darwin-only.nix b/modules/home/darwin-only.nix new file mode 100644 index 0000000..9a1c4a5 --- /dev/null +++ b/modules/home/darwin-only.nix @@ -0,0 +1,8 @@ +{ + imports = [ + ./all/zsh.nix + ./all/wezterm + ./all/himalaya.nix + ./all/_1password.nix + ]; +} diff --git a/modules/home/default.nix b/modules/home/default.nix new file mode 100644 index 0000000..af2ec47 --- /dev/null +++ b/modules/home/default.nix @@ -0,0 +1,19 @@ +{ + home.stateVersion = "22.11"; + imports = [ + ./all/tmux.nix + ./all/neovim.nix + # ./helix.nix + ./all/ssh.nix + ./all/starship.nix + ./all/terminal.nix + ./all/nix.nix + ./all/git.nix + ./all/direnv.nix + ./all/zellij.nix + # ./nushell.nix + ./all/just.nix + # ./powershell.nix + ./all/juspay.nix + ]; +} diff --git a/modules/home/linux-only.nix b/modules/home/linux-only.nix new file mode 100644 index 0000000..11dc7b7 --- /dev/null +++ b/modules/home/linux-only.nix @@ -0,0 +1,6 @@ +{ + imports = [ + ./all/bash.nix + ./all/vscode-server.nix + ]; +} diff --git a/modules/nixos/common.nix b/modules/nixos/common.nix new file mode 100644 index 0000000..32f8892 --- /dev/null +++ b/modules/nixos/common.nix @@ -0,0 +1,8 @@ +# Common to Linux & darwin +{ + imports = [ + ./shared/nix.nix + ./shared/primary-as-admin.nix + ./shared/caches.nix + ]; +} diff --git a/modules/nixos/default.nix b/modules/nixos/default.nix new file mode 100644 index 0000000..9fee55e --- /dev/null +++ b/modules/nixos/default.nix @@ -0,0 +1,23 @@ +# Configuration common to all Linux systems +{ flake, ... }: + +let + inherit (flake) config inputs; + inherit (inputs) self; +in +{ + imports = [ + { + users.users.${config.me.username}.isNormalUser = true; + home-manager.users.${config.me.username} = { }; + home-manager.sharedModules = [ + self.homeModules.default + self.homeModules.linux-only + ]; + } + self.nixosModules.common + inputs.ragenix.nixosModules.default # Used in github-runner.nix & hedgedoc.nix + ./linux/self-ide.nix + ./linux/current-location.nix + ]; +} diff --git a/nixos/actualism-app.nix b/modules/nixos/linux/actualism-app.nix similarity index 100% rename from nixos/actualism-app.nix rename to modules/nixos/linux/actualism-app.nix diff --git a/nixos/current-location.nix b/modules/nixos/linux/current-location.nix similarity index 100% rename from nixos/current-location.nix rename to modules/nixos/linux/current-location.nix diff --git a/nixos/disko/trivial.nix b/modules/nixos/linux/disko/trivial.nix similarity index 100% rename from nixos/disko/trivial.nix rename to modules/nixos/linux/disko/trivial.nix diff --git a/nixos/disko/two-raids-on-two-disks.nix b/modules/nixos/linux/disko/two-raids-on-two-disks.nix similarity index 100% rename from nixos/disko/two-raids-on-two-disks.nix rename to modules/nixos/linux/disko/two-raids-on-two-disks.nix diff --git a/nixos/distributed-build.nix b/modules/nixos/linux/distributed-build.nix similarity index 100% rename from nixos/distributed-build.nix rename to modules/nixos/linux/distributed-build.nix diff --git a/nixos/docker.nix b/modules/nixos/linux/docker.nix similarity index 66% rename from nixos/docker.nix rename to modules/nixos/linux/docker.nix index 39c2ad8..d133555 100644 --- a/nixos/docker.nix +++ b/modules/nixos/linux/docker.nix @@ -1,7 +1,7 @@ { flake, ... }: { virtualisation.docker.enable = true; - users.users.${flake.config.people.myself} = { + users.users.${flake.config.me.username} = { extraGroups = [ "docker" ]; }; } diff --git a/nixos/email/default.nix b/modules/nixos/linux/email/default.nix similarity index 100% rename from nixos/email/default.nix rename to modules/nixos/linux/email/default.nix diff --git a/nixos/email/protonmail-bridge.nix b/modules/nixos/linux/email/protonmail-bridge.nix similarity index 100% rename from nixos/email/protonmail-bridge.nix rename to modules/nixos/linux/email/protonmail-bridge.nix diff --git a/nixos/gui/desktopish/README.md b/modules/nixos/linux/gui/desktopish/README.md similarity index 100% rename from nixos/gui/desktopish/README.md rename to modules/nixos/linux/gui/desktopish/README.md diff --git a/nixos/gui/desktopish/autolock.nix b/modules/nixos/linux/gui/desktopish/autolock.nix similarity index 100% rename from nixos/gui/desktopish/autolock.nix rename to modules/nixos/linux/gui/desktopish/autolock.nix diff --git a/nixos/gui/desktopish/default.nix b/modules/nixos/linux/gui/desktopish/default.nix similarity index 100% rename from nixos/gui/desktopish/default.nix rename to modules/nixos/linux/gui/desktopish/default.nix diff --git a/nixos/gui/desktopish/fonts.nix b/modules/nixos/linux/gui/desktopish/fonts.nix similarity index 100% rename from nixos/gui/desktopish/fonts.nix rename to modules/nixos/linux/gui/desktopish/fonts.nix diff --git a/nixos/gui/desktopish/gnome-keyring.nix b/modules/nixos/linux/gui/desktopish/gnome-keyring.nix similarity index 100% rename from nixos/gui/desktopish/gnome-keyring.nix rename to modules/nixos/linux/gui/desktopish/gnome-keyring.nix diff --git a/nixos/gui/desktopish/guiapps.nix b/modules/nixos/linux/gui/desktopish/guiapps.nix similarity index 100% rename from nixos/gui/desktopish/guiapps.nix rename to modules/nixos/linux/gui/desktopish/guiapps.nix diff --git a/nixos/gui/desktopish/hidpi.nix b/modules/nixos/linux/gui/desktopish/hidpi.nix similarity index 100% rename from nixos/gui/desktopish/hidpi.nix rename to modules/nixos/linux/gui/desktopish/hidpi.nix diff --git a/nixos/gui/desktopish/hotplug.nix b/modules/nixos/linux/gui/desktopish/hotplug.nix similarity index 100% rename from nixos/gui/desktopish/hotplug.nix rename to modules/nixos/linux/gui/desktopish/hotplug.nix diff --git a/nixos/gui/desktopish/light-terminal.nix b/modules/nixos/linux/gui/desktopish/light-terminal.nix similarity index 100% rename from nixos/gui/desktopish/light-terminal.nix rename to modules/nixos/linux/gui/desktopish/light-terminal.nix diff --git a/nixos/gui/desktopish/monitor-brightness.nix b/modules/nixos/linux/gui/desktopish/monitor-brightness.nix similarity index 86% rename from nixos/gui/desktopish/monitor-brightness.nix rename to modules/nixos/linux/gui/desktopish/monitor-brightness.nix index 2d18403..23b5525 100644 --- a/nixos/gui/desktopish/monitor-brightness.nix +++ b/modules/nixos/linux/gui/desktopish/monitor-brightness.nix @@ -15,7 +15,7 @@ security.sudo.extraRules = [ { - users = [ flake.config.people.myself ]; + users = [ flake.config.me.username ]; commands = [ { command = "${pkgs.ddcutil}/bin/ddcutil"; @@ -25,7 +25,7 @@ } ]; - users.users.${flake.config.people.myself} = { + users.users.${flake.config.me.username} = { extraGroups = [ "i2c" ]; }; diff --git a/nixos/gui/desktopish/polybar b/modules/nixos/linux/gui/desktopish/polybar similarity index 100% rename from nixos/gui/desktopish/polybar rename to modules/nixos/linux/gui/desktopish/polybar diff --git a/nixos/gui/desktopish/polybar.nix b/modules/nixos/linux/gui/desktopish/polybar.nix similarity index 100% rename from nixos/gui/desktopish/polybar.nix rename to modules/nixos/linux/gui/desktopish/polybar.nix diff --git a/nixos/gui/desktopish/redshift.nix b/modules/nixos/linux/gui/desktopish/redshift.nix similarity index 100% rename from nixos/gui/desktopish/redshift.nix rename to modules/nixos/linux/gui/desktopish/redshift.nix diff --git a/nixos/gui/desktopish/screencapture.nix b/modules/nixos/linux/gui/desktopish/screencapture.nix similarity index 100% rename from nixos/gui/desktopish/screencapture.nix rename to modules/nixos/linux/gui/desktopish/screencapture.nix diff --git a/nixos/gui/desktopish/steam.nix b/modules/nixos/linux/gui/desktopish/steam.nix similarity index 100% rename from nixos/gui/desktopish/steam.nix rename to modules/nixos/linux/gui/desktopish/steam.nix diff --git a/nixos/gui/desktopish/swap-caps-ctrl.nix b/modules/nixos/linux/gui/desktopish/swap-caps-ctrl.nix similarity index 100% rename from nixos/gui/desktopish/swap-caps-ctrl.nix rename to modules/nixos/linux/gui/desktopish/swap-caps-ctrl.nix diff --git a/nixos/gui/desktopish/taffybar/default.nix b/modules/nixos/linux/gui/desktopish/taffybar/default.nix similarity index 100% rename from nixos/gui/desktopish/taffybar/default.nix rename to modules/nixos/linux/gui/desktopish/taffybar/default.nix diff --git a/nixos/gui/desktopish/taffybar/taffybar-srid/.gitignore b/modules/nixos/linux/gui/desktopish/taffybar/taffybar-srid/.gitignore similarity index 100% rename from nixos/gui/desktopish/taffybar/taffybar-srid/.gitignore rename to modules/nixos/linux/gui/desktopish/taffybar/taffybar-srid/.gitignore diff --git a/nixos/gui/desktopish/taffybar/taffybar-srid/.vscode/extensions.json b/modules/nixos/linux/gui/desktopish/taffybar/taffybar-srid/.vscode/extensions.json similarity index 100% rename from nixos/gui/desktopish/taffybar/taffybar-srid/.vscode/extensions.json rename to modules/nixos/linux/gui/desktopish/taffybar/taffybar-srid/.vscode/extensions.json diff --git a/nixos/gui/desktopish/taffybar/taffybar-srid/.vscode/settings.json b/modules/nixos/linux/gui/desktopish/taffybar/taffybar-srid/.vscode/settings.json similarity index 100% rename from nixos/gui/desktopish/taffybar/taffybar-srid/.vscode/settings.json rename to modules/nixos/linux/gui/desktopish/taffybar/taffybar-srid/.vscode/settings.json diff --git a/nixos/gui/desktopish/taffybar/taffybar-srid/CHANGELOG.md b/modules/nixos/linux/gui/desktopish/taffybar/taffybar-srid/CHANGELOG.md similarity index 100% rename from nixos/gui/desktopish/taffybar/taffybar-srid/CHANGELOG.md rename to modules/nixos/linux/gui/desktopish/taffybar/taffybar-srid/CHANGELOG.md diff --git a/nixos/gui/desktopish/taffybar/taffybar-srid/Main.hs b/modules/nixos/linux/gui/desktopish/taffybar/taffybar-srid/Main.hs similarity index 100% rename from nixos/gui/desktopish/taffybar/taffybar-srid/Main.hs rename to modules/nixos/linux/gui/desktopish/taffybar/taffybar-srid/Main.hs diff --git a/nixos/gui/desktopish/taffybar/taffybar-srid/README.md b/modules/nixos/linux/gui/desktopish/taffybar/taffybar-srid/README.md similarity index 100% rename from nixos/gui/desktopish/taffybar/taffybar-srid/README.md rename to modules/nixos/linux/gui/desktopish/taffybar/taffybar-srid/README.md diff --git a/nixos/gui/desktopish/taffybar/taffybar-srid/Setup.hs b/modules/nixos/linux/gui/desktopish/taffybar/taffybar-srid/Setup.hs similarity index 100% rename from nixos/gui/desktopish/taffybar/taffybar-srid/Setup.hs rename to modules/nixos/linux/gui/desktopish/taffybar/taffybar-srid/Setup.hs diff --git a/nixos/gui/desktopish/taffybar/taffybar-srid/bin/run b/modules/nixos/linux/gui/desktopish/taffybar/taffybar-srid/bin/run similarity index 100% rename from nixos/gui/desktopish/taffybar/taffybar-srid/bin/run rename to modules/nixos/linux/gui/desktopish/taffybar/taffybar-srid/bin/run diff --git a/nixos/gui/desktopish/taffybar/taffybar-srid/default.nix b/modules/nixos/linux/gui/desktopish/taffybar/taffybar-srid/default.nix similarity index 100% rename from nixos/gui/desktopish/taffybar/taffybar-srid/default.nix rename to modules/nixos/linux/gui/desktopish/taffybar/taffybar-srid/default.nix diff --git a/nixos/gui/desktopish/taffybar/taffybar-srid/dep/gitignoresrc/default.nix b/modules/nixos/linux/gui/desktopish/taffybar/taffybar-srid/dep/gitignoresrc/default.nix similarity index 100% rename from nixos/gui/desktopish/taffybar/taffybar-srid/dep/gitignoresrc/default.nix rename to modules/nixos/linux/gui/desktopish/taffybar/taffybar-srid/dep/gitignoresrc/default.nix diff --git a/nixos/gui/desktopish/taffybar/taffybar-srid/dep/gitignoresrc/github.json b/modules/nixos/linux/gui/desktopish/taffybar/taffybar-srid/dep/gitignoresrc/github.json similarity index 100% rename from nixos/gui/desktopish/taffybar/taffybar-srid/dep/gitignoresrc/github.json rename to modules/nixos/linux/gui/desktopish/taffybar/taffybar-srid/dep/gitignoresrc/github.json diff --git a/nixos/gui/desktopish/taffybar/taffybar-srid/dep/gitignoresrc/thunk.nix b/modules/nixos/linux/gui/desktopish/taffybar/taffybar-srid/dep/gitignoresrc/thunk.nix similarity index 100% rename from nixos/gui/desktopish/taffybar/taffybar-srid/dep/gitignoresrc/thunk.nix rename to modules/nixos/linux/gui/desktopish/taffybar/taffybar-srid/dep/gitignoresrc/thunk.nix diff --git a/nixos/gui/desktopish/taffybar/taffybar-srid/hie.yaml b/modules/nixos/linux/gui/desktopish/taffybar/taffybar-srid/hie.yaml similarity index 100% rename from nixos/gui/desktopish/taffybar/taffybar-srid/hie.yaml rename to modules/nixos/linux/gui/desktopish/taffybar/taffybar-srid/hie.yaml diff --git a/nixos/gui/desktopish/taffybar/taffybar-srid/taffybar-srid.cabal b/modules/nixos/linux/gui/desktopish/taffybar/taffybar-srid/taffybar-srid.cabal similarity index 100% rename from nixos/gui/desktopish/taffybar/taffybar-srid/taffybar-srid.cabal rename to modules/nixos/linux/gui/desktopish/taffybar/taffybar-srid/taffybar-srid.cabal diff --git a/nixos/gui/desktopish/touchpad-trackpoint.nix b/modules/nixos/linux/gui/desktopish/touchpad-trackpoint.nix similarity index 100% rename from nixos/gui/desktopish/touchpad-trackpoint.nix rename to modules/nixos/linux/gui/desktopish/touchpad-trackpoint.nix diff --git a/nixos/gui/desktopish/vscode.nix b/modules/nixos/linux/gui/desktopish/vscode.nix similarity index 100% rename from nixos/gui/desktopish/vscode.nix rename to modules/nixos/linux/gui/desktopish/vscode.nix diff --git a/nixos/gui/desktopish/xmobar/default.nix b/modules/nixos/linux/gui/desktopish/xmobar/default.nix similarity index 100% rename from nixos/gui/desktopish/xmobar/default.nix rename to modules/nixos/linux/gui/desktopish/xmobar/default.nix diff --git a/nixos/gui/desktopish/xmobar/xmobar-srid/.gitignore b/modules/nixos/linux/gui/desktopish/xmobar/xmobar-srid/.gitignore similarity index 100% rename from nixos/gui/desktopish/xmobar/xmobar-srid/.gitignore rename to modules/nixos/linux/gui/desktopish/xmobar/xmobar-srid/.gitignore diff --git a/nixos/gui/desktopish/xmobar/xmobar-srid/.vscode/extensions.json b/modules/nixos/linux/gui/desktopish/xmobar/xmobar-srid/.vscode/extensions.json similarity index 100% rename from nixos/gui/desktopish/xmobar/xmobar-srid/.vscode/extensions.json rename to modules/nixos/linux/gui/desktopish/xmobar/xmobar-srid/.vscode/extensions.json diff --git a/nixos/gui/desktopish/xmobar/xmobar-srid/.vscode/settings.json b/modules/nixos/linux/gui/desktopish/xmobar/xmobar-srid/.vscode/settings.json similarity index 100% rename from nixos/gui/desktopish/xmobar/xmobar-srid/.vscode/settings.json rename to modules/nixos/linux/gui/desktopish/xmobar/xmobar-srid/.vscode/settings.json diff --git a/nixos/gui/desktopish/xmobar/xmobar-srid/.vscode/tasks.json b/modules/nixos/linux/gui/desktopish/xmobar/xmobar-srid/.vscode/tasks.json similarity index 100% rename from nixos/gui/desktopish/xmobar/xmobar-srid/.vscode/tasks.json rename to modules/nixos/linux/gui/desktopish/xmobar/xmobar-srid/.vscode/tasks.json diff --git a/nixos/gui/desktopish/xmobar/xmobar-srid/CHANGELOG.md b/modules/nixos/linux/gui/desktopish/xmobar/xmobar-srid/CHANGELOG.md similarity index 100% rename from nixos/gui/desktopish/xmobar/xmobar-srid/CHANGELOG.md rename to modules/nixos/linux/gui/desktopish/xmobar/xmobar-srid/CHANGELOG.md diff --git a/nixos/gui/desktopish/xmobar/xmobar-srid/Main.hs b/modules/nixos/linux/gui/desktopish/xmobar/xmobar-srid/Main.hs similarity index 100% rename from nixos/gui/desktopish/xmobar/xmobar-srid/Main.hs rename to modules/nixos/linux/gui/desktopish/xmobar/xmobar-srid/Main.hs diff --git a/nixos/gui/desktopish/xmobar/xmobar-srid/Setup.hs b/modules/nixos/linux/gui/desktopish/xmobar/xmobar-srid/Setup.hs similarity index 100% rename from nixos/gui/desktopish/xmobar/xmobar-srid/Setup.hs rename to modules/nixos/linux/gui/desktopish/xmobar/xmobar-srid/Setup.hs diff --git a/nixos/gui/desktopish/xmobar/xmobar-srid/default.nix b/modules/nixos/linux/gui/desktopish/xmobar/xmobar-srid/default.nix similarity index 100% rename from nixos/gui/desktopish/xmobar/xmobar-srid/default.nix rename to modules/nixos/linux/gui/desktopish/xmobar/xmobar-srid/default.nix diff --git a/nixos/gui/desktopish/xmobar/xmobar-srid/hie.yaml b/modules/nixos/linux/gui/desktopish/xmobar/xmobar-srid/hie.yaml similarity index 100% rename from nixos/gui/desktopish/xmobar/xmobar-srid/hie.yaml rename to modules/nixos/linux/gui/desktopish/xmobar/xmobar-srid/hie.yaml diff --git a/nixos/gui/desktopish/xmobar/xmobar-srid/xmobar-srid.cabal b/modules/nixos/linux/gui/desktopish/xmobar/xmobar-srid/xmobar-srid.cabal similarity index 100% rename from nixos/gui/desktopish/xmobar/xmobar-srid/xmobar-srid.cabal rename to modules/nixos/linux/gui/desktopish/xmobar/xmobar-srid/xmobar-srid.cabal diff --git a/nixos/gui/desktopish/xmonad/default.nix b/modules/nixos/linux/gui/desktopish/xmonad/default.nix similarity index 100% rename from nixos/gui/desktopish/xmonad/default.nix rename to modules/nixos/linux/gui/desktopish/xmonad/default.nix diff --git a/nixos/gui/desktopish/xmonad/xmonad-srid/.gitignore b/modules/nixos/linux/gui/desktopish/xmonad/xmonad-srid/.gitignore similarity index 100% rename from nixos/gui/desktopish/xmonad/xmonad-srid/.gitignore rename to modules/nixos/linux/gui/desktopish/xmonad/xmonad-srid/.gitignore diff --git a/nixos/gui/desktopish/xmonad/xmonad-srid/.vscode/extensions.json b/modules/nixos/linux/gui/desktopish/xmonad/xmonad-srid/.vscode/extensions.json similarity index 100% rename from nixos/gui/desktopish/xmonad/xmonad-srid/.vscode/extensions.json rename to modules/nixos/linux/gui/desktopish/xmonad/xmonad-srid/.vscode/extensions.json diff --git a/nixos/gui/desktopish/xmonad/xmonad-srid/.vscode/settings.json b/modules/nixos/linux/gui/desktopish/xmonad/xmonad-srid/.vscode/settings.json similarity index 100% rename from nixos/gui/desktopish/xmonad/xmonad-srid/.vscode/settings.json rename to modules/nixos/linux/gui/desktopish/xmonad/xmonad-srid/.vscode/settings.json diff --git a/nixos/gui/desktopish/xmonad/xmonad-srid/.vscode/tasks.json b/modules/nixos/linux/gui/desktopish/xmonad/xmonad-srid/.vscode/tasks.json similarity index 100% rename from nixos/gui/desktopish/xmonad/xmonad-srid/.vscode/tasks.json rename to modules/nixos/linux/gui/desktopish/xmonad/xmonad-srid/.vscode/tasks.json diff --git a/nixos/gui/desktopish/xmonad/xmonad-srid/CHANGELOG.md b/modules/nixos/linux/gui/desktopish/xmonad/xmonad-srid/CHANGELOG.md similarity index 100% rename from nixos/gui/desktopish/xmonad/xmonad-srid/CHANGELOG.md rename to modules/nixos/linux/gui/desktopish/xmonad/xmonad-srid/CHANGELOG.md diff --git a/nixos/gui/desktopish/xmonad/xmonad-srid/Main.hs b/modules/nixos/linux/gui/desktopish/xmonad/xmonad-srid/Main.hs similarity index 100% rename from nixos/gui/desktopish/xmonad/xmonad-srid/Main.hs rename to modules/nixos/linux/gui/desktopish/xmonad/xmonad-srid/Main.hs diff --git a/nixos/gui/desktopish/xmonad/xmonad-srid/README.md b/modules/nixos/linux/gui/desktopish/xmonad/xmonad-srid/README.md similarity index 100% rename from nixos/gui/desktopish/xmonad/xmonad-srid/README.md rename to modules/nixos/linux/gui/desktopish/xmonad/xmonad-srid/README.md diff --git a/nixos/gui/desktopish/xmonad/xmonad-srid/Setup.hs b/modules/nixos/linux/gui/desktopish/xmonad/xmonad-srid/Setup.hs similarity index 100% rename from nixos/gui/desktopish/xmonad/xmonad-srid/Setup.hs rename to modules/nixos/linux/gui/desktopish/xmonad/xmonad-srid/Setup.hs diff --git a/nixos/gui/desktopish/xmonad/xmonad-srid/default.nix b/modules/nixos/linux/gui/desktopish/xmonad/xmonad-srid/default.nix similarity index 100% rename from nixos/gui/desktopish/xmonad/xmonad-srid/default.nix rename to modules/nixos/linux/gui/desktopish/xmonad/xmonad-srid/default.nix diff --git a/nixos/gui/desktopish/xmonad/xmonad-srid/dep/gitignoresrc/default.nix b/modules/nixos/linux/gui/desktopish/xmonad/xmonad-srid/dep/gitignoresrc/default.nix similarity index 100% rename from nixos/gui/desktopish/xmonad/xmonad-srid/dep/gitignoresrc/default.nix rename to modules/nixos/linux/gui/desktopish/xmonad/xmonad-srid/dep/gitignoresrc/default.nix diff --git a/nixos/gui/desktopish/xmonad/xmonad-srid/dep/gitignoresrc/github.json b/modules/nixos/linux/gui/desktopish/xmonad/xmonad-srid/dep/gitignoresrc/github.json similarity index 100% rename from nixos/gui/desktopish/xmonad/xmonad-srid/dep/gitignoresrc/github.json rename to modules/nixos/linux/gui/desktopish/xmonad/xmonad-srid/dep/gitignoresrc/github.json diff --git a/nixos/gui/desktopish/xmonad/xmonad-srid/dep/gitignoresrc/thunk.nix b/modules/nixos/linux/gui/desktopish/xmonad/xmonad-srid/dep/gitignoresrc/thunk.nix similarity index 100% rename from nixos/gui/desktopish/xmonad/xmonad-srid/dep/gitignoresrc/thunk.nix rename to modules/nixos/linux/gui/desktopish/xmonad/xmonad-srid/dep/gitignoresrc/thunk.nix diff --git a/nixos/gui/desktopish/xmonad/xmonad-srid/hie.yaml b/modules/nixos/linux/gui/desktopish/xmonad/xmonad-srid/hie.yaml similarity index 100% rename from nixos/gui/desktopish/xmonad/xmonad-srid/hie.yaml rename to modules/nixos/linux/gui/desktopish/xmonad/xmonad-srid/hie.yaml diff --git a/nixos/gui/desktopish/xmonad/xmonad-srid/overlay.nix b/modules/nixos/linux/gui/desktopish/xmonad/xmonad-srid/overlay.nix similarity index 100% rename from nixos/gui/desktopish/xmonad/xmonad-srid/overlay.nix rename to modules/nixos/linux/gui/desktopish/xmonad/xmonad-srid/overlay.nix diff --git a/nixos/gui/desktopish/xmonad/xmonad-srid/xmonad-srid.cabal b/modules/nixos/linux/gui/desktopish/xmonad/xmonad-srid/xmonad-srid.cabal similarity index 100% rename from nixos/gui/desktopish/xmonad/xmonad-srid/xmonad-srid.cabal rename to modules/nixos/linux/gui/desktopish/xmonad/xmonad-srid/xmonad-srid.cabal diff --git a/nixos/gui/gnome.nix b/modules/nixos/linux/gui/gnome.nix similarity index 100% rename from nixos/gui/gnome.nix rename to modules/nixos/linux/gui/gnome.nix diff --git a/nixos/gui/kde.nix b/modules/nixos/linux/gui/kde.nix similarity index 100% rename from nixos/gui/kde.nix rename to modules/nixos/linux/gui/kde.nix diff --git a/nixos/gui/virtualbox.nix b/modules/nixos/linux/gui/virtualbox.nix similarity index 62% rename from nixos/gui/virtualbox.nix rename to modules/nixos/linux/gui/virtualbox.nix index 5e8b4fb..ff3f0fb 100644 --- a/nixos/gui/virtualbox.nix +++ b/modules/nixos/linux/gui/virtualbox.nix @@ -3,5 +3,5 @@ enable = true; enableExtensionPack = true; }; - users.extraGroups.vboxusers.members = [ flake.config.people.myself ]; + users.extraGroups.vboxusers.members = [ flake.config.me.username ]; } diff --git a/nixos/hedgedoc.nix b/modules/nixos/linux/hedgedoc.nix similarity index 89% rename from nixos/hedgedoc.nix rename to modules/nixos/linux/hedgedoc.nix index 91a1a1d..abe6fbc 100644 --- a/nixos/hedgedoc.nix +++ b/modules/nixos/linux/hedgedoc.nix @@ -1,12 +1,13 @@ -{ config, ... }: +{ flake, config, ... }: let + inherit (flake.inputs) self; domain = "pad.srid.ca"; port = 9112; in { age.secrets."hedgedoc.env" = { - file = ../secrets/hedgedoc.env.age; + file = self + /secrets/hedgedoc.env.age; owner = "hedgedoc"; }; services.hedgedoc = { diff --git a/nixos/lxd.nix b/modules/nixos/linux/lxd.nix similarity index 65% rename from nixos/lxd.nix rename to modules/nixos/linux/lxd.nix index ca41964..a93db4e 100644 --- a/nixos/lxd.nix +++ b/modules/nixos/linux/lxd.nix @@ -1,7 +1,7 @@ { flake, ... }: { virtualisation.lxd.enable = true; - users.users.${flake.config.people.myself} = { + users.users.${flake.config.me.username} = { extraGroups = [ "lxd" ]; }; } diff --git a/nixos/nixos-container.nix b/modules/nixos/linux/nixos-container.nix similarity index 100% rename from nixos/nixos-container.nix rename to modules/nixos/linux/nixos-container.nix diff --git a/nixos/parallels-vm.nix b/modules/nixos/linux/parallels-vm.nix similarity index 100% rename from nixos/parallels-vm.nix rename to modules/nixos/linux/parallels-vm.nix diff --git a/nixos/passwordstore.nix b/modules/nixos/linux/passwordstore.nix similarity index 100% rename from nixos/passwordstore.nix rename to modules/nixos/linux/passwordstore.nix diff --git a/nixos/postgres.nix b/modules/nixos/linux/postgres.nix similarity index 100% rename from nixos/postgres.nix rename to modules/nixos/linux/postgres.nix diff --git a/nixos/postgrest.nix b/modules/nixos/linux/postgrest.nix similarity index 100% rename from nixos/postgrest.nix rename to modules/nixos/linux/postgrest.nix diff --git a/nixos/protonvpn.nix b/modules/nixos/linux/protonvpn.nix similarity index 86% rename from nixos/protonvpn.nix rename to modules/nixos/linux/protonvpn.nix index 6bb46c6..21dc42d 100644 --- a/nixos/protonvpn.nix +++ b/modules/nixos/linux/protonvpn.nix @@ -8,7 +8,7 @@ security.sudo.extraRules = [ { - users = [ flake.config.people.myself ]; + users = [ flake.config.me.username ]; commands = [ { command = "${pkgs.protonvpn-cli}/bin/protonvpn"; diff --git a/nixos/self/self-ide.nix b/modules/nixos/linux/self-ide.nix similarity index 84% rename from nixos/self/self-ide.nix rename to modules/nixos/linux/self-ide.nix index 3a4cf0b..1d131db 100644 --- a/nixos/self/self-ide.nix +++ b/modules/nixos/linux/self-ide.nix @@ -2,7 +2,7 @@ # For no-prompt Ctrl+Shift+B in VSCode security.sudo.extraRules = [ { - users = [ flake.config.people.myself ]; + users = [ flake.config.me.username ]; commands = [ { command = "/run/current-system/sw/bin/nixos-rebuild"; diff --git a/nixos/server/harden/basics.nix b/modules/nixos/linux/server/harden/basics.nix similarity index 100% rename from nixos/server/harden/basics.nix rename to modules/nixos/linux/server/harden/basics.nix diff --git a/nixos/server/harden/default.nix b/modules/nixos/linux/server/harden/default.nix similarity index 100% rename from nixos/server/harden/default.nix rename to modules/nixos/linux/server/harden/default.nix diff --git a/nixos/server/unlaptop.nix b/modules/nixos/linux/server/unlaptop.nix similarity index 100% rename from nixos/server/unlaptop.nix rename to modules/nixos/linux/server/unlaptop.nix diff --git a/nixos/server/wakeonlan.nix b/modules/nixos/linux/server/wakeonlan.nix similarity index 100% rename from nixos/server/wakeonlan.nix rename to modules/nixos/linux/server/wakeonlan.nix diff --git a/nixos/caches/oss.nix b/modules/nixos/shared/caches.nix similarity index 100% rename from nixos/caches/oss.nix rename to modules/nixos/shared/caches.nix diff --git a/modules/nixos/shared/github-runner.nix b/modules/nixos/shared/github-runner.nix new file mode 100644 index 0000000..961c22f --- /dev/null +++ b/modules/nixos/shared/github-runner.nix @@ -0,0 +1,17 @@ +{ flake, ... }: +let + inherit (flake) inputs; + inherit (inputs) self; +in +{ + imports = [ + inputs.github-nix-ci.nixosModules.default + ]; + + services.github-nix-ci = { + age.secretsDir = self + /secrets; + personalRunners = { + "srid/srid".num = 1; + }; + }; +} diff --git a/nixos/nix.nix b/modules/nixos/shared/nix.nix similarity index 83% rename from nixos/nix.nix rename to modules/nixos/shared/nix.nix index f2c091a..7ea762e 100644 --- a/nixos/nix.nix +++ b/modules/nixos/shared/nix.nix @@ -1,5 +1,9 @@ { flake, pkgs, lib, ... }: +let + inherit (flake) inputs; + inherit (inputs) self; +in { nixpkgs = { config = { @@ -7,10 +11,7 @@ allowUnsupportedSystem = true; allowUnfree = true; }; - overlays = [ - flake.inputs.nuenv.overlays.default - (import ../packages/overlay.nix { inherit flake; inherit (pkgs) system; }) - ]; + overlays = lib.attrValues self.overlays; }; nix = { @@ -27,7 +28,7 @@ extra-platforms = lib.mkIf pkgs.stdenv.isDarwin "aarch64-darwin x86_64-darwin"; # Nullify the registry for purity. flake-registry = builtins.toFile "empty-flake-registry.json" ''{"flakes":[],"version":2}''; - trusted-users = [ "root" (if pkgs.stdenv.isDarwin then flake.config.people.myself else "@wheel") ]; + trusted-users = [ "root" (if pkgs.stdenv.isDarwin then flake.config.me.username else "@wheel") ]; }; }; } diff --git a/nixos/self/primary-as-admin.nix b/modules/nixos/shared/primary-as-admin.nix similarity index 82% rename from nixos/self/primary-as-admin.nix rename to modules/nixos/shared/primary-as-admin.nix index 47c3fd1..50082a6 100644 --- a/nixos/self/primary-as-admin.nix +++ b/modules/nixos/shared/primary-as-admin.nix @@ -5,12 +5,12 @@ # Login via SSH with mmy SSH key users.users = let - people = flake.config.people; - myKeys = [ people.users.${people.myself}.sshKey ]; + me = flake.config.me; + myKeys = [ me.sshKey ]; in { root.openssh.authorizedKeys.keys = myKeys; - ${people.myself} = { + ${me.username} = { openssh.authorizedKeys.keys = myKeys; } // lib.optionalAttrs pkgs.stdenv.isLinux { isNormalUser = true; diff --git a/nix-darwin/default.nix b/nix-darwin/default.nix deleted file mode 100644 index 90aa264..0000000 --- a/nix-darwin/default.nix +++ /dev/null @@ -1,22 +0,0 @@ -{ self, inputs, config, ... }: -{ - # Configuration common to all macOS systems - flake = { - darwinModules = { - my-home = { - home-manager.users.${config.people.myself} = { - imports = [ - self.homeModules.common-darwin - ]; - }; - }; - - default.imports = [ - self.darwinModules.my-home - self.nixosModules.common - inputs.ragenix.darwinModules.default - inputs.github-nix-ci.darwinModules.default - ]; - }; - }; -} diff --git a/nixos/caches/default.nix b/nixos/caches/default.nix deleted file mode 100644 index 035f53e..0000000 --- a/nixos/caches/default.nix +++ /dev/null @@ -1,6 +0,0 @@ -{ - imports = [ - # Disable all these caches, because nix is often stuck querying cachix. - ./oss.nix - ]; -} diff --git a/nixos/default.nix b/nixos/default.nix deleted file mode 100644 index f1c0447..0000000 --- a/nixos/default.nix +++ /dev/null @@ -1,33 +0,0 @@ -{ self, inputs, config, ... }: - -{ - # Configuration common to all Linux systems - flake = { - nixosModules = { - # NixOS modules that are known to work on nix-darwin. - common.imports = [ - ./nix.nix - ./caches - ./self/primary-as-admin.nix - ]; - - my-home = { - users.users.${config.people.myself}.isNormalUser = true; - home-manager.users.${config.people.myself} = { - imports = [ - self.homeModules.common-linux - ]; - }; - }; - - default.imports = [ - self.nixosModules.my-home - self.nixosModules.common - inputs.ragenix.nixosModules.default - inputs.github-nix-ci.nixosModules.default - ./self/self-ide.nix - ./current-location.nix - ]; - }; - }; -} diff --git a/nixos/github-runner.nix b/nixos/github-runner.nix deleted file mode 100644 index 2710519..0000000 --- a/nixos/github-runner.nix +++ /dev/null @@ -1,8 +0,0 @@ -{ - services.github-nix-ci = { - age.secretsDir = ../secrets; - personalRunners = { - "srid/srid".num = 1; - }; - }; -} diff --git a/overlays/default.nix b/overlays/default.nix new file mode 100644 index 0000000..a1e3f44 --- /dev/null +++ b/overlays/default.nix @@ -0,0 +1,18 @@ +{ flake, ... }: + +let + inherit (flake) inputs; + inherit (inputs) self; + packages = self + /packages; +in +self: super: { + nuenv = (inputs.nuenv.overlays.nuenv self super).nuenv; + fuckport = self.callPackage "${packages}/fuckport.nix" { }; + twitter-convert = self.callPackage "${packages}/twitter-convert" { }; + sshuttle-via = self.callPackage "${packages}/sshuttle-via.nix" { }; + ci = self.callPackage "${packages}/ci" { }; + touchpr = self.callPackage "${packages}/touchpr" { }; + actualism-app = inputs.actualism-app.packages.${self.system}.default; + omnix = inputs.omnix.packages.${self.system}.default; + git-merge-and-delete = self.callPackage "${packages}/git-merge-and-delete.nix" { }; +} diff --git a/packages/overlay.nix b/packages/overlay.nix deleted file mode 100644 index 3026599..0000000 --- a/packages/overlay.nix +++ /dev/null @@ -1,13 +0,0 @@ -{ flake, system, ... }: - -self: super: { - fuckport = self.callPackage ./fuckport.nix { }; - twitter-convert = self.callPackage ./twitter-convert { }; - sshuttle-via = self.callPackage ./sshuttle-via.nix { }; - ci = self.callPackage ./ci { }; - touchpr = self.callPackage ./touchpr { }; - # nix-health = flake.inputs.nix-browser.packages.${system}.nix-health; - actualism-app = flake.inputs.actualism-app.packages.${system}.default; - omnix = flake.inputs.omnix.packages.${system}.default; - git-merge-and-delete = self.callPackage ./git-merge-and-delete.nix { }; -} diff --git a/secrets/secrets.nix b/secrets/secrets.nix index a1a5a8e..92bfa98 100644 --- a/secrets/secrets.nix +++ b/secrets/secrets.nix @@ -1,6 +1,6 @@ let - config = import ../users/config.nix; - users = [ config.users.srid.sshKey ]; + config = import ../config.nix; + users = [ config.me.sshKey ]; appreciate = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICra+ZidiwrHGjcGnyqPvHcZDvnGivbLMayDyecPYDh0"; immediacy = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKZALEiJIrH1Kj10u+WshkQXr5NHmszza8wNLqW+2fB0"; diff --git a/users/config.nix b/users/config.nix deleted file mode 100644 index b58c3fc..0000000 --- a/users/config.nix +++ /dev/null @@ -1,12 +0,0 @@ -{ - myself = "srid"; - users = { - srid = { - name = "Sridhar Ratnakumar"; - email = "srid@srid.ca"; - # Legacy - # "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCYQ003p7fB5ICQehLwhDBomY9WzkNBeijkSw9ADGU+ECrPakeIH3pntUWRJH1W93vKnLqpkn6HLGEXD9MCR0s98uhh8hT7uAYCxQTbEeKT3PYkfz3oe7XaR8rE601sds0ZyFwH7l8cvK97pGr+uhFXAaohiV6VqmLVXhManEjZZ8GfYWBD9BCmIJk43G3OGa5QYFeHqztprXaJNU5dFPv2Uq2C+L6EvfCfkK2OO1BLZgL+Rai5jjyy6k0fcfsxxd9BdGUwqDhcBeyTIzX9rePMugf/xD+6uNRxTU+vjVpGUtFOw6rpgmVyFv9mn3QMNdQBc5hYKVbIQwMNGTzGgcQv srid@nixos" - sshKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHQRxPoqlThDrkR58pKnJgmeWPY9/wleReRbZ2MOZRyd"; - }; - }; -} diff --git a/users/default.nix b/users/default.nix deleted file mode 100644 index 25bfe22..0000000 --- a/users/default.nix +++ /dev/null @@ -1,44 +0,0 @@ -{ lib, ... }: -let - userSubmodule = lib.types.submodule { - options = { - name = lib.mkOption { - type = lib.types.str; - }; - email = lib.mkOption { - type = lib.types.str; - }; - sshKey = lib.mkOption { - type = lib.types.str; - description = '' - SSH public key - ''; - }; - }; - }; - peopleSubmodule = lib.types.submodule { - options = { - users = lib.mkOption { - type = lib.types.attrsOf userSubmodule; - }; - myself = lib.mkOption { - type = lib.types.str; - description = '' - The name of the user that represents myself. - - Admin user in all contexts. - ''; - }; - }; - }; -in -{ - options = { - people = lib.mkOption { - type = peopleSubmodule; - }; - }; - config = { - people = import ./config.nix; - }; -}