diff --git a/flake.lock b/flake.lock index 785807f..6e8e01f 100644 --- a/flake.lock +++ b/flake.lock @@ -1,27 +1,5 @@ { "nodes": { - "dms": { - "inputs": { - "nixpkgs": [ - "nixpkgs" - ], - "quickshell": "quickshell" - }, - "locked": { - "lastModified": 1772034342, - "narHash": "sha256-InX8kRyrpVL+MP/gW1qhH9tGtDx2z2gmJ9NfmvUJ35I=", - "owner": "AvengeMedia", - "repo": "DankMaterialShell", - "rev": "47b12d09fc8526f9c231de60848a41b5990b4a37", - "type": "github" - }, - "original": { - "owner": "AvengeMedia", - "ref": "stable", - "repo": "DankMaterialShell", - "type": "github" - } - }, "flake-parts": { "inputs": { "nixpkgs-lib": [ @@ -44,11 +22,11 @@ }, "import-tree": { "locked": { - "lastModified": 1772344373, - "narHash": "sha256-OQQ1MhB9t1J71b2wxRRTdH/Qd8UGG0p+dGspfCf5U1c=", + "lastModified": 1772999353, + "narHash": "sha256-dPb0WxUhFaz6wuR3B6ysqFJpsu8txKDPZvS47AT2XLI=", "owner": "vic", "repo": "import-tree", - "rev": "10fda59eee7d7970ec443b925f32a1bc7526648c", + "rev": "545a4df146fce44d155573e47f5a777985acf912", "type": "github" }, "original": { @@ -73,34 +51,32 @@ "type": "github" } }, - "quickshell": { + "root": { + "inputs": { + "flake-parts": "flake-parts", + "import-tree": "import-tree", + "nixpkgs": "nixpkgs", + "zen-browser": "zen-browser" + } + }, + "zen-browser": { "inputs": { "nixpkgs": [ - "dms", "nixpkgs" ] }, "locked": { - "lastModified": 1766725085, - "narHash": "sha256-O2aMFdDUYJazFrlwL7aSIHbUSEm3ADVZjmf41uBJfHs=", - "ref": "refs/heads/master", - "rev": "41828c4180fb921df7992a5405f5ff05d2ac2fff", - "revCount": 715, - "type": "git", - "url": "https://git.outfoxxed.me/quickshell/quickshell" + "lastModified": 1772685307, + "narHash": "sha256-5xthZHeqwBeXNhnRIlxnCuaZLky0SZ6vQsxtd+eqhTU=", + "owner": "youwen5", + "repo": "zen-browser-flake", + "rev": "dc92d88524ee83308795bc90f6a9f1d965265aaa", + "type": "github" }, "original": { - "rev": "41828c4180fb921df7992a5405f5ff05d2ac2fff", - "type": "git", - "url": "https://git.outfoxxed.me/quickshell/quickshell" - } - }, - "root": { - "inputs": { - "dms": "dms", - "flake-parts": "flake-parts", - "import-tree": "import-tree", - "nixpkgs": "nixpkgs" + "owner": "youwen5", + "repo": "zen-browser-flake", + "type": "github" } } }, diff --git a/flake.nix b/flake.nix index 3bd9095..bc7b14a 100644 --- a/flake.nix +++ b/flake.nix @@ -1,25 +1,25 @@ { inputs = { + # Essential nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; - flake-parts.url = "github:hercules-ci/flake-parts"; - flake-parts.inputs.nixpkgs-lib.follows = "nixpkgs"; - import-tree.url = "github:vic/import-tree"; - - dms = { - url = "github:AvengeMedia/DankMaterialShell/stable"; - inputs.nixpkgs.follows = "nixpkgs"; + + flake-parts = { + url = "github:hercules-ci/flake-parts"; + inputs.nixpkgs-lib.follows = "nixpkgs"; }; + + import-tree.url = "github:vic/import-tree"; + + # Third-party + zen-browser = { + url = "github:youwen5/zen-browser-flake"; + inputs.nixpkgs.follows = "nixpkgs"; + }; }; - outputs = inputs@{ flake-parts, nixpkgs, ... }: - flake-parts.lib.mkFlake { inherit inputs; } { - systems = [ "x86_64-linux" "aarch64-linux" ]; - imports = [ - ./modules/nixos.nix - ./modules/desktop-ui.nix - ]; - } // { - # re-export inputs for modules to access - inherit inputs; - }; + outputs = + inputs: + inputs.flake-parts.lib.mkFlake { inherit inputs; } + # Imports all of the top-level modules (the files under `./modules`) + (inputs.import-tree ./modules); } diff --git a/modules/configurations.nix b/modules/configurations.nix new file mode 100644 index 0000000..d638e5e --- /dev/null +++ b/modules/configurations.nix @@ -0,0 +1,10 @@ +flake.nixosConfigurations.nixos = inputs.nixpkgs.lib.nixosSystem { + specialArgs = { inherit inputs; }; + modules = [ + self.nixosModules.nixos-host + self.nixosModules.ui + self.nixosModules.packages + self.nixosModules.fonts + self.nixosModules.shell + ]; +}; diff --git a/modules/desktop-ui.nix b/modules/desktop-ui.nix deleted file mode 100644 index 5b81114..0000000 --- a/modules/desktop-ui.nix +++ /dev/null @@ -1,22 +0,0 @@ -{ inputs, ... }: { - -flake.nixosModules.desktop-ui = { pkgs, ... }: { - # Desktop environment - services.xserver.enable = true; - services.xserver.displayManager.gdm.enable = true; - services.xserver.desktopManager.gnome.enable = true; - services.xserver.xkb = { - layout = "us"; - variant = ""; - }; - - # DankMaterialShell - programs.dank-material-shell = { - enable = true; - enableSystemMonitoring = true; - enableDynamicTheming = true; - }; - - programs.niri.enable = true; - services.gnome.gnome-keyring.enable = true; # secret service -};} diff --git a/modules/fonts.nix b/modules/fonts.nix new file mode 100644 index 0000000..5879e8c --- /dev/null +++ b/modules/fonts.nix @@ -0,0 +1,7 @@ +{ inputs, ... }: { + flake.nixosModules.fonts = {pkgs, ...}: { + fonts.packages = with pkgs; [ + nerd-fonts.iosevka-term-slab + ]; + }; +} diff --git a/modules/globals/meta.nix b/modules/globals/meta.nix new file mode 100644 index 0000000..efd3b12 --- /dev/null +++ b/modules/globals/meta.nix @@ -0,0 +1,8 @@ +{ lib, ... }: +{ + options.username = lib.mkOption { + type = lib.types.singleLineStr; + readOnly = true; + default = "thomasgl"; + }; +} diff --git a/modules/globals/systems.nix b/modules/globals/systems.nix new file mode 100644 index 0000000..991fba3 --- /dev/null +++ b/modules/globals/systems.nix @@ -0,0 +1,6 @@ +{ + systems = [ + "x86_64-linux" + "aarch64-linux" + ]; +} diff --git a/modules/nixos.nix b/modules/hosts/nixos.nix similarity index 65% rename from modules/nixos.nix rename to modules/hosts/nixos.nix index 5161e65..0048e34 100644 --- a/modules/nixos.nix +++ b/modules/hosts/nixos.nix @@ -1,15 +1,6 @@ { inputs, self, ... }: { -flake.nixosConfigurations.nixos = inputs.nixpkgs.lib.nixosSystem { - specialArgs = { inherit inputs; }; - modules = [ - inputs.dms.nixosModules.dank-material-shell - self.nixosModules.nixos - self.nixosModules.desktop-ui - ]; -}; - -flake.nixosModules.nixos = {pkgs, ...}: { +flake.nixosModules.nixos-host = {pkgs, ...}: { imports = [ ../hardware-configuration.nix ]; @@ -67,34 +58,13 @@ flake.nixosModules.nixos = {pkgs, ...}: { }; # User account - users.users.thomasgl = { + users.users.${config.username} = { isNormalUser = true; description = "Thomas Gouveia Lopes"; extraGroups = [ "networkmanager" "wheel" ]; - packages = with pkgs; [ - neovim - nodejs_24 - pnpm - fd - ripgrep - fish - go - nerdfetch - git - alacritty - zellij - fzf - autojump - ]; }; - # Fonts - fonts.packages = with pkgs; [ - nerd-fonts.iosevka-term-slab - ]; - # Programs - programs.firefox.enable = true; # Allow unfree nixpkgs.config.allowUnfree = true; @@ -102,18 +72,6 @@ flake.nixosModules.nixos = {pkgs, ...}: { # Enable flakes nix.settings.experimental-features = [ "nix-command" "flakes" ]; - # DankMaterialShell - programs.dank-material-shell = { - enable = true; - enableSystemMonitoring = true; - enableDynamicTheming = true; - }; - - # System packages - environment.systemPackages = with pkgs; [ - # Add system-wide packages here - ]; - # State version system.stateVersion = "25.11"; }; diff --git a/modules/packages.nix b/modules/packages.nix new file mode 100644 index 0000000..af7d13e --- /dev/null +++ b/modules/packages.nix @@ -0,0 +1,23 @@ +{ inputs, ... }: { + flake.nixosModules.packages = {pkgs, ...}: { + environment.systemPackages = with pkgs; [ + neovim + nodejs_24 + pnpm + fd + ripgrep + go + nerdfetch + git + lazygit + mako + libnotify + alacritty + zellij + fzf + autojump + ]; + + programs.firefox.enable = true; + }; +} diff --git a/modules/shell.nix b/modules/shell.nix new file mode 100644 index 0000000..328a97c --- /dev/null +++ b/modules/shell.nix @@ -0,0 +1,7 @@ +{ config, lib, ... }: +{ + flake.nixosModules.shell = { + programs.fish.enable = true; + # users.users.${config.username}.shell = nixosArgs.config.programs.fish.package; + }; +} diff --git a/modules/ui.nix b/modules/ui.nix new file mode 100644 index 0000000..f24a0a0 --- /dev/null +++ b/modules/ui.nix @@ -0,0 +1,33 @@ +{ inputs, ... }: { + flake.nixosModules.ui = { pkgs, ... }: { + # Desktop environment + services.xserver.enable = true; + services.xserver.displayManager.gdm.enable = true; + services.xserver.displayManager.gdm.wayland = true; + services.xserver.desktopManager.gnome.enable = true; + services.xserver.xkb = { + layout = "us"; + variant = ""; + }; + + programs.dms-shell = { + enable = true; + systemd = { + enable = true; # Systemd service for auto-start + restartIfChanged = true; # Auto-restart dms.service when dms-shell changes + }; + + # Core features + enableSystemMonitoring = true; # System monitoring widgets (dgop) + enableVPN = true; # VPN management widget + enableDynamicTheming = true; # Wallpaper-based theming (matugen) + enableAudioWavelength = true; # Audio visualizer (cava) + enableCalendarEvents = true; # Calendar integration (khal) + enableClipboardPaste = true; # Pasting from the clipboard history (wtype) + }; + + programs.niri.enable = true; + services.displayManager.sessionPackages = [ pkgs.niri ]; + services.gnome.gnome-keyring.enable = true; # secret service + }; +}