feat: deduplicate flake lock, set up treefmt-nix

This commit is contained in:
Kat Inskip 2025-07-13 05:01:34 -07:00
parent 66d18b0a49
commit 7913481b66
Signed by: kat
GPG key ID: 465E64DECEA8CF0F
15 changed files with 830 additions and 876 deletions

1383
flake.lock generated

File diff suppressed because it is too large Load diff

View file

@ -1,6 +1,9 @@
{
description = "Kat's Infrastructure";
inputs = {
rust-overlay.url = "github:oxalica/rust-overlay";
rust.url = "github:arcnmx/nixexprs-rust";
treefmt-nix.url = "github:numtide/treefmt-nix";
lix-module = {
url = "https://git.lix.systems/lix-project/nixos-module/archive/2.93.2-1.tar.gz";
inputs.nixpkgs.follows = "nixpkgs";
@ -8,6 +11,7 @@
systems.url = "github:nix-systems/default";
# TODO: https://github.com/catppuccin/nix/issues/601
catppuccin.url = "github:catppuccin/nix";#/194881dd2ad6303bc2d49f9ce484d127372d7465";
flake-parts.url = "github:hercules-ci/flake-parts";
# to allow non-nix 2.4 evaluation
flake-compat = {
url = "github:edolstra/flake-compat";
@ -20,12 +24,6 @@
};
nix-gaming.url = "github:fufexan/nix-gaming";
hyprland = {
url = "github:hyprwm/Hyprland/v0.49.0";
inputs = {
nixpkgs.follows = "nixpkgs";
};
};
# used for overriding unwanted flake inputs
empty.url = "github:input-output-hk/empty-flake";
# self-explanatory
@ -87,26 +85,30 @@
lanzaboote = {
url = "github:nix-community/lanzaboote/v0.4.2";
# Optional but recommended to limit the size of your system closure.
inputs = {
nixpkgs.follows = "nixpkgs";
flake-utils.follows = "utils";
flake-compat.follows = "flake-compat";
};
};
catppuccin-qtct = {
type = "github";
owner = "catppuccin";
repo = "qt5ct";
flake = false;
};
spicetify-nix.url = "github:Gerg-L/spicetify-nix";
push2talk = {
url = "github:cyrinux/push2talk/main";
inputs = {
nixpkgs.follows = "nixpkgs";
flake-utils.follows = "utils";
flake-utils.follows = "flake-utils";
};
};
wezterm = {
url = "github:wez/wezterm/main?dir=nix";
inputs = {
nixpkgs.follows = "nixpkgs";
flake-utils.follows = "utils";
flake-utils.follows = "flake-utils";
};
};
ci = {
@ -127,7 +129,7 @@
inputs = {
flake-compat.follows = "flake-compat";
nixpkgs.follows = "nixpkgs";
utils.follows = "utils";
utils.follows = "flake-utils";
};
};
# self-explanatory
@ -147,19 +149,10 @@
url = "github:cmacrae/spacebar/v1.4.0";
inputs = {
nixpkgs.follows = "nixpkgs";
flake-utils.follows = "utils";
flake-utils.follows = "flake-utils";
};
};
# WSL host
wsl = {
url = "github:nix-community/NixOS-WSL";
inputs = {
nixpkgs.follows = "nixpkgs";
flake-utils.follows = "utils";
flake-compat.follows = "flake-compat";
};
};
utils = {
flake-utils = {
url = "github:numtide/flake-utils";
inputs.systems.follows = "systems";
};
@ -177,7 +170,7 @@
url = "github:kittywitch/konawall-py";
inputs = {
nixpkgs.follows = "nixpkgs";
flake-utils.follows = "utils";
flake-utils.follows = "flake-utils";
};
};
# hardware quirks
@ -187,7 +180,6 @@
url = "github:Mic92/sops-nix";
inputs = {
nixpkgs.follows = "nixpkgs";
nixpkgs-stable.follows = "nixpkgs";
};
};
# pre-computed nix-index
@ -199,7 +191,7 @@
url = "github:Infinidoge/nix-minecraft";
inputs = {
nixpkgs.follows = "nixpkgs";
flake-utils.follows = "utils";
flake-utils.follows = "flake-utils";
flake-compat.follows = "flake-compat";
};
};

View file

@ -1,8 +0,0 @@
{
inputs,
pkgs,
...
}:
inputs.utils.lib.eachDefaultSystem (system: {
${system} = pkgs.${system}.alejandra;
})

13
formatting.nix Normal file
View file

