{ description = '' stuebinm's flake stuff. feel free to reuse parts you find useful, but I suggest you don't depend on any of them actually working. ''; inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-23.11"; nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; home-manager.url = "github:nix-community/home-manager/release-23.11"; home-manager.inputs.nixpkgs.follows = "nixpkgs"; deploy-rs.url = "git+https://stuebinm.eu/git/forks/deploy-rs?ref=nom-flag"; deploy-rs.inputs.nixpkgs.follows = "nixpkgs"; simple-nixos-mailserver.url = "gitlab:simple-nixos-mailserver/nixos-mailserver/nixos-23.11"; simple-nixos-mailserver.inputs.nixpkgs.follows = "nixpkgs-unstable"; simple-nixos-mailserver.inputs.nixpkgs-23_05.follows = "nixpkgs"; simple-nixos-mailserver.inputs.nixpkgs-23_11.follows = "nixpkgs"; rust-overlay.url = "github:oxalica/rust-overlay"; rust-overlay.inputs.nixpkgs.follows = "nixpkgs"; sops-nix.url = "github:Mic92/sops-nix"; sops-nix.inputs.nixpkgs.follows = "nixpkgs-unstable"; sops-nix.inputs.nixpkgs-stable.follows = "nixpkgs"; uplcg.url = "git+https://stuebinm.eu/git/forks/uplcg?ref=main"; uplcg.flake = false; tracktrain.url = "git+https://stuebinm.eu/git/tracktrain?ref=main"; tracktrain.flake = false; blog.url = "git+ssh://cgit/~/blog"; blog.flake = false; playground.url = "git+https://stuebinm.eu/git/playground"; playground.flake = false; traveltext.url = "git+https://stuebinm.eu/git/traveltext?ref=main"; traveltext.flake = false; showrt.url = "git+https://stuebinm.eu/git/showrt?ref=main"; showrt.flake = false; almanac.url = "git+https://stuebinm.eu/git/forks/almanac"; almanac.flake = false; feeds.url = "path:/home/stuebinm/org/nonpublic.nix"; feeds.flake = false; isabelle-utils.url = "git+https://stuebinm.eu/git/isabelle-utils"; isabelle-utils.flake = false; bahnhof-name.url = "git+https://stuebinm.eu/git/bahnhof.name"; bahnhof-name.flake = false; ntfy-matrix-bot.url = "git+https://stuebinm.eu/git/ntfy-matrix-bot"; ntfy-matrix-bot.flake = false; gtfsBooks.url = "git+https://stuebinm.eu/git/forks/gtfs-books?ref=main"; gtfsBooks.flake = false; walint.url = "git+https://stuebinm.eu/git/walint?ref=playground"; walint.flake = false; }; outputs = { self, deploy-rs, sops-nix, ... }@inputs: let nixpkgs = import inputs.nixpkgs { system = "x86_64-linux"; overlays = [ inputs.rust-overlay.overlays.default self.overlays.default ]; config.permittedInsecurePackages = [ "schildichat-web-1.11.30-sc.2" ]; }; mkConfig = imports: config: inputs.nixpkgs.lib.nixosSystem rec { system = "x86_64-linux"; modules = [ config ] ++ imports; extraModules = builtins.attrValues self.nixosModules ++ [ sops-nix.nixosModules.sops ]; pkgs = nixpkgs; specialArgs = { inherit inputs system; craneLib = inputs.crane.lib.${system}; }; }; mkDesktop = mkConfig [ ./common/desktop.nix ]; mkServer = mkConfig [ ./common/headless.nix ]; deploy-vps = hostname: { inherit hostname; profiles.system = { user = "root"; sshUser = "root"; path = deploy-rs.lib.x86_64-linux.activate.nixos self.nixosConfigurations.${hostname}; }; }; in { nixosConfigurations = { chaski = mkServer ./chaski/configuration.nix; flora = mkServer ./flora/configuration.nix; abbenay = mkDesktop ./abbenay/configuration.nix; cyberbox = mkDesktop ./cyberbox/configuration.nix; ilex = mkDesktop ./ilex/configuration.nix; }; deploy.nodes = { chaski = deploy-vps "chaski"; flora = deploy-vps "flora"; parsons = { hostname = "parsons"; profiles.home = { user = "stuebinm"; sshUser = "stuebinm"; path = deploy-rs.lib.x86_64-linux.activate.home-manager self.homeConfigurations.stuebinm-minimal; }; }; abbenay = { hostname = "abbenay"; profiles.system = { user = "root"; sshUser = "stuebinm"; interactiveSudo = true; path = deploy-rs.lib.x86_64-linux.activate.nixos self.nixosConfigurations.abbenay; }; }; }; checks = builtins.mapAttrs (system: deployLib: deployLib.deployChecks self.deploy) deploy-rs.lib; homeConfigurations = let home = root: inputs.home-manager.lib.homeManagerConfiguration rec { pkgs = nixpkgs; modules = [ root ]; extraSpecialArgs = { inherit inputs; system = "x86_64-linux"; }; }; in { stuebinm = home ./home/home.nix; stuebinm-minimal = home ./home/home-minimal.nix; }; home = self.homeConfigurations.stuebinm.activationPackage; home-minimal = self.homeConfigurations.stuebinm-minimal.activationPackage; overlays.default = final: prev: import ./pkgs/overlay.nix { inherit inputs; } final prev; packages.x86_64-linux = { inherit (nixpkgs) galmon-core galmon-full almanac rustex kijetesantakaluotokieni showrt isabelle-utils isabat travelynx crs-tracker crs-php bahnhof-name matrix-to hikari_unstable heartwood radicle-interface radicle-tui inweb nomsring bookwyrm mollysocket git-annex-remote-remarkable2 ntfy-matrix-bot transport_validator; tests.bookwyrm = nixpkgs.nixosTest ./tests/bookwyrm.nix; tests.travelynx = nixpkgs.nixosTest ./tests/travelynx.nix; }; nixosModules = { # glitchtip = import ./modules/glitchtip.nix; bookwyrm = import ./modules/bookwyrm.nix; mollysocket = import ./modules/mollysocket.nix; }; hydraJobs = { inherit (self) packages home; }; }; }