{ description = "A very basic flake"; inputs = { nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable"; c3d2-user-module.url = "git+https://gitea.c3d2.de/C3D2/nix-user-module.git"; home-manager = { url = "github:nix-community/home-manager"; inputs.nixpkgs.follows = "nixpkgs"; }; niri.url = "github:sodiboo/niri-flake"; nixos-hardware.url = "github:NixOS/nixos-hardware/master"; treefmt-nix = { url = "github:numtide/treefmt-nix"; inputs.nixpkgs.follows = "nixpkgs"; }; determinate.url = "https://flakehub.com/f/DeterminateSystems/determinate/*"; nix-index-db = { url = "github:Mic92/nix-index-database"; inputs.nixpkgs.follows = "nixpkgs"; }; quickshell = { url = "git+https://git.outfoxxed.me/quickshell/quickshell"; inputs.nixpkgs.follows = "nixpkgs"; }; comin = { url = "github:nlewo/comin"; inputs.nixpkgs.follows = "nixpkgs"; }; stylix = { url = "github:nix-community/stylix"; inputs.nixpkgs.follows = "nixpkgs"; }; firefox-addons = { url = "gitlab:rycee/nur-expressions?dir=pkgs/firefox-addons"; inputs.nixpkgs.follows = "nixpkgs"; }; }; outputs = inputs@{ self, nixpkgs, c3d2-user-module, home-manager, niri, nixos-hardware, treefmt-nix, determinate, nix-index-db, quickshell, stylix, comin, firefox-addons, }: let system = "x86_64-linux"; pkgs = nixpkgs.legacyPackages.${system}; # Configure treefmt treefmtEval = treefmt-nix.lib.evalModule pkgs { projectRootFile = "flake.nix"; programs = { nixpkgs-fmt.enable = true; prettier = { enable = true; includes = [ "*.json" "*.yaml" "*.yml" ]; }; taplo.enable = true; }; settings = { global.excludes = [ "*.lock" "result" ".git/" "*.md" "*.sh" "*.py" "*.js" "*.ts" ]; }; }; in { packages.${system}.wallpaper = pkgs.stdenv.mkDerivation { name = "wallpaper"; src = ./assets/wp6553608.jpg; dontUnpack = true; installPhase = '' mkdir -p $out cp $src $out/wallpaper.jpg ''; }; nixosConfigurations.p50 = nixpkgs.lib.nixosSystem { specialArgs = { inherit inputs; }; system = "x86_64-linux"; modules = [ niri.nixosModules.niri nixos-hardware.nixosModules.lenovo-thinkpad-p50 ./configuration.nix determinate.nixosModules.default home-manager.nixosModules.home-manager { home-manager.useGlobalPkgs = true; home-manager.useUserPackages = true; home-manager.backupFileExtension = "backup"; home-manager.users.lucy = { config, pkgs, lib, inputs, ... }: { imports = [ ./modules/home.nix ]; # Configure dconf settings here or inside home.nix # Example: # home.sessionVariables = { # XDG_CURRENT_DESKTOP = "GNOME"; # }; }; } c3d2-user-module.nixosModule ./modules/nix.nix ./modules/fonts.nix comin.nixosModules.comin ./modules/comin.nix stylix.nixosModules.stylix ./modules/stylix.nix ]; }; # Add treefmt formatter formatter.${system} = treefmtEval.config.build.wrapper; # Optional: Add a dev shell with treefmt devShells.${system}.default = pkgs.mkShell { buildInputs = with pkgs; [ git treefmtEval.config.build.wrapper ]; shellHook = '' echo "Development shell loaded!" echo "Run 'nix fmt' to format all files" echo "Run 'treefmt' to format with treefmt directly" ''; }; # Optional: Add formatting check checks.${system} = { formatting = treefmtEval.config.build.check self; }; }; }