@ -0,0 +1,13 @@
{
inputs,
pkgs,
...
}:
inputs.flake-utils.lib.eachDefaultSystem (system: let
treefmtEval = inputs.treefmt-nix.lib.evalModule inputs.nixpkgs.legacyPackages.${system} ./treefmt.nix;
in {
formatter = treefmtEval.config.build.wrapper;
checks = {
formatting = treefmtEval.config.build.check inputs.self;
};
})

View file

@ -21,12 +21,14 @@ in {
};
};
services.mako = mkForce {
services.mako = {
enable = true;
font = "Monaspace Krypton 10";
defaultTimeout = 3000;
borderColor = palette.base08;
backgroundColor = "${palette.base00}BF";
textColor = palette.base05;
settings = {
font = "Monaspace Krypton 10";
defaultTimeout = 3000;
borderColor = palette.base08;
backgroundColor = "${palette.base00}BF";
textColor = palette.base05;
};
};
}

View file

@ -1,16 +1,218 @@
{ lib, ... }: let
{ lib, pkgs, inputs, ... }: let
inherit (lib) mkForce;
qtct = ''
[Appearance]
color_scheme_path=${inputs.catppuccin-qtct}/themes/Catppuccin-Frappe.conf
custom_palette=true
icon_theme=Breeze
standard_dialogs=kde
style=Breeze
'';
colors = pkgs.writeTextFile {
name = "colors";
text = ''
@define-color accent_color ${config.palette.${config.catppuccin.accent}.hex};
@define-color accent_bg_color ${config.palette.${config.catppuccin.accent}.hex};
@define-color accent_fg_color ${config.palette.base.hex};
@define-color destructive_color ${config.palette.red.hex};
@define-color destructive_bg_color ${config.palette.red.hex};
@define-color destructive_fg_color ${config.palette.base.hex};
@define-color success_color ${config.palette.green.hex};
@define-color success_bg_color ${config.palette.green.hex};
@define-color success_fg_color ${config.palette.base.hex};
@define-color warning_color ${config.palette.mauve.hex};
@define-color warning_bg_color ${config.palette.mauve.hex};
@define-color warning_fg_color ${config.palette.base.hex};
@define-color error_color ${config.palette.red.hex};
@define-color error_bg_color ${config.palette.red.hex};
@define-color error_fg_color ${config.palette.base.hex};
@define-color window_bg_color ${config.palette.base.hex};
@define-color window_fg_color ${config.palette.text.hex};
@define-color view_bg_color ${config.palette.base.hex};
@define-color view_fg_color ${config.palette.text.hex};
@define-color headerbar_bg_color ${config.palette.mantle.hex};
@define-color headerbar_fg_color ${config.palette.text.hex};
@define-color headerbar_border_color rgba(${builtins.toString config.palette.base.rgb.r}, ${builtins.toString config.palette.base.rgb.g}, ${builtins.toString config.palette.base.rgb.b}, 0.7);
@define-color headerbar_backdrop_color @window_bg_color;
@define-color headerbar_shade_color rgba(0, 0, 0, 0.07);
@define-color headerbar_darker_shade_color rgba(0, 0, 0, 0.07);
@define-color sidebar_bg_color ${config.palette.mantle.hex};
@define-color sidebar_fg_color ${config.palette.text.hex};
@define-color sidebar_backdrop_color @window_bg_color;
@define-color sidebar_shade_color rgba(0, 0, 0, 0.07);
@define-color secondary_sidebar_bg_color @sidebar_bg_color;
@define-color secondary_sidebar_fg_color @sidebar_fg_color;
@define-color secondary_sidebar_backdrop_color @sidebar_backdrop_color;
@define-color secondary_sidebar_shade_color @sidebar_shade_color;
@define-color card_bg_color ${config.palette.mantle.hex};
@define-color card_fg_color ${config.palette.text.hex};
@define-color card_shade_color rgba(0, 0, 0, 0.07);
@define-color dialog_bg_color ${config.palette.mantle.hex};
@define-color dialog_fg_color ${config.palette.text.hex};
@define-color popover_bg_color ${config.palette.mantle.hex};
@define-color popover_fg_color ${config.palette.text.hex};
@define-color popover_shade_color rgba(0, 0, 0, 0.07);
@define-color shade_color rgba(0, 0, 0, 0.07);
@define-color scrollbar_outline_color ${config.palette.surface0.hex};
@define-color blue_1 ${config.palette.blue.hex};
@define-color blue_2 ${config.palette.blue.hex};
@define-color blue_3 ${config.palette.blue.hex};
@define-color blue_4 ${config.palette.blue.hex};
@define-color blue_5 ${config.palette.blue.hex};
@define-color green_1 ${config.palette.green.hex};
@define-color green_2 ${config.palette.green.hex};
@define-color green_3 ${config.palette.green.hex};
@define-color green_4 ${config.palette.green.hex};
@define-color green_5 ${config.palette.green.hex};
@define-color yellow_1 ${config.palette.yellow.hex};
@define-color yellow_2 ${config.palette.yellow.hex};
@define-color yellow_3 ${config.palette.yellow.hex};
@define-color yellow_4 ${config.palette.yellow.hex};
@define-color yellow_5 ${config.palette.yellow.hex};
@define-color orange_1 ${config.palette.peach.hex};
@define-color orange_2 ${config.palette.peach.hex};
@define-color orange_3 ${config.palette.peach.hex};
@define-color orange_4 ${config.palette.peach.hex};
@define-color orange_5 ${config.palette.peach.hex};
@define-color red_1 ${config.palette.red.hex};
@define-color red_2 ${config.palette.red.hex};
@define-color red_3 ${config.palette.red.hex};
@define-color red_4 ${config.palette.red.hex};
@define-color red_5 ${config.palette.red.hex};
@define-color purple_1 ${config.palette.mauve.hex};
@define-color purple_2 ${config.palette.mauve.hex};
@define-color purple_3 ${config.palette.mauve.hex};
@define-color purple_4 ${config.palette.mauve.hex};
@define-color purple_5 ${config.palette.mauve.hex};
@define-color brown_1 ${config.palette.flamingo.hex};
@define-color brown_2 ${config.palette.flamingo.hex};
@define-color brown_3 ${config.palette.flamingo.hex};
@define-color brown_4 ${config.palette.flamingo.hex};
@define-color brown_5 ${config.palette.flamingo.hex};
@define-color light_1 ${config.palette.mantle.hex};
@define-color light_2 ${config.palette.mantle.hex};
@define-color light_3 ${config.palette.mantle.hex};
@define-color light_4 ${config.palette.mantle.hex};
@define-color light_5 ${config.palette.mantle.hex};
@define-color dark_1 ${config.palette.mantle.hex};
@define-color dark_2 ${config.palette.mantle.hex};
@define-color dark_3 ${config.palette.mantle.hex};
@define-color dark_4 ${config.palette.mantle.hex};
@define-color dark_5 ${config.palette.mantle.hex};
'';
};
gtk4-vars = pkgs.writeTextFile {
name = "gtk4-vars";
text = ''
:root {
--accent-bg-color: @accent_bg_color;
--accent-fg-color: @accent_fg_color;
--destructive-bg-color: @destructive_bg_color;
--destructive-fg-color: @destructive_fg_color;
--success-bg-color: @success_bg_color;
--success-fg-color: @success_fg_color;
--warning-bg-color: @warning_bg_color;
--warning-fg-color: @warning_fg_color;
--error-bg-color: @error_bg_color;
--error-fg-color: @error_fg_color;
--window-bg-color: @window_bg_color;
--window-fg-color: @window_fg_color;
--view-bg-color: @view_bg_color;
--view-fg-color: @view_fg_color;
--headerbar-bg-color: @headerbar_bg_color;
--headerbar-fg-color: @headerbar_fg_color;
--headerbar-border-color: @headerbar_border_color;
--headerbar-backdrop-color: @headerbar_backdrop_color;
--headerbar-shade-color: @headerbar_shade_color;
--headerbar-darker-shade-color: @headerbar_darker_shade_color;
--sidebar-bg-color: @sidebar_bg_color;
--sidebar-fg-color: @sidebar_fg_color;
--sidebar-backdrop-color: @sidebar_backdrop_color;
--sidebar-border-color: @sidebar_border_color;
--sidebar-shade-color: @sidebar_shade_color;
--secondary-sidebar-bg-color: @secondary_sidebar_bg_color;
--secondary-sidebar-fg-color: @secondary_sidebar_fg_color;
--secondary-sidebar-backdrop-color: @secondary_sidebar_backdrop_color;
--secondary-sidebar-border-color: @secondary_sidebar_border_color;
--secondary-sidebar-shade-color: @secondary_sidebar_shade_color;
--card-bg-color: @card_bg_color;
--card-fg-color: @card_fg_color;
--card-shade-color: @card_shade_color;
--dialog-bg-color: @dialog_bg_color;
--dialog-fg-color: @dialog_fg_color;
--popover-bg-color: @popover_bg_color;
--popover-fg-color: @popover_fg_color;
--popover-shade-color: @popover_shade_color;
--thumbnail-bg-color: @thumbnail_bg_color;
--thumbnail-fg-color: @thumbnail_fg_color;
--shade-color: @shade_color;
--scrollbar-outline-color: @scrollbar_outline_color;
}
'';
};
in {
catppuccin = {
enable = true;
flavor = "frappe";
firefox.profiles = mkForce {};
kvantum.enable = false;
gtk = {
enable = true;
enable = false;
icon.enable = true;
gnomeShellTheme = mkForce false;
};
};
dconf.settings = mkForce { };
gtk.enable = true;
# https://git.gay/olivia/fur/src/branch/main/modules/home/theming/qt/default.nix
qt = {
enable = true;
platformTheme.name = "qtct";
};
xdg.configFile = {
"qt5ct/qt5ct.conf".text = qtct;
"qt6ct/qt6ct.conf".text = qtct;
};
home.packages = [
pkgs.kdePackages.breeze
pkgs.kdePackages.breeze-icons
];
dconf.settings = {
"org/gnome/desktop/interface" = {
color-scheme = "prefer-dark";
};
};
gtk = {
enable = true;
theme = {
name = "adw-gtk3-dark";
package = pkgs.adw-gtk3;
};
gtk3 = {
extraCss = ''@import url("${colors}");'';
extraConfig = {
gtk-application-prefer-dark-theme = 1;
};
};
gtk4 = {
extraCss = ''
@import url("${colors}");
@import url("${gtk4-vars}");
'';
};
};
}

