dotfiles/flake.nix

132 lines
4.7 KiB
Nix
Raw Permalink Normal View History

2022-05-15 14:35:03 +02:00
{
description = "Yoricks dotfiles";
inputs = {
2023-12-20 13:32:18 +01:00
nixpkgs.url = "github:nixos/nixpkgs/nixos-23.11";
home-manager.url = "github:nix-community/home-manager/release-23.11";
2022-05-15 14:35:03 +02:00
home-manager.inputs.nixpkgs.follows = "nixpkgs";
nixpkgs-mozilla.url = "github:mozilla/nixpkgs-mozilla";
emacs-overlay.inputs.nixpkgs.follows = "nixpkgs";
nixpkgs-wayland.url = "github:nix-community/nixpkgs-wayland";
nixpkgs-wayland.inputs.nixpkgs.follows = "nixpkgs";
2023-12-20 13:32:18 +01:00
nixos-mailserver.url = "gitlab:simple-nixos-mailserver/nixos-mailserver/nixos-23.11";
2022-05-15 14:35:03 +02:00
nixos-mailserver.inputs.nixpkgs.follows = "nixpkgs";
2022-05-18 15:57:58 +02:00
agenix.url = "github:ryantm/agenix";
agenix.inputs.nixpkgs.follows = "nixpkgs";
2023-01-26 19:22:24 +01:00
nix-index-database.url = "github:Mic92/nix-index-database";
nix-index-database.inputs.nixpkgs.follows = "nixpkgs";
2023-04-03 15:51:22 +02:00
nix-npm-buildpackage.url = "github:serokell/nix-npm-buildpackage";
nix-npm-buildpackage.inputs.nixpkgs.follows = "nixpkgs";
2024-02-17 15:14:16 +01:00
attic = {
url = "github:zhaofengli/attic";
inputs = {
nixpkgs-stable.follows = "nixpkgs";
nixpkgs.follows = "nixpkgs";
flake-utils.follows = "flake-utils";
};
};
2023-05-01 14:35:39 +02:00
timesync = {
url = "github:datakami/timesync";
inputs.nixpkgs.follows = "nixpkgs";
};
2023-11-14 21:57:15 +01:00
fooocus.url = "path:./pkgs/fooocus";
2024-03-15 10:01:03 +01:00
dream2nix.url = "github:nix-community/dream2nix";
dream2nix.inputs.nixpkgs.follows = "nixpkgs";
2022-05-15 14:35:03 +02:00
};
2022-05-15 15:39:25 +02:00
outputs = inputs@{ nixpkgs, home-manager, nixpkgs-mozilla, emacs-overlay
2023-06-04 16:52:53 +02:00
, nixpkgs-wayland, nixos-hardware, agenix, flake-utils
2024-02-17 15:14:16 +01:00
, nix-index-database, nix-npm-buildpackage, timesync
2024-03-15 10:01:03 +01:00
, attic, dream2nix
2023-01-26 19:22:24 +01:00
, self
2022-10-04 10:15:29 +02:00
, ... }:
(flake-utils.lib.eachSystem [ "x86_64-linux" ] (system:
let pkgs = self.legacyPackages.${system};
in {
legacyPackages = import nixpkgs {
config = {
allowUnfree = true;
# chromium.vaapiSupport = true;
android_sdk.accept_license = true;
2023-12-20 13:32:18 +01:00
permittedInsecurePackages = [];
2022-05-15 15:39:25 +02:00
};
2022-10-04 10:15:29 +02:00
inherit system;
overlays = [ self.overlays.default ];
2022-05-15 15:39:25 +02:00
};
2022-10-04 10:15:29 +02:00
packages = {
yorick-home = self.homeConfigurations.${system}.activationPackage;
default = pkgs.linkFarm "yori-nix" ([{
name = "yorick-home";
path = self.packages.${system}.yorick-home;
}] ++ (map (n: {
name = n.toplevel.name;
path = n.toplevel;
}) (builtins.attrValues self.nixosConfigurations)));
};
homeConfigurations = home-manager.lib.homeManagerConfiguration {
inherit pkgs;
2022-07-06 10:33:40 +02:00
modules = [
./home-manager/home.nix
2023-01-26 19:22:24 +01:00
nix-index-database.hmModules.nix-index
2022-07-06 10:33:40 +02:00
{
home = {
username = "yorick";
stateVersion = "20.09";
homeDirectory = "/home/yorick";
};
}
];
2022-05-15 15:39:25 +02:00
};
2023-04-03 15:51:22 +02:00
devShells.default = pkgs.mkShell {
buildInputs = with pkgs; [
y-deployer
2023-09-23 15:57:07 +02:00
pkgs.agenix
2023-04-03 15:51:22 +02:00
];
};
devShells.deployer = pkgs.mkShell {
buildInputs = with pkgs; [
yarn
nodePackages.typescript-language-server
];
};
apps.default = flake-utils.lib.mkApp {
drv = pkgs.y-deployer;
};
2022-10-04 10:15:29 +02:00
# updater script for home profile
# works around https://github.com/nix-community/home-manager/issues/2848
apps.update-home = flake-utils.lib.mkApp {
2022-10-04 14:28:46 +02:00
drv = pkgs.writeScriptBin "update-home" ''
2022-10-04 10:15:29 +02:00
set -euo pipefail
old_profile=$(nix profile list | grep home-manager-path | head -n1 | awk '{print $4}')
echo $old_profile
nix profile remove $old_profile
${
self.packages.${system}.yorick-home
}/activate || (echo "restoring old profile"; ${pkgs.nix}/bin/nix profile install $old_profile)
'';
};
})) // {
overlays.default = nixpkgs.lib.composeManyExtensions [
2023-07-20 15:29:02 +02:00
#nixpkgs-wayland.overlay
nixpkgs-mozilla.overlay
2022-10-04 10:15:29 +02:00
emacs-overlay.overlay
2023-04-23 09:42:35 +02:00
agenix.overlays.default
2024-02-17 15:14:16 +01:00
attic.overlays.default
2022-10-04 10:15:29 +02:00
(import ./fixups.nix)
(import ./pkgs)
(import ./pkgs/mdr.nix)
(final: prev: {
flake-inputs = inputs;
2023-04-11 15:39:27 +02:00
nix-npm-buildpackage = nix-npm-buildpackage.legacyPackages."${final.system}";
2023-11-14 21:57:15 +01:00
fooocus = inputs.fooocus.packages.${final.system}.default;
2023-07-20 15:29:02 +02:00
inherit (nixpkgs-wayland.packages.${final.system}) wldash;
2022-10-04 10:15:29 +02:00
})
(import ./nixos/overlay.nix)
];
nixosConfigurations = self.legacyPackages.x86_64-linux.yorick.machine;
};
2022-05-15 14:35:03 +02:00
}