Something went wrong. Try again.
personal configurations in nix
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192{ description = "Odilf's nix configs";
inputs = { nixpkgs.url = "https://channels.nixos.org/nixos-unstable/nixexprs.tar.zst"; flake-parts.url = "github:hercules-ci/flake-parts";
nix-darwin = { url = "github:nix-darwin/nix-darwin"; inputs.nixpkgs.follows = "nixpkgs"; };
home-manager = { url = "github:nix-community/home-manager"; inputs.nixpkgs.follows = "nixpkgs"; };
agenix = { url = "github:ryantm/agenix"; inputs.nixpkgs.follows = "nixpkgs"; };
apple-silicon = { url = "github:nix-community/nixos-apple-silicon"; inputs.nixpkgs.follows = "nixpkgs"; };
noctalia = { url = "github:noctalia-dev/noctalia-shell"; inputs.nixpkgs.follows = "nixpkgs"; inputs.noctalia-qs.inputs.treefmt-nix.inputs.nixpkgs.follows = "nixpkgs"; };
niri-session-manager = { url = "github:MTeaHead/niri-session-manager"; inputs.nixpkgs.follows = "nixpkgs"; inputs.treefmt-nix.inputs.nixpkgs.follows = "nixpkgs"; };
kanata-darwin = { url = "github:not-in-stock/kanata-darwin"; inputs.nixpkgs.follows = "nixpkgs"; };
nix-on-droid = { url = "github:nix-community/nix-on-droid/release-24.05"; inputs.nixpkgs.follows = "nixpkgs"; inputs.home-manager.follows = "home-manager"; };
nixos-wsl = { url = "github:nix-community/NixOS-WSL/main"; inputs.nixpkgs.follows = "nixpkgs"; }; };
outputs = { nixpkgs, flake-parts, nix-darwin, home-manager, agenix, nix-on-droid, ... }@inputs: flake-parts.lib.mkFlake { inherit inputs; } { systems = [ "x86_64-linux" "aarch64-linux" "aarch64-darwin" ];
flake = let nixosModule = { imports = [ ./modules ./modules/polyfill/nixos.nix home-manager.nixosModules.default agenix.nixosModules.default inputs.niri-session-manager.nixosModules.niri-session-manager { passthru.agenix-hm = agenix.homeManagerModules.default; passthru.noctalia = inputs.noctalia.homeModules.default; } ]; };
darwinModule = { imports = [ ./modules ./modules/polyfill/nix-darwin.nix home-manager.darwinModules.default agenix.darwinModules.default inputs.kanata-darwin.darwinModules.default { passthru.agenix-hm = agenix.homeManagerModules.default; } ]; };
nixOnDroidModule = { imports = [ ./modules/polyfill/nix-on-droid.nix ./modules ]; }; in { # Modules nixosModules.default = nixosModule; darwinModules.default = darwinModule;
# Configurations nixosConfigurations = { "nixbook" = nixpkgs.lib.nixosSystem { system = "aarch64-linux"; modules = [ nixosModule ./hosts/nixbook/configuration.nix inputs.apple-silicon.nixosModules.default ]; };
"ada" = nixpkgs.lib.nixosSystem { system = "x86_64-linux"; modules = [ nixosModule inputs.nixos-wsl.nixosModules.default ./hosts/ada/configuration.nix ]; }; };
darwinConfigurations."macbook" = nix-darwin.lib.darwinSystem { system = "aarch64-darwin"; modules = [ darwinModule ./hosts/macbook/configuration.nix ]; };
nixOnDroidConfigurations."vermeer" = nix-on-droid.lib.nixOnDroidConfiguration { pkgs = import nixpkgs { system = "aarch64-linux"; }; modules = [ nixOnDroidModule ./hosts/vermeer/configuration.nix ]; }; };
perSystem = { pkgs, system, lib, ... }: let # `firefox-addons` is an attrset of derivations, not a derivation, # so it can't live under `packages` (flake checks reject that). It # goes in `legacyPackages` instead, which supports nested attrsets. packageSet = import ./modules/derivations/default.nix { inherit pkgs lib; }; in { devShells.default = pkgs.mkShell { packages = [ pkgs.nil pkgs.nixd pkgs.nix-update agenix.packages.${system}.default ]; }; formatter = pkgs.nixfmt;
# Flatten the addons here so nix-update (which only resolves flat # `packages.<system>.<attr>`) can reach them. The overlay keeps them # nested as `pkgs.firefox-addons.<name>`. packages = lib.removeAttrs packageSet [ "firefox-addons" ] // packageSet.firefox-addons;
legacyPackages = packageSet; }; };}