515 lines
16 KiB
Nix
515 lines
16 KiB
Nix
#
|
|
# Our system configuration, as a Nix flake.
|
|
# Now with bonus packages!
|
|
#
|
|
# vim: et:ts=2:sw=2:
|
|
#
|
|
{
|
|
#
|
|
# The sources we depend on.
|
|
#
|
|
inputs = {
|
|
# Core and utilities.
|
|
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
|
flake-utils.url = "github:numtide/flake-utils";
|
|
|
|
# Not nix -- lix!
|
|
lix.url = "git+https://git@git.lix.systems/lix-project/lix";
|
|
|
|
# Home-manager.
|
|
home-manager = {
|
|
url = "github:nix-community/home-manager/master";
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
};
|
|
|
|
# Styling!
|
|
stylix = {
|
|
url = "github:danth/stylix";
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
};
|
|
|
|
# Attic cache.
|
|
attic = {
|
|
url = "github:zhaofengli/attic";
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
};
|
|
|
|
# For our phone.
|
|
nix-on-droid = {
|
|
url = "github:nix-community/nix-on-droid/release-24.05";
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
inputs.home-manager.follows = "home-manager";
|
|
};
|
|
|
|
# Flakes for packages.
|
|
nil.url = "github:oxalica/nil";
|
|
agenix.url = "github:ryantm/agenix";
|
|
openxc7.url = "github:openXC7/toolchain-nix";
|
|
niri.url = "github:sodiboo/niri-flake";
|
|
waveforms.url = "github:liff/waveforms-flake";
|
|
esp-dev.url = "github:mirrexagon/nixpkgs-esp-dev";
|
|
|
|
# Flatpack support
|
|
nix-flatpak.url = "github:gmodena/nix-flatpak/?ref=v0.4.1";
|
|
|
|
# Various system type support.
|
|
darwin.url = "github:lnl7/nix-darwin/master";
|
|
darwin.inputs.nixpkgs.follows = "nixpkgs";
|
|
};
|
|
|
|
#
|
|
# Package definitions for each of our various types.
|
|
# Used in the outputs section.
|
|
#
|
|
|
|
#
|
|
# Our various products; mostly machine configurations.
|
|
#
|
|
outputs =
|
|
{
|
|
self,
|
|
nixpkgs,
|
|
flake-utils,
|
|
home-manager,
|
|
openxc7,
|
|
darwin,
|
|
agenix,
|
|
nil,
|
|
lix,
|
|
niri,
|
|
stylix,
|
|
waveforms,
|
|
esp-dev,
|
|
attic,
|
|
nix-flatpak,
|
|
nix-on-droid,
|
|
...
|
|
}:
|
|
|
|
#
|
|
# Our various packages; generated for each system.
|
|
#
|
|
flake-utils.lib.eachDefaultSystem (
|
|
system:
|
|
let
|
|
pkgs = import nixpkgs { inherit system; config.allowUnfree = true; };
|
|
callPackage = pkgs.callPackage;
|
|
deprekages = self.outputs.packages;
|
|
in
|
|
{
|
|
# The packages themselves,
|
|
packages = rec {
|
|
# fonts
|
|
font-monolisa = callPackage ./fonts/monolisa.nix { };
|
|
font-codicon = callPackage ./fonts/codicon.nix { };
|
|
font-manrope = callPackage ./fonts/manrope.nix { };
|
|
|
|
# scientific things
|
|
ffts = callPackage ./packages/scopehal-apps/ffts.nix { };
|
|
libsigrok4DSL = callPackage ./packages/scopehal-apps/libsigrok4DSL.nix { };
|
|
vulkan-sdk = callPackage ./packages/scopehal-apps/vulkan-sdk.nix { };
|
|
scopehal-apps = callPackage ./packages/scopehal-apps { deprekages = deprekages.${system}; };
|
|
scopehal-sigrok-bridge = callPackage ./packages/scopehal-apps/sigrok-bridge.nix {
|
|
deprekages = deprekages.${system};
|
|
};
|
|
|
|
# apps
|
|
navit = callPackage ./packages/navit.nix { };
|
|
navit-with-maps = callPackage ./packages/navit.nix { with_maps = true; };
|
|
binary-ninja = callPackage ./packages/binary-ninja.nix { };
|
|
argos = callPackage ./packages/argos.nix { };
|
|
todoist-electron = callPackage ./packages/todoist-electron.nix { };
|
|
home-assistant-desktop = callPackage ./packages/home-assistant-desktop/x86_64-linux.nix { };
|
|
flexbv = callPackage ./packages/flexbv.nix { };
|
|
glowing-bear-desktop = callPackage ./packages/glowing-bear-desktop.nix { };
|
|
hrvst-cli = callPackage ./packages/hrvst-cli { };
|
|
notion-app = callPackage ./packages/notion-app { inherit _7zz; };
|
|
gfn-electron = callPackage ./packages/geforce-now { };
|
|
|
|
# utilities
|
|
ykush = callPackage ./packages/ykush.nix { };
|
|
wsl-gpg-forward = callPackage ./windows/gpg-forward.nix { };
|
|
oxfs = callPackage ./packages/oxfs.nix { };
|
|
pcsclite = callPackage ./packages/pcsclite.nix { };
|
|
age-plugin-yubikey = callPackage ./packages/age-plugin-yubikey.nix { inherit pcsclite; };
|
|
humanfx = callPackage ./packages/humanfx { };
|
|
clipboard-sync = callPackage ./packages/clipboard-sync.nix { };
|
|
vsmartcard = callPackage ./packages/vsmartcard.nix { };
|
|
pcsc-relay = callPackage ./packages/pcsc-relay.nix { };
|
|
neard = callPackage ./packages/neard.nix { };
|
|
libnfc = callPackage ./packages/libnfc.nix { inherit libnfc-nci; };
|
|
jadx = callPackage ./packages/jadx { };
|
|
firefox-webserial = callPackage ./packages/firefox-webserial { inherit ws-server; };
|
|
ryzen-ppd = callPackage ./packages/ryzen-ppd { };
|
|
avbroot = callPackage ./packages/avbroot { };
|
|
okc-agents = callPackage ./packages/okc-agents.nix { };
|
|
_7zz = pkgs._7zz.override { useUasm = true; };
|
|
|
|
# libraries
|
|
libnfc-nci = callPackage ./packages/libnfc-nci { };
|
|
ws-server = callPackage ./packages/ws-server { };
|
|
rubyPackages = callPackage ./packages/ruby-gems.nix { };
|
|
|
|
# jetbrains products
|
|
jetbrains-jdk = callPackage ./packages/jetbrains-jdk.nix { };
|
|
jetbrains = import ./packages/jetbrains.nix {
|
|
inherit pkgs;
|
|
jdk = jetbrains-jdk;
|
|
};
|
|
|
|
# kernel modules
|
|
linuxPackages_i915-sriov = callPackage ./packages/i915-sriov/kernel.nix { };
|
|
i915-sriov = callPackage ./packages/i915-sriov { linuxPackages = linuxPackages_i915-sriov; };
|
|
linux-nfc-lenovo = callPackage ./packages/linux-nfc-lenovo { };
|
|
|
|
# hw support
|
|
dell = callPackage ./packages/dell { };
|
|
|
|
# udev rules~
|
|
t5-udev-rules = callPackage ./packages/t5-udev-rules { };
|
|
ykush-udev-rules = callPackage ./packages/ykush-udev-rules { };
|
|
dreamsource-udev-rules = callPackage ./packages/dreamsource-udev-rules { };
|
|
hantek-udev-rules = callPackage ./packages/hantek-udev-rules { };
|
|
linux-nfc-lenovo-udev-rules = callPackage ./packages/linux-nfc-lenovo/udev.nix { };
|
|
|
|
# weechat
|
|
weechat-discord = callPackage ./packages/weechat-discord { };
|
|
|
|
# kakoune
|
|
kak-tree-sitter = callPackage ./packages/kak-tree-sitter { };
|
|
|
|
# xonsh and xontribs
|
|
xonsh-with-xontribs = pkgs.xonsh.override {
|
|
extraPackages = pythonPackages: [
|
|
(callPackage ./packages/xontrib-whole-word-jumping.nix { })
|
|
(callPackage ./packages/xontrib-term-integrations.nix { })
|
|
(callPackage ./packages/xontrib-sh.nix { })
|
|
];
|
|
};
|
|
};
|
|
}
|
|
)
|
|
|
|
#
|
|
# Our per-machine configurations.
|
|
# Appeneded to the output of the packages generated by eachDefaultSystem.
|
|
#
|
|
// rec {
|
|
|
|
#
|
|
# Helpers.
|
|
#
|
|
|
|
# Common to all machines, Linux or macOS.
|
|
commonModuleSet = [
|
|
./nixos/packages
|
|
|
|
./nixos/configs/stylix
|
|
./nixos/configs/lix.nix
|
|
./nixos/configs/nix.nix
|
|
./nixos/configs/dotfiles
|
|
./nixos/configs/calendar.nix
|
|
./nixos/configs/syncthing.nix
|
|
./nixos/configs/include-conf.nix
|
|
./nixos/configs/flake-registry.nix
|
|
./nixos/configs/storage-optimization.nix
|
|
|
|
./nixos/services/tailscale.nix
|
|
|
|
home-manager.nixosModules.home-manager
|
|
];
|
|
|
|
# Modules for all linux machines.
|
|
linuxModuleSet = [
|
|
./nixos/configuration.linux.nix
|
|
|
|
./nixos/configs/udev.nix
|
|
./nixos/configs/printing.nix
|
|
./nixos/configs/virt-host.nix
|
|
./nixos/configs/mount-rsync-kate.nix
|
|
./nixos/configs/mount-fastmail-tmllc.nix
|
|
|
|
./nixos/services/taskwarrior.nix
|
|
|
|
./nixos/overlays/fixup-canon.nix
|
|
|
|
#
|
|
];
|
|
|
|
# Modules for Linux machines with Wayland GUIs.
|
|
linuxGuiModuleSet = [
|
|
waveforms.nixosModule
|
|
nix-flatpak.nixosModules.nix-flatpak
|
|
|
|
./nixos/packages/gui.nix
|
|
./nixos/packages/wine.nix
|
|
./nixos/packages/flatpak.nix
|
|
./nixos/packages/proprietary.nix
|
|
|
|
./nixos/configs/gui
|
|
./nixos/configs/flatpak.nix
|
|
./nixos/configs/fonts-linux.nix
|
|
./nixos/configs/music-server.nix
|
|
|
|
#./nixos/overlays/fixup-signal
|
|
./nixos/overlays/fixup-imhex.nix
|
|
./nixos/overlays/customize-gajim
|
|
./nixos/overlays/sddm-no-vnc.nix
|
|
./nixos/overlays/fixup-armcord.nix
|
|
./nixos/overlays/jd-gui-wayland.nix
|
|
./nixos/overlays/fixup-mattermost.nix
|
|
./nixos/overlays/yubikey-touch-shitpost
|
|
./nixos/overlays/add-depends-calibre.nix
|
|
|
|
./nixos/services/clipboard-sync.nix
|
|
];
|
|
|
|
# Modules for all darwin machines.
|
|
darwinModuleSet = [
|
|
./nixos/configuration.darwin.nix
|
|
|
|
./nixos/packages/homebrew.nix
|
|
./nixos/packages/appstore.nix
|
|
|
|
./nixos/configs/fonts-darwin.nix
|
|
./nixos/configs/autosetup-darwin-aarch64.nix
|
|
];
|
|
|
|
# Modules for offline linux machines.
|
|
linuxOfflineModuleSet = [
|
|
./nixos/packages/offline.nix
|
|
|
|
./nixos/configs/waydroid.nix
|
|
];
|
|
|
|
# Helper functions for creating modules in the defintions below.
|
|
darwinModules = extraModules: commonModuleSet ++ darwinModuleSet ++ extraModules;
|
|
linuxModules = extraModules: commonModuleSet ++ linuxModuleSet ++ extraModules;
|
|
linuxGuiModules = extraModules: linuxModules (linuxGuiModuleSet ++ extraModules);
|
|
linuxOfflineGuiModules = extraModules: linuxGuiModules (linuxOfflineModuleSet ++ extraModules);
|
|
|
|
# Helper that populates all of our special arguments.
|
|
mkSpecialArgsGeneric = (
|
|
system: is-hm-standalone: is-droid: {
|
|
inherit
|
|
nixpkgs
|
|
stylix
|
|
is-hm-standalone
|
|
is-droid
|
|
;
|
|
|
|
niri = niri.outputs;
|
|
nil = nil.outputs.packages.${system};
|
|
deprekages = self.outputs.packages.${system};
|
|
agenix = agenix.outputs.packages.${system};
|
|
openxc7 = openxc7.outputs.packages.${system};
|
|
attic = attic.outputs.packages.${system};
|
|
esp-dev = esp-dev.outputs.packages.${system};
|
|
lix = lix.outputs.packages.${system};
|
|
|
|
# Helper to convert hm modules into NixOS or nix-on-droid modules.
|
|
callHm = module: (specialArgs: (import module) specialArgs);
|
|
normalizeModule =
|
|
if is-hm-standalone then
|
|
(module: module)
|
|
else
|
|
(
|
|
if is-droid then
|
|
(
|
|
module:
|
|
(
|
|
{ deprekages, ... }:
|
|
{
|
|
home-manager.config =
|
|
{ pkgs, ... }@specialArgs: (import module) (specialArgs // { inherit deprekages; });
|
|
}
|
|
)
|
|
)
|
|
else
|
|
(
|
|
module:
|
|
(
|
|
{ deprekages, ... }:
|
|
{
|
|
home-manager.users.deprekated =
|
|
{ pkgs, ... }@specialArgs: (import module) (specialArgs // { inherit deprekages; });
|
|
}
|
|
)
|
|
)
|
|
);
|
|
}
|
|
);
|
|
|
|
# Generic mkSpecialArgs for NixOS.
|
|
mkSpecialArgs = system: (mkSpecialArgsGeneric system false false);
|
|
|
|
# Specialized mkSpecialArgs for standalone home-manager.
|
|
mkSpecialArgsHm = system: pkgs: ((mkSpecialArgsGeneric system true false) // { inherit pkgs; });
|
|
mkSpecialArgsDroid = system: pkgs: ((mkSpecialArgsGeneric system false true) // { inherit pkgs; });
|
|
|
|
#
|
|
# Hosts!
|
|
#
|
|
|
|
# Trailblazer (main desktop).
|
|
nixosConfigurations.trailblazer = nixpkgs.lib.nixosSystem rec {
|
|
system = "x86_64-linux";
|
|
specialArgs = mkSpecialArgs system;
|
|
modules = linuxOfflineGuiModules [
|
|
./nixos/hosts/trailblazer
|
|
./nixos/configs/looking-glass.nix
|
|
./nixos/configs/serve-cache.nix
|
|
];
|
|
};
|
|
|
|
# Valere (powerful laptop).
|
|
nixosConfigurations.valere = nixpkgs.lib.nixosSystem rec {
|
|
system = "x86_64-linux";
|
|
specialArgs = mkSpecialArgs system;
|
|
|
|
modules = linuxOfflineGuiModules [
|
|
./nixos/hosts/valere.nix
|
|
./nixos/configs/steam.nix
|
|
./nixos/configs/vmware.nix
|
|
./nixos/configs/power-saving.nix
|
|
];
|
|
};
|
|
|
|
# Kanbaru (not-quite-as-powerful-as-Valere laptop).
|
|
nixosConfigurations.kanbaru = nixpkgs.lib.nixosSystem rec {
|
|
system = "x86_64-linux";
|
|
specialArgs = mkSpecialArgs system;
|
|
|
|
modules = linuxOfflineGuiModules [
|
|
./nixos/hosts/kanbaru.nix
|
|
./nixos/configs/steam.nix
|
|
./nixos/configs/vmware.nix
|
|
./nixos/configs/power-saving.nix
|
|
];
|
|
};
|
|
|
|
# Tohru (mid-tier laptop with more ram).
|
|
nixosConfigurations.tohru = nixpkgs.lib.nixosSystem rec {
|
|
system = "x86_64-linux";
|
|
specialArgs = mkSpecialArgs system;
|
|
|
|
modules = linuxOfflineGuiModules [
|
|
./nixos/hosts/tohru.nix
|
|
./nixos/configs/power-saving.nix
|
|
./nixos/configs/looking-glass.nix
|
|
];
|
|
};
|
|
|
|
# Hinata (travel laptop).
|
|
nixosConfigurations.hinata = nixpkgs.lib.nixosSystem rec {
|
|
system = "x86_64-linux";
|
|
specialArgs = mkSpecialArgs system;
|
|
|
|
modules = linuxOfflineGuiModules [
|
|
./nixos/hosts/hinata.nix
|
|
./nixos/configs/power-saving.nix
|
|
./nixos/configs/cellular.nix
|
|
];
|
|
};
|
|
|
|
# Veth (purse laptop).
|
|
nixosConfigurations.veth = nixpkgs.lib.nixosSystem rec {
|
|
system = "x86_64-linux";
|
|
specialArgs = mkSpecialArgs system;
|
|
|
|
modules = linuxGuiModules [
|
|
./nixos/hosts/veth
|
|
./nixos/configs/power-saving.nix
|
|
];
|
|
};
|
|
|
|
# Komashi (TMLLC T16 gen2).
|
|
nixosConfigurations.komashi = nixpkgs.lib.nixosSystem rec {
|
|
system = "x86_64-linux";
|
|
specialArgs = mkSpecialArgs system;
|
|
|
|
modules = linuxOfflineGuiModules [
|
|
./nixos/hosts/komashi
|
|
|
|
./nixos/configs/vmware.nix
|
|
./nixos/configs/cellular.nix
|
|
./nixos/configs/nfc-kernel.nix
|
|
./nixos/configs/power-saving.nix
|
|
];
|
|
};
|
|
|
|
# Utol (TMLLC T14 Gen1)
|
|
nixosConfigurations.utol = nixpkgs.lib.nixosSystem rec {
|
|
system = "x86_64-linux";
|
|
specialArgs = mkSpecialArgs system;
|
|
|
|
modules = linuxGuiModules [
|
|
./nixos/hosts/utol
|
|
|
|
./nixos/configs/vmware.nix
|
|
./nixos/configs/cellular.nix
|
|
./nixos/configs/power-saving.nix
|
|
|
|
./nixos/packages/offline.nix
|
|
];
|
|
};
|
|
|
|
# Aigis (aarch64-linux, apple-silicon, build machine).
|
|
nixosConfigurations.aigis = nixpkgs.lib.nixosSystem rec {
|
|
system = "aarch64-linux";
|
|
specialArgs = mkSpecialArgs system;
|
|
|
|
modules = linuxGuiModules [ ./nixos/hosts/aigis.nix ];
|
|
};
|
|
|
|
# Nomon (TMLLC aarch64-linux, broadcom-silicon, test machine).
|
|
nixosConfigurations.nomon = nixpkgs.lib.nixosSystem rec {
|
|
system = "aarch64-linux";
|
|
specialArgs = mkSpecialArgs system;
|
|
|
|
modules = linuxModules [ ./nixos/hosts/salas.nix ];
|
|
};
|
|
|
|
# Roshar (TMLLC aarch64-darwin, apple-silicon build machine).
|
|
darwinConfigurations.roshar = darwin.lib.darwinSystem rec {
|
|
system = "aarch64-darwin";
|
|
specialArgs = mkSpecialArgs system;
|
|
|
|
modules = darwinModules [ ./nixos/hosts/roshar.nix ];
|
|
};
|
|
|
|
# Mako (x86_64-darwin, apple-silicon build machine).
|
|
darwinConfigurations.mako = darwin.lib.darwinSystem rec {
|
|
system = "x86_64-darwin";
|
|
specialArgs = mkSpecialArgs system;
|
|
|
|
modules = darwinModules [ ./nixos/hosts/mako.nix ];
|
|
};
|
|
|
|
# Design, our phone.
|
|
nixOnDroidConfigurations.design = nix-on-droid.lib.nixOnDroidConfiguration rec {
|
|
pkgs = import nixpkgs {
|
|
system = "aarch64-linux";
|
|
config.allowUnfree = true;
|
|
config.permittedInsecurePackages = [ "olm-3.2.16" ];
|
|
};
|
|
extraSpecialArgs = mkSpecialArgsDroid "aarch64-linux" pkgs;
|
|
|
|
modules = [
|
|
./nixos/hosts/design.nix
|
|
./nixos/configuration.droid.nix
|
|
|
|
./nixos/configs/nix.droid.nix
|
|
./nixos/configs/droid-gui.nix
|
|
./nixos/configs/dotfiles/droid.nix
|
|
./nixos/configs/flake-registry.nix
|
|
|
|
./nixos/packages/droid.nix
|
|
./nixos/packages/offline.droid.nix
|
|
./nixos/packages/gui.droid.nix
|
|
];
|
|
|
|
};
|
|
|
|
};
|
|
}
|