View file

@ -28,7 +28,7 @@ in {
enable = true;
syntaxHighlighting.enable = true;
autosuggestion.enable = true;
initExtra = let
initContent = let
zshOpts = [
"auto_pushd"
"pushd_ignore_dups"

View file

@ -1,5 +1,5 @@
_: {
programs.zsh.initExtraFirst = ''
{ lib, ... }: {
programs.zsh.initContent = lib.mkBefore ''
source /etc/static/zshrc
'';
}

View file

@ -7,9 +7,6 @@
overlays = import tree.overlays {inherit inputs tree;};
config = {
allowUnfree = true;
permittedInsecurePackages = [
"olm-3.2.16"
];
};
};
}

View file

@ -6,15 +6,17 @@
systems = import ./systems {inherit inputs tree lib std pkgs;};
shells = import ./shells {inherit inputs tree lib std pkgs;};
inherit (import ./pkgs.nix {inherit inputs tree overlay;}) pkgs;
formatter = import ./formatter.nix {inherit inputs pkgs;};
formatting = import ./formatting.nix {inherit inputs pkgs;};
wrappers = import ./wrappers {inherit inputs;};
inherit (std) set;
checks = set.map (_: deployLib: deployLib.deployChecks inputs.self.deploy) inputs.deploy-rs.lib;
in
{
inherit inputs tree std pkgs formatter lib checks;
inherit inputs tree std pkgs lib;
legacyPackages = pkgs;
packages = set.merge [pkgs wrappers.packages];
checks = checks // formatting.checks;
formatter = formatting.formatter;
}
// systems
// shells

View file

@ -5,7 +5,7 @@
}: let
overlays = import tree.overlays {inherit inputs tree;};
in
inputs.utils.lib.eachDefaultSystem (system: {
inputs.flake-utils.lib.eachDefaultSystem (system: {
pkgs = import inputs.nixpkgs {
inherit system overlays;
config = {

View file

@ -8,7 +8,7 @@
}: let
inherit (std) set;
in
inputs.utils.lib.eachDefaultSystem (system: {
inputs.flake-utils.lib.eachDefaultSystem (system: {
devShells = let
shells = set.map (_: path:
import path {

View file

@ -54,11 +54,7 @@ _: let
#secureboot
])
++ (with tree.nixos.environments; [
#sway
#xfce
#openbox
hyprland
#gnome
niri
]);
config = {
home-manager.users.kat.imports =
@ -66,10 +62,7 @@ _: let
graphical
])
++ (with tree.home.environments; [
#xfce
#sway
hyprland
#gnome
niri
]);
fileSystems = datasetEntries // {

8
treefmt.nix Normal file
View file

@ -0,0 +1,8 @@
{ pkgs, ... }: {
projectRootFile = "flake.nix";
programs = {
alejandra.enable = true;
terraform.enable = true;
beautysh.enable = true;
};
}

View file

@ -1,5 +1,5 @@
{inputs, ...} @ args:
inputs.utils.lib.eachDefaultSystem (system: let
inputs.flake-utils.lib.eachDefaultSystem (system: let
newArgs = args // {inherit system;};
in {
packages = {