{ description = "Evie's home-manager configurations"; nixConfig = { extra-substituters = ["https://nix.xenia.me.uk"]; extra-trusted-public-keys = ["nix.xenia.me.uk:tlgwOaG5KMLjQUk2YaErS8mAG69ZCr3PaHXZYi+Y5eI="]; }; inputs = { nixpkgs.url = "github:nixos/nixpkgs/nixos-24.05"; home-manager = { url = "github:nix-community/home-manager/release-24.05"; inputs.nixpkgs.follows = "nixpkgs"; }; plasma-manager = { url = "github:pjones/plasma-manager"; inputs = { nixpkgs.follows = "nixpkgs"; home-manager.follows = "home-manager"; }; }; iosevka-custom.url = "git+https://git.xenia.me.uk/pixelifytica/iosevka.git"; base16.url = "github:SenchoPens/base16.nix"; tt-schemes = { url = "github:tinted-theming/schemes"; flake = false; }; }; outputs = { self, nixpkgs, home-manager, plasma-manager, iosevka-custom, base16, tt-schemes, ... }: let defaultExtraSpecialArgs = { system ? "x86_64-linux", hostname ? "Atlas", ... }: rec { inherit hostname; accentColourName = "base0D"; altAccentColourName = "base0C"; iosevkaCustom = { packages = iosevka-custom.outputs.packages.${system}; names = iosevka-custom.outputs.names; }; fonts = with iosevkaCustom; rec { sizes = { applications = 12; desktop = 10; popups = 14; terminal = 12; }; serif = sansSerif; sansSerif = { name = names.iosevka-custom-aile; package = packages.iosevka-custom-aile; }; monospace = { name = names.iosevka-custom-nerdfont; package = packages.iosevka-custom-nerdfont; }; }; }; defaultModules = { username ? "pixelifytica", hostname ? "Atlas", ... }: [ plasma-manager.homeManagerModules.plasma-manager base16.homeManagerModule ./home/${hostname}.nix ({lib, ...}: { home = {inherit username;}; scheme = "${tt-schemes}/base16/one-light.yaml"; }) ]; in { packages.x86_64-linux = {inherit (home-manager.packages.x86_64-linux) default;}; apps.x86_64-linux.default = { program = "${self.packages.x86_64-linux.default}/bin/home-manager"; type = "app"; }; devShells.x86_64-linux.default = let pkgs = import nixpkgs {system = "x86_64-linux";}; in pkgs.mkShellNoCC { packages = [pkgs.nil]; }; homeConfigurations = { # Server "pixelifytica@Legion" = home-manager.lib.homeManagerConfiguration { pkgs = import nixpkgs {system = "x86_64-linux";}; modules = defaultModules { username = "pixelifytica"; hostname = "Legion"; }; extraSpecialArgs = defaultExtraSpecialArgs { system = "x86_64-linux"; hostname = "Legion"; }; }; # Personal "pixelifytica@Northstar" = home-manager.lib.homeManagerConfiguration { pkgs = import nixpkgs {system = "x86_64-linux";}; modules = defaultModules { username = "pixelifytica"; hostname = "Northstar"; }; extraSpecialArgs = defaultExtraSpecialArgs { system = "x86_64-linux"; hostname = "Northstar"; }; }; "pixelifytica@Vanguard" = home-manager.lib.homeManagerConfiguration { pkgs = import nixpkgs {system = "x86_64-linux";}; modules = defaultModules { username = "pixelifytica"; hostname = "Vanguard"; }; extraSpecialArgs = defaultExtraSpecialArgs { system = "x86_64-linux"; hostname = "Vanguard"; }; }; # Work "elitherl@Tone" = home-manager.lib.homeManagerConfiguration { pkgs = import nixpkgs {system = "x86_64-linux";}; modules = defaultModules { username = "elitherl"; hostname = "Tone"; }; extraSpecialArgs = defaultExtraSpecialArgs { system = "x86_64-linux"; hostname = "Tone"; }; }; "elitherl@Scorch" = home-manager.lib.homeManagerConfiguration { pkgs = import nixpkgs {system = "x86_64-linux";}; modules = defaultModules { username = "elitherl"; hostname = "Scorch"; }; extraSpecialArgs = defaultExtraSpecialArgs { system = "x86_64-linux"; hostname = "Scorch"; }; }; }; }; }