diff --git a/desktop/cursor.nix b/_old/desktop/cursor.nix similarity index 100% rename from desktop/cursor.nix rename to _old/desktop/cursor.nix diff --git a/desktop/default.nix b/_old/desktop/default.nix similarity index 100% rename from desktop/default.nix rename to _old/desktop/default.nix diff --git a/desktop/hyprland.nix b/_old/desktop/hyprland.nix similarity index 100% rename from desktop/hyprland.nix rename to _old/desktop/hyprland.nix diff --git a/desktop/hyprpaper.nix b/_old/desktop/hyprpaper.nix similarity index 100% rename from desktop/hyprpaper.nix rename to _old/desktop/hyprpaper.nix diff --git a/desktop/waybar/default.nix b/_old/desktop/waybar/default.nix similarity index 100% rename from desktop/waybar/default.nix rename to _old/desktop/waybar/default.nix diff --git a/desktop/waybar/power_menu.xml b/_old/desktop/waybar/power_menu.xml similarity index 100% rename from desktop/waybar/power_menu.xml rename to _old/desktop/waybar/power_menu.xml diff --git a/desktop/waybar/style.css b/_old/desktop/waybar/style.css similarity index 100% rename from desktop/waybar/style.css rename to _old/desktop/waybar/style.css diff --git a/flake.lock b/_old/flake.lock similarity index 100% rename from flake.lock rename to _old/flake.lock diff --git a/flake.nix b/_old/flake.nix similarity index 100% rename from flake.nix rename to _old/flake.nix diff --git a/git.nix b/_old/git.nix similarity index 100% rename from git.nix rename to _old/git.nix diff --git a/home.nix b/_old/home.nix similarity index 100% rename from home.nix rename to _old/home.nix diff --git a/kitty.nix b/_old/kitty.nix similarity index 100% rename from kitty.nix rename to _old/kitty.nix diff --git a/nixvim/autocmd.nix b/_old/nixvim/autocmd.nix similarity index 100% rename from nixvim/autocmd.nix rename to _old/nixvim/autocmd.nix diff --git a/nixvim/basic.nix b/_old/nixvim/basic.nix similarity index 100% rename from nixvim/basic.nix rename to _old/nixvim/basic.nix diff --git a/nixvim/default.nix b/_old/nixvim/default.nix similarity index 100% rename from nixvim/default.nix rename to _old/nixvim/default.nix diff --git a/nixvim/keymaps.nix b/_old/nixvim/keymaps.nix similarity index 100% rename from nixvim/keymaps.nix rename to _old/nixvim/keymaps.nix diff --git a/nixvim/lsp.nix b/_old/nixvim/lsp.nix similarity index 100% rename from nixvim/lsp.nix rename to _old/nixvim/lsp.nix diff --git a/nixvim/plugins/default.nix b/_old/nixvim/plugins/default.nix similarity index 100% rename from nixvim/plugins/default.nix rename to _old/nixvim/plugins/default.nix diff --git a/nixvim/plugins/gitsigns.nix b/_old/nixvim/plugins/gitsigns.nix similarity index 100% rename from nixvim/plugins/gitsigns.nix rename to _old/nixvim/plugins/gitsigns.nix diff --git a/nixvim/plugins/mini.nix b/_old/nixvim/plugins/mini.nix similarity index 100% rename from nixvim/plugins/mini.nix rename to _old/nixvim/plugins/mini.nix diff --git a/nixvim/plugins/telescope.nix b/_old/nixvim/plugins/telescope.nix similarity index 100% rename from nixvim/plugins/telescope.nix rename to _old/nixvim/plugins/telescope.nix diff --git a/nixvim/plugins/treesitter.nix b/_old/nixvim/plugins/treesitter.nix similarity index 100% rename from nixvim/plugins/treesitter.nix rename to _old/nixvim/plugins/treesitter.nix diff --git a/nixvim/plugins/trouble.nix b/_old/nixvim/plugins/trouble.nix similarity index 100% rename from nixvim/plugins/trouble.nix rename to _old/nixvim/plugins/trouble.nix diff --git a/nixvim/plugins/which-key.nix b/_old/nixvim/plugins/which-key.nix similarity index 100% rename from nixvim/plugins/which-key.nix rename to _old/nixvim/plugins/which-key.nix diff --git a/shell/bash.nix b/_old/shell/bash.nix similarity index 100% rename from shell/bash.nix rename to _old/shell/bash.nix diff --git a/shell/completions.zsh b/_old/shell/completions.zsh similarity index 100% rename from shell/completions.zsh rename to _old/shell/completions.zsh diff --git a/shell/default.nix b/_old/shell/default.nix similarity index 100% rename from shell/default.nix rename to _old/shell/default.nix diff --git a/shell/keybindings.zsh b/_old/shell/keybindings.zsh similarity index 100% rename from shell/keybindings.zsh rename to _old/shell/keybindings.zsh diff --git a/shell/zsh.nix b/_old/shell/zsh.nix similarity index 100% rename from shell/zsh.nix rename to _old/shell/zsh.nix diff --git a/ssh.nix b/_old/ssh.nix similarity index 100% rename from ssh.nix rename to _old/ssh.nix diff --git a/systems/flock/configuration.nix b/_old/systems/flock/configuration.nix similarity index 100% rename from systems/flock/configuration.nix rename to _old/systems/flock/configuration.nix diff --git a/systems/flock/hardware-configuration.nix b/_old/systems/flock/hardware-configuration.nix similarity index 100% rename from systems/flock/hardware-configuration.nix rename to _old/systems/flock/hardware-configuration.nix diff --git a/systems/perch/configuration.nix b/_old/systems/perch/configuration.nix similarity index 100% rename from systems/perch/configuration.nix rename to _old/systems/perch/configuration.nix diff --git a/systems/perch/hardware-configuration.nix b/_old/systems/perch/hardware-configuration.nix similarity index 100% rename from systems/perch/hardware-configuration.nix rename to _old/systems/perch/hardware-configuration.nix -- 2.51.2 From eec78cdbf1afa0640a7ef10ec365633f03a60de2 Mon Sep 17 00:00:00 2001 From: Alex van de Sandt Date: Wed, 24 Jun 2026 12:49:18 -0500 Subject: [PATCH 02/16] Copy baseline configs to default den template --- .gitignore | 2 + README.md | 33 +++++ flake.lock | 117 ++++++++++++++++++ flake.nix | 23 ++++ modules/defaults.nix | 27 ++++ modules/dendritic.nix | 17 +++ modules/hosts.nix | 4 + .../hosts/flock/_hardware-configuration.nix | 0 modules/hosts/flock/flock.nix | 25 ++++ .../hosts/perch/_hardware-configuration.nix | 0 modules/hosts/perch/perch.nix | 25 ++++ modules/igneous.nix | 35 ++++++ modules/nh.nix | 9 ++ modules/vm.nix | 21 ++++ 14 files changed, 338 insertions(+) create mode 100644 .gitignore create mode 100644 README.md create mode 100644 flake.lock create mode 100644 flake.nix create mode 100644 modules/defaults.nix create mode 100644 modules/dendritic.nix create mode 100644 modules/hosts.nix rename _old/systems/flock/hardware-configuration.nix => modules/hosts/flock/_hardware-configuration.nix (100%) create mode 100644 modules/hosts/flock/flock.nix rename _old/systems/perch/hardware-configuration.nix => modules/hosts/perch/_hardware-configuration.nix (100%) create mode 100644 modules/hosts/perch/perch.nix create mode 100644 modules/igneous.nix create mode 100644 modules/nh.nix create mode 100644 modules/vm.nix diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..7499ef4 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +nixos.qcow2 +flock.qcow2 diff --git a/README.md b/README.md new file mode 100644 index 0000000..8ce3925 --- /dev/null +++ b/README.md @@ -0,0 +1,33 @@ +# Getting Started Guide + +Steps you can follow after cloning this template: + +- Be sure to read the [den documentation](https://den.denful.dev) + +- Update den input. + +```console +nix flake update den +``` + +- Edit [modules/hosts.nix](modules/hosts.nix) + +- Build + +```console +# default action is build +nix run .#igloo + +# pass any other nh action +nix run .#igloo -- switch +``` + +- Run the VM + +We recommend to use a VM develop cycle so you can play with the system before applying to your hardware. + +See [modules/vm.nix](modules/vm.nix) + +```console +nix run .#vm +``` diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..9f3ed13 --- /dev/null +++ b/flake.lock @@ -0,0 +1,117 @@ +{ + "nodes": { + "den": { + "locked": { + "lastModified": 1781621963, + "narHash": "sha256-8Mntz200pNVIF2l8twpdc4wvEFqzrlkICz2tvkfwz0s=", + "owner": "denful", + "repo": "den", + "rev": "5df0987658d6e44268abba953406480e9f066928", + "type": "github" + }, + "original": { + "owner": "denful", + "repo": "den", + "type": "github" + } + }, + "flake-file": { + "locked": { + "lastModified": 1781217157, + "narHash": "sha256-N3q/SP2Ropk336e9KSgLh7kpROY6P70dprYdbPIfd5c=", + "owner": "vic", + "repo": "flake-file", + "rev": "ce63eaf7ebfe04a176653f66385a7f0a36380cee", + "type": "github" + }, + "original": { + "owner": "vic", + "repo": "flake-file", + "type": "github" + } + }, + "flake-parts": { + "inputs": { + "nixpkgs-lib": [ + "nixpkgs-lib" + ] + }, + "locked": { + "lastModified": 1778716662, + "narHash": "sha256-m1Yf0wZ8j1OHjTc2UwHwyQRSnNeSgLJOd7q5Y45hzi4=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "f7c1a2d347e4c52d5fb8d10cb4d94b5884e546fb", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "home-manager": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1782220169, + "narHash": "sha256-NxykfEdGQjop9m49Bk61pXpAduH8ICHgXC1N3Ph3Jp0=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "4b0b9474749820afac53ea30d4ccfef60aba5ce6", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "home-manager", + "type": "github" + } + }, + "import-tree": { + "locked": { + "lastModified": 1778781969, + "narHash": "sha256-Jjuz5CmSkur8KvLDoGa+vylEp+RkQtv4mt/qcMznpH0=", + "owner": "vic", + "repo": "import-tree", + "rev": "d321337efd0f23a9eb14a42adb7b2c29313ab274", + "type": "github" + }, + "original": { + "owner": "vic", + "repo": "import-tree", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1782175435, + "narHash": "sha256-8d2wCNWKnd86GzKZvbuqqlS+HqMrheXkvRf0qGJ/oA0=", + "rev": "89570f24e97e614aa34aa9ab1c927b6578a43775", + "type": "tarball", + "url": "https://releases.nixos.org/nixpkgs/nixpkgs-26.11pre1020805.89570f24e97e/nixexprs.tar.xz" + }, + "original": { + "type": "tarball", + "url": "https://channels.nixos.org/nixpkgs-unstable/nixexprs.tar.xz" + } + }, + "root": { + "inputs": { + "den": "den", + "flake-file": "flake-file", + "flake-parts": "flake-parts", + "home-manager": "home-manager", + "import-tree": "import-tree", + "nixpkgs": "nixpkgs", + "nixpkgs-lib": [ + "nixpkgs" + ] + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..e6b5b43 --- /dev/null +++ b/flake.nix @@ -0,0 +1,23 @@ +# DO-NOT-EDIT. This file was auto-generated using github:vic/flake-file. +# Use `nix run .#write-flake` to regenerate it. +{ + + outputs = inputs: inputs.flake-parts.lib.mkFlake { inherit inputs; } (inputs.import-tree ./modules); + + inputs = { + den.url = "github:denful/den"; + flake-file.url = "github:vic/flake-file"; + flake-parts = { + inputs.nixpkgs-lib.follows = "nixpkgs-lib"; + url = "github:hercules-ci/flake-parts"; + }; + home-manager = { + inputs.nixpkgs.follows = "nixpkgs"; + url = "github:nix-community/home-manager"; + }; + import-tree.url = "github:vic/import-tree"; + nixpkgs.url = "https://channels.nixos.org/nixpkgs-unstable/nixexprs.tar.xz"; + nixpkgs-lib.follows = "nixpkgs"; + }; + +} diff --git a/modules/defaults.nix b/modules/defaults.nix new file mode 100644 index 0000000..09d465c --- /dev/null +++ b/modules/defaults.nix @@ -0,0 +1,27 @@ +{ lib, den, ... }: +{ + den.default.homeManager.home.stateVersion = "26.05"; + + # enable hm by default + den.schema.user.classes = lib.mkDefault [ "homeManager" ]; + + den.default.nixos = { pkgs, ... }: { + system.stateVersion = "25.05"; + + boot.loader.systemd-boot.enable = true; + boot.loader.efi.canTouchEfiVariables = true; + + networking.networkmanager.enable = true; + + time.timeZone = "America/Chicago"; + + i18n.defaultLocale = "en_US.UTF-8"; + + environment.systemPackages = with pkgs; [ nh ]; + + nix.settings.experimental-features = [ + "nix-command" + "flakes" + ]; + }; +} diff --git a/modules/dendritic.nix b/modules/dendritic.nix new file mode 100644 index 0000000..415b185 --- /dev/null +++ b/modules/dendritic.nix @@ -0,0 +1,17 @@ +{ inputs, ... }: +{ + imports = [ + (inputs.flake-file.flakeModules.dendritic or { }) + (inputs.den.flakeModules.dendritic or { }) + ]; + + # other inputs may be defined at a module using them. + flake-file.inputs = { + den.url = "github:denful/den"; + flake-file.url = "github:vic/flake-file"; + home-manager = { + url = "github:nix-community/home-manager"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + }; +} diff --git a/modules/hosts.nix b/modules/hosts.nix new file mode 100644 index 0000000..c8ba4d4 --- /dev/null +++ b/modules/hosts.nix @@ -0,0 +1,4 @@ +{ + den.hosts.x86_64-linux.flock.users.igneous = { }; + den.hosts.x86_64-linux.perch.users.igneous = { }; +} diff --git a/_old/systems/flock/hardware-configuration.nix b/modules/hosts/flock/_hardware-configuration.nix similarity index 100% rename from _old/systems/flock/hardware-configuration.nix rename to modules/hosts/flock/_hardware-configuration.nix diff --git a/modules/hosts/flock/flock.nix b/modules/hosts/flock/flock.nix new file mode 100644 index 0000000..a10f062 --- /dev/null +++ b/modules/hosts/flock/flock.nix @@ -0,0 +1,25 @@ +{ den, ... }: { + # host aspect + den.aspects.flock = { + includes = [ + (den.batteries.hostname) + (den.batteries.tty-autologin "igneous") + ]; + + # host NixOS configuration + nixos = + { pkgs, ... }: + { + imports = [ ./_hardware-configuration.nix ]; + system.stateVersion = "25.05"; + boot.kernelPackages = pkgs.linuxPackages_latest; + }; + + # host provides default home environment for its users + provides.to-users.homeManager = + { pkgs, ... }: + { + home.packages = [ pkgs.vim ]; + }; + }; +} diff --git a/_old/systems/perch/hardware-configuration.nix b/modules/hosts/perch/_hardware-configuration.nix similarity index 100% rename from _old/systems/perch/hardware-configuration.nix rename to modules/hosts/perch/_hardware-configuration.nix diff --git a/modules/hosts/perch/perch.nix b/modules/hosts/perch/perch.nix new file mode 100644 index 0000000..a4dfb1c --- /dev/null +++ b/modules/hosts/perch/perch.nix @@ -0,0 +1,25 @@ +{ den, ... }: { + # host aspect + den.aspects.perch = { + includes = [ + (den.batteries.hostname) + (den.batteries.tty-autologin "igneous") + ]; + + # host NixOS configuration + nixos = + { pkgs, ... }: + { + imports = [ ./_hardware-configuration.nix ]; + environment.systemPackages = [ pkgs.hello ]; + boot.kernelPackages = pkgs.linuxPackages_latest; + }; + + # host provides default home environment for its users + provides.to-users.homeManager = + { pkgs, ... }: + { + home.packages = [ pkgs.vim ]; + }; + }; +} diff --git a/modules/igneous.nix b/modules/igneous.nix new file mode 100644 index 0000000..208da00 --- /dev/null +++ b/modules/igneous.nix @@ -0,0 +1,35 @@ +{ den, ... }: +{ + # user aspect + den.aspects.igneous = { + includes = [ + den.batteries.define-user + den.batteries.primary-user + (den.batteries.user-shell "zsh") + ]; + + homeManager = + { pkgs, ... }: + { + home.packages = with pkgs; [ + jq + man-pages + man-pages-posix + nixd + nixfmt + tree + ]; + + programs.bat = { + enable = true; + config.theme = "Catppuccin Frappe"; + }; + }; + + # user can provide NixOS configurations + # to any host it is included on + provides.to-hosts.nixos = { pkgs, ... }: { + environment.pathsToLink = [ "/share/zsh" ]; + }; + }; +} diff --git a/modules/nh.nix b/modules/nh.nix new file mode 100644 index 0000000..3079b01 --- /dev/null +++ b/modules/nh.nix @@ -0,0 +1,9 @@ +# Exposes flake apps under the name of each host / home for building with nh. +{ den, lib, ... }: +{ + perSystem = + { pkgs, ... }: + { + packages = den.lib.nh.denPackages { fromFlake = true; } pkgs; + }; +} diff --git a/modules/vm.nix b/modules/vm.nix new file mode 100644 index 0000000..1262a45 --- /dev/null +++ b/modules/vm.nix @@ -0,0 +1,21 @@ +{ inputs, den, ... }: +{ + # USER TODO: remove this tty-autologin used for the VM + den.aspects.flock.includes = [ (den.batteries.tty-autologin "igneous") ]; + + perSystem = + { pkgs, ... }: + { + packages.vm = pkgs.writeShellApplication { + name = "vm"; + text = + let + host = inputs.self.nixosConfigurations.flock.config; + in + '' + export QEMU_OPTS="-m 8192 -smp 4" + ${host.system.build.vm}/bin/run-${host.networking.hostName}-vm "$@" + ''; + }; + }; +} -- 2.51.2 From 9a1227daf7b5e04d9db7b0b9b77b4571fc3482b9 Mon Sep 17 00:00:00 2001 From: Alex van de Sandt Date: Wed, 24 Jun 2026 13:01:29 -0500 Subject: [PATCH 03/16] Move shell/zsh config to den module --- _old/shell/bash.nix | 17 -------- _old/shell/default.nix | 46 -------------------- _old/shell/zsh.nix | 53 ----------------------- modules/bat.nix | 10 +++++ modules/igneous.nix | 15 +++---- modules/shell/bash.nix | 15 +++++++ {_old => modules}/shell/completions.zsh | 0 {_old => modules}/shell/keybindings.zsh | 0 modules/shell/shell.nix | 16 +++++++ modules/shell/zsh.nix | 57 +++++++++++++++++++++++++ 10 files changed, 105 insertions(+), 124 deletions(-) delete mode 100644 _old/shell/bash.nix delete mode 100644 _old/shell/default.nix delete mode 100644 _old/shell/zsh.nix create mode 100644 modules/bat.nix create mode 100644 modules/shell/bash.nix rename {_old => modules}/shell/completions.zsh (100%) rename {_old => modules}/shell/keybindings.zsh (100%) create mode 100644 modules/shell/shell.nix create mode 100644 modules/shell/zsh.nix diff --git a/_old/shell/bash.nix b/_old/shell/bash.nix deleted file mode 100644 index 28bee36..0000000 --- a/_old/shell/bash.nix +++ /dev/null @@ -1,17 +0,0 @@ -{ - config, - pkgs, - lib, - ... -}: -{ - programs.bash = { - enable = true; - historyFile = ".bashhistfile"; - historyIgnore = [ - "ls" - "cd" - "exit" - ]; - }; -} diff --git a/_old/shell/default.nix b/_old/shell/default.nix deleted file mode 100644 index 6ff9d01..0000000 --- a/_old/shell/default.nix +++ /dev/null @@ -1,46 +0,0 @@ -{ - config, - pkgs, - lib, - ... -}: -{ - imports = [ - ./bash.nix - ./zsh.nix - ]; - - home.sessionVariables = { - EDITOR = "nvim"; - }; - - home.shellAliases = { - clstat = "clear && git status"; - vim = "nvim"; - - ga = "git add"; - gaa = "git add ."; - gc = "git commit --message"; - gca = "git commit --amend"; - "gca!" = "git commit --amend --no-edit"; - gd = "git diff"; - gds = "git diff --staged"; - glol = "git log --graph --pretty=\"%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ar) %C(bold blue)<%an>%Creset\""; - glola = "git log --graph --pretty=\"%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ar) %C(bold blue)<%an>%Creset\" --all"; - gp = "git push"; - "gp!" = "git push --force"; - gpl = "git pull"; - gr = "git restore"; - grs = "git restore --staged"; - gs = "git status"; - - nix-zsh = "nix-shell --command zsh"; - - tree = "tree --gitignore"; - }; - - programs.starship = { - enable = true; - enableZshIntegration = true; - }; -} diff --git a/_old/shell/zsh.nix b/_old/shell/zsh.nix deleted file mode 100644 index 35013bb..0000000 --- a/_old/shell/zsh.nix +++ /dev/null @@ -1,53 +0,0 @@ -{ - config, - pkgs, - lib, - ... -}: -let - completions = builtins.readFile ./completions.zsh; - keybindings = builtins.readFile ./keybindings.zsh; -in -{ - programs.zsh = { - enable = true; - enableCompletion = true; - enableVteIntegration = true; - - defaultKeymap = "emacs"; - - history = { - append = true; - findNoDups = true; - }; - - setOptions = [ - "NOMATCH" - "NOTIFY" - "NO_BEEP" - ]; - - # Loal completion settings - # initContent = lib.mkOrder 550 completions; - initContent = lib.mkMerge [ - (lib.mkOrder 550 completions) - (lib.mkOrder 1000 keybindings) - ]; - - # Load plugins manually - plugins = [ - { - name = "sudo"; - file = "plugins/sudo/sudo.plugin.zsh"; - src = pkgs.fetchFromGitHub { - owner = "ohmyzsh"; - repo = "ohmyzsh"; - rev = "beadd56dd75e8a40fe0a7d4a5d63ed5bf9efcd48"; - sha256 = "sha256-e3zTM3rj4z6RwDai9i7KKrz6imTGmZiSAqcS9Mw2LZU="; - }; - } - ]; - - syntaxHighlighting.enable = true; - }; -} diff --git a/modules/bat.nix b/modules/bat.nix new file mode 100644 index 0000000..8d59f94 --- /dev/null +++ b/modules/bat.nix @@ -0,0 +1,10 @@ +{ + den.aspects.bat = { + homeManager = { + programs.bat = { + enable = true; + config.theme = "Catppuccin Frappe"; + }; + }; + }; +} diff --git a/modules/igneous.nix b/modules/igneous.nix index 208da00..030964e 100644 --- a/modules/igneous.nix +++ b/modules/igneous.nix @@ -2,10 +2,14 @@ { # user aspect den.aspects.igneous = { - includes = [ + includes = with den.aspects; [ den.batteries.define-user den.batteries.primary-user - (den.batteries.user-shell "zsh") + + bat + shell + shell.bash + shell.zsh ]; homeManager = @@ -19,16 +23,11 @@ nixfmt tree ]; - - programs.bat = { - enable = true; - config.theme = "Catppuccin Frappe"; - }; }; # user can provide NixOS configurations # to any host it is included on - provides.to-hosts.nixos = { pkgs, ... }: { + provides.to-hosts.nixos = { environment.pathsToLink = [ "/share/zsh" ]; }; }; diff --git a/modules/shell/bash.nix b/modules/shell/bash.nix new file mode 100644 index 0000000..441cb59 --- /dev/null +++ b/modules/shell/bash.nix @@ -0,0 +1,15 @@ +{ + den.aspects.shell.bash = { + homeManager = { + programs.bash = { + enable = true; + historyFile = "~/.bashhistfile"; + historyIgnore = [ + "ls" + "cd" + "exit" + ]; + }; + }; + }; +} diff --git a/_old/shell/completions.zsh b/modules/shell/completions.zsh similarity index 100% rename from _old/shell/completions.zsh rename to modules/shell/completions.zsh diff --git a/_old/shell/keybindings.zsh b/modules/shell/keybindings.zsh similarity index 100% rename from _old/shell/keybindings.zsh rename to modules/shell/keybindings.zsh diff --git a/modules/shell/shell.nix b/modules/shell/shell.nix new file mode 100644 index 0000000..114eb76 --- /dev/null +++ b/modules/shell/shell.nix @@ -0,0 +1,16 @@ +{ + den.aspects.shell = { + homeManager = { + home.shellAliases = { + nix-zsh = "nix-shell --command zsh"; + tree = "tree --gitignore"; + }; + + programs.starship = { + enable = true; + enableZshIntegration = true; + enableBashIntegration = true; + }; + }; + }; +} diff --git a/modules/shell/zsh.nix b/modules/shell/zsh.nix new file mode 100644 index 0000000..6508f14 --- /dev/null +++ b/modules/shell/zsh.nix @@ -0,0 +1,57 @@ +{ + den, + ... +}: +let + completions = builtins.readFile ./completions.zsh; + keybindings = builtins.readFile ./keybindings.zsh; +in +{ + den.aspects.shell.zsh = { + includes = [ (den.batteries.user-shell "zsh") ]; + + homeManager = { lib, pkgs, ... }: { + programs.zsh = { + enable = true; + enableCompletion = true; + enableVteIntegration = true; + + defaultKeymap = "emacs"; + + history = { + append = true; + findNoDups = true; + }; + + setOptions = [ + "NOMATCH" + "NOTIFY" + "NO_BEEP" + ]; + + # Loal completion settings + initContent = lib.mkMerge [ + (lib.mkOrder 550 completions) + (lib.mkOrder 1000 keybindings) + ]; + + # Load plugins manually + plugins = [ + { + name = "sudo"; + file = "plugins/sudo/sudo.plugin.zsh"; + src = pkgs.fetchFromGitHub { + owner = "ohmyzsh"; + repo = "ohmyzsh"; + rev = "beadd56dd75e8a40fe0a7d4a5d63ed5bf9efcd48"; + sha256 = "sha256-e3zTM3rj4z6RwDai9i7KKrz6imTGmZiSAqcS9Mw2LZU="; + }; + } + ]; + + syntaxHighlighting.enable = true; + }; + }; + }; + +} -- 2.51.2 From 46415c14b8bc0b2ff4c1e5ebcadf3837a6ce097a Mon Sep 17 00:00:00 2001 From: Alex van de Sandt Date: Wed, 24 Jun 2026 13:24:50 -0500 Subject: [PATCH 04/16] Move nixvim config to den module --- _old/nixvim/default.nix | 10 --- flake.lock | 79 ++++++++++++++++++- flake.nix | 8 +- modules/igneous.nix | 1 + .../nixvim/_autocmd.nix | 0 .../basic.nix => modules/nixvim/_basic.nix | 0 .../nixvim/_keymaps.nix | 0 .../nixvim/lsp.nix => modules/nixvim/_lsp.nix | 0 .../nixvim/_plugins}/default.nix | 0 .../nixvim/_plugins}/gitsigns.nix | 0 .../nixvim/_plugins}/mini.nix | 0 .../nixvim/_plugins}/telescope.nix | 0 .../nixvim/_plugins}/treesitter.nix | 0 .../nixvim/_plugins}/trouble.nix | 0 .../nixvim/_plugins}/which-key.nix | 0 modules/nixvim/nixvim.nix | 28 +++++++ 16 files changed, 107 insertions(+), 19 deletions(-) delete mode 100644 _old/nixvim/default.nix rename _old/nixvim/autocmd.nix => modules/nixvim/_autocmd.nix (100%) rename _old/nixvim/basic.nix => modules/nixvim/_basic.nix (100%) rename _old/nixvim/keymaps.nix => modules/nixvim/_keymaps.nix (100%) rename _old/nixvim/lsp.nix => modules/nixvim/_lsp.nix (100%) rename {_old/nixvim/plugins => modules/nixvim/_plugins}/default.nix (100%) rename {_old/nixvim/plugins => modules/nixvim/_plugins}/gitsigns.nix (100%) rename {_old/nixvim/plugins => modules/nixvim/_plugins}/mini.nix (100%) rename {_old/nixvim/plugins => modules/nixvim/_plugins}/telescope.nix (100%) rename {_old/nixvim/plugins => modules/nixvim/_plugins}/treesitter.nix (100%) rename {_old/nixvim/plugins => modules/nixvim/_plugins}/trouble.nix (100%) rename {_old/nixvim/plugins => modules/nixvim/_plugins}/which-key.nix (100%) create mode 100644 modules/nixvim/nixvim.nix diff --git a/_old/nixvim/default.nix b/_old/nixvim/default.nix deleted file mode 100644 index 747db9e..0000000 --- a/_old/nixvim/default.nix +++ /dev/null @@ -1,10 +0,0 @@ -{ - imports = [ - ./plugins - - ./autocmd.nix - ./basic.nix - ./keymaps.nix - ./lsp.nix - ]; -} diff --git a/flake.lock b/flake.lock index 9f3ed13..d0a3dbe 100644 --- a/flake.lock +++ b/flake.lock @@ -33,7 +33,28 @@ "flake-parts": { "inputs": { "nixpkgs-lib": [ - "nixpkgs-lib" + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1778716662, + "narHash": "sha256-m1Yf0wZ8j1OHjTc2UwHwyQRSnNeSgLJOd7q5Y45hzi4=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "f7c1a2d347e4c52d5fb8d10cb4d94b5884e546fb", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_2": { + "inputs": { + "nixpkgs-lib": [ + "nixvim", + "nixpkgs" ] }, "locked": { @@ -98,6 +119,42 @@ "url": "https://channels.nixos.org/nixpkgs-unstable/nixexprs.tar.xz" } }, + "nixpkgs_2": { + "locked": { + "lastModified": 1782175435, + "narHash": "sha256-EMzXKmnOtBQ2MnvpiNOm7E+kOMvdPrIKaeg52Tip2Uk=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "89570f24e97e614aa34aa9ab1c927b6578a43775", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixvim": { + "inputs": { + "flake-parts": "flake-parts_2", + "nixpkgs": "nixpkgs_2", + "systems": "systems" + }, + "locked": { + "lastModified": 1782254890, + "narHash": "sha256-kjsEECqhpPnJWqhooXp6tWh2qGQftCPAo2G1GvZtKdw=", + "owner": "nix-community", + "repo": "nixvim", + "rev": "dbf9550dba8448b03e11d58e5695d6c44a464554", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixvim", + "type": "github" + } + }, "root": { "inputs": { "den": "den", @@ -106,9 +163,23 @@ "home-manager": "home-manager", "import-tree": "import-tree", "nixpkgs": "nixpkgs", - "nixpkgs-lib": [ - "nixpkgs" - ] + "nixvim": "nixvim" + } + }, + "systems": { + "locked": { + "lastModified": 1774449309, + "narHash": "sha256-brhZ8DmuGtzkCYHJg4HEd602amKm89Y9ytsFZ5uWD1w=", + "owner": "nix-systems", + "repo": "default", + "rev": "c29398b59d2048c4ab79345812849c9bd15e9150", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "ref": "future-26.11", + "repo": "default", + "type": "github" } } }, diff --git a/flake.nix b/flake.nix index e6b5b43..ddce988 100644 --- a/flake.nix +++ b/flake.nix @@ -1,23 +1,21 @@ # DO-NOT-EDIT. This file was auto-generated using github:vic/flake-file. # Use `nix run .#write-flake` to regenerate it. { - outputs = inputs: inputs.flake-parts.lib.mkFlake { inherit inputs; } (inputs.import-tree ./modules); inputs = { den.url = "github:denful/den"; flake-file.url = "github:vic/flake-file"; flake-parts = { - inputs.nixpkgs-lib.follows = "nixpkgs-lib"; url = "github:hercules-ci/flake-parts"; + inputs.nixpkgs-lib.follows = "nixpkgs"; }; home-manager = { - inputs.nixpkgs.follows = "nixpkgs"; url = "github:nix-community/home-manager"; + inputs.nixpkgs.follows = "nixpkgs"; }; import-tree.url = "github:vic/import-tree"; nixpkgs.url = "https://channels.nixos.org/nixpkgs-unstable/nixexprs.tar.xz"; - nixpkgs-lib.follows = "nixpkgs"; + nixvim.url = "github:nix-community/nixvim"; }; - } diff --git a/modules/igneous.nix b/modules/igneous.nix index 030964e..c71c553 100644 --- a/modules/igneous.nix +++ b/modules/igneous.nix @@ -7,6 +7,7 @@ den.batteries.primary-user bat + nixvim shell shell.bash shell.zsh diff --git a/_old/nixvim/autocmd.nix b/modules/nixvim/_autocmd.nix similarity index 100% rename from _old/nixvim/autocmd.nix rename to modules/nixvim/_autocmd.nix diff --git a/_old/nixvim/basic.nix b/modules/nixvim/_basic.nix similarity index 100% rename from _old/nixvim/basic.nix rename to modules/nixvim/_basic.nix diff --git a/_old/nixvim/keymaps.nix b/modules/nixvim/_keymaps.nix similarity index 100% rename from _old/nixvim/keymaps.nix rename to modules/nixvim/_keymaps.nix diff --git a/_old/nixvim/lsp.nix b/modules/nixvim/_lsp.nix similarity index 100% rename from _old/nixvim/lsp.nix rename to modules/nixvim/_lsp.nix diff --git a/_old/nixvim/plugins/default.nix b/modules/nixvim/_plugins/default.nix similarity index 100% rename from _old/nixvim/plugins/default.nix rename to modules/nixvim/_plugins/default.nix diff --git a/_old/nixvim/plugins/gitsigns.nix b/modules/nixvim/_plugins/gitsigns.nix similarity index 100% rename from _old/nixvim/plugins/gitsigns.nix rename to modules/nixvim/_plugins/gitsigns.nix diff --git a/_old/nixvim/plugins/mini.nix b/modules/nixvim/_plugins/mini.nix similarity index 100% rename from _old/nixvim/plugins/mini.nix rename to modules/nixvim/_plugins/mini.nix diff --git a/_old/nixvim/plugins/telescope.nix b/modules/nixvim/_plugins/telescope.nix similarity index 100% rename from _old/nixvim/plugins/telescope.nix rename to modules/nixvim/_plugins/telescope.nix diff --git a/_old/nixvim/plugins/treesitter.nix b/modules/nixvim/_plugins/treesitter.nix similarity index 100% rename from _old/nixvim/plugins/treesitter.nix rename to modules/nixvim/_plugins/treesitter.nix diff --git a/_old/nixvim/plugins/trouble.nix b/modules/nixvim/_plugins/trouble.nix similarity index 100% rename from _old/nixvim/plugins/trouble.nix rename to modules/nixvim/_plugins/trouble.nix diff --git a/_old/nixvim/plugins/which-key.nix b/modules/nixvim/_plugins/which-key.nix similarity index 100% rename from _old/nixvim/plugins/which-key.nix rename to modules/nixvim/_plugins/which-key.nix diff --git a/modules/nixvim/nixvim.nix b/modules/nixvim/nixvim.nix new file mode 100644 index 0000000..eaafb8a --- /dev/null +++ b/modules/nixvim/nixvim.nix @@ -0,0 +1,28 @@ +{ inputs, ... }: { + flake-file.inputs.nixvim = { + url = "github:nix-community/nixvim"; + }; + + den.aspects.nixvim = { + homeManager = { + imports = [ inputs.nixvim.homeModules.nixvim ]; + + programs.nixvim = { + enable = true; + + imports = [ + ./_plugins + + ./_autocmd.nix + ./_basic.nix + ./_keymaps.nix + ./_lsp.nix + ]; + }; + + home.shellAliases = { + vim = "nvim"; + }; + }; + }; +} -- 2.51.2 From 14966282d2cb955ef12bc2c769a0b941bfd0f907 Mon Sep 17 00:00:00 2001 From: Alex van de Sandt Date: Wed, 24 Jun 2026 14:00:44 -0500 Subject: [PATCH 05/16] Move hyprland to den module --- flake.lock | 529 +++++++++++++++++- flake.nix | 2 + .../hyprland/_settings.nix | 36 +- modules/hyprland/hyprland.nix | 42 ++ modules/igneous.nix | 1 + 5 files changed, 587 insertions(+), 23 deletions(-) rename _old/desktop/hyprland.nix => modules/hyprland/_settings.nix (92%) create mode 100644 modules/hyprland/hyprland.nix diff --git a/flake.lock b/flake.lock index d0a3dbe..0f0e6d3 100644 --- a/flake.lock +++ b/flake.lock @@ -1,5 +1,38 @@ { "nodes": { + "aquamarine": { + "inputs": { + "hyprutils": [ + "hyprland", + "hyprutils" + ], + "hyprwayland-scanner": [ + "hyprland", + "hyprwayland-scanner" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1780756231, + "narHash": "sha256-tXQxKdG5716uB9/LIkLQqQwHKf5mRSpHoZhz3lyI2Cg=", + "owner": "hyprwm", + "repo": "aquamarine", + "rev": "6ecde03f47172753fe5a2f334f9d3facfb7e6784", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "aquamarine", + "type": "github" + } + }, "den": { "locked": { "lastModified": 1781621963, @@ -15,6 +48,22 @@ "type": "github" } }, + "flake-compat": { + "flake": false, + "locked": { + "lastModified": 1767039857, + "narHash": "sha256-vNpUSpF5Nuw8xvDLj2KCwwksIbjua2LZCqhV1LNRDns=", + "owner": "NixOS", + "repo": "flake-compat", + "rev": "5edf11c44bc78a0d334f6334cdaf7d60d732daab", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "flake-compat", + "type": "github" + } + }, "flake-file": { "locked": { "lastModified": 1781217157, @@ -71,6 +120,28 @@ "type": "github" } }, + "gitignore": { + "inputs": { + "nixpkgs": [ + "hyprland", + "pre-commit-hooks", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1709087332, + "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "gitignore.nix", + "type": "github" + } + }, "home-manager": { "inputs": { "nixpkgs": [ @@ -91,6 +162,343 @@ "type": "github" } }, + "hyprcursor": { + "inputs": { + "hyprlang": [ + "hyprland", + "hyprlang" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1776511930, + "narHash": "sha256-fCpwFiTW0rT7oKJqr3cqHMnkwypSwQKpbtUEtxdkgrM=", + "owner": "hyprwm", + "repo": "hyprcursor", + "rev": "39435900785d0c560c6ae8777d29f28617d031ef", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprcursor", + "type": "github" + } + }, + "hyprcursor-phinger": { + "inputs": { + "nixpkgs": "nixpkgs" + }, + "locked": { + "lastModified": 1763845612, + "narHash": "sha256-78zH5GrYa35bEkzeVnl8uXFbZ/zsiSHayjxZlNt+Xe8=", + "owner": "jappie3", + "repo": "hyprcursor-phinger", + "rev": "1207a845501a28e0e00d4a8e935ee0c9cab30650", + "type": "github" + }, + "original": { + "owner": "jappie3", + "repo": "hyprcursor-phinger", + "type": "github" + } + }, + "hyprgraphics": { + "inputs": { + "hyprutils": [ + "hyprland", + "hyprutils" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1776426399, + "narHash": "sha256-RUESLKNikIeEq9ymGJ6nmcDXiSFQpUW1IhJ245nL3xM=", + "owner": "hyprwm", + "repo": "hyprgraphics", + "rev": "68d064434787cf1ed4a2fe257c03c5f52f33cf84", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprgraphics", + "type": "github" + } + }, + "hyprland": { + "inputs": { + "aquamarine": "aquamarine", + "hyprcursor": "hyprcursor", + "hyprgraphics": "hyprgraphics", + "hyprland-guiutils": "hyprland-guiutils", + "hyprland-protocols": "hyprland-protocols", + "hyprlang": "hyprlang", + "hyprutils": "hyprutils", + "hyprwayland-scanner": "hyprwayland-scanner", + "hyprwire": "hyprwire", + "nixpkgs": "nixpkgs_2", + "pre-commit-hooks": "pre-commit-hooks", + "systems": "systems", + "xdph": "xdph" + }, + "locked": { + "lastModified": 1782315209, + "narHash": "sha256-xKpodJ++lnLqRpmcH5OSimuo874wmgm3rD85J3GDmUw=", + "owner": "hyprwm", + "repo": "Hyprland", + "rev": "87cd2a5f6697a5923c4f427e9b399d79a354a7b8", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "Hyprland", + "type": "github" + } + }, + "hyprland-guiutils": { + "inputs": { + "aquamarine": [ + "hyprland", + "aquamarine" + ], + "hyprgraphics": [ + "hyprland", + "hyprgraphics" + ], + "hyprlang": [ + "hyprland", + "hyprlang" + ], + "hyprtoolkit": "hyprtoolkit", + "hyprutils": [ + "hyprland", + "hyprutils" + ], + "hyprwayland-scanner": [ + "hyprland", + "hyprwayland-scanner" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1776426575, + "narHash": "sha256-KI6nIfVihn/DPaeB5Et46Xg3dkNHrrEtUd5LBBVomB0=", + "owner": "hyprwm", + "repo": "hyprland-guiutils", + "rev": "a968d211048e3ed538e47b84cb3649299578f19d", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprland-guiutils", + "type": "github" + } + }, + "hyprland-protocols": { + "inputs": { + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1772460177, + "narHash": "sha256-/6G/MsPvtn7bc4Y32pserBT/Z4SUUdBd4XYJpOEKVR4=", + "owner": "hyprwm", + "repo": "hyprland-protocols", + "rev": "1cb6db5fd6bb8aee419f4457402fa18293ace917", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprland-protocols", + "type": "github" + } + }, + "hyprlang": { + "inputs": { + "hyprutils": [ + "hyprland", + "hyprutils" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1777320127, + "narHash": "sha256-Qu+Wf2Bp5qUjyn2YpZNq8a7JyzTGowhT1knrwE38a9U=", + "owner": "hyprwm", + "repo": "hyprlang", + "rev": "090117506ddc3d7f26e650ff344d378c2ec329cc", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprlang", + "type": "github" + } + }, + "hyprtoolkit": { + "inputs": { + "aquamarine": [ + "hyprland", + "hyprland-guiutils", + "aquamarine" + ], + "hyprgraphics": [ + "hyprland", + "hyprland-guiutils", + "hyprgraphics" + ], + "hyprlang": [ + "hyprland", + "hyprland-guiutils", + "hyprlang" + ], + "hyprutils": [ + "hyprland", + "hyprland-guiutils", + "hyprutils" + ], + "hyprwayland-scanner": [ + "hyprland", + "hyprland-guiutils", + "hyprwayland-scanner" + ], + "nixpkgs": [ + "hyprland", + "hyprland-guiutils", + "nixpkgs" + ], + "systems": [ + "hyprland", + "hyprland-guiutils", + "systems" + ] + }, + "locked": { + "lastModified": 1772462885, + "narHash": "sha256-5pHXrQK9zasMnIo6yME6EOXmWGFMSnCITcfKshhKJ9I=", + "owner": "hyprwm", + "repo": "hyprtoolkit", + "rev": "9af245a69fa6b286b88ddfc340afd288e00a6998", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprtoolkit", + "type": "github" + } + }, + "hyprutils": { + "inputs": { + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1780251518, + "narHash": "sha256-fG9xbb1SOAAJ+2kJRakp3ch+BmA/3dEg/K3PoAZTKkw=", + "owner": "hyprwm", + "repo": "hyprutils", + "rev": "40ede2e7bdec80ba5d4c443160d905e9f841ae5f", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprutils", + "type": "github" + } + }, + "hyprwayland-scanner": { + "inputs": { + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1777159683, + "narHash": "sha256-Jxixw6wZphUp+nHYxOKUYSckL17QMBx2d5Zp0rJHr1g=", + "owner": "hyprwm", + "repo": "hyprwayland-scanner", + "rev": "b8632713a6beaf28b56f2a7b0ab2fb7088dbb404", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprwayland-scanner", + "type": "github" + } + }, + "hyprwire": { + "inputs": { + "hyprutils": [ + "hyprland", + "hyprutils" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1778410714, + "narHash": "sha256-o6RzFj4nJXaPRY7EM01siuCQeT41RfwwmcmFQqwFJJg=", + "owner": "hyprwm", + "repo": "hyprwire", + "rev": "85148a8e612808cf5ddb25d0b3c5840f3498a7dc", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprwire", + "type": "github" + } + }, "import-tree": { "locked": { "lastModified": 1778781969, @@ -107,6 +515,38 @@ } }, "nixpkgs": { + "locked": { + "lastModified": 1762977756, + "narHash": "sha256-4PqRErxfe+2toFJFgcRKZ0UI9NSIOJa+7RXVtBhy4KE=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "c5ae371f1a6a7fd27823bc500d9390b38c05fa55", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_2": { + "locked": { + "lastModified": 1780749050, + "narHash": "sha256-3av0pIjlOWQ6rDbNOmpUSvbNnJkGORQKKjb4LtCZsIY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "a799d3e3886da994fa307f817a6bc705ae538eeb", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_3": { "locked": { "lastModified": 1782175435, "narHash": "sha256-8d2wCNWKnd86GzKZvbuqqlS+HqMrheXkvRf0qGJ/oA0=", @@ -119,7 +559,7 @@ "url": "https://channels.nixos.org/nixpkgs-unstable/nixexprs.tar.xz" } }, - "nixpkgs_2": { + "nixpkgs_4": { "locked": { "lastModified": 1782175435, "narHash": "sha256-EMzXKmnOtBQ2MnvpiNOm7E+kOMvdPrIKaeg52Tip2Uk=", @@ -138,8 +578,8 @@ "nixvim": { "inputs": { "flake-parts": "flake-parts_2", - "nixpkgs": "nixpkgs_2", - "systems": "systems" + "nixpkgs": "nixpkgs_4", + "systems": "systems_2" }, "locked": { "lastModified": 1782254890, @@ -155,18 +595,58 @@ "type": "github" } }, + "pre-commit-hooks": { + "inputs": { + "flake-compat": "flake-compat", + "gitignore": "gitignore", + "nixpkgs": [ + "hyprland", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1778507602, + "narHash": "sha256-kTwur1wV+01SdqskVMSo6JMEpg71ps3HpbFY2GsflKs=", + "owner": "cachix", + "repo": "git-hooks.nix", + "rev": "61ab0e80d9c7ab14c256b5b453d8b3fb0189ba0a", + "type": "github" + }, + "original": { + "owner": "cachix", + "repo": "git-hooks.nix", + "type": "github" + } + }, "root": { "inputs": { "den": "den", "flake-file": "flake-file", "flake-parts": "flake-parts", "home-manager": "home-manager", + "hyprcursor-phinger": "hyprcursor-phinger", + "hyprland": "hyprland", "import-tree": "import-tree", - "nixpkgs": "nixpkgs", + "nixpkgs": "nixpkgs_3", "nixvim": "nixvim" } }, "systems": { + "locked": { + "lastModified": 1689347949, + "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=", + "owner": "nix-systems", + "repo": "default-linux", + "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default-linux", + "type": "github" + } + }, + "systems_2": { "locked": { "lastModified": 1774449309, "narHash": "sha256-brhZ8DmuGtzkCYHJg4HEd602amKm89Y9ytsFZ5uWD1w=", @@ -181,6 +661,47 @@ "repo": "default", "type": "github" } + }, + "xdph": { + "inputs": { + "hyprland-protocols": [ + "hyprland", + "hyprland-protocols" + ], + "hyprlang": [ + "hyprland", + "hyprlang" + ], + "hyprutils": [ + "hyprland", + "hyprutils" + ], + "hyprwayland-scanner": [ + "hyprland", + "hyprwayland-scanner" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1780133819, + "narHash": "sha256-0YPKIY3dlnR7SPq7Z8ekFVvzFsfeiAtEj+QUI3KHrlI=", + "owner": "hyprwm", + "repo": "xdg-desktop-portal-hyprland", + "rev": "4a170c0ba96fd37374f93d8f91c9ed91814828ac", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "xdg-desktop-portal-hyprland", + "type": "github" + } } }, "root": "root", diff --git a/flake.nix b/flake.nix index ddce988..2407cd7 100644 --- a/flake.nix +++ b/flake.nix @@ -14,6 +14,8 @@ url = "github:nix-community/home-manager"; inputs.nixpkgs.follows = "nixpkgs"; }; + hyprcursor-phinger.url = "github:jappie3/hyprcursor-phinger"; + hyprland.url = "github:hyprwm/Hyprland"; import-tree.url = "github:vic/import-tree"; nixpkgs.url = "https://channels.nixos.org/nixpkgs-unstable/nixexprs.tar.xz"; nixvim.url = "github:nix-community/nixvim"; diff --git a/_old/desktop/hyprland.nix b/modules/hyprland/_settings.nix similarity index 92% rename from _old/desktop/hyprland.nix rename to modules/hyprland/_settings.nix index 13a5ccd..0844993 100644 --- a/_old/desktop/hyprland.nix +++ b/modules/hyprland/_settings.nix @@ -1,24 +1,22 @@ { wayland.windowManager.hyprland = { - enable = true; - package = null; - systemd.enable = true; - configType = "hyprlang"; - settings = { # monitor settings https://wiki.hypr.land/0.54.0/Configuring/Monitors/ - monitor = [ "eDP-1, preferred, auto, auto, cm, auto" ]; + monitor = [ + # "HDMI-A-2, 2560x1440@144.00Hz, auto, auto, cm, auto" + # "eDP-1, preferred, auto, auto, cm, auto" + ]; # keywords https://wiki.hypr.land/0.54.0/Configuring/Keywords/ - "$terminal" = "kitty"; - "$browser " = "zen"; - "$menu " = "hyprlauncher"; + # "$terminal" = "kitty"; + # "$browser " = "zen"; + # "$menu " = "hyprlauncher"; "$mainMod" = "SUPER"; # autostart exec-once = [ - "1password --silent &" - "hyprpaper &" + # "1password --silent &" + # "hyprpaper &" ]; # environment variables https://wiki.hypr.land/0.54.0/Configuring/Environment-variables/ @@ -142,8 +140,8 @@ "$mainMod SHIFT, Q, killactive," "$mainMod, M, exit," "$mainMod, V, togglefloating," - "$mainMod, SPACE, exec, $menu" - "$mainMod, F, exec, $browser" + # "$mainMod, SPACE, exec, $menu" + # "$mainMod, F, exec, $browser" "$mainMod, TAB, focuscurrentorlast" # Move focus with mainMod + arrow keys @@ -183,12 +181,12 @@ "$mainMod SHIFT, 0, movetoworkspace, 10" # Switch to app-specific workspaces - "$mainMod , D, workspace, discord" - "$mainMod SHIFT, D, movetoworkspace, discord" - "$mainMod , S, workspace, steam" - "$mainMod SHIFT, S, movetoworkspace, steam" - "$mainMod , P, workspace, spotify" - "$mainMod SHIFT, P, movetoworkspace, spotify" + # "$mainMod , D, workspace, discord" + # "$mainMod SHIFT, D, movetoworkspace, discord" + # "$mainMod , S, workspace, steam" + # "$mainMod SHIFT, S, movetoworkspace, steam" + # "$mainMod , P, workspace, spotify" + # "$mainMod SHIFT, P, movetoworkspace, spotify" # Scroll through existing workspaces with mainMod + scroll "$mainMod, mouse_up, workspace, e+1" diff --git a/modules/hyprland/hyprland.nix b/modules/hyprland/hyprland.nix new file mode 100644 index 0000000..ee2e0ac --- /dev/null +++ b/modules/hyprland/hyprland.nix @@ -0,0 +1,42 @@ +{ inputs, ... }: +let + hyprland = inputs.hyprland; +in +{ + flake-file.inputs = { + hyprcursor-phinger.url = "github:jappie3/hyprcursor-phinger"; + hyprland.url = "github:hyprwm/Hyprland"; + }; + + den.aspects.hyprland = { + nixos = { pkgs, ... }: { + programs.hyprland = { + enable = true; + package = hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland; + portalPackage = hyprland.packages.${pkgs.stdenv.hostPlatform.system}.xdg-desktop-portal-hyprland; + xwayland.enable = true; + withUWSM = true; + }; + + # Use cachix + nix.settings = { + substituters = [ "https://hyprland.cachix.org" ]; + trusted-substituters = [ "https://hyprland.cachix.org" ]; + trusted-public-keys = [ "hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc=" ]; + }; + }; + + homeManager = { + imports = [ ./_settings.nix ]; + + xdg.portal.config.common.default = "*"; + + wayland.windowManager.hyprland = { + enable = true; + package = null; + systemd.enable = true; + configType = "hyprlang"; + }; + }; + }; +} diff --git a/modules/igneous.nix b/modules/igneous.nix index c71c553..ac0fa38 100644 --- a/modules/igneous.nix +++ b/modules/igneous.nix @@ -7,6 +7,7 @@ den.batteries.primary-user bat + hyprland nixvim shell shell.bash -- 2.51.2 From 7dae6db0423e3f4454c40d41b8ac84c2155de385 Mon Sep 17 00:00:00 2001 From: Alex van de Sandt Date: Wed, 24 Jun 2026 14:11:13 -0500 Subject: [PATCH 06/16] Move waybar config to den module --- _old/desktop/waybar/default.nix | 130 ----------------- modules/hyprland/hyprland.nix | 25 ++-- .../hyprland}/waybar/power_menu.xml | 0 .../hyprland}/waybar/style.css | 0 modules/hyprland/waybar/waybar.nix | 134 ++++++++++++++++++ 5 files changed, 148 insertions(+), 141 deletions(-) delete mode 100644 _old/desktop/waybar/default.nix rename {_old/desktop => modules/hyprland}/waybar/power_menu.xml (100%) rename {_old/desktop => modules/hyprland}/waybar/style.css (100%) create mode 100644 modules/hyprland/waybar/waybar.nix diff --git a/_old/desktop/waybar/default.nix b/_old/desktop/waybar/default.nix deleted file mode 100644 index ea131a3..0000000 --- a/_old/desktop/waybar/default.nix +++ /dev/null @@ -1,130 +0,0 @@ -{ - programs.waybar = { - enable = true; - systemd.enable = true; - - settings.main = { - height = 34; - spacing = 10; - - modules-left = [ - "hyprland/workspaces" - "hyprland/submap" - "hyprland/window" - ]; - modules-right = [ - "keyboard-state" - "pulseaudio" - "network" - "cpu" - "memory" - "temperature" - "battery" - "clock" - "tray" - "custom/power" - ]; - - "hyprland/window" = { - rewrite = { - "(.*) — (Zen Browser|Mozilla Firefox)" = "🌎 $1"; - "(.*) - Discord" = "💬 $1"; - }; - separate-outputs = true; - }; - - keyboard-state = { - numlock = true; - capslock = true; - format = { - capslock = "C {icon}"; - numlock = "{icon} N"; - }; - format-icons = { - locked = " "; - unlocked = " "; - }; - }; - - pulseaudio = { - format = "{volume}% {icon} {format_source}"; - format-bluetooth = "{volume}% {icon} {format_source}"; - format-bluetooth-muted = " {icon} {format_source}"; - format-muted = " {format_source}"; - format-source = "{volume}% "; - format-source-muted = " "; - format-icons = { - headphone = ""; - default = [ - " " - " " - " " - ]; - }; - on-click = "pavucontrol"; - }; - - network = { - format-wifi = "{essid} ({signalStrength}%)  "; - format-ethernet = "{ipaddr}/{cidr} 🔌"; - tooltip-format = "{ifname} via {gwaddr} "; - format-linked = "{ifname} (No IP) "; - format-disconnected = "Disconnected ⚠"; - format-alt = "{ifname}: {ipaddr}/{cidr}"; - }; - - cpu = { - format = "{usage}%  "; - tooltip = true; - }; - - memory = { - format = "{used}/{total} GiB ({percentage}%)  "; - tooltip = false; - }; - - temperature = { - critical-threshold = 80; - format = "{temperatureC}°C {icon}"; - format-icons = [ - "" - "" - "" - ]; - }; - - battery = { - format = "{capacity}% {icon}"; - }; - - clock = { - tooltip-format = "{calendar}"; - format = "{0:%H:%M} {0:%Y-%m-%d}"; - }; - - tray = { - spacing = 20; - }; - - "custom/power" = { - format = "⏻ "; - tooltip = false; - menu = "on-click"; - menu-file = "$HOME/.config/waybar/power_menu.xml"; - menu-actions = { - shutdown = "hyprshutdown --post-cmd 'shutdown -P 0'"; - reboot = "hyprshutdown --post-cmd 'reboot'"; - }; - }; - }; - - style = ./style.css; - }; - - home.file = { - waybar-custom-power = { - target = ".config/waybar/power_menu.xml"; - source = ./power_menu.xml; - }; - }; -} diff --git a/modules/hyprland/hyprland.nix b/modules/hyprland/hyprland.nix index ee2e0ac..f393e61 100644 --- a/modules/hyprland/hyprland.nix +++ b/modules/hyprland/hyprland.nix @@ -1,7 +1,4 @@ -{ inputs, ... }: -let - hyprland = inputs.hyprland; -in +{ den, inputs, ... }: { flake-file.inputs = { hyprcursor-phinger.url = "github:jappie3/hyprcursor-phinger"; @@ -9,14 +6,20 @@ in }; den.aspects.hyprland = { + includes = with den.aspects; [ hyprland.waybar ]; + nixos = { pkgs, ... }: { - programs.hyprland = { - enable = true; - package = hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland; - portalPackage = hyprland.packages.${pkgs.stdenv.hostPlatform.system}.xdg-desktop-portal-hyprland; - xwayland.enable = true; - withUWSM = true; - }; + programs.hyprland = + let + hyprland = inputs.hyprland; + in + { + enable = true; + package = hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland; + portalPackage = hyprland.packages.${pkgs.stdenv.hostPlatform.system}.xdg-desktop-portal-hyprland; + xwayland.enable = true; + withUWSM = true; + }; # Use cachix nix.settings = { diff --git a/_old/desktop/waybar/power_menu.xml b/modules/hyprland/waybar/power_menu.xml similarity index 100% rename from _old/desktop/waybar/power_menu.xml rename to modules/hyprland/waybar/power_menu.xml diff --git a/_old/desktop/waybar/style.css b/modules/hyprland/waybar/style.css similarity index 100% rename from _old/desktop/waybar/style.css rename to modules/hyprland/waybar/style.css diff --git a/modules/hyprland/waybar/waybar.nix b/modules/hyprland/waybar/waybar.nix new file mode 100644 index 0000000..64dbd99 --- /dev/null +++ b/modules/hyprland/waybar/waybar.nix @@ -0,0 +1,134 @@ +{ + den.aspects.hyprland.waybar = { + homeManager = { + programs.waybar = { + enable = true; + systemd.enable = true; + + settings.main = { + height = 34; + spacing = 10; + + modules-left = [ + "hyprland/workspaces" + "hyprland/submap" + "hyprland/window" + ]; + modules-right = [ + "keyboard-state" + "pulseaudio" + "network" + "cpu" + "memory" + "temperature" + "battery" + "clock" + "tray" + "custom/power" + ]; + + "hyprland/window" = { + rewrite = { + "(.*) — (Zen Browser|Mozilla Firefox)" = "🌎 $1"; + "(.*) - Discord" = "💬 $1"; + }; + separate-outputs = true; + }; + + keyboard-state = { + numlock = true; + capslock = true; + format = { + capslock = "C {icon}"; + numlock = "{icon} N"; + }; + format-icons = { + locked = " "; + unlocked = " "; + }; + }; + + pulseaudio = { + format = "{volume}% {icon} {format_source}"; + format-bluetooth = "{volume}% {icon} {format_source}"; + format-bluetooth-muted = " {icon} {format_source}"; + format-muted = " {format_source}"; + format-source = "{volume}% "; + format-source-muted = " "; + format-icons = { + headphone = ""; + default = [ + " " + " " + " " + ]; + }; + on-click = "pavucontrol"; + }; + + network = { + format-wifi = "{essid} ({signalStrength}%)  "; + format-ethernet = "{ipaddr}/{cidr} 🔌"; + tooltip-format = "{ifname} via {gwaddr} "; + format-linked = "{ifname} (No IP) "; + format-disconnected = "Disconnected ⚠"; + format-alt = "{ifname}: {ipaddr}/{cidr}"; + }; + + cpu = { + format = "{usage}%  "; + tooltip = true; + }; + + memory = { + format = "{used}/{total} GiB ({percentage}%)  "; + tooltip = false; + }; + + temperature = { + critical-threshold = 80; + format = "{temperatureC}°C {icon}"; + format-icons = [ + "" + "" + "" + ]; + }; + + battery = { + format = "{capacity}% {icon}"; + }; + + clock = { + tooltip-format = "{calendar}"; + format = "{0:%H:%M} {0:%Y-%m-%d}"; + }; + + tray = { + spacing = 20; + }; + + "custom/power" = { + format = "⏻ "; + tooltip = false; + menu = "on-click"; + menu-file = "$HOME/.config/waybar/power_menu.xml"; + menu-actions = { + shutdown = "hyprshutdown --post-cmd 'shutdown -P 0'"; + reboot = "hyprshutdown --post-cmd 'reboot'"; + }; + }; + }; + + style = ./style.css; + }; + + home.file = { + waybar-custom-power = { + target = ".config/waybar/power_menu.xml"; + source = ./power_menu.xml; + }; + }; + }; + }; +} -- 2.51.2 From 36d327af7335c122e4cf21894148fd5b77d33dc1 Mon Sep 17 00:00:00 2001 From: Alex van de Sandt Date: Wed, 24 Jun 2026 14:48:56 -0500 Subject: [PATCH 07/16] Move kitty config to den module --- _old/kitty.nix | 41 ------------------------------- flake.lock | 45 ++++------------------------------ flake.nix | 1 - modules/hosts/flock/flock.nix | 4 ++- modules/hyprland/_settings.nix | 6 ++--- modules/hyprland/hyprland.nix | 9 ++++++- modules/igneous.nix | 1 + modules/kitty.nix | 44 +++++++++++++++++++++++++++++++++ 8 files changed, 64 insertions(+), 87 deletions(-) delete mode 100644 _old/kitty.nix create mode 100644 modules/kitty.nix diff --git a/_old/kitty.nix b/_old/kitty.nix deleted file mode 100644 index 4af89e1..0000000 --- a/_old/kitty.nix +++ /dev/null @@ -1,41 +0,0 @@ -{ - programs.kitty = { - enable = true; - enableGitIntegration = true; - - themeFile = "Catppuccin-Frappe"; - settings = { - # font_family = "Berkeley Mono"; - font_family = "family='Berkeley Mono' postscript_name=BerkeleyMono-Regular"; - cursor_trail = 1; - - scrollbar = "hovered"; - scrollbar_width = 1.5; - scrollbar_hover_width = 1.5; - scrollbar_radius = 0.5; - - mouse_hide_wait = "1.0 0 0 no"; - - strip_trailing_spaces = "smart"; - - active_border_color = "blue"; - inactive_border_color = "white"; - bell_border_color = "red"; - - inactive_text_alpha = 0.6; - - tab_bar_style = "slant"; - - background_opacity = 0.9; - transparent_background_colors = "#3b3f53@0.9"; - }; - keybindings = { - "ctrl+up" = "neighboring_window up"; - "ctrl+right" = "neighboring_window right"; - "ctrl+down" = "neighboring_window down"; - "ctrl+left" = "neighboring_window left"; - "ctrl+shfit+p" = "nth_window -1"; - "ctrl+alt+t" = "detach_window new-tab"; - }; - }; -} diff --git a/flake.lock b/flake.lock index 0f0e6d3..3e85b71 100644 --- a/flake.lock +++ b/flake.lock @@ -191,24 +191,6 @@ "type": "github" } }, - "hyprcursor-phinger": { - "inputs": { - "nixpkgs": "nixpkgs" - }, - "locked": { - "lastModified": 1763845612, - "narHash": "sha256-78zH5GrYa35bEkzeVnl8uXFbZ/zsiSHayjxZlNt+Xe8=", - "owner": "jappie3", - "repo": "hyprcursor-phinger", - "rev": "1207a845501a28e0e00d4a8e935ee0c9cab30650", - "type": "github" - }, - "original": { - "owner": "jappie3", - "repo": "hyprcursor-phinger", - "type": "github" - } - }, "hyprgraphics": { "inputs": { "hyprutils": [ @@ -249,7 +231,7 @@ "hyprutils": "hyprutils", "hyprwayland-scanner": "hyprwayland-scanner", "hyprwire": "hyprwire", - "nixpkgs": "nixpkgs_2", + "nixpkgs": "nixpkgs", "pre-commit-hooks": "pre-commit-hooks", "systems": "systems", "xdph": "xdph" @@ -515,22 +497,6 @@ } }, "nixpkgs": { - "locked": { - "lastModified": 1762977756, - "narHash": "sha256-4PqRErxfe+2toFJFgcRKZ0UI9NSIOJa+7RXVtBhy4KE=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "c5ae371f1a6a7fd27823bc500d9390b38c05fa55", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_2": { "locked": { "lastModified": 1780749050, "narHash": "sha256-3av0pIjlOWQ6rDbNOmpUSvbNnJkGORQKKjb4LtCZsIY=", @@ -546,7 +512,7 @@ "type": "github" } }, - "nixpkgs_3": { + "nixpkgs_2": { "locked": { "lastModified": 1782175435, "narHash": "sha256-8d2wCNWKnd86GzKZvbuqqlS+HqMrheXkvRf0qGJ/oA0=", @@ -559,7 +525,7 @@ "url": "https://channels.nixos.org/nixpkgs-unstable/nixexprs.tar.xz" } }, - "nixpkgs_4": { + "nixpkgs_3": { "locked": { "lastModified": 1782175435, "narHash": "sha256-EMzXKmnOtBQ2MnvpiNOm7E+kOMvdPrIKaeg52Tip2Uk=", @@ -578,7 +544,7 @@ "nixvim": { "inputs": { "flake-parts": "flake-parts_2", - "nixpkgs": "nixpkgs_4", + "nixpkgs": "nixpkgs_3", "systems": "systems_2" }, "locked": { @@ -624,10 +590,9 @@ "flake-file": "flake-file", "flake-parts": "flake-parts", "home-manager": "home-manager", - "hyprcursor-phinger": "hyprcursor-phinger", "hyprland": "hyprland", "import-tree": "import-tree", - "nixpkgs": "nixpkgs_3", + "nixpkgs": "nixpkgs_2", "nixvim": "nixvim" } }, diff --git a/flake.nix b/flake.nix index 2407cd7..ecd14a1 100644 --- a/flake.nix +++ b/flake.nix @@ -14,7 +14,6 @@ url = "github:nix-community/home-manager"; inputs.nixpkgs.follows = "nixpkgs"; }; - hyprcursor-phinger.url = "github:jappie3/hyprcursor-phinger"; hyprland.url = "github:hyprwm/Hyprland"; import-tree.url = "github:vic/import-tree"; nixpkgs.url = "https://channels.nixos.org/nixpkgs-unstable/nixexprs.tar.xz"; diff --git a/modules/hosts/flock/flock.nix b/modules/hosts/flock/flock.nix index a10f062..0130c7a 100644 --- a/modules/hosts/flock/flock.nix +++ b/modules/hosts/flock/flock.nix @@ -1,9 +1,11 @@ { den, ... }: { # host aspect den.aspects.flock = { - includes = [ + includes = with den.aspects; [ (den.batteries.hostname) (den.batteries.tty-autologin "igneous") + + hyprland ]; # host NixOS configuration diff --git a/modules/hyprland/_settings.nix b/modules/hyprland/_settings.nix index 0844993..8340003 100644 --- a/modules/hyprland/_settings.nix +++ b/modules/hyprland/_settings.nix @@ -8,9 +8,9 @@ ]; # keywords https://wiki.hypr.land/0.54.0/Configuring/Keywords/ - # "$terminal" = "kitty"; + "$terminal" = "kitty"; # "$browser " = "zen"; - # "$menu " = "hyprlauncher"; + "$menu " = "hyprlauncher"; "$mainMod" = "SUPER"; # autostart @@ -140,7 +140,7 @@ "$mainMod SHIFT, Q, killactive," "$mainMod, M, exit," "$mainMod, V, togglefloating," - # "$mainMod, SPACE, exec, $menu" + "$mainMod, SPACE, exec, $menu" # "$mainMod, F, exec, $browser" "$mainMod, TAB, focuscurrentorlast" diff --git a/modules/hyprland/hyprland.nix b/modules/hyprland/hyprland.nix index f393e61..caaf25a 100644 --- a/modules/hyprland/hyprland.nix +++ b/modules/hyprland/hyprland.nix @@ -1,7 +1,6 @@ { den, inputs, ... }: { flake-file.inputs = { - hyprcursor-phinger.url = "github:jappie3/hyprcursor-phinger"; hyprland.url = "github:hyprwm/Hyprland"; }; @@ -40,6 +39,14 @@ systemd.enable = true; configType = "hyprlang"; }; + + services.hyprlauncher = { + enable = true; + settings = { + finders.desktop_icons = true; + general.grab_focus = true; + }; + }; }; }; } diff --git a/modules/igneous.nix b/modules/igneous.nix index ac0fa38..200b180 100644 --- a/modules/igneous.nix +++ b/modules/igneous.nix @@ -8,6 +8,7 @@ bat hyprland + kitty nixvim shell shell.bash diff --git a/modules/kitty.nix b/modules/kitty.nix new file mode 100644 index 0000000..01a8954 --- /dev/null +++ b/modules/kitty.nix @@ -0,0 +1,44 @@ +{ + den.aspects.kitty = { + homeManager = { + programs.kitty = { + enable = true; + enableGitIntegration = true; + + themeFile = "Catppuccin-Frappe"; + settings = { + # font_family = "family='Berkeley Mono' postscript_name=BerkeleyMono-Regular"; + cursor_trail = 1; + + scrollbar = "hovered"; + scrollbar_width = 1.5; + scrollbar_hover_width = 1.5; + scrollbar_radius = 0.5; + + mouse_hide_wait = "1.0 0 0 no"; + + strip_trailing_spaces = "smart"; + + active_border_color = "blue"; + inactive_border_color = "white"; + bell_border_color = "red"; + + inactive_text_alpha = 0.6; + + tab_bar_style = "slant"; + + background_opacity = 0.9; + transparent_background_colors = "#3b3f53@0.9"; + }; + keybindings = { + "ctrl+up" = "neighboring_window up"; + "ctrl+right" = "neighboring_window right"; + "ctrl+down" = "neighboring_window down"; + "ctrl+left" = "neighboring_window left"; + "ctrl+shfit+p" = "nth_window -1"; + "ctrl+alt+t" = "detach_window new-tab"; + }; + }; + }; + }; +} -- 2.51.2 From b23d68aac5e245059071bafe606ba1eb36e3a845 Mon Sep 17 00:00:00 2001 From: Alex van de Sandt Date: Wed, 24 Jun 2026 15:06:21 -0500 Subject: [PATCH 08/16] Move 1password config to den module --- modules/1password.nix | 18 ++++++++++++++++++ modules/hosts/flock/flock.nix | 7 ++++++- modules/hyprland/_settings.nix | 4 ++-- modules/igneous.nix | 1 + 4 files changed, 27 insertions(+), 3 deletions(-) create mode 100644 modules/1password.nix diff --git a/modules/1password.nix b/modules/1password.nix new file mode 100644 index 0000000..e54cb31 --- /dev/null +++ b/modules/1password.nix @@ -0,0 +1,18 @@ +{ den, ... }: { + den.aspects._1password = { user, ... }: { + includes = [ + (den.batteries.unfree [ + "1password" + "1password-cli" + ]) + ]; + + nixos = { + programs._1password.enable = true; + programs._1password-gui = { + enable = true; + polkitPolicyOwners = [ "${user.name}" ]; + }; + }; + }; +} diff --git a/modules/hosts/flock/flock.nix b/modules/hosts/flock/flock.nix index 0130c7a..38d224c 100644 --- a/modules/hosts/flock/flock.nix +++ b/modules/hosts/flock/flock.nix @@ -21,7 +21,12 @@ provides.to-users.homeManager = { pkgs, ... }: { - home.packages = [ pkgs.vim ]; + home.packages = with pkgs; [ + fd + htop + ripgrep + unzip + ]; }; }; } diff --git a/modules/hyprland/_settings.nix b/modules/hyprland/_settings.nix index 8340003..14cccbd 100644 --- a/modules/hyprland/_settings.nix +++ b/modules/hyprland/_settings.nix @@ -13,9 +13,9 @@ "$menu " = "hyprlauncher"; "$mainMod" = "SUPER"; - # autostart + # TODO: use an autostart quirk exec-once = [ - # "1password --silent &" + "1password --silent &" # "hyprpaper &" ]; diff --git a/modules/igneous.nix b/modules/igneous.nix index 200b180..ebf0096 100644 --- a/modules/igneous.nix +++ b/modules/igneous.nix @@ -6,6 +6,7 @@ den.batteries.define-user den.batteries.primary-user + _1password bat hyprland kitty -- 2.51.2 From 13af4365d33c2753759bb233a31225083b88b34e Mon Sep 17 00:00:00 2001 From: Alex van de Sandt Date: Wed, 24 Jun 2026 15:39:32 -0500 Subject: [PATCH 09/16] Move 1password, git, and ssh configs to den modules --- _old/git.nix | 61 ------------------------------------------- _old/ssh.nix | 24 ----------------- modules/1password.nix | 51 ++++++++++++++++++++++++++++++++++++ modules/git.nix | 36 +++++++++++++++++++++++++ modules/igneous.nix | 3 +++ 5 files changed, 90 insertions(+), 85 deletions(-) delete mode 100644 _old/git.nix delete mode 100644 _old/ssh.nix create mode 100644 modules/git.nix diff --git a/_old/git.nix b/_old/git.nix deleted file mode 100644 index 30f1fa6..0000000 --- a/_old/git.nix +++ /dev/null @@ -1,61 +0,0 @@ -{ pkgs, ... }: -{ - programs.git = { - enable = true; - settings = { - init.defaultBranch = "main"; - user = { - email = "me@alexvds.com"; - name = "Alex van de Sandt"; - signingkey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHJ9zhEHFJIpZ4qr6iu3Cqca3mquGCGyiIrcI0e3jXLZ"; - }; - - # Sign commits with SSH via 1password - gpg = { - format = "ssh"; - ssh.program = "${pkgs._1password-gui}/bin/op-ssh-sign"; - ssh.allowedSignersFile = "~/.config/git/allowedSigners"; - }; - commit.gpgsign = true; - }; - }; - - programs.jujutsu = { - enable = true; - settings = { - user = { - email = "me@alexvds.com"; - name = "Alex van de Sandt"; - }; - - signing = { - sign-all = true; - backend = "ssh"; - key = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHJ9zhEHFJIpZ4qr6iu3Cqca3mquGCGyiIrcI0e3jXLZ"; - backends.ssh = { - program = "${pkgs._1password-gui}/bin/op-ssh-sign"; - allowedSignersFile = "~/.config/git/allowedSigners"; - }; - }; - }; - }; - - home.file = { - # To facilitate git signature verification - # SSH fingerprint comes from 1password - allowedSigners = { - target = ".config/git/allowedSigners"; - text = '' - alex@avandesa.dev ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHJ9zhEHFJIpZ4qr6iu3Cqca3mquGCGyiIrcI0e3jXLZ - ''; - }; - - "1passwordSshAgentConfig" = { - target = ".config/1Password/ssh/agent.toml"; - text = '' - [[ssh-keys]] - vault = "Programming" - ''; - }; - }; -} diff --git a/_old/ssh.nix b/_old/ssh.nix deleted file mode 100644 index f7907d0..0000000 --- a/_old/ssh.nix +++ /dev/null @@ -1,24 +0,0 @@ -{ - programs.ssh = { - enable = true; - enableDefaultConfig = false; - settings = { - "*" = { - addKeysToAgent = "no"; - compression = false; - controlMaster = "no"; - controlPath = "~/.ssh/master-%r@%n:%p"; - controlPersist = "no"; - forwardAgent = false; - hashKnownHosts = false; - identityAgent = "~/.1password/agent.sock"; - serverAliveCountMax = 3; - serverAliveInterval = 0; - userKnownHostsFile = "~/.ssh/known_hosts"; - }; - "15.204.234.43" = { - forwardAgent = true; - }; - }; - }; -} diff --git a/modules/1password.nix b/modules/1password.nix index e54cb31..6d33218 100644 --- a/modules/1password.nix +++ b/modules/1password.nix @@ -14,5 +14,56 @@ polkitPolicyOwners = [ "${user.name}" ]; }; }; + + homeManager = { pkgs, ... }: { + programs.git.settings = { + # Sign commits with SSH via 1password + gpg = { + format = "ssh"; + ssh.program = "${pkgs._1password-gui}/bin/op-ssh-sign"; + ssh.allowedSignersFile = "~/.config/git/allowedSigners"; + }; + commit.gpgsign = true; + }; + + programs.ssh = { + enable = true; + enableDefaultConfig = false; + settings = { + "*" = { + addKeysToAgent = "no"; + compression = false; + controlMaster = "no"; + controlPath = "~/.ssh/master-%r@%n:%p"; + controlPersist = "no"; + forwardAgent = false; + hashKnownHosts = false; + identityAgent = "~/.1password/agent.sock"; + serverAliveCountMax = 3; + serverAliveInterval = 0; + userKnownHostsFile = "~/.ssh/known_hosts"; + }; + }; + }; + + home.file = { + # To facilitate git signature verification + # SSH fingerprint comes from 1password + allowedSigners = { + target = ".config/git/allowedSigners"; + text = '' + alex@avandesa.dev ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHJ9zhEHFJIpZ4qr6iu3Cqca3mquGCGyiIrcI0e3jXLZ + ''; + }; + + "1passwordSshAgentConfig" = { + target = ".config/1Password/ssh/agent.toml"; + text = '' + [[ssh-keys]] + vault = "Programming" + ''; + }; + }; + }; }; } diff --git a/modules/git.nix b/modules/git.nix new file mode 100644 index 0000000..895518b --- /dev/null +++ b/modules/git.nix @@ -0,0 +1,36 @@ +{ + den.aspects.git = { + homeManager = { + programs.git = { + enable = true; + settings = { + init.defaultBranch = "main"; + user = { + email = "me@alexvds.com"; + name = "Alex van de Sandt"; + signingkey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHJ9zhEHFJIpZ4qr6iu3Cqca3mquGCGyiIrcI0e3jXLZ"; + }; + }; + }; + + home.shellAliases = { + clstat = "clear && git status"; + ga = "git add"; + gaa = "git add ."; + gc = "git commit --message"; + gca = "git commit --amend"; + "gca!" = "git commit --amend --no-edit"; + gd = "git diff"; + gds = "git diff --staged"; + glol = "git log --graph --pretty=\"%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ar) %C(bold blue)<%an>%Creset\""; + glola = "git log --graph --pretty=\"%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ar) %C(bold blue)<%an>%Creset\" --all"; + gp = "git push"; + "gp!" = "git push --force"; + gpl = "git pull"; + gr = "git restore"; + grs = "git restore --staged"; + gs = "git status"; + }; + }; + }; +} diff --git a/modules/igneous.nix b/modules/igneous.nix index ebf0096..0b6e091 100644 --- a/modules/igneous.nix +++ b/modules/igneous.nix @@ -1,5 +1,7 @@ { den, ... }: { + flake.den = den; + # user aspect den.aspects.igneous = { includes = with den.aspects; [ @@ -8,6 +10,7 @@ _1password bat + git hyprland kitty nixvim -- 2.51.2 From 7bc82d5386c3edfe80b802f6bacc78c4a26607f5 Mon Sep 17 00:00:00 2001 From: Alex van de Sandt Date: Wed, 24 Jun 2026 15:54:21 -0500 Subject: [PATCH 10/16] Add zen module --- flake.lock | 23 ++++++++++++++++++++++- flake.nix | 4 ++++ modules/hyprland/_settings.nix | 4 ++-- modules/igneous.nix | 1 + modules/zen.nix | 25 +++++++++++++++++++++++++ 5 files changed, 54 insertions(+), 3 deletions(-) create mode 100644 modules/zen.nix diff --git a/flake.lock b/flake.lock index 3e85b71..17f33f9 100644 --- a/flake.lock +++ b/flake.lock @@ -593,7 +593,8 @@ "hyprland": "hyprland", "import-tree": "import-tree", "nixpkgs": "nixpkgs_2", - "nixvim": "nixvim" + "nixvim": "nixvim", + "zen-browser": "zen-browser" } }, "systems": { @@ -667,6 +668,26 @@ "repo": "xdg-desktop-portal-hyprland", "type": "github" } + }, + "zen-browser": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1781847955, + "narHash": "sha256-1OSYOGuJp/NoODmSHjsz+6TB/kSilJ+BsFihjY7TTnc=", + "owner": "youwen5", + "repo": "zen-browser-flake", + "rev": "4bca251cd556677f7b765ff324d1638ae215be13", + "type": "github" + }, + "original": { + "owner": "youwen5", + "repo": "zen-browser-flake", + "type": "github" + } } }, "root": "root", diff --git a/flake.nix b/flake.nix index ecd14a1..ac7f487 100644 --- a/flake.nix +++ b/flake.nix @@ -18,5 +18,9 @@ import-tree.url = "github:vic/import-tree"; nixpkgs.url = "https://channels.nixos.org/nixpkgs-unstable/nixexprs.tar.xz"; nixvim.url = "github:nix-community/nixvim"; + zen-browser = { + url = "github:youwen5/zen-browser-flake"; + inputs.nixpkgs.follows = "nixpkgs"; + }; }; } diff --git a/modules/hyprland/_settings.nix b/modules/hyprland/_settings.nix index 14cccbd..523e837 100644 --- a/modules/hyprland/_settings.nix +++ b/modules/hyprland/_settings.nix @@ -9,7 +9,7 @@ # keywords https://wiki.hypr.land/0.54.0/Configuring/Keywords/ "$terminal" = "kitty"; - # "$browser " = "zen"; + "$browser " = "zen"; "$menu " = "hyprlauncher"; "$mainMod" = "SUPER"; @@ -141,7 +141,7 @@ "$mainMod, M, exit," "$mainMod, V, togglefloating," "$mainMod, SPACE, exec, $menu" - # "$mainMod, F, exec, $browser" + "$mainMod, F, exec, $browser" "$mainMod, TAB, focuscurrentorlast" # Move focus with mainMod + arrow keys diff --git a/modules/igneous.nix b/modules/igneous.nix index 0b6e091..a88844b 100644 --- a/modules/igneous.nix +++ b/modules/igneous.nix @@ -17,6 +17,7 @@ shell shell.bash shell.zsh + zen ]; homeManager = diff --git a/modules/zen.nix b/modules/zen.nix new file mode 100644 index 0000000..2543b93 --- /dev/null +++ b/modules/zen.nix @@ -0,0 +1,25 @@ +{ inputs, ... }: { + flake-file.inputs.zen-browser = { + url = "github:youwen5/zen-browser-flake"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + + den.aspects.zen = { host, ... }: { + homeManager = { + home.packages = [ + inputs.zen-browser.packages.${host.system}.default + ]; + + xdg.mimeApps = { + enable = true; + defaultApplications = { + "text/html" = "zen.desktop"; + "x-scheme-handler/http" = "zen.desktop"; + "x-scheme-handler/https" = "zen.desktop"; + "x-scheme-handler/about" = "zen.desktop"; + "x-scheme-handler/unknown" = "zen.desktop"; + }; + }; + }; + }; +} -- 2.51.2 From 7746467ae89e5ed338c19a68c34faff94c6b73ef Mon Sep 17 00:00:00 2001 From: Alex van de Sandt Date: Wed, 24 Jun 2026 16:26:40 -0500 Subject: [PATCH 11/16] Add more misc system modules --- modules/defaults.nix | 2 ++ modules/fonts.nix | 16 ++++++++++++++++ modules/hosts/flock/flock.nix | 15 ++++++++------- modules/hosts/perch/perch.nix | 16 ++++------------ modules/hyprland/hyprland.nix | 5 +++++ modules/igneous.nix | 7 +++++++ modules/nvidia.nix | 33 +++++++++++++++++++++++++++++++++ modules/pipewire.nix | 17 +++++++++++++++++ modules/polkit.nix | 7 +++++++ modules/sddm.nix | 10 ++++++++++ 10 files changed, 109 insertions(+), 19 deletions(-) create mode 100644 modules/fonts.nix create mode 100644 modules/nvidia.nix create mode 100644 modules/pipewire.nix create mode 100644 modules/polkit.nix create mode 100644 modules/sddm.nix diff --git a/modules/defaults.nix b/modules/defaults.nix index 09d465c..6f14245 100644 --- a/modules/defaults.nix +++ b/modules/defaults.nix @@ -11,6 +11,8 @@ boot.loader.systemd-boot.enable = true; boot.loader.efi.canTouchEfiVariables = true; + boot.kernelPackages = pkgs.linuxPackages_latest; + networking.networkmanager.enable = true; time.timeZone = "America/Chicago"; diff --git a/modules/fonts.nix b/modules/fonts.nix new file mode 100644 index 0000000..3053cb1 --- /dev/null +++ b/modules/fonts.nix @@ -0,0 +1,16 @@ +{ + den.aspects.fonts = { + nixos = { pkgs, ... }: { + fonts.packages = with pkgs; [ + iosevka + nerd-fonts.iosevka + ]; + fonts.fontconfig.defaultFonts = { + monospace = [ + # "Berkeley Mono" + "iosevka" + ]; + }; + }; + }; +} diff --git a/modules/hosts/flock/flock.nix b/modules/hosts/flock/flock.nix index 38d224c..af0c0c0 100644 --- a/modules/hosts/flock/flock.nix +++ b/modules/hosts/flock/flock.nix @@ -6,16 +6,17 @@ (den.batteries.tty-autologin "igneous") hyprland + nvidia + pipewire + polkit + sddm ]; # host NixOS configuration - nixos = - { pkgs, ... }: - { - imports = [ ./_hardware-configuration.nix ]; - system.stateVersion = "25.05"; - boot.kernelPackages = pkgs.linuxPackages_latest; - }; + nixos = { + imports = [ ./_hardware-configuration.nix ]; + system.stateVersion = "25.05"; + }; # host provides default home environment for its users provides.to-users.homeManager = diff --git a/modules/hosts/perch/perch.nix b/modules/hosts/perch/perch.nix index a4dfb1c..3924ae4 100644 --- a/modules/hosts/perch/perch.nix +++ b/modules/hosts/perch/perch.nix @@ -7,19 +7,11 @@ ]; # host NixOS configuration - nixos = - { pkgs, ... }: - { - imports = [ ./_hardware-configuration.nix ]; - environment.systemPackages = [ pkgs.hello ]; - boot.kernelPackages = pkgs.linuxPackages_latest; - }; + nixos = { + imports = [ ./_hardware-configuration.nix ]; + }; # host provides default home environment for its users - provides.to-users.homeManager = - { pkgs, ... }: - { - home.packages = [ pkgs.vim ]; - }; + provides.to-users.homeManager = { }; }; } diff --git a/modules/hyprland/hyprland.nix b/modules/hyprland/hyprland.nix index caaf25a..09754d8 100644 --- a/modules/hyprland/hyprland.nix +++ b/modules/hyprland/hyprland.nix @@ -26,6 +26,11 @@ trusted-substituters = [ "https://hyprland.cachix.org" ]; trusted-public-keys = [ "hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc=" ]; }; + + services.xserver.xkb = { + layout = "us"; + variant = ""; + }; }; homeManager = { diff --git a/modules/igneous.nix b/modules/igneous.nix index a88844b..857f0e9 100644 --- a/modules/igneous.nix +++ b/modules/igneous.nix @@ -20,6 +20,13 @@ zen ]; + nixos = { + services.displayManager.autoLogin = { + enable = true; + user = "igneous"; + }; + }; + homeManager = { pkgs, ... }: { diff --git a/modules/nvidia.nix b/modules/nvidia.nix new file mode 100644 index 0000000..05080e0 --- /dev/null +++ b/modules/nvidia.nix @@ -0,0 +1,33 @@ +{ den, ... }: { + den.aspects.nvidia = { + includes = [ + (den.batteries.unfree [ + "nvidia-kernel-modules" + "nvidia-settings" + "nvidia-x11" + ]) + ]; + + nixos = { config, ... }: { + # Enable Open GL + hardware.graphics.enable = true; + + # Load NVIDIA drivers + services.xserver.videoDrivers = [ "nvidia" ]; + + hardware.nvidia = { + # Required + modesetting.enable = true; + + # Disable open-source kernel module, 1070 not compatible + open = false; + + # Enable the settings menu via `nvidia-settings` + nvidiaSettings = true; + + # Use legacy driver for GTX 1070 + package = config.boot.kernelPackages.nvidiaPackages.legacy_580; + }; + }; + }; +} diff --git a/modules/pipewire.nix b/modules/pipewire.nix new file mode 100644 index 0000000..7698afb --- /dev/null +++ b/modules/pipewire.nix @@ -0,0 +1,17 @@ +{ + # Enable sound with pipewire. + den.aspects.pipewire = { + nixos = { pkgs, ... }: { + environment.systemPackages = [ pkgs.pavucontrol ]; + + services.pulseaudio.enable = false; + security.rtkit.enable = true; + services.pipewire = { + enable = true; + alsa.enable = true; + alsa.support32Bit = true; + pulse.enable = true; + }; + }; + }; +} diff --git a/modules/polkit.nix b/modules/polkit.nix new file mode 100644 index 0000000..7488f6b --- /dev/null +++ b/modules/polkit.nix @@ -0,0 +1,7 @@ +{ + den.aspects.polkit = { + nixos = { + security.polkit.enable = true; + }; + }; +} diff --git a/modules/sddm.nix b/modules/sddm.nix new file mode 100644 index 0000000..d441237 --- /dev/null +++ b/modules/sddm.nix @@ -0,0 +1,10 @@ +{ + den.aspects.sddm = { + nixos = { + services.displayManager.sddm = { + enable = true; + wayland.enable = true; + }; + }; + }; +} -- 2.51.2 From 81c851cffe27fbf2b96fcc906a46ebeeb1a5b4b4 Mon Sep 17 00:00:00 2001 From: Alex van de Sandt Date: Wed, 24 Jun 2026 16:41:20 -0500 Subject: [PATCH 12/16] Add unfree apps --- modules/hyprland/_settings.nix | 12 ++++++------ modules/igneous.nix | 4 ++++ modules/unfree/discord.nix | 11 +++++++++++ modules/unfree/obsidian.nix | 11 +++++++++++ modules/unfree/spotify.nix | 11 +++++++++++ modules/unfree/steam.nix | 16 ++++++++++++++++ 6 files changed, 59 insertions(+), 6 deletions(-) create mode 100644 modules/unfree/discord.nix create mode 100644 modules/unfree/obsidian.nix create mode 100644 modules/unfree/spotify.nix create mode 100644 modules/unfree/steam.nix diff --git a/modules/hyprland/_settings.nix b/modules/hyprland/_settings.nix index 523e837..b4f33dc 100644 --- a/modules/hyprland/_settings.nix +++ b/modules/hyprland/_settings.nix @@ -181,12 +181,12 @@ "$mainMod SHIFT, 0, movetoworkspace, 10" # Switch to app-specific workspaces - # "$mainMod , D, workspace, discord" - # "$mainMod SHIFT, D, movetoworkspace, discord" - # "$mainMod , S, workspace, steam" - # "$mainMod SHIFT, S, movetoworkspace, steam" - # "$mainMod , P, workspace, spotify" - # "$mainMod SHIFT, P, movetoworkspace, spotify" + "$mainMod , D, workspace, discord" + "$mainMod SHIFT, D, movetoworkspace, discord" + "$mainMod , S, workspace, steam" + "$mainMod SHIFT, S, movetoworkspace, steam" + "$mainMod , P, workspace, spotify" + "$mainMod SHIFT, P, movetoworkspace, spotify" # Scroll through existing workspaces with mainMod + scroll "$mainMod, mouse_up, workspace, e+1" diff --git a/modules/igneous.nix b/modules/igneous.nix index 857f0e9..755c27e 100644 --- a/modules/igneous.nix +++ b/modules/igneous.nix @@ -10,13 +10,17 @@ _1password bat + discord git hyprland kitty nixvim + obsidian shell shell.bash shell.zsh + spotify + steam zen ]; diff --git a/modules/unfree/discord.nix b/modules/unfree/discord.nix new file mode 100644 index 0000000..753a9ed --- /dev/null +++ b/modules/unfree/discord.nix @@ -0,0 +1,11 @@ +{ den, ... }: { + den.aspects.discord = { + includes = [ + (den.batteries.unfree [ "discord" ]) + ]; + + homeManager = { + programs.discord.enable = true; + }; + }; +} diff --git a/modules/unfree/obsidian.nix b/modules/unfree/obsidian.nix new file mode 100644 index 0000000..bb926d6 --- /dev/null +++ b/modules/unfree/obsidian.nix @@ -0,0 +1,11 @@ +{ den, ... }: { + den.aspects.obsidian = { + includes = [ + (den.batteries.unfree [ "obsidian" ]) + ]; + + homeManager = { pkgs, ... }: { + home.packages = [ pkgs.obsidian ]; + }; + }; +} diff --git a/modules/unfree/spotify.nix b/modules/unfree/spotify.nix new file mode 100644 index 0000000..0d55895 --- /dev/null +++ b/modules/unfree/spotify.nix @@ -0,0 +1,11 @@ +{ den, ... }: { + den.aspects.spotify = { + includes = [ + (den.batteries.unfree [ "spotify" ]) + ]; + + homeManager = { pkgs, ... }: { + home.packages = [ pkgs.spotify ]; + }; + }; +} diff --git a/modules/unfree/steam.nix b/modules/unfree/steam.nix new file mode 100644 index 0000000..8f82117 --- /dev/null +++ b/modules/unfree/steam.nix @@ -0,0 +1,16 @@ +{ den, ... }: { + den.aspects.steam = { + includes = [ + (den.batteries.unfree [ + "steam" + "steam-original" + "steam-unwrapped" + "steam-run" + ]) + ]; + + nixos = { + programs.steam.enable = true; + }; + }; +} -- 2.51.2 From 254488604b49ded340ac6eeda7550a693ec31fbd Mon Sep 17 00:00:00 2001 From: Alex van de Sandt Date: Wed, 24 Jun 2026 16:46:49 -0500 Subject: [PATCH 13/16] Add hyprpaper config --- _old/desktop/hyprpaper.nix | 15 --------------- modules/hyprland/hyprland.nix | 5 ++++- modules/hyprland/hyprpaper.nix | 19 +++++++++++++++++++ 3 files changed, 23 insertions(+), 16 deletions(-) delete mode 100644 _old/desktop/hyprpaper.nix create mode 100644 modules/hyprland/hyprpaper.nix diff --git a/_old/desktop/hyprpaper.nix b/_old/desktop/hyprpaper.nix deleted file mode 100644 index 8107a12..0000000 --- a/_old/desktop/hyprpaper.nix +++ /dev/null @@ -1,15 +0,0 @@ -{ - services.hyprpaper = { - enable = true; - settings = { - preload = [ "~/Pictures/nomo2.jpg" ]; - wallpaper = [ - { - monitor = "HDMI-A-2"; - path = "~/Pictures/nomo2.jpg"; - } - ]; - splash = false; - }; - }; -} diff --git a/modules/hyprland/hyprland.nix b/modules/hyprland/hyprland.nix index 09754d8..aa3f126 100644 --- a/modules/hyprland/hyprland.nix +++ b/modules/hyprland/hyprland.nix @@ -5,7 +5,10 @@ }; den.aspects.hyprland = { - includes = with den.aspects; [ hyprland.waybar ]; + includes = with den.aspects; [ + hyprland.hyprpaper + hyprland.waybar + ]; nixos = { pkgs, ... }: { programs.hyprland = diff --git a/modules/hyprland/hyprpaper.nix b/modules/hyprland/hyprpaper.nix new file mode 100644 index 0000000..53a98d5 --- /dev/null +++ b/modules/hyprland/hyprpaper.nix @@ -0,0 +1,19 @@ +{ + den.aspects.hyprland.hyprpaper = { + homeManager = { + services.hyprpaper = { + enable = true; + settings = { + preload = [ "~/Pictures/nomo2.jpg" ]; + wallpaper = [ + { + monitor = "HDMI-A-2"; + path = "~/Pictures/nomo2.jpg"; + } + ]; + splash = false; + }; + }; + }; + }; +} -- 2.51.2 From 1de9d9aeec094944941b7bbf269c87d704cbaeef Mon Sep 17 00:00:00 2001 From: Alex van de Sandt Date: Wed, 24 Jun 2026 17:12:15 -0500 Subject: [PATCH 14/16] Surpress noisy nixvim warning --- flake.lock | 20 +++----------------- flake.nix | 5 ++++- modules/nixvim/nixvim.nix | 3 +++ 3 files changed, 10 insertions(+), 18 deletions(-) diff --git a/flake.lock b/flake.lock index 17f33f9..e608cbb 100644 --- a/flake.lock +++ b/flake.lock @@ -525,26 +525,12 @@ "url": "https://channels.nixos.org/nixpkgs-unstable/nixexprs.tar.xz" } }, - "nixpkgs_3": { - "locked": { - "lastModified": 1782175435, - "narHash": "sha256-EMzXKmnOtBQ2MnvpiNOm7E+kOMvdPrIKaeg52Tip2Uk=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "89570f24e97e614aa34aa9ab1c927b6578a43775", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, "nixvim": { "inputs": { "flake-parts": "flake-parts_2", - "nixpkgs": "nixpkgs_3", + "nixpkgs": [ + "nixpkgs" + ], "systems": "systems_2" }, "locked": { diff --git a/flake.nix b/flake.nix index ac7f487..5463d1a 100644 --- a/flake.nix +++ b/flake.nix @@ -17,7 +17,10 @@ hyprland.url = "github:hyprwm/Hyprland"; import-tree.url = "github:vic/import-tree"; nixpkgs.url = "https://channels.nixos.org/nixpkgs-unstable/nixexprs.tar.xz"; - nixvim.url = "github:nix-community/nixvim"; + nixvim = { + url = "github:nix-community/nixvim"; + inputs.nixpkgs.follows = "nixpkgs"; + }; zen-browser = { url = "github:youwen5/zen-browser-flake"; inputs.nixpkgs.follows = "nixpkgs"; diff --git a/modules/nixvim/nixvim.nix b/modules/nixvim/nixvim.nix index eaafb8a..d6edec9 100644 --- a/modules/nixvim/nixvim.nix +++ b/modules/nixvim/nixvim.nix @@ -1,6 +1,7 @@ { inputs, ... }: { flake-file.inputs.nixvim = { url = "github:nix-community/nixvim"; + inputs.nixpkgs.follows = "nixpkgs"; }; den.aspects.nixvim = { @@ -9,6 +10,8 @@ programs.nixvim = { enable = true; + # surpress horrible noisy warning + nixpkgs.source = inputs.nixpkgs; imports = [ ./_plugins -- 2.51.2 From b6f6c744030004b91bd39cfa4f0fb0224d3a2259 Mon Sep 17 00:00:00 2001 From: Alex van de Sandt Date: Wed, 24 Jun 2026 17:14:55 -0500 Subject: [PATCH 15/16] Remove troubleshooting output --- modules/igneous.nix | 2 -- 1 file changed, 2 deletions(-) diff --git a/modules/igneous.nix b/modules/igneous.nix index 755c27e..424f0b9 100644 --- a/modules/igneous.nix +++ b/modules/igneous.nix @@ -1,7 +1,5 @@ { den, ... }: { - flake.den = den; - # user aspect den.aspects.igneous = { includes = with den.aspects; [ -- 2.51.2 From 33779b170188dc7d50c845f5db8f24326f516eb4 Mon Sep 17 00:00:00 2001 From: Alex van de Sandt Date: Wed, 24 Jun 2026 17:22:03 -0500 Subject: [PATCH 16/16] Make neovim the default editor --- modules/nixvim/nixvim.nix | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/modules/nixvim/nixvim.nix b/modules/nixvim/nixvim.nix index d6edec9..0e48de9 100644 --- a/modules/nixvim/nixvim.nix +++ b/modules/nixvim/nixvim.nix @@ -23,6 +23,10 @@ ]; }; + home.sessionVariables = { + EDITOR = "nvim"; + }; + home.shellAliases = { vim = "nvim"; };