1
0
mirror of https://github.com/kmein/niveum synced 2026-03-16 18:21:07 +01:00
Files
niveum/flake.nix

456 lines
19 KiB
Nix
Raw Normal View History

2021-12-30 16:19:49 +01:00
{
description = "niveum: packages, modules, systems";
inputs = {
2025-10-06 13:10:40 +02:00
self.submodules = true;
agenix.url = "github:ryantm/agenix";
2025-12-04 16:19:02 +01:00
autorenkalender.url = "github:kmein/autorenkalender";
coptic-dictionary.url = "github:kmein/coptic-dictionary";
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";
2023-07-22 23:42:39 +02:00
nix-on-droid.url = "github:t184256/nix-on-droid/release-23.05";
nixinate.url = "github:matthewcroughan/nixinate";
2023-05-07 19:36:00 +02:00
nixpkgs-old.url = "github:NixOS/nixpkgs/50fc86b75d2744e1ab3837ef74b53f103a9b55a0";
2023-05-17 11:16:05 +02:00
nixpkgs-unstable.url = "github:NixOS/nixpkgs/master";
2025-12-02 21:37:02 +01:00
nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.11";
nur.url = "github:nix-community/NUR";
recht.url = "github:kmein/recht";
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";
voidrice.url = "github:Lukesmithxyz/voidrice";
2023-07-27 17:05:41 +02:00
wallpaper-generator.url = "github:pinpox/wallpaper-generator/v1.1";
2023-07-26 07:38:52 +02:00
wallpapers.url = "github:kmein/wallpapers";
2025-12-04 16:19:02 +01:00
autorenkalender.inputs.nixpkgs.follows = "nixpkgs";
2023-05-17 11:16:05 +02:00
agenix.inputs.home-manager.follows = "home-manager";
2023-07-22 23:42:39 +02:00
agenix.inputs.nixpkgs.follows = "nixpkgs";
coptic-dictionary.inputs.nixpkgs.follows = "nixpkgs";
home-manager.inputs.nixpkgs.follows = "nixpkgs";
2023-05-07 19:36:00 +02:00
menstruation-telegram.inputs.menstruation-backend.follows = "menstruation-backend";
menstruation-telegram.inputs.nixpkgs.follows = "nixpkgs-old";
nix-on-droid.inputs.home-manager.follows = "home-manager";
2023-07-27 17:05:41 +02:00
nix-on-droid.inputs.nixpkgs.follows = "nixpkgs";
2023-05-07 19:36:00 +02:00
recht.inputs.nixpkgs.follows = "nixpkgs";
scripts.inputs.nixpkgs.follows = "nixpkgs";
2023-07-27 17:05:41 +02:00
stylix.inputs.nixpkgs.follows = "nixpkgs";
tinc-graph.inputs.nixpkgs.follows = "nixpkgs";
voidrice.flake = false;
2023-07-26 07:38:52 +02:00
wallpapers.flake = false;
2021-12-30 16:19:49 +01:00
};
2025-12-13 14:01:31 +01:00
outputs =
inputs@{
self,
nixpkgs,
nixpkgs-unstable,
nur,
home-manager,
agenix,
retiolum,
nixinate,
flake-utils,
nix-on-droid,
stylix,
...
}:
let
lib = nixpkgs.lib;
eachSupportedSystem = lib.genAttrs lib.systems.flakeExposed;
in
{
apps = {
2025-12-13 14:01:31 +01:00
x86_64-darwin =
let
pkgs = nixpkgs.legacyPackages.x86_64-darwin;
in
{
deploy-maakaron = {
type = "app";
program = toString (
pkgs.writers.writeDash "deploy-maakaron" ''
exec $(nix build .#homeConfigurations.maakaron.activationPackage --no-link --print-out-paths)/activate
''
);
};
2024-02-27 11:30:54 +01:00
};
2025-12-13 14:01:31 +01:00
x86_64-linux =
let
pkgs = nixpkgs.legacyPackages.x86_64-linux;
lib = nixpkgs.lib;
in
nixinate.nixinate.x86_64-linux self
// {
mock-secrets = {
type = "app";
2025-12-13 14:01:31 +01:00
program = toString (
pkgs.writers.writeDash "mock-secrets" ''
${pkgs.findutils}/bin/find secrets -not -path '*/.*' -type f | ${pkgs.coreutils}/bin/sort > secrets.txt
''
);
};
}
2023-12-28 21:31:50 +01:00
# the following error prevents remote building of ful: https://github.com/NixOS/nixpkgs/issues/177873
2025-12-13 14:01:31 +01:00
// builtins.listToAttrs (
map (
hostname:
let
targets = {
ful = "root@ful";
zaatar = "root@zaatar";
makanek = "root@makanek";
manakish = "root@manakish";
tahina = "root@tahina";
tabula = "root@tabula";
kabsa = "root@kabsa";
fatteh = "root@fatteh";
kibbeh = "root@kibbeh";
};
in
lib.attrsets.nameValuePair "deploy-${hostname}" {
type = "app";
program = toString (
pkgs.writers.writeDash "deploy-${hostname}" ''
exec ${pkgs.nixos-rebuild}/bin/nixos-rebuild switch \
--max-jobs 2 \
--log-format internal-json \
--flake .#${hostname} \
--target-host ${targets.${hostname}} 2>&1 \
| ${pkgs.nix-output-monitor}/bin/nom --json
''
);
}
) (builtins.attrNames self.nixosConfigurations)
)
// {
deploy-ful = {
type = "app";
2025-12-13 14:01:31 +01:00
program = toString (
pkgs.writers.writeDash "deploy-ful" ''
exec ${pkgs.nix}/bin/nix run .#nixinate.ful \
--log-format internal-json 2>&1 \
| ${pkgs.nix-output-monitor}/bin/nom --json
''
);
};
};
};
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 = {
2023-03-26 19:24:38 +02:00
htgen = import modules/htgen.nix;
2023-02-24 23:41:01 +01:00
moodle-dl = import modules/moodle-dl.nix;
networkmanager-declarative = import modules/networkmanager-declarative.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
};
lib = {
panoptikon = import lib/panoptikon.nix;
};
2023-07-22 23:42:39 +02:00
nixOnDroidConfigurations = {
2023-07-23 23:12:25 +02:00
moto = nix-on-droid.lib.nixOnDroidConfiguration {
2025-12-13 14:01:31 +01:00
modules = [ systems/moto/configuration.nix ];
pkgs = import nixpkgs {
system = "aarch64-linux";
2025-12-13 14:01:31 +01:00
overlays = [ nix-on-droid.overlays.default ];
};
2023-07-25 16:17:40 +02:00
extraSpecialArgs = {
2023-07-24 06:29:51 +00:00
niveumPackages = inputs.self.packages.aarch64-linux;
2023-07-25 16:17:40 +02:00
niveumLib = inputs.self.lib;
inherit inputs;
2023-07-24 06:29:51 +00:00
};
home-manager-path = home-manager.outPath;
2023-07-22 23:42:39 +02:00
};
};
2024-02-27 11:30:54 +01:00
homeConfigurations = {
2025-12-13 14:01:31 +01:00
maakaron =
let
system = "x86_64-darwin";
pkgs = nixpkgs.legacyPackages.${system};
in
2024-02-27 20:59:54 +01:00
home-manager.lib.homeManagerConfiguration {
inherit pkgs;
2025-12-13 14:01:31 +01:00
modules = [ ./systems/maakaron/home.nix ];
2024-02-27 20:59:54 +01:00
extraSpecialArgs = {
inherit inputs;
niveumPackages = inputs.self.packages.${system};
};
2024-02-27 11:30:54 +01:00
};
};
2023-05-17 11:16:05 +02:00
nixosConfigurations = let
niveumSpecialArgs = system: {
2023-06-04 15:43:08 +02:00
unstablePackages = import nixpkgs-unstable {
inherit system;
config.allowUnfreePredicate = pkg:
builtins.elem (nixpkgs-unstable.lib.getName pkg) [
"obsidian"
2024-05-08 06:37:29 +02:00
"zoom"
2023-06-04 15:43:08 +02:00
];
};
2023-05-17 11:16:05 +02:00
niveumPackages = inputs.self.packages.${system};
niveumLib = inputs.self.lib;
inherit inputs;
};
in {
ful = nixpkgs.lib.nixosSystem rec {
system = "aarch64-linux";
2023-05-17 11:16:05 +02:00
specialArgs = niveumSpecialArgs system;
modules = [
systems/ful/configuration.nix
agenix.nixosModules.default
inputs.self.nixosModules.passport
2023-03-24 17:00:44 +01:00
inputs.self.nixosModules.panoptikon
2025-10-02 18:30:08 +02:00
inputs.self.nixosModules.go-webring
2024-07-10 12:57:07 +02:00
inputs.self.nixosModules.htgen
2024-08-14 06:40:24 +02:00
inputs.stockholm.nixosModules.reaktor2
retiolum.nixosModules.retiolum
2024-12-13 13:42:16 +01:00
nur.modules.nixos.default
2024-08-14 06:40:24 +02:00
{ nixpkgs.overlays = [ inputs.stockholm.overlays.default ]; }
{
_module.args.nixinate = {
host = "ful";
sshUser = "root";
buildOn = "remote";
substituteOnTarget = true;
hermetic = false;
};
}
];
};
zaatar = nixpkgs.lib.nixosSystem rec {
system = "x86_64-linux";
2023-05-17 11:16:05 +02:00
specialArgs = niveumSpecialArgs system;
modules = [
systems/zaatar/configuration.nix
2025-02-11 15:51:06 +01:00
agenix.nixosModules.default
retiolum.nixosModules.retiolum
];
};
kibbeh = nixpkgs.lib.nixosSystem rec {
system = "x86_64-linux";
specialArgs = niveumSpecialArgs system;
modules = [
systems/kibbeh/configuration.nix
agenix.nixosModules.default
retiolum.nixosModules.retiolum
2025-10-02 19:21:21 +02:00
home-manager.nixosModules.home-manager
];
};
makanek = nixpkgs.lib.nixosSystem rec {
system = "x86_64-linux";
# for using inputs in other config files
2023-05-17 11:16:05 +02:00
specialArgs = niveumSpecialArgs system;
modules = [
systems/makanek/configuration.nix
2023-02-24 23:41:01 +01:00
inputs.self.nixosModules.telegram-bot
2023-03-26 19:24:38 +02:00
inputs.self.nixosModules.htgen
2023-02-24 23:41:01 +01:00
inputs.self.nixosModules.passport
agenix.nixosModules.default
retiolum.nixosModules.retiolum
2024-12-13 13:42:16 +01:00
nur.modules.nixos.default
];
};
2024-06-20 15:06:00 +02:00
tahina = nixpkgs.lib.nixosSystem rec {
system = "x86_64-linux";
2024-06-20 15:06:00 +02:00
specialArgs = niveumSpecialArgs system;
modules = [
systems/tahina/configuration.nix
agenix.nixosModules.default
retiolum.nixosModules.retiolum
];
};
2024-06-20 15:06:00 +02:00
tabula = nixpkgs.lib.nixosSystem rec {
system = "x86_64-linux";
2024-06-20 15:06:00 +02:00
specialArgs = niveumSpecialArgs system;
modules = [
systems/tabula/configuration.nix
agenix.nixosModules.default
retiolum.nixosModules.retiolum
];
};
manakish = nixpkgs.lib.nixosSystem rec {
system = "x86_64-linux";
2023-05-17 11:16:05 +02:00
specialArgs = niveumSpecialArgs system;
modules = [
systems/manakish/configuration.nix
agenix.nixosModules.default
retiolum.nixosModules.retiolum
home-manager.nixosModules.home-manager
2024-12-13 13:42:16 +01:00
nur.modules.nixos.default
2023-07-26 07:38:52 +02:00
stylix.nixosModules.stylix
];
};
kabsa = nixpkgs.lib.nixosSystem rec {
system = "x86_64-linux";
2023-05-17 11:16:05 +02:00
specialArgs = niveumSpecialArgs system;
modules = [
systems/kabsa/configuration.nix
agenix.nixosModules.default
retiolum.nixosModules.retiolum
home-manager.nixosModules.home-manager
2024-12-13 13:42:16 +01:00
nur.modules.nixos.default
2023-07-26 07:38:52 +02:00
stylix.nixosModules.stylix
];
};
2024-03-19 20:31:02 +01:00
fatteh = nixpkgs.lib.nixosSystem rec {
system = "x86_64-linux";
specialArgs = niveumSpecialArgs system;
modules = [
systems/fatteh/configuration.nix
agenix.nixosModules.default
retiolum.nixosModules.retiolum
home-manager.nixosModules.home-manager
2024-12-13 13:42:16 +01:00
nur.modules.nixos.default
2024-03-19 20:31:02 +01:00
stylix.nixosModules.stylix
];
};
};
2025-12-13 14:01:31 +01:00
packages = eachSupportedSystem (system: let
pkgs = import nixpkgs {
inherit system;
config.allowUnfree = true;
overlays = [
nur.overlays.default
(self: super: {
2025-12-13 22:36:27 +01:00
mpv = super.mpv.override {scripts = [super.mpvScripts.visualizer super.mpvScripts.mpris];};
2025-12-13 14:01:31 +01:00
dmenu = super.writers.writeDashBin "dmenu" ''exec ${pkgs.rofi}/bin/rofi -dmenu "$@"'';
})
];
};
unstablePackages = import nixpkgs-unstable {
inherit system;
};
wrapScript = {
packages ? [],
name,
script,
}:
pkgs.writers.writeDashBin name ''PATH=$PATH:${nixpkgs.lib.makeBinPath (packages ++ [pkgs.findutils pkgs.coreutils pkgs.gnused pkgs.gnugrep])} ${script} "$@"'';
in {
auc = pkgs.callPackage packages/auc.nix {};
betacode = pkgs.callPackage packages/betacode.nix {};
2025-05-14 06:57:06 +02:00
brainmelter = pkgs.callPackage packages/brainmelter.nix {};
2024-03-17 21:41:25 +01:00
brassica = pkgs.callPackage packages/brassica.nix {};
cheat-sh = pkgs.callPackage packages/cheat-sh.nix {};
closest = pkgs.callPackage packages/closest {};
cro = pkgs.callPackage packages/cro.nix {};
2023-03-26 19:24:38 +02:00
cyberlocker-tools = pkgs.callPackage packages/cyberlocker-tools.nix {};
default-gateway = pkgs.callPackage packages/default-gateway.nix {};
depp = pkgs.callPackage packages/depp.nix {};
dashboard = pkgs.callPackage packages/dashboard {};
devanagari = pkgs.callPackage packages/devanagari {};
devour = pkgs.callPackage packages/devour.nix {};
dmenu-scrot = pkgs.callPackage packages/dmenu-scrot.nix {};
dns-sledgehammer = pkgs.callPackage packages/dns-sledgehammer.nix {};
fkill = pkgs.callPackage packages/fkill.nix {};
fzfmenu = pkgs.callPackage packages/fzfmenu.nix {};
genius = pkgs.callPackage packages/genius.nix {};
gfs-fonts = pkgs.callPackage packages/gfs-fonts.nix {};
git-preview = pkgs.callPackage packages/git-preview.nix {};
2023-11-28 16:11:23 +01:00
gpt35 = pkgs.callPackage packages/gpt.nix {model = "gpt-3.5-turbo";};
gpt4 = pkgs.callPackage packages/gpt.nix {model = "gpt-4";};
2023-03-26 19:24:38 +02:00
hc = pkgs.callPackage packages/hc.nix {};
2023-09-15 10:52:27 +02:00
jq-lsp = pkgs.callPackage packages/jq-lsp.nix {};
2023-09-15 10:59:14 +02:00
stardict-tools = pkgs.callPackage packages/stardict-tools.nix {};
heuretes = pkgs.callPackage packages/heuretes.nix {};
2023-03-26 19:24:38 +02:00
htgen = pkgs.callPackage packages/htgen.nix {};
image-convert-favicon = pkgs.callPackage packages/image-convert-favicon.nix {};
image-convert-tolino = pkgs.callPackage packages/image-convert-tolino.nix {};
infschmv = pkgs.callPackage packages/infschmv.nix {};
iolanguage = pkgs.callPackage packages/iolanguage.nix {};
ipa = pkgs.writers.writePython3Bin "ipa" {flakeIgnore = ["E501"];} (builtins.readFile packages/ipa.py);
ix = pkgs.callPackage packages/ix.nix {};
jsesh = pkgs.callPackage packages/jsesh.nix {};
k-lock = pkgs.callPackage packages/k-lock.nix {};
kirciuoklis = pkgs.callPackage packages/kirciuoklis.nix {};
klem = pkgs.callPackage packages/klem.nix {};
2023-03-26 19:24:38 +02:00
kpaste = pkgs.callPackage packages/kpaste.nix {};
literature-quote = pkgs.callPackage packages/literature-quote.nix {};
man-pandoc = pkgs.callPackage packages/man/pandoc.nix {};
man-pdf = pkgs.callPackage packages/man-pdf.nix {};
mansplain = pkgs.callPackage packages/mansplain.nix {};
manual-sort = pkgs.callPackage packages/manual-sort.nix {};
menu-calc = pkgs.callPackage packages/menu-calc.nix {};
2024-09-18 09:20:26 +02:00
noise-waves = pkgs.callPackage packages/noise-waves.nix {};
mpv-radio = pkgs.callPackage packages/mpv-radio.nix {di-fm-key-file = "/dev/null";};
mpv-tuner = pkgs.callPackage packages/mpv-tuner.nix {di-fm-key-file = "/dev/null";};
mpv-tv = pkgs.callPackage packages/mpv-tv.nix {};
2023-09-15 14:37:30 +02:00
mpv-iptv = pkgs.callPackage packages/mpv-iptv.nix {};
mpv-visualizer = unstablePackages.mpvScripts.visualizer;
new-mac = pkgs.callPackage packages/new-mac.nix {};
nix-git = pkgs.callPackage packages/nix-git.nix {};
nix-index-update = pkgs.callPackage packages/nix-index-update.nix {inherit system;};
notemenu = pkgs.callPackage packages/notemenu.nix {niveumPackages = self.packages.${system};};
opustags = pkgs.callPackage packages/opustags.nix {};
pls = pkgs.callPackage packages/pls.nix {};
polyglot = pkgs.callPackage packages/polyglot.nix {};
2025-05-21 10:45:44 +02:00
q = pkgs.callPackage packages/q.nix {};
qrpaste = pkgs.callPackage packages/qrpaste.nix {};
2024-10-11 09:36:39 +02:00
random-zeno = pkgs.callPackage packages/random-zeno.nix {};
2025-10-02 18:30:08 +02:00
go-webring = pkgs.callPackage packages/go-webring.nix {};
rfc = pkgs.callPackage packages/rfc.nix {};
2024-10-25 21:09:24 +02:00
gimp = pkgs.callPackage packages/gimp.nix {};
scanned = pkgs.callPackage packages/scanned.nix {};
swallow = pkgs.callPackage packages/swallow.nix {};
text2pdf = pkgs.callPackage packages/text2pdf.nix {};
timer = pkgs.callPackage packages/timer.nix {};
tocharian-font = pkgs.callPackage packages/tocharian-font.nix {};
trans = pkgs.callPackage packages/trans.nix {};
ttspaste = pkgs.callPackage packages/ttspaste.nix {};
unicodmenu = pkgs.callPackage packages/unicodmenu.nix {};
2023-10-06 12:29:11 +02:00
emailmenu = pkgs.callPackage packages/emailmenu.nix {};
2025-10-06 13:10:40 +02:00
stag = pkgs.callPackage packages/stag.nix {};
2023-03-26 19:24:38 +02:00
untilport = pkgs.callPackage packages/untilport.nix {};
vg = pkgs.callPackage packages/vg.nix {};
vim = pkgs.callPackage packages/vim.nix {niveumPackages = self.packages.${system};};
obsidian-vim = pkgs.callPackage packages/obsidian-vim.nix {};
2025-06-03 20:07:49 +02:00
radio-news = pkgs.callPackage packages/radio-news.nix {};
vimPlugins-cheat-sh-vim = pkgs.callPackage packages/vimPlugins/cheat-sh.nix {};
vimPlugins-icalendar-vim = pkgs.callPackage packages/vimPlugins/icalendar-vim.nix {};
vimPlugins-jq-vim = pkgs.callPackage packages/vimPlugins/jq-vim.nix {};
2023-05-07 19:36:00 +02:00
vimPlugins-typst-vim = pkgs.callPackage packages/vimPlugins/typst-vim.nix {};
vimPlugins-mdwa-nvim = pkgs.callPackage packages/vimPlugins/mdwa-nvim.nix {};
vimPlugins-vim-ernest = pkgs.callPackage packages/vimPlugins/vim-ernest.nix {};
vimPlugins-vim-256noir = pkgs.callPackage packages/vimPlugins/vim-256noir.nix {};
vimPlugins-vim-colors-paramount = pkgs.callPackage packages/vimPlugins/vim-colors-paramount.nix {};
vimPlugins-vim-fetch = pkgs.callPackage packages/vimPlugins/vim-fetch.nix {};
vimPlugins-vim-fsharp = pkgs.callPackage packages/vimPlugins/vim-fsharp.nix {};
vimPlugins-vim-mail = pkgs.callPackage packages/vimPlugins/vim-mail.nix {};
vimPlugins-vim-reason-plus = pkgs.callPackage packages/vimPlugins/vim-reason-plus.nix {};
vimv = pkgs.callPackage packages/vimv.nix {};
2023-03-26 19:24:38 +02:00
weechat-declarative = pkgs.callPackage packages/weechat-declarative.nix {};
weechatScripts-hotlist2extern = pkgs.callPackage packages/weechatScripts/hotlist2extern.nix {};
wttr = pkgs.callPackage packages/wttr.nix {};
booksplit = wrapScript {
script = inputs.voidrice.outPath + "/.local/bin/booksplit";
name = "booksplit";
packages = [pkgs.ffmpeg pkgs.glibc.bin];
};
dmenu-randr = pkgs.callPackage packages/dmenu-randr.nix {};
tag = wrapScript {
script = inputs.voidrice.outPath + "/.local/bin/tag";
name = "tag";
packages = [pkgs.ffmpeg];
};
2025-12-13 14:01:31 +01:00
});
};
2021-12-30 16:19:49 +01:00
}