Files
dotfiles/flake.nix
T
2026-10-08 15:16:05 -04:00

232 lines
6.5 KiB
Nix

{
description = "Home Manager configuration of Joe Frikker";
inputs = {
# Specify the source of Home Manager and Nixpkgs.
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
home-manager = {
url = "github:nix-community/home-manager/master";
inputs.nixpkgs.follows = "nixpkgs";
};
# kube = {
# url = "https://gitea.home-frikker.dedyn.io/jfrikker/kube/archive/1.0.1.tar.gz";
# inputs.nixpkgs.follows = "nixpkgs";
# };
nix-index-database = {
url = "github:nix-community/nix-index-database";
inputs.nixpkgs.follows = "nixpkgs";
};
rycee = {
url = "sourcehut:~rycee/nur-expressions";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs =
{
nixpkgs,
home-manager,
nix-index-database,
rycee,
...
}:
let
pkgs-for-system = (
system:
import nixpkgs {
inherit system;
config.allowUnfree = true;
}
);
modules-for-system =
pkgs:
pkgs.stdenv.mkDerivation {
name = "home-manager-modules";
src = pkgs.lib.fileset.toSource {
root = ./.;
fileset = pkgs.lib.fileset.unions [
./home.org
];
};
buildPhase = ''
runHook preBuild
${pkgs.emacs}/bin/emacs --batch --eval "(require 'org)" --eval '(org-babel-tangle-file "home.org")'
runHook postBuild
'';
installPhase = ''
runHook preInstall
cp -R target $out
runHook postInstall
'';
};
in
{
homeConfigurations.redbook =
let
pkgs = pkgs-for-system "aarch64-darwin";
modules = modules-for-system pkgs;
in
home-manager.lib.homeManagerConfiguration {
inherit pkgs;
modules = [
nix-index-database.homeModules.default
rycee.hmModules.emacs-init
"${modules}"
]
++ [
{
home.stateVersion = "22.05";
home.username = "jfrikker";
home.homeDirectory = "/Users/jfrikker";
home.packages = [ pkgs.pinentry_mac ];
jfrikker.enable = true;
jfrikker.desktop.enable = true;
jfrikker.redbook.enable = true;
}
];
};
homeConfigurations.home =
let
pkgs = pkgs-for-system "x86_64-linux";
modules = modules-for-system pkgs;
in
home-manager.lib.homeManagerConfiguration {
inherit pkgs;
modules = [
nix-index-database.homeModules.default
rycee.hmModules.emacs-init
"${modules}"
]
++ [
{
home.stateVersion = "22.05";
home.username = "jfrikker";
home.homeDirectory = "/home/jfrikker";
jfrikker.enable = true;
}
];
};
homeConfigurations.home-laptop =
let
pkgs = pkgs-for-system "x86_64-linux";
modules = modules-for-system pkgs;
in
home-manager.lib.homeManagerConfiguration {
inherit pkgs;
modules = [
nix-index-database.homeModules.default
rycee.hmModules.emacs-init
"${modules}"
]
++ [
{
home.stateVersion = "22.05";
home.username = "jfrikker";
home.homeDirectory = "/home/jfrikker";
# home.packages = [ pkgs.pinentry ];
jfrikker.enable = true;
jfrikker.desktop.enable = true;
programs.ghostty = {
enable = true;
settings = {
font-family = "Iosevka Term Extended";
font-size = 10;
};
};
programs.foot = {
enable = true;
settings = {
main = {
font = "Iosevka Term:size=10:width=expanded";
};
};
};
home.pointerCursor = {
enable = true;
package = pkgs.vanilla-dmz;
name = "Vanilla-DMZ";
sway.enable = true;
gtk.enable = true;
};
wayland.windowManager.sway = {
enable = true;
config.modifier = "Mod4";
# config.terminal = "${pkgs.ghostty}/bin/ghostty";
config.input = {
"1452:628:bcm5974" = {
scroll_factor = "0.4";
};
};
};
programs.emacs.package = pkgs.emacs-pgtk;
}
];
# extraSpecialArgs = { kube = kube.packages.x86_64-linux.default; };
};
homeConfigurations.msi-laptop =
let pkgs = import nixpkgs { system = "x86_64-linux"; config.allowUnfree = true; };
modules = modules-for-system pkgs;
in home-manager.lib.homeManagerConfiguration {
inherit pkgs;
modules =
[
nix-index-database.homeModules.default
rycee.hmModules.emacs-init
"${modules}"
] ++
[{
home.stateVersion = "22.05";
home.username = "jfrikker";
home.homeDirectory = "/home/jfrikker";
jfrikker.enable = true;
jfrikker.desktop.enable = true;
home.packages = [ pkgs.protonmail-desktop pkgs.proton-vpn ];
programs.ghostty = {
enable = true;
settings = {
font-family = "Iosevka Term Extended";
font-size = 10;
};
};
programs.foot = {
enable = true;
settings = {
main = {
font = "Iosevka Term:size=10:width=expanded";
};
};
};
home.pointerCursor = {
enable = true;
package = pkgs.vanilla-dmz;
name = "Vanilla-DMZ";
sway.enable = true;
gtk.enable = true;
};
programs.emacs.package = pkgs.emacs-pgtk;
}];
};
packages.x86_64-linux.default = modules-for-system nixpkgs.legacyPackages.x86_64-linux;
packages.aarch64-darwin.default = modules-for-system nixpkgs.legacyPackages.aarch64-darwin;
};
}