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

431 lines
18 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";
coptic-dictionary.url = "github:kmein/coptic-dictionary";
2021-12-30 16:19:49 +01:00
flake-utils.url = "github:numtide/flake-utils";
2024-06-03 07:27:01 +02:00
home-manager.url = "github:nix-community/home-manager/release-24.05";
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";
2024-06-03 07:27:01 +02:00
nixpkgs.url = "github:NixOS/nixpkgs/nixos-24.05";
nur.url = "github:nix-community/NUR";
recht.url = "github:kmein/recht";
retiolum.url = "git+https://git.thalheim.io/Mic92/retiolum";
2023-05-07 19:36:00 +02:00
rust-overlay.url = "github:oxalica/rust-overlay";
2023-07-22 23:42:39 +02:00
scripts.url = "github:kmein/scripts";
2024-07-25 20:11:00 +02:00
stylix.url = "github:danth/stylix/release-24.05";
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";
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-12-06 14:41:49 +01:00
# menstruation-backend.inputs.flake-utils.follows = "flake-utils";
# menstruation-backend.inputs.nixpkgs.follows = "nixpkgs";
# menstruation-backend.inputs.rust-overlay.follows = "rust-overlay";
2023-05-07 19:36:00 +02:00
menstruation-telegram.inputs.flake-utils.follows = "flake-utils";
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.flake-utils.follows = "flake-utils";
recht.inputs.nixpkgs.follows = "nixpkgs";
rust-overlay.inputs.flake-utils.follows = "flake-utils";
rust-overlay.inputs.nixpkgs.follows = "nixpkgs";
scripts.inputs.flake-utils.follows = "flake-utils";
scripts.inputs.nixpkgs.follows = "nixpkgs";
scripts.inputs.rust-overlay.follows = "rust-overlay";
2023-07-26 08:55:50 +02:00
stylix.inputs.home-manager.follows = "home-manager";
2023-07-27 17:05:41 +02:00
stylix.inputs.nixpkgs.follows = "nixpkgs";
tinc-graph.inputs.flake-utils.follows = "flake-utils";
tinc-graph.inputs.nixpkgs.follows = "nixpkgs";
2023-05-07 19:36:00 +02:00
tinc-graph.inputs.rust-overlay.follows = "rust-overlay";
voidrice.flake = false;
2023-07-27 17:05:41 +02:00
wallpaper-generator.inputs.flake-utils.follows = "flake-utils";
2023-07-26 07:38:52 +02:00
wallpapers.flake = false;
2021-12-30 16:19:49 +01:00
};
2024-05-16 22:10:17 +02:00
nixConfig = {
extra-substituters = [ "https://kmein.cachix.org" ];
extra-trusted-public-keys = [ "kmein.cachix.org-1:rsJ2b6++VQHJ1W6rGuDUYsK/qUkFA3bNpO6PyEyJ9Ls=" ];
};
outputs = inputs @ {
2022-03-10 21:52:12 +01:00
self,
nixpkgs,
2023-05-17 11:16:05 +02:00
nixpkgs-unstable,
nur,
2022-03-10 21:52:12 +01:00
home-manager,
agenix,
2022-03-10 21:52:12 +01:00
retiolum,
nixinate,
flake-utils,
2023-07-22 23:42:39 +02:00
nix-on-droid,
2023-07-26 07:38:52 +02:00
stylix,
...
2023-03-24 17:00:44 +01:00
}:
{
apps = {
2024-02-27 11:30:54 +01:00
x86_64-darwin = let
2024-02-27 20:59:54 +01:00
pkgs = nixpkgs.legacyPackages.x86_64-darwin;
2024-02-27 11:30:54 +01:00
in {
deploy-maakaron = {
type = "app";
program = toString (pkgs.writers.writeDash "deploy-maakaron" ''
exec $(nix build .#homeConfigurations.maakaron.activationPackage --no-link --print-out-paths)/activate
'');
};
};
x86_64-linux = let
pkgs = nixpkgs.legacyPackages.x86_64-linux;
lib = nixpkgs.lib;
in
nixinate.nixinate.x86_64-linux self
// {
mock-secrets = {
type = "app";
program = toString (pkgs.writers.writeDash "mock-secrets" ''
2023-08-23 17:42:26 +02:00
${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
// builtins.listToAttrs (map (hostname: let
externalNetwork = import ./lib/external-network.nix;
targets = {
ful = "root@ful";
zaatar = "root@zaatar";
makanek = "root@makanek";
manakish = "root@manakish";
2024-06-20 15:06:00 +02:00
tahina = "root@tahina";
tabula = "root@tabula";
kabsa = "root@kabsa";
2024-03-19 20:31:02 +01:00
fatteh = "root@fatteh";
};
in
lib.attrsets.nameValuePair "deploy-${hostname}" {
type = "app";
program = toString (pkgs.writers.writeDash "deploy-${hostname}" ''
2024-06-03 07:27:01 +02:00
exec ${pkgs.nixos-rebuild}/bin/nixos-rebuild switch \
--max-jobs 2 \
--log-format internal-json \
--flake .?submodules=1#${hostname} \
--target-host ${targets.${hostname}} 2>&1 \
| ${pkgs.nix-output-monitor}/bin/nom --json
'');
}) (builtins.attrNames self.nixosConfigurations))
// {
deploy-ful = {
type = "app";
program = toString (pkgs.writers.writeDash "deploy-ful" ''
2024-06-03 07:27:01 +02:00
exec ${pkgs.nix}/bin/nix run .?submodules=1#nixinate.ful \
--log-format internal-json 2>&1 \
| ${pkgs.nix-output-monitor}/bin/nom --json
'');
};
};
};
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;
};
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 {
modules = [systems/moto/configuration.nix];
pkgs = import nixpkgs {
system = "aarch64-linux";
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 = {
maakaron = let
system = "x86_64-darwin";
pkgs = nixpkgs.legacyPackages.${system};
2024-02-27 20:59:54 +01:00
in
home-manager.lib.homeManagerConfiguration {
inherit pkgs;
modules = [./systems/maakaron/home.nix];
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
2024-07-10 12:57:07 +02:00
inputs.self.nixosModules.htgen
retiolum.nixosModules.retiolum
2023-03-24 17:00:44 +01:00
nur.nixosModules.nur
{
_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
2023-02-24 23:41:01 +01:00
inputs.self.nixosModules.moodle-dl
agenix.nixosModules.default
retiolum.nixosModules.retiolum
];
};
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
nur.nixosModules.nur
];
};
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
nur.nixosModules.nur
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
nur.nixosModules.nur
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
nur.nixosModules.nur
stylix.nixosModules.stylix
];
};
};
}
2024-02-27 11:30:54 +01:00
// flake-utils.lib.eachSystem [flake-utils.lib.system.x86_64-linux flake-utils.lib.system.x86_64-darwin flake-utils.lib.system.aarch64-linux] (system: let
pkgs = import nixpkgs {
inherit system;
overlays = [
nur.overlay
(self: super: {
2023-10-10 13:06:26 +02:00
mpv = super.mpv.override {scripts = [inputs.self.packages.${system}.mpv-visualizer super.mpvScripts.mpris];};
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 {
packages = rec {
auc = pkgs.callPackage packages/auc.nix {};
betacode = pkgs.callPackage packages/betacode.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 {};
dic = pkgs.callPackage packages/dic.nix {};
dirmir = pkgs.callPackage packages/dirmir.nix {};
dmenu-bluetooth = pkgs.callPackage packages/dmenu-bluetooth.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 {};
mahlzeit = pkgs.haskellPackages.callPackage packages/mahlzeit.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 {};
meteo = pkgs.callPackage packages/meteo.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 {};
qrpaste = pkgs.callPackage packages/qrpaste.nix {};
rfc = pkgs.callPackage packages/rfc.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 {};
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 {};
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-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 {};
itl = pkgs.callPackage packages/itl.nix {};
itools = pkgs.callPackage packages/itools.nix {itl = itl;};
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];
};
};
});
2021-12-30 16:19:49 +01:00
}