1
0
mirror of https://github.com/kmein/niveum synced 2026-03-16 10:11:08 +01:00
Files
niveum/flake.nix

667 lines
25 KiB
Nix
Raw Normal View History

2021-12-30 16:19:49 +01:00
{
description = "niveum: packages, modules, systems";
inputs = {
agenix.url = "github:ryantm/agenix";
2025-12-04 16:19:02 +01:00
autorenkalender.url = "github:kmein/autorenkalender";
2025-12-02 21:37:02 +01:00
home-manager.url = "github:nix-community/home-manager/release-25.11";
menstruation-backend.url = "github:kmein/menstruation.rs";
menstruation-telegram.url = "github:kmein/menstruation-telegram";
nix-index-database.url = "github:nix-community/nix-index-database";
2023-05-07 19:36:00 +02:00
nixpkgs-old.url = "github:NixOS/nixpkgs/50fc86b75d2744e1ab3837ef74b53f103a9b55a0";
2025-12-02 21:37:02 +01:00
nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.11";
2026-02-06 17:13:14 +01:00
nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixos-unstable";
2026-02-04 16:49:28 +01:00
niphas.url = "git+https://code.kmein.de/kfm/niphas";
2025-12-29 16:21:35 +01:00
nixos-hardware.url = "github:NixOS/nixos-hardware";
nur.url = "github:nix-community/NUR";
retiolum.url = "github:krebs/retiolum";
2023-07-22 23:42:39 +02:00
scripts.url = "github:kmein/scripts";
2024-11-15 09:48:11 +01:00
stockholm.url = "github:krebs/stockholm";
2025-12-02 21:37:02 +01:00
stylix.url = "github:danth/stylix/release-25.11";
telebots.url = "github:kmein/telebots";
tinc-graph.url = "github:kmein/tinc-graph";
2025-12-28 13:39:36 +01:00
treefmt-nix.url = "github:numtide/treefmt-nix";
voidrice.url = "github:Lukesmithxyz/voidrice";
2025-12-29 16:31:56 +01:00
nix-topology.url = "github:oddlama/nix-topology";
2026-01-25 13:47:49 +01:00
wetter.url = "github:4z3/wetter";
2026-02-11 16:45:28 +01:00
wrappers.url = "github:lassulus/wrappers";
2026-02-15 22:13:26 +01:00
llm-agents.url = "github:numtide/llm-agents.nix";
opencrow.url = "github:pinpox/opencrow";
2025-12-29 17:54:39 +01:00
voidrice.flake = false;
naersk.url = "github:nix-community/naersk";
fenix.url = "github:nix-community/fenix";
naersk.inputs.fenix.follows = "fenix";
menstruation-backend.inputs.fenix.follows = "fenix";
tinc-graph.inputs.fenix.follows = "fenix";
scripts.inputs.fenix.follows = "fenix";
tinc-graph.inputs.naersk.follows = "naersk";
scripts.inputs.naersk.follows = "naersk";
menstruation-telegram.inputs.menstruation-backend.follows = "menstruation-backend";
menstruation-telegram.inputs.nixpkgs.follows = "nixpkgs-old";
telebots.inputs.nixpkgs.follows = "nixpkgs-old";
2023-05-17 11:16:05 +02:00
agenix.inputs.home-manager.follows = "home-manager";
2025-12-29 17:54:39 +01:00
2023-07-22 23:42:39 +02:00
agenix.inputs.nixpkgs.follows = "nixpkgs";
autorenkalender.inputs.nixpkgs.follows = "nixpkgs";
home-manager.inputs.nixpkgs.follows = "nixpkgs";
2025-12-29 17:54:39 +01:00
naersk.inputs.nixpkgs.follows = "nixpkgs";
fenix.inputs.nixpkgs.follows = "nixpkgs";
treefmt-nix.inputs.nixpkgs.follows = "nixpkgs";
nur.inputs.nixpkgs.follows = "nixpkgs";
nix-topology.inputs.nixpkgs.follows = "nixpkgs";
stockholm.inputs.nixpkgs.follows = "nixpkgs";
menstruation-backend.inputs.nixpkgs.follows = "nixpkgs";
nix-index-database.inputs.nixpkgs.follows = "nixpkgs";
2023-05-07 19:36:00 +02:00
scripts.inputs.nixpkgs.follows = "nixpkgs";
2023-07-27 17:05:41 +02:00
stylix.inputs.nixpkgs.follows = "nixpkgs";
tinc-graph.inputs.nixpkgs.follows = "nixpkgs";
2026-01-25 13:47:49 +01:00
wetter.inputs.nixpkgs.follows = "nixpkgs";
2026-02-06 17:13:14 +01:00
niphas.inputs.nixpkgs.follows = "nixpkgs-unstable";
2026-02-11 16:45:28 +01:00
wrappers.inputs.nixpkgs.follows = "nixpkgs";
opencrow.inputs.nixpkgs.follows = "nixpkgs";
2021-12-30 16:19:49 +01:00
};
2025-12-13 14:01:31 +01:00
outputs =
2025-12-25 08:13:02 +01:00
{
2025-12-13 14:01:31 +01:00
self,
nixpkgs,
nur,
home-manager,
agenix,
retiolum,
2025-12-25 08:13:02 +01:00
menstruation-backend,
menstruation-telegram,
scripts,
tinc-graph,
2025-12-29 16:31:56 +01:00
nix-topology,
2026-02-15 22:13:26 +01:00
llm-agents,
opencrow,
2026-02-06 17:13:14 +01:00
nixpkgs-unstable,
2025-12-29 16:21:35 +01:00
nixos-hardware,
2026-02-04 16:49:28 +01:00
niphas,
2025-12-28 13:39:36 +01:00
treefmt-nix,
2025-12-25 08:13:02 +01:00
autorenkalender,
telebots,
stockholm,
nix-index-database,
2025-12-13 14:01:31 +01:00
stylix,
2025-12-25 08:13:02 +01:00
voidrice,
2026-01-25 13:47:49 +01:00
wetter,
2025-12-13 14:01:31 +01:00
...
}:
let
lib = nixpkgs.lib;
eachSupportedSystem = lib.genAttrs lib.systems.flakeExposed;
2025-12-28 13:39:36 +01:00
treefmtEval = eachSupportedSystem (
system:
treefmt-nix.lib.evalModule nixpkgs.legacyPackages.${system} (
{ pkgs, ... }:
{
projectRootFile = "flake.nix";
programs.nixfmt.enable = true;
programs.ormolu.enable = true;
programs.black.enable = true;
programs.prettier.enable = true;
programs.stylua.enable = true;
}
)
);
2025-12-13 14:01:31 +01:00
in
{
2025-12-29 17:54:39 +01:00
2025-12-28 13:19:15 +01:00
apps =
let
localSystem = "x86_64-linux";
in
{
${localSystem} =
let
2025-12-29 13:17:42 +01:00
pkgs = import nixpkgs {
system = localSystem;
overlays = [ self.overlays.default ];
};
2025-12-28 13:19:15 +01:00
lib = nixpkgs.lib;
in
lib.mergeAttrsList [
{
mock-secrets = {
2025-12-25 08:21:59 +01:00
type = "app";
2025-12-28 13:19:15 +01:00
program = toString (
pkgs.writers.writeDash "mock-secrets" ''
${pkgs.findutils}/bin/find secrets -not -path '*/.*' -type f | ${pkgs.coreutils}/bin/sort > secrets.txt
''
);
};
}
(builtins.listToAttrs (
map (
hostname:
let
machines = import lib/machines.nix;
deployScript = pkgs.writers.writeBash "deploy-${hostname}" ''
2025-12-29 13:17:42 +01:00
reachable=$(${pkgs.try-connect.${hostname}}/bin/try-connect)
if [ -z "$reachable" ]; then
2025-12-28 13:19:15 +01:00
exit 1
fi
2025-12-29 13:17:42 +01:00
target="root@$reachable"
echo "Deploying to ${hostname} via $target"
# Set SSH options based on address type
if [[ "$reachable" == *.onion ]]; then
2025-12-29 15:23:53 +01:00
# why? ControlPath=none
# SSH is trying to create a control socket with a path that includes
# the full .onion hostname, and Unix domain sockets have a path length
# limit (typically 108 characters). The .onion address is too long.
2025-12-29 13:17:42 +01:00
export NIX_SSHOPTS="-p ${
toString machines.${hostname}.sshPort
} -o ProxyCommand='${pkgs.netcat}/bin/nc -x localhost:9050 %h %p' -o ControlPath=none"
else
export NIX_SSHOPTS="-p ${toString machines.${hostname}.sshPort}"
fi
2025-12-28 13:50:45 +01:00
${pkgs.nixos-rebuild-ng}/bin/nixos-rebuild-ng switch \
2025-12-28 13:19:15 +01:00
--max-jobs 2 \
--log-format internal-json \
2026-02-11 16:44:46 +01:00
--flake .?submodules=1#${hostname} \
2026-01-25 13:48:12 +01:00
--use-substitutes \
2025-12-29 13:17:42 +01:00
--target-host "$target" \
${lib.optionalString (localSystem != machines.${hostname}.system) "--build-host $target"} \
2025-12-28 13:19:15 +01:00
|& ${pkgs.nix-output-monitor}/bin/nom --json
'';
in
lib.attrsets.nameValuePair "deploy-${hostname}" {
type = "app";
program = toString deployScript;
}
) (builtins.attrNames self.nixosConfigurations)
))
];
};
2025-12-13 14:01:31 +01:00
# TODO overlay for packages
# TODO remove flake-utils dependency from my own repos
2023-02-24 23:41:01 +01:00
nixosModules = {
moodle-dl = import modules/moodle-dl.nix;
passport = import modules/passport.nix;
2023-03-24 17:00:44 +01:00
panoptikon = import modules/panoptikon.nix;
2023-03-26 19:24:38 +02:00
power-action = import modules/power-action.nix;
2023-02-24 23:41:01 +01:00
system-dependent = import modules/system-dependent.nix;
telegram-bot = import modules/telegram-bot.nix;
2025-10-02 18:30:08 +02:00
go-webring = import modules/go-webring.nix;
2023-02-24 23:41:01 +01:00
};
overlays.default = final: prev: {
# packaged from .bin/
two56color = prev.callPackage packages/256color.nix { };
avesta = prev.callPackage packages/avesta.nix { };
bvg = prev.callPackage packages/bvg.nix { };
charinfo = prev.callPackage packages/charinfo.nix { };
chunk-pdf = prev.callPackage packages/chunk-pdf.nix { };
csv2json = prev.callPackage packages/csv2json.nix { };
fix-sd = prev.callPackage packages/fix-sd.nix { };
json2csv = prev.callPackage packages/json2csv.nix { };
mp3player-write = prev.callPackage packages/mp3player-write.nix { };
mushakkil = prev.callPackage packages/mushakkil.nix { };
nix-haddock-index = prev.callPackage packages/nix-haddock-index.nix { };
pdf-ocr = prev.callPackage packages/pdf-ocr.nix { };
prospekte = prev.callPackage packages/prospekte.nix { };
readme = prev.callPackage packages/readme.nix { };
2026-02-06 17:13:14 +01:00
ashell = nixpkgs-unstable.legacyPackages.${prev.system}.ashell;
# wrapped from upstream
wrapScript =
{
packages ? [ ],
name,
script,
}:
prev.writers.writeDashBin name ''PATH=$PATH:${
nixpkgs.lib.makeBinPath (
packages
++ [
final.findutils
final.coreutils
final.gnused
final.gnugrep
]
)
} ${script} "$@"'';
tag = final.wrapScript {
script = voidrice.outPath + "/.local/bin/tag";
name = "tag";
packages = [ final.ffmpeg ];
};
booksplit = final.wrapScript {
script = voidrice.outPath + "/.local/bin/booksplit";
name = "booksplit";
packages = [
final.ffmpeg
final.glibc.bin
];
};
auc = prev.callPackage packages/auc.nix { };
cheat-sh = prev.callPackage packages/cheat-sh.nix { };
brassica = prev.callPackage packages/brassica.nix { }; # TODO upstream
2026-02-04 16:49:28 +01:00
dawn-editor = prev.callPackage packages/dawn.nix { };
text2pdf = prev.callPackage packages/text2pdf.nix { }; # TODO upstream
wttr = prev.callPackage packages/wttr.nix { }; # TODO upstream
jsesh = prev.callPackage packages/jsesh.nix { }; # TODO upstream
opustags = prev.callPackage packages/opustags.nix { }; # TODO upstream
trans = prev.callPackage packages/trans.nix { }; # TODO upstream
go-webring = prev.callPackage packages/go-webring.nix { }; # TODO upstream
stag = prev.callPackage packages/stag.nix { }; # TODO upstream
2025-12-27 17:09:25 +01:00
morris = prev.callPackage packages/morris.nix { };
cro = prev.callPackage packages/cro.nix { };
2026-01-20 18:02:36 +01:00
exodus = prev.callPackage packages/exodus.nix { };
2026-02-15 22:14:20 +01:00
picoclaw = prev.callPackage packages/picoclaw.nix { };
dmenu = prev.writers.writeDashBin "dmenu" ''exec ${final.rofi}/bin/rofi -dmenu "$@"'';
weechatScripts = prev.weechatScripts // {
hotlist2extern = prev.callPackage packages/weechatScripts/hotlist2extern.nix { }; # TODO upstream
};
vimPlugins = prev.vimPlugins // {
cheat-sh = prev.callPackage packages/vimPlugins/cheat-sh.nix { };
icalendar-vim = prev.callPackage packages/vimPlugins/icalendar-vim.nix { }; # TODO upstream
jq-vim = prev.callPackage packages/vimPlugins/jq-vim.nix { }; # TODO upstream
typst-vim = prev.callPackage packages/vimPlugins/typst-vim.nix { }; # TODO upstream
mdwa-nvim = prev.callPackage packages/vimPlugins/mdwa-nvim.nix { }; # TODO upstream
vim-ernest = prev.callPackage packages/vimPlugins/vim-ernest.nix { }; # TODO upstream
vim-256noir = prev.callPackage packages/vimPlugins/vim-256noir.nix { }; # TODO upstream
2025-12-27 15:30:10 +01:00
vim-colors-paramount = prev.callPackage packages/vimPlugins/vim-colors-paramount.nix { }; # TODO upstream
vim-fetch = prev.callPackage packages/vimPlugins/vim-fetch.nix { }; # TODO upstream
vim-fsharp = prev.callPackage packages/vimPlugins/vim-fsharp.nix { }; # TODO upstream
vim-mail = prev.callPackage packages/vimPlugins/vim-mail.nix { }; # TODO upstream
vim-reason-plus = prev.callPackage packages/vimPlugins/vim-reason-plus.nix { }; # TODO upstream
};
2025-12-28 13:19:15 +01:00
# packaged from inputs
2026-01-25 13:47:49 +01:00
wetter = wetter.packages.${prev.stdenv.hostPlatform.system}.wetter;
2025-12-28 13:19:15 +01:00
agenix = agenix.packages.${prev.stdenv.hostPlatform.system}.default;
2025-12-28 22:34:42 +01:00
pun-sort-api = scripts.packages.${prev.stdenv.hostPlatform.system}.pun-sort-api;
2025-12-28 13:19:15 +01:00
alarm = scripts.packages.${prev.stdenv.hostPlatform.system}.alarm;
2025-12-28 13:39:36 +01:00
menstruation-telegram =
menstruation-telegram.packages.${prev.stdenv.hostPlatform.system}.menstruation-telegram;
menstruation-backend =
menstruation-backend.packages.${prev.stdenv.hostPlatform.system}.menstruation-backend;
2025-12-28 13:19:15 +01:00
telebots = telebots.packages.${prev.stdenv.hostPlatform.system}.telebots;
2026-02-17 22:28:56 +01:00
pi-llm = llm-agents.packages.${prev.stdenv.hostPlatform.system}.pi;
2025-12-28 13:19:15 +01:00
hesychius = scripts.packages.${prev.stdenv.hostPlatform.system}.hesychius;
autorenkalender = autorenkalender.packages.${prev.stdenv.hostPlatform.system}.default;
onomap = scripts.packages.${prev.stdenv.hostPlatform.system}.onomap;
tinc-graph = tinc-graph.packages.${prev.stdenv.hostPlatform.system}.tinc-graph;
# krebs
brainmelter = prev.callPackage packages/brainmelter.nix { };
cyberlocker-tools = prev.callPackage packages/cyberlocker-tools.nix { };
hc = prev.callPackage packages/hc.nix { };
pls = prev.callPackage packages/pls.nix { };
2025-12-25 14:44:56 +01:00
radio-news = prev.callPackage packages/radio-news { };
untilport = prev.callPackage packages/untilport.nix { };
2025-12-27 15:30:10 +01:00
weechat-declarative = prev.callPackage packages/weechat-declarative.nix { };
2026-02-17 22:28:56 +01:00
pi = prev.callPackage packages/pi.nix { };
# my packages
betacode = prev.callPackage packages/betacode.nix { };
2025-12-29 23:18:01 +01:00
bring-out-the-gimp = prev.callPackage packages/gimp.nix { };
closest = prev.callPackage packages/closest { };
default-gateway = prev.callPackage packages/default-gateway.nix { };
depp = prev.callPackage packages/depp.nix { };
devanagari = prev.callPackage packages/devanagari { };
2025-12-27 15:30:10 +01:00
radioStreams = prev.callPackage packages/streams { };
devour = prev.callPackage packages/devour.nix { };
dmenu-randr = prev.callPackage packages/dmenu-randr.nix { };
emailmenu = prev.callPackage packages/emailmenu.nix { };
fkill = prev.callPackage packages/fkill.nix { };
fzfmenu = prev.callPackage packages/fzfmenu.nix { };
gfs-fonts = prev.callPackage packages/gfs-fonts.nix { };
heuretes = prev.callPackage packages/heuretes.nix { };
image-convert-favicon = prev.callPackage packages/image-convert-favicon.nix { };
image-convert-tolino = prev.callPackage packages/image-convert-tolino.nix { };
ipa = prev.writers.writePython3Bin "ipa" { flakeIgnore = [ "E501" ]; } packages/ipa.py;
kirciuoklis = prev.callPackage packages/kirciuoklis.nix { };
kpaste = prev.callPackage packages/kpaste.nix { };
literature-quote = prev.callPackage packages/literature-quote.nix { };
man-pdf = prev.callPackage packages/man-pdf.nix { };
mansplain = prev.callPackage packages/mansplain.nix { };
manual-sort = prev.callPackage packages/manual-sort.nix { };
mpv-iptv = prev.callPackage packages/mpv-iptv.nix { };
mpv-radio = prev.callPackage packages/mpv-radio.nix { di-fm-key-file = "/dev/null"; };
mpv-tuner = prev.callPackage packages/mpv-tuner.nix { di-fm-key-file = "/dev/null"; };
mpv-tv = prev.callPackage packages/mpv-tv.nix { };
new-mac = prev.callPackage packages/new-mac.nix { };
nix-git = prev.callPackage packages/nix-git.nix { };
noise-waves = prev.callPackage packages/noise-waves.nix { };
notemenu = prev.callPackage packages/notemenu.nix { };
obsidian-vim = prev.callPackage packages/obsidian-vim.nix { };
2025-12-27 06:35:20 +01:00
vim-typewriter = prev.callPackage packages/vim-typewriter.nix { };
vim-email = prev.callPackage packages/vim-email.nix { };
polyglot = prev.callPackage packages/polyglot.nix { };
q = prev.callPackage packages/q.nix { };
qrpaste = prev.callPackage packages/qrpaste.nix { };
random-zeno = prev.callPackage packages/random-zeno.nix { };
scanned = prev.callPackage packages/scanned.nix { };
stardict-tools = prev.callPackage packages/stardict-tools.nix { };
swallow = prev.callPackage packages/swallow.nix { };
tocharian-font = prev.callPackage packages/tocharian-font.nix { };
ttspaste = prev.callPackage packages/ttspaste.nix { };
2025-12-29 12:27:40 +01:00
niveum-ssh = prev.callPackage packages/niveum-ssh.nix { };
2025-12-29 15:26:13 +01:00
try-connect = prev.callPackage packages/try-connect.nix { };
unicodmenu = prev.callPackage packages/unicodmenu.nix { };
vg = prev.callPackage packages/vg.nix { };
2025-12-27 15:30:10 +01:00
vim-kmein = prev.callPackage packages/vim-kmein { };
klem = prev.callPackage packages/klem.nix { };
2026-02-11 16:46:36 +01:00
yt-dlp-master = prev.callPackage packages/yt-dlp-master.nix { };
lib = lib // {
niveum = import lib/default.nix {
inherit lib;
pkgs = final;
};
panoptikon = import lib/panoptikon.nix {
inherit lib;
pkgs = final;
};
};
2025-12-27 15:30:10 +01:00
};
2025-12-25 08:21:59 +01:00
nixosConfigurations =
let
2025-12-29 12:22:30 +01:00
profiles.default = [
2025-12-28 13:19:15 +01:00
{ nix.nixPath = [ "nixpkgs=${nixpkgs}" ]; }
2026-02-11 16:47:00 +01:00
{
nixpkgs.overlays = [
self.overlays.default
niphas.overlays.default
(final: prev: {
niphas-git =
(prev.niphas-git.passthru.configuration.apply {
settings = {
user.name = prev.lib.niveum.kieran.name;
user.email = prev.lib.niveum.kieran.email;
};
}).wrapper;
niphas-editor = prev.niphas-editor.override {
withCopilot = true;
colorscheme = "base16-gruvbox-dark-medium";
};
})
];
}
2026-01-02 21:43:52 +01:00
{
system.autoUpgrade = {
enable = true;
flake = self.outPath;
flags = [
"--print-build-logs"
];
dates = "02:00";
randomizedDelaySec = "45min";
};
}
2025-12-28 13:19:15 +01:00
agenix.nixosModules.default
retiolum.nixosModules.retiolum
2025-12-29 16:31:56 +01:00
nix-topology.nixosModules.default
2026-02-04 16:49:28 +01:00
niphas.nixosModules.nix
niphas.nixosModules.shell
2025-12-29 12:22:30 +01:00
configs/mycelium.nix
configs/tor.nix
configs/retiolum.nix
configs/spacetime.nix
configs/sshd.nix
2025-12-28 13:19:15 +01:00
];
2025-12-29 12:22:30 +01:00
profiles.desktop = [
2026-02-04 16:49:28 +01:00
niphas.nixosModules.editor
niphas.nixosModules.git
niphas.nixosModules.udiskie
niphas.nixosModules.desktop
2025-12-28 13:19:15 +01:00
home-manager.nixosModules.home-manager
nix-index-database.nixosModules.default
nur.modules.nixos.default
stylix.nixosModules.stylix
self.nixosModules.system-dependent
self.nixosModules.power-action
];
2025-12-29 12:22:30 +01:00
profiles.server = [
configs/save-space.nix
configs/monitoring.nix
self.nixosModules.passport
];
2025-12-25 08:21:59 +01:00
in
{
2025-12-28 13:19:15 +01:00
ful = nixpkgs.lib.nixosSystem {
2025-12-25 08:21:59 +01:00
system = "aarch64-linux";
2026-02-11 16:45:28 +01:00
specialArgs = { inherit self; };
2025-12-29 13:17:42 +01:00
modules =
profiles.default
++ profiles.server
++ [
systems/ful/configuration.nix
self.nixosModules.panoptikon
self.nixosModules.go-webring
stockholm.nixosModules.reaktor2
opencrow.nixosModules.default
2025-12-29 13:17:42 +01:00
nur.modules.nixos.default
2026-02-15 22:13:26 +01:00
{
nixpkgs.overlays = [
stockholm.overlays.default
llm-agents.overlays.default
];
}
2025-12-29 13:17:42 +01:00
];
2025-12-25 08:21:59 +01:00
};
2025-12-28 13:19:15 +01:00
zaatar = nixpkgs.lib.nixosSystem {
2025-12-25 08:21:59 +01:00
system = "x86_64-linux";
2026-02-11 16:45:28 +01:00
specialArgs = { inherit self; };
2025-12-29 13:17:42 +01:00
modules =
profiles.default
++ profiles.server
++ [
systems/zaatar/configuration.nix
];
2025-12-25 08:21:59 +01:00
};
2025-12-28 13:19:15 +01:00
kibbeh = nixpkgs.lib.nixosSystem {
2025-12-25 08:21:59 +01:00
system = "x86_64-linux";
2026-02-11 16:45:28 +01:00
specialArgs = { inherit self; };
2025-12-28 13:19:15 +01:00
modules =
2025-12-29 12:22:30 +01:00
profiles.default
++ profiles.desktop
2025-12-28 13:19:15 +01:00
++ [
systems/kibbeh/configuration.nix
];
2025-12-25 08:21:59 +01:00
};
2025-12-28 13:19:15 +01:00
makanek = nixpkgs.lib.nixosSystem {
2025-12-25 08:21:59 +01:00
system = "x86_64-linux";
2026-02-11 16:45:28 +01:00
specialArgs = { inherit self; };
2025-12-29 13:17:42 +01:00
modules =
profiles.default
++ profiles.server
++ [
systems/makanek/configuration.nix
self.nixosModules.telegram-bot
nur.modules.nixos.default
];
2025-12-25 08:21:59 +01:00
};
2025-12-28 13:19:15 +01:00
tahina = nixpkgs.lib.nixosSystem {
2025-12-25 08:21:59 +01:00
system = "x86_64-linux";
2026-02-11 16:45:28 +01:00
specialArgs = { inherit self; };
2025-12-29 12:22:30 +01:00
modules = profiles.default ++ [
2025-12-25 08:21:59 +01:00
systems/tahina/configuration.nix
];
};
2025-12-28 13:19:15 +01:00
tabula = nixpkgs.lib.nixosSystem {
2025-12-25 08:21:59 +01:00
system = "x86_64-linux";
2026-02-11 16:45:28 +01:00
specialArgs = { inherit self; };
2025-12-29 12:22:30 +01:00
modules = profiles.default ++ [
2025-12-25 08:21:59 +01:00
systems/tabula/configuration.nix
];
};
2025-12-28 13:19:15 +01:00
manakish = nixpkgs.lib.nixosSystem {
2025-12-25 08:21:59 +01:00
system = "x86_64-linux";
2026-02-11 16:45:28 +01:00
specialArgs = { inherit self; };
2025-12-28 13:19:15 +01:00
modules =
2025-12-29 12:22:30 +01:00
profiles.default
++ profiles.desktop
2025-12-28 13:19:15 +01:00
++ [
systems/manakish/configuration.nix
2025-12-29 16:21:35 +01:00
nixos-hardware.nixosModules.lenovo-thinkpad-x230
2025-12-28 13:19:15 +01:00
];
2025-12-25 08:21:59 +01:00
};
2025-12-28 13:19:15 +01:00
kabsa = nixpkgs.lib.nixosSystem {
2025-12-25 08:21:59 +01:00
system = "x86_64-linux";
2026-02-11 16:45:28 +01:00
specialArgs = { inherit self; };
2025-12-28 13:19:15 +01:00
modules =
2025-12-29 12:22:30 +01:00
profiles.default
++ profiles.desktop
2025-12-28 13:19:15 +01:00
++ [
systems/kabsa/configuration.nix
2025-12-29 16:21:35 +01:00
nixos-hardware.nixosModules.lenovo-thinkpad-x220
2025-12-28 13:19:15 +01:00
];
2025-12-25 08:21:59 +01:00
};
2025-12-28 13:19:15 +01:00
fatteh = nixpkgs.lib.nixosSystem {
2025-12-25 08:21:59 +01:00
system = "x86_64-linux";
2026-02-10 22:02:34 +01:00
specialArgs = { inherit self; };
2025-12-28 13:19:15 +01:00
modules =
2025-12-29 12:22:30 +01:00
profiles.default
++ profiles.desktop
2025-12-28 13:19:15 +01:00
++ [
systems/fatteh/configuration.nix
2025-12-29 16:21:35 +01:00
nixos-hardware.nixosModules.lenovo-thinkpad-t480
2025-12-28 13:19:15 +01:00
];
2025-12-25 08:13:02 +01:00
};
2023-05-17 11:16:05 +02:00
};
2025-12-13 14:01:31 +01:00
2025-12-28 13:39:36 +01:00
formatter = eachSupportedSystem (system: treefmtEval.${system}.config.build.wrapper);
checks = eachSupportedSystem (system: {
formatting = treefmtEval.${system}.config.build.check self;
});
2025-12-27 22:22:54 +01:00
2025-12-25 08:21:59 +01:00
packages = eachSupportedSystem (
system:
let
pkgs = import nixpkgs {
inherit system;
config.allowUnfree = true;
overlays = [
nur.overlays.default
self.overlays.default
2025-12-29 16:31:56 +01:00
nix-topology.overlays.default
2025-12-25 08:21:59 +01:00
];
};
in
{
2025-12-29 16:31:56 +01:00
topology = import nix-topology {
inherit pkgs;
modules = [
{ nixosConfigurations = self.nixosConfigurations; }
];
};
2025-12-27 15:30:10 +01:00
inherit (pkgs)
two56color
avesta
2025-12-27 15:30:10 +01:00
auc
betacode
booksplit
brainmelter
brassica
bvg
charinfo
2025-12-27 15:30:10 +01:00
cheat-sh
chunk-pdf
2025-12-27 15:30:10 +01:00
closest
cro
csv2json
2025-12-27 15:30:10 +01:00
cyberlocker-tools
2026-01-01 10:29:07 +01:00
dawn-editor
2025-12-27 15:30:10 +01:00
default-gateway
depp
devanagari
devour
dmenu-randr
emailmenu
2026-01-20 18:02:36 +01:00
exodus
2025-12-27 15:30:10 +01:00
fkill
fix-sd
2025-12-27 15:30:10 +01:00
fzfmenu
gfs-fonts
2025-12-29 23:18:01 +01:00
bring-out-the-gimp
2025-12-27 15:30:10 +01:00
go-webring
hc
heuretes
image-convert-favicon
image-convert-tolino
ipa
jsesh
json2csv
2025-12-27 15:30:10 +01:00
kirciuoklis
klem
kpaste
literature-quote
man-pdf
mansplain
manual-sort
2025-12-27 17:09:25 +01:00
morris
mp3player-write
2025-12-27 15:30:10 +01:00
mpv-iptv
mpv-radio
mpv-tuner
mpv-tv
mushakkil
2025-12-27 15:30:10 +01:00
new-mac
2025-12-29 12:22:30 +01:00
niveum-ssh
2025-12-27 15:30:10 +01:00
nix-git
nix-haddock-index
2025-12-27 15:30:10 +01:00
noise-waves
notemenu
obsidian-vim
opustags
pdf-ocr
2026-02-17 22:28:56 +01:00
pi
2026-02-15 22:14:20 +01:00
picoclaw
2025-12-27 15:30:10 +01:00
pls
polyglot
prospekte
2025-12-27 15:30:10 +01:00
q
qrpaste
radio-news
random-zeno
readme
2025-12-27 15:30:10 +01:00
rfc
scanned
stag
stardict-tools
swallow
text2pdf
timer
tocharian-font
trans
2025-12-29 13:17:42 +01:00
try-connect
2025-12-27 15:30:10 +01:00
ttspaste
unicodmenu
untilport
vg
vim-kmein
vim-typewriter
vim-email
2025-12-27 15:30:10 +01:00
weechat-declarative
wttr
2026-02-11 16:46:36 +01:00
yt-dlp-master
2025-12-27 15:30:10 +01:00
;
2025-12-25 08:21:59 +01:00
}
);
2025-12-13 14:01:31 +01:00
};
2026-02-15 22:13:26 +01:00
nixConfig = {
extra-substituters = [ "https://cache.numtide.com" ];
extra-trusted-public-keys = [ "niks3.numtide.com-1:DTx8wZduET09hRmMtKdQDxNNthLQETkc/yaX7M4qK0g=" ];
};
2021-12-30 16:19:49 +01:00
}