From 74bf4b184d9c010d92b8aad25421f871635bf171 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moritz=20B=C3=B6hme?= Date: Mon, 31 Mar 2025 08:11:10 +0000 Subject: [PATCH] feat: add moritz-desktop --- .gitattributes | 9 + flake.lock | 1034 ++++++++++++++++- flake.nix | 59 +- machines/moritz-desktop/configuration.nix | 138 +++ machines/moritz-desktop/disko.nix | 114 ++ .../moritz-desktop/hardware-configuration.nix | 27 + machines/moritz-server/configuration.nix | 4 - modules/lib.nix | 80 ++ modules/moritz/config/ai.nix | 26 + modules/moritz/config/shell.nix | 22 + modules/moritz/config/terminal.nix | 14 + modules/moritz/config/theming/_catppuccin.nix | 458 ++++++++ .../config/theming/catppuccin-frappe.nix | 40 + .../config/theming/catppuccin-latte.nix | 40 + .../config/theming/catppuccin-macchiato.nix | 40 + .../config/theming/catppuccin-mocha.nix | 40 + modules/moritz/config/theming/default.nix | 218 ++++ modules/moritz/config/theming/dracula.nix | 444 +++++++ modules/moritz/config/wallpapers/default.nix | 24 + .../wallpapers/wallpapers/a_short_walk.jpg | 3 + .../wallpapers/blender_pink_blue.jpg | 3 + .../wallpapers/wallpapers/elephants.jpg | 3 + .../wallpapers/wallpapers/forest_road.jpg | 3 + .../wallpapers/wallpapers/little-ships.jpg | 3 + .../wallpapers/wallpapers/old-hardware.jpg | 3 + .../wallpapers/wallpapers/red_beetle.jpg | 3 + .../config/wallpapers/wallpapers/stardust.jpg | 3 + .../wallpapers/wallpapers/whale_in_sky.jpg | 3 + modules/moritz/default.nix | 7 + modules/moritz/nixpkgs.nix | 61 + modules/moritz/profiles/base.nix | 142 +++ modules/moritz/profiles/desktop.nix | 148 +++ modules/moritz/profiles/gaming.nix | 40 + modules/moritz/profiles/impermanence.nix | 87 ++ modules/moritz/profiles/personal.nix | 47 + modules/moritz/profiles/personal_calendar.nix | 57 + modules/moritz/profiles/personal_contacts.nix | 55 + modules/moritz/profiles/personal_mail.nix | 76 ++ modules/moritz/profiles/ripping.nix | 23 + modules/moritz/profiles/webis.nix | 39 + modules/moritz/profiles/yubikey.nix | 44 + modules/moritz/programs/adb.nix | 17 + modules/moritz/programs/aider.nix | 28 + modules/moritz/programs/chromium.nix | 26 + modules/moritz/programs/code.nix | 65 ++ modules/moritz/programs/direnv.nix | 41 + modules/moritz/programs/firefox.nix | 181 +++ modules/moritz/programs/fish.nix | 121 ++ modules/moritz/programs/foot.nix | 29 + modules/moritz/programs/ghostty.nix | 33 + modules/moritz/programs/git.nix | 77 ++ modules/moritz/programs/gnome.nix | 72 ++ modules/moritz/programs/gpg.nix | 28 + modules/moritz/programs/jetbrains/default.nix | 44 + modules/moritz/programs/jetbrains/ideavimrc | 95 ++ modules/moritz/programs/kitty.nix | 40 + modules/moritz/programs/lazygit.nix | 95 ++ modules/moritz/programs/ledger/default.nix | 54 + modules/moritz/programs/ledger/ledger.fish | 344 ++++++ modules/moritz/programs/logseq.nix | 20 + modules/moritz/programs/miracast.nix | 23 + .../moritz/programs/navi/cheats/reptyr.cheat | 6 + modules/moritz/programs/navi/default.nix | 20 + modules/moritz/programs/niri.nix | 286 +++++ modules/moritz/programs/nix.nix | 82 ++ modules/moritz/programs/nvim/default.nix | 56 + modules/moritz/programs/nvim/options.lua | 44 + .../moritz/programs/nvim/plugins/avante.nix | 29 + .../programs/nvim/plugins/blink-cmp.nix | 36 + .../programs/nvim/plugins/catppuccin.nix | 16 + .../moritz/programs/nvim/plugins/comment.nix | 10 + .../moritz/programs/nvim/plugins/conform.nix | 74 ++ .../moritz/programs/nvim/plugins/crates.nix | 11 + .../moritz/programs/nvim/plugins/direnv.nix | 10 + .../nvim/plugins/friendly-snippets.nix | 10 + .../moritz/programs/nvim/plugins/fugitive.nix | 10 + .../moritz/programs/nvim/plugins/gitsigns.nix | 10 + .../moritz/programs/nvim/plugins/helpview.nix | 11 + modules/moritz/programs/nvim/plugins/hmts.nix | 11 + .../moritz/programs/nvim/plugins/keymaps.nix | 15 + .../programs/nvim/plugins/lastplace.nix | 10 + modules/moritz/programs/nvim/plugins/lsp.nix | 68 ++ .../moritz/programs/nvim/plugins/lspsaga.nix | 45 + .../moritz/programs/nvim/plugins/lualine.nix | 11 + .../moritz/programs/nvim/plugins/luasnip.nix | 41 + modules/moritz/programs/nvim/plugins/lz-n.nix | 8 + .../nvim/plugins/markdown-preview.nix | 10 + .../moritz/programs/nvim/plugins/marks.nix | 13 + modules/moritz/programs/nvim/plugins/mini.nix | 16 + .../programs/nvim/plugins/nvim-autopairs.nix | 10 + .../moritz/programs/nvim/plugins/nvim-ufo.nix | 8 + .../moritz/programs/nvim/plugins/obsidian.nix | 36 + modules/moritz/programs/nvim/plugins/oil.nix | 13 + .../moritz/programs/nvim/plugins/otter.nix | 7 + .../programs/nvim/plugins/render-markdown.nix | 12 + .../moritz/programs/nvim/plugins/snacks.nix | 25 + .../programs/nvim/plugins/telescope.nix | 62 + .../programs/nvim/plugins/todo-comments.nix | 13 + .../nvim/plugins/treesitter-textobjects.nix | 91 ++ .../programs/nvim/plugins/treesitter.nix | 26 + .../nvim/plugins/ts-context-commentstring.nix | 10 + .../programs/nvim/plugins/vim-beancount.nix | 10 + .../programs/nvim/plugins/vim-surround.nix | 10 + .../moritz/programs/nvim/plugins/vimtex.nix | 14 + .../programs/nvim/plugins/which-key.nix | 10 + .../programs/nvim/snippets/elixir.snippets | 71 ++ .../moritz/programs/nvim/snippets/gleam.lua | 120 ++ .../moritz/programs/nvim/snippets/heex.lua | 138 +++ .../moritz/programs/nvim/snippets/python.lua | 242 ++++ .../programs/nvim/snippets/snippets.snippets | 7 + modules/moritz/programs/prismlauncher.nix | 30 + modules/moritz/programs/python.nix | 60 + modules/moritz/programs/river/default.nix | 281 +++++ modules/moritz/programs/river/style.css | 339 ++++++ modules/moritz/programs/scripts/default.nix | 171 +++ modules/moritz/programs/spotify_player.nix | 33 + modules/moritz/programs/ssh.nix | 27 + modules/moritz/programs/thunar.nix | 26 + modules/moritz/programs/tmux/default.nix | 86 ++ .../tmux/tmux-attach/completions.fish | 1 + .../programs/tmux/tmux-attach/script.fish | 5 + .../tmux/tmux-sessionizer/completions.fish | 1 + .../tmux/tmux-sessionizer/script.fish | 16 + modules/moritz/programs/tofi.nix | 44 + modules/moritz/programs/wallpaper/default.nix | 37 + .../moritz/programs/wallpaper/wallpaper.sh | 95 ++ modules/moritz/programs/zathura.nix | 24 + modules/moritz/programs/zsh.nix | 36 + modules/moritz/security/default.nix | 89 ++ modules/moritz/services/dunst.nix | 20 + modules/moritz/services/gammastep.nix | 17 + modules/moritz/services/kdeconnect.nix | 28 + modules/moritz/services/mullvad.nix | 28 + modules/moritz/services/ollama.nix | 27 + modules/moritz/services/openconnect.nix | 37 + modules/moritz/services/picom.nix | 51 + modules/moritz/services/printing.nix | 22 + modules/moritz/services/spotify_player.nix | 61 + modules/moritz/services/synology-drive.nix | 37 + modules/moritz/services/timers.nix | 33 + modules/moritz/services/wallpaper.nix | 31 + modules/moritz/services/wireguard.nix | 46 + modules/moritz/virtualisation/podman.nix | 20 + .../moritz/virtualisation/virtualisation.nix | 27 + .../moritz-desktop-age.key/users/moritz | 1 + 145 files changed, 8891 insertions(+), 17 deletions(-) create mode 100644 .gitattributes create mode 100644 machines/moritz-desktop/configuration.nix create mode 100644 machines/moritz-desktop/disko.nix create mode 100644 machines/moritz-desktop/hardware-configuration.nix create mode 100644 modules/lib.nix create mode 100644 modules/moritz/config/ai.nix create mode 100644 modules/moritz/config/shell.nix create mode 100644 modules/moritz/config/terminal.nix create mode 100644 modules/moritz/config/theming/_catppuccin.nix create mode 100644 modules/moritz/config/theming/catppuccin-frappe.nix create mode 100644 modules/moritz/config/theming/catppuccin-latte.nix create mode 100644 modules/moritz/config/theming/catppuccin-macchiato.nix create mode 100644 modules/moritz/config/theming/catppuccin-mocha.nix create mode 100644 modules/moritz/config/theming/default.nix create mode 100644 modules/moritz/config/theming/dracula.nix create mode 100644 modules/moritz/config/wallpapers/default.nix create mode 100644 modules/moritz/config/wallpapers/wallpapers/a_short_walk.jpg create mode 100644 modules/moritz/config/wallpapers/wallpapers/blender_pink_blue.jpg create mode 100644 modules/moritz/config/wallpapers/wallpapers/elephants.jpg create mode 100644 modules/moritz/config/wallpapers/wallpapers/forest_road.jpg create mode 100644 modules/moritz/config/wallpapers/wallpapers/little-ships.jpg create mode 100644 modules/moritz/config/wallpapers/wallpapers/old-hardware.jpg create mode 100644 modules/moritz/config/wallpapers/wallpapers/red_beetle.jpg create mode 100644 modules/moritz/config/wallpapers/wallpapers/stardust.jpg create mode 100644 modules/moritz/config/wallpapers/wallpapers/whale_in_sky.jpg create mode 100644 modules/moritz/default.nix create mode 100644 modules/moritz/nixpkgs.nix create mode 100644 modules/moritz/profiles/base.nix create mode 100644 modules/moritz/profiles/desktop.nix create mode 100644 modules/moritz/profiles/gaming.nix create mode 100644 modules/moritz/profiles/impermanence.nix create mode 100644 modules/moritz/profiles/personal.nix create mode 100644 modules/moritz/profiles/personal_calendar.nix create mode 100644 modules/moritz/profiles/personal_contacts.nix create mode 100644 modules/moritz/profiles/personal_mail.nix create mode 100644 modules/moritz/profiles/ripping.nix create mode 100644 modules/moritz/profiles/webis.nix create mode 100644 modules/moritz/profiles/yubikey.nix create mode 100644 modules/moritz/programs/adb.nix create mode 100644 modules/moritz/programs/aider.nix create mode 100644 modules/moritz/programs/chromium.nix create mode 100644 modules/moritz/programs/code.nix create mode 100644 modules/moritz/programs/direnv.nix create mode 100644 modules/moritz/programs/firefox.nix create mode 100644 modules/moritz/programs/fish.nix create mode 100644 modules/moritz/programs/foot.nix create mode 100644 modules/moritz/programs/ghostty.nix create mode 100644 modules/moritz/programs/git.nix create mode 100644 modules/moritz/programs/gnome.nix create mode 100644 modules/moritz/programs/gpg.nix create mode 100644 modules/moritz/programs/jetbrains/default.nix create mode 100644 modules/moritz/programs/jetbrains/ideavimrc create mode 100644 modules/moritz/programs/kitty.nix create mode 100644 modules/moritz/programs/lazygit.nix create mode 100644 modules/moritz/programs/ledger/default.nix create mode 100644 modules/moritz/programs/ledger/ledger.fish create mode 100644 modules/moritz/programs/logseq.nix create mode 100644 modules/moritz/programs/miracast.nix create mode 100644 modules/moritz/programs/navi/cheats/reptyr.cheat create mode 100644 modules/moritz/programs/navi/default.nix create mode 100644 modules/moritz/programs/niri.nix create mode 100644 modules/moritz/programs/nix.nix create mode 100644 modules/moritz/programs/nvim/default.nix create mode 100644 modules/moritz/programs/nvim/options.lua create mode 100644 modules/moritz/programs/nvim/plugins/avante.nix create mode 100644 modules/moritz/programs/nvim/plugins/blink-cmp.nix create mode 100644 modules/moritz/programs/nvim/plugins/catppuccin.nix create mode 100644 modules/moritz/programs/nvim/plugins/comment.nix create mode 100644 modules/moritz/programs/nvim/plugins/conform.nix create mode 100644 modules/moritz/programs/nvim/plugins/crates.nix create mode 100644 modules/moritz/programs/nvim/plugins/direnv.nix create mode 100644 modules/moritz/programs/nvim/plugins/friendly-snippets.nix create mode 100644 modules/moritz/programs/nvim/plugins/fugitive.nix create mode 100644 modules/moritz/programs/nvim/plugins/gitsigns.nix create mode 100644 modules/moritz/programs/nvim/plugins/helpview.nix create mode 100644 modules/moritz/programs/nvim/plugins/hmts.nix create mode 100644 modules/moritz/programs/nvim/plugins/keymaps.nix create mode 100644 modules/moritz/programs/nvim/plugins/lastplace.nix create mode 100644 modules/moritz/programs/nvim/plugins/lsp.nix create mode 100644 modules/moritz/programs/nvim/plugins/lspsaga.nix create mode 100644 modules/moritz/programs/nvim/plugins/lualine.nix create mode 100644 modules/moritz/programs/nvim/plugins/luasnip.nix create mode 100644 modules/moritz/programs/nvim/plugins/lz-n.nix create mode 100644 modules/moritz/programs/nvim/plugins/markdown-preview.nix create mode 100644 modules/moritz/programs/nvim/plugins/marks.nix create mode 100644 modules/moritz/programs/nvim/plugins/mini.nix create mode 100644 modules/moritz/programs/nvim/plugins/nvim-autopairs.nix create mode 100644 modules/moritz/programs/nvim/plugins/nvim-ufo.nix create mode 100644 modules/moritz/programs/nvim/plugins/obsidian.nix create mode 100644 modules/moritz/programs/nvim/plugins/oil.nix create mode 100644 modules/moritz/programs/nvim/plugins/otter.nix create mode 100644 modules/moritz/programs/nvim/plugins/render-markdown.nix create mode 100644 modules/moritz/programs/nvim/plugins/snacks.nix create mode 100644 modules/moritz/programs/nvim/plugins/telescope.nix create mode 100644 modules/moritz/programs/nvim/plugins/todo-comments.nix create mode 100644 modules/moritz/programs/nvim/plugins/treesitter-textobjects.nix create mode 100644 modules/moritz/programs/nvim/plugins/treesitter.nix create mode 100644 modules/moritz/programs/nvim/plugins/ts-context-commentstring.nix create mode 100644 modules/moritz/programs/nvim/plugins/vim-beancount.nix create mode 100644 modules/moritz/programs/nvim/plugins/vim-surround.nix create mode 100644 modules/moritz/programs/nvim/plugins/vimtex.nix create mode 100644 modules/moritz/programs/nvim/plugins/which-key.nix create mode 100644 modules/moritz/programs/nvim/snippets/elixir.snippets create mode 100644 modules/moritz/programs/nvim/snippets/gleam.lua create mode 100644 modules/moritz/programs/nvim/snippets/heex.lua create mode 100644 modules/moritz/programs/nvim/snippets/python.lua create mode 100644 modules/moritz/programs/nvim/snippets/snippets.snippets create mode 100644 modules/moritz/programs/prismlauncher.nix create mode 100644 modules/moritz/programs/python.nix create mode 100644 modules/moritz/programs/river/default.nix create mode 100644 modules/moritz/programs/river/style.css create mode 100644 modules/moritz/programs/scripts/default.nix create mode 100644 modules/moritz/programs/spotify_player.nix create mode 100644 modules/moritz/programs/ssh.nix create mode 100644 modules/moritz/programs/thunar.nix create mode 100644 modules/moritz/programs/tmux/default.nix create mode 100644 modules/moritz/programs/tmux/tmux-attach/completions.fish create mode 100644 modules/moritz/programs/tmux/tmux-attach/script.fish create mode 100644 modules/moritz/programs/tmux/tmux-sessionizer/completions.fish create mode 100755 modules/moritz/programs/tmux/tmux-sessionizer/script.fish create mode 100644 modules/moritz/programs/tofi.nix create mode 100644 modules/moritz/programs/wallpaper/default.nix create mode 100755 modules/moritz/programs/wallpaper/wallpaper.sh create mode 100644 modules/moritz/programs/zathura.nix create mode 100644 modules/moritz/programs/zsh.nix create mode 100644 modules/moritz/security/default.nix create mode 100644 modules/moritz/services/dunst.nix create mode 100644 modules/moritz/services/gammastep.nix create mode 100644 modules/moritz/services/kdeconnect.nix create mode 100644 modules/moritz/services/mullvad.nix create mode 100644 modules/moritz/services/ollama.nix create mode 100644 modules/moritz/services/openconnect.nix create mode 100644 modules/moritz/services/picom.nix create mode 100644 modules/moritz/services/printing.nix create mode 100644 modules/moritz/services/spotify_player.nix create mode 100644 modules/moritz/services/synology-drive.nix create mode 100644 modules/moritz/services/timers.nix create mode 100644 modules/moritz/services/wallpaper.nix create mode 100644 modules/moritz/services/wireguard.nix create mode 100644 modules/moritz/virtualisation/podman.nix create mode 100644 modules/moritz/virtualisation/virtualisation.nix create mode 120000 sops/secrets/moritz-desktop-age.key/users/moritz diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..82eb750 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,9 @@ +modules/moritz/config/wallpapers/wallpapers/blender_pink_blue.jpg filter=lfs diff=lfs merge=lfs -text +modules/moritz/config/wallpapers/wallpapers/elephants.jpg filter=lfs diff=lfs merge=lfs -text +modules/moritz/config/wallpapers/wallpapers/forest_road.jpg filter=lfs diff=lfs merge=lfs -text +modules/moritz/config/wallpapers/wallpapers/red_beetle.jpg filter=lfs diff=lfs merge=lfs -text +modules/moritz/config/wallpapers/wallpapers/stardust.jpg filter=lfs diff=lfs merge=lfs -text +modules/moritz/config/wallpapers/wallpapers/a_short_walk.jpg filter=lfs diff=lfs merge=lfs -text +modules/moritz/config/wallpapers/wallpapers/little-ships.jpg filter=lfs diff=lfs merge=lfs -text +modules/moritz/config/wallpapers/wallpapers/old-hardware.jpg filter=lfs diff=lfs merge=lfs -text +modules/moritz/config/wallpapers/wallpapers/whale_in_sky.jpg filter=lfs diff=lfs merge=lfs -text diff --git a/flake.lock b/flake.lock index c11db04..2369121 100644 --- a/flake.lock +++ b/flake.lock @@ -1,5 +1,38 @@ { "nodes": { + "arkenfox-userjs": { + "flake": false, + "locked": { + "lastModified": 1741229528, + "narHash": "sha256-21DoV4SMueMFRHMsvfsPfQIOtsvRWNY06rE4gB7xFnc=", + "owner": "arkenfox", + "repo": "user.js", + "rev": "3d76c74c80485931425464fec0e59d6cb461677a", + "type": "github" + }, + "original": { + "owner": "arkenfox", + "repo": "user.js", + "type": "github" + } + }, + "asus-touchpad-numpad-driver": { + "flake": false, + "locked": { + "lastModified": 1650967375, + "narHash": "sha256-Ftl4I1USponJHG9oepxBvBC3EqNsYQOsrfPsbaJwd7U=", + "owner": "MoritzBoehme", + "repo": "asus-touchpad-numpad-driver", + "rev": "6ff9f7443bc8f4a56df972827c89013f1d7f1bde", + "type": "github" + }, + "original": { + "owner": "MoritzBoehme", + "ref": "german-layout", + "repo": "asus-touchpad-numpad-driver", + "type": "github" + } + }, "clan-core": { "inputs": { "data-mesher": "data-mesher", @@ -16,11 +49,11 @@ "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1743267409, - "narHash": "sha256-A/vHHePZ0R1mCejxQinJlWhZQ0VvyYVjoP0Ln8ZhRvk=", + "lastModified": 1743342851, + "narHash": "sha256-0ujGfYdkI8MUzCJhYkc5yIhSSPPxf6i+JdzyE2e9vX0=", "ref": "refs/heads/main", - "rev": "f2b04e74f1de4c91c20fe3370402e599da5602b8", - "revCount": 5997, + "rev": "84d0a2f2f0a08d97746eaa504c5baae4ad087edd", + "revCount": 6014, "type": "git", "url": "https://git.clan.lol/clan/clan-core" }, @@ -29,6 +62,21 @@ "url": "https://git.clan.lol/clan/clan-core" } }, + "crane": { + "locked": { + "lastModified": 1736101677, + "narHash": "sha256-iKOPq86AOWCohuzxwFy/MtC8PcSVGnrxBOvxpjpzrAY=", + "owner": "ipetkov", + "repo": "crane", + "rev": "61ba163d85e5adeddc7b3a69bb174034965965b2", + "type": "github" + }, + "original": { + "owner": "ipetkov", + "repo": "crane", + "type": "github" + } + }, "data-mesher": { "inputs": { "flake-parts": [ @@ -49,11 +97,11 @@ ] }, "locked": { - "lastModified": 1743260125, - "narHash": "sha256-sASn5hr5JftCWebc0Ouq+Egy4lX8EE0TQHRm++IT0w0=", + "lastModified": 1743325259, + "narHash": "sha256-bLmte0b5Fvxrdtj57vXMpNi04LmSViIOHkO0nPvDxKM=", "ref": "refs/heads/main", - "rev": "734883c056e83d24952f5b02e9717a42afc85015", - "revCount": 373, + "rev": "4d139accd441e952d32449d1f77392c054a5881f", + "revCount": 374, "type": "git", "url": "https://git.clan.lol/clan/data-mesher" }, @@ -83,6 +131,97 @@ "type": "github" } }, + "fenix": { + "inputs": { + "nixpkgs": [ + "filetags", + "nixpkgs" + ], + "rust-analyzer-src": "rust-analyzer-src" + }, + "locked": { + "lastModified": 1736318091, + "narHash": "sha256-RkRHXZaMgOMGgkW2YmEqxxDDYRiGFbfr1JuaI0VrCKo=", + "owner": "nix-community", + "repo": "fenix", + "rev": "9e13860d50cbfd42e79101a516e1939c7723f093", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "fenix", + "type": "github" + } + }, + "filetags": { + "inputs": { + "crane": "crane", + "fenix": "fenix", + "flake-utils": "flake-utils", + "nixpkgs": "nixpkgs" + }, + "locked": { + "lastModified": 1740331452, + "narHash": "sha256-YsQbXCmbdQ7gwcJzoTh9f7hBRpjWDReAd/m9ZM7bqN0=", + "ref": "refs/heads/main", + "rev": "57d832adbd3f961f5a255800a4f1859deb2f8e7e", + "revCount": 19, + "type": "git", + "url": "https://gitea.moritzboeh.me/moritz/filetags.git" + }, + "original": { + "type": "git", + "url": "https://gitea.moritzboeh.me/moritz/filetags.git" + } + }, + "flake-compat": { + "flake": false, + "locked": { + "lastModified": 1733328505, + "narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_2": { + "flake": false, + "locked": { + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_3": { + "flake": false, + "locked": { + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, "flake-parts": { "inputs": { "nixpkgs-lib": [ @@ -103,6 +242,472 @@ "type": "github" } }, + "flake-parts_2": { + "inputs": { + "nixpkgs-lib": [ + "neovim-nightly-overlay", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1741352980, + "narHash": "sha256-+u2UunDA4Cl5Fci3m7S643HzKmIDAe+fiXrLqYsR2fs=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "f4330d22f1c5d2ba72d3d22df5597d123fdb60a9", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_3": { + "inputs": { + "nixpkgs-lib": [ + "neovim-nightly-overlay", + "hercules-ci-effects", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1741352980, + "narHash": "sha256-+u2UunDA4Cl5Fci3m7S643HzKmIDAe+fiXrLqYsR2fs=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "f4330d22f1c5d2ba72d3d22df5597d123fdb60a9", + "type": "github" + }, + "original": { + "id": "flake-parts", + "type": "indirect" + } + }, + "flake-parts_4": { + "inputs": { + "nixpkgs-lib": [ + "nur", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1733312601, + "narHash": "sha256-4pDvzqnegAfRkPwO3wmwBhVi/Sye1mzps0zHWYnP88c=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "205b12d8b7cd4802fbcb8e8ef6a0f1408781a4f9", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-utils": { + "inputs": { + "systems": "systems_2" + }, + "locked": { + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_2": { + "inputs": { + "systems": "systems_3" + }, + "locked": { + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "git-hooks": { + "inputs": { + "flake-compat": "flake-compat_2", + "gitignore": "gitignore", + "nixpkgs": [ + "neovim-nightly-overlay", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1742649964, + "narHash": "sha256-DwOTp7nvfi8mRfuL1escHDXabVXFGT1VlPD1JHrtrco=", + "owner": "cachix", + "repo": "git-hooks.nix", + "rev": "dcf5072734cb576d2b0c59b2ac44f5050b5eac82", + "type": "github" + }, + "original": { + "owner": "cachix", + "repo": "git-hooks.nix", + "type": "github" + } + }, + "gitignore": { + "inputs": { + "nixpkgs": [ + "neovim-nightly-overlay", + "git-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" + } + }, + "gitignore_2": { + "inputs": { + "nixpkgs": [ + "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" + } + }, + "hercules-ci-effects": { + "inputs": { + "flake-parts": "flake-parts_3", + "nixpkgs": [ + "neovim-nightly-overlay", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1742014779, + "narHash": "sha256-I6fG1zrfdLFcp/imGZElig0BJO3YU0QEXLgvwWoOpJ8=", + "owner": "hercules-ci", + "repo": "hercules-ci-effects", + "rev": "524637ef84c177661690b924bf64a1ce18072a2c", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "hercules-ci-effects", + "type": "github" + } + }, + "home-manager": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1743295846, + "narHash": "sha256-hKKz07d4RV9gzxzE5Qu3RQWX8a7XpzRrP5timoxoGRQ=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "717030011980e9eb31eb8ce011261dd532bce92c", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "home-manager", + "type": "github" + } + }, + "impermanence": { + "locked": { + "lastModified": 1737831083, + "narHash": "sha256-LJggUHbpyeDvNagTUrdhe/pRVp4pnS6wVKALS782gRI=", + "owner": "nix-community", + "repo": "impermanence", + "rev": "4b3e914cdf97a5b536a889e939fb2fd2b043a170", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "impermanence", + "type": "github" + } + }, + "ixx": { + "inputs": { + "flake-utils": [ + "nixvim", + "nuschtosSearch", + "flake-utils" + ], + "nixpkgs": [ + "nixvim", + "nuschtosSearch", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1729958008, + "narHash": "sha256-EiOq8jF4Z/zQe0QYVc3+qSKxRK//CFHMB84aYrYGwEs=", + "owner": "NuschtOS", + "repo": "ixx", + "rev": "9fd01aad037f345350eab2cd45e1946cc66da4eb", + "type": "github" + }, + "original": { + "owner": "NuschtOS", + "ref": "v0.0.6", + "repo": "ixx", + "type": "github" + } + }, + "jovian": { + "inputs": { + "nix-github-actions": "nix-github-actions", + "nixpkgs": "nixpkgs_2" + }, + "locked": { + "lastModified": 1743144043, + "narHash": "sha256-QlEk4Xm5KG0jW5Kus9teY3bhxdf0GUTexxTUCaJM5ms=", + "owner": "Jovian-Experiments", + "repo": "Jovian-NixOS", + "rev": "1c17514c8558886af0afc34b6c348c1f2ee9fd24", + "type": "github" + }, + "original": { + "owner": "Jovian-Experiments", + "repo": "Jovian-NixOS", + "type": "github" + } + }, + "master": { + "locked": { + "lastModified": 1743344176, + "narHash": "sha256-BsE5VXbz72TtVHnnntElOkB1+otIE/ki12mA8i3ToB8=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "0ead593c55ef659b75a04fd8cbc92c38090d054c", + "type": "github" + }, + "original": { + "owner": "nixos", + "repo": "nixpkgs", + "type": "github" + } + }, + "naersk": { + "inputs": { + "nixpkgs": [ + "timers", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1692351612, + "narHash": "sha256-KTGonidcdaLadRnv9KFgwSMh1ZbXoR/OBmPjeNMhFwU=", + "owner": "nix-community", + "repo": "naersk", + "rev": "78789c30d64dea2396c9da516bbcc8db3a475207", + "type": "github" + }, + "original": { + "owner": "nix-community", + "ref": "master", + "repo": "naersk", + "type": "github" + } + }, + "neovim-nightly-overlay": { + "inputs": { + "flake-compat": "flake-compat", + "flake-parts": "flake-parts_2", + "git-hooks": "git-hooks", + "hercules-ci-effects": "hercules-ci-effects", + "neovim-src": "neovim-src", + "nixpkgs": "nixpkgs_3", + "treefmt-nix": "treefmt-nix_2" + }, + "locked": { + "lastModified": 1743293377, + "narHash": "sha256-DqvBHtTslU0E+XMW6xM4SY3UD3+nHAAIXHag0zukrpc=", + "owner": "nix-community", + "repo": "neovim-nightly-overlay", + "rev": "3f10166b5b818227b9d7728f97e67e11cdf27ffd", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "neovim-nightly-overlay", + "type": "github" + } + }, + "neovim-src": { + "flake": false, + "locked": { + "lastModified": 1743289921, + "narHash": "sha256-0gsBH+wMZJaXb95GKP6OZmtyhlJh0lS/gsn6J8rxt6k=", + "owner": "neovim", + "repo": "neovim", + "rev": "99529577cc9f5229cbb3dac8ab4782bd43094102", + "type": "github" + }, + "original": { + "owner": "neovim", + "repo": "neovim", + "type": "github" + } + }, + "niri": { + "inputs": { + "niri-stable": "niri-stable", + "niri-unstable": "niri-unstable", + "nixpkgs": [ + "nixpkgs" + ], + "nixpkgs-stable": "nixpkgs-stable", + "xwayland-satellite-stable": "xwayland-satellite-stable", + "xwayland-satellite-unstable": "xwayland-satellite-unstable" + }, + "locked": { + "lastModified": 1743186084, + "narHash": "sha256-zEPpazywKQLIRWxeTBFnSnacSnGIqM2Qr1iJ5qB94IQ=", + "owner": "sodiboo", + "repo": "niri-flake", + "rev": "111a3afc23fdf64fd76115df48c2e6571fee51b7", + "type": "github" + }, + "original": { + "owner": "sodiboo", + "repo": "niri-flake", + "type": "github" + } + }, + "niri-stable": { + "flake": false, + "locked": { + "lastModified": 1740117926, + "narHash": "sha256-mTTHA0RAaQcdYe+9A3Jx77cmmyLFHmRoZdd8RpWa+m8=", + "owner": "YaLTeR", + "repo": "niri", + "rev": "b94a5db8790339cf9134873d8b490be69e02ac71", + "type": "github" + }, + "original": { + "owner": "YaLTeR", + "ref": "v25.02", + "repo": "niri", + "type": "github" + } + }, + "niri-unstable": { + "flake": false, + "locked": { + "lastModified": 1743017820, + "narHash": "sha256-EYq2NfWSSO87O7hLrJLPPt0VbgvSjgPzru+58LQ29WI=", + "owner": "YaLTeR", + "repo": "niri", + "rev": "7cfecf4b1b9b8c11c80061fb31926f888228499d", + "type": "github" + }, + "original": { + "owner": "YaLTeR", + "repo": "niri", + "type": "github" + } + }, + "nix-github-actions": { + "inputs": { + "nixpkgs": [ + "jovian", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1729697500, + "narHash": "sha256-VFTWrbzDlZyFHHb1AlKRiD/qqCJIripXKiCSFS8fAOY=", + "owner": "zhaofengli", + "repo": "nix-github-actions", + "rev": "e418aeb728b6aa5ca8c5c71974e7159c2df1d8cf", + "type": "github" + }, + "original": { + "owner": "zhaofengli", + "ref": "matrix-name", + "repo": "nix-github-actions", + "type": "github" + } + }, + "nix-index-database": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1743306489, + "narHash": "sha256-LROaIjSLo347cwcHRfSpqzEOa2FoLSeJwU4dOrGm55E=", + "owner": "Mic92", + "repo": "nix-index-database", + "rev": "b3696bfb6c24aa61428839a99e8b40c53ac3a82d", + "type": "github" + }, + "original": { + "owner": "Mic92", + "repo": "nix-index-database", + "type": "github" + } + }, + "nix-monitored": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1737219791, + "narHash": "sha256-OU0NPjJ3woNDFNx7HtWuUXBb4eI6Ggre/Uj2qhiSjrg=", + "owner": "ners", + "repo": "nix-monitored", + "rev": "6ed8ed4832ff26c616e5856ba19f5b8141d61bd3", + "type": "github" + }, + "original": { + "owner": "ners", + "repo": "nix-monitored", + "type": "github" + } + }, "nixos-facter-modules": { "locked": { "lastModified": 1738752252, @@ -119,6 +724,85 @@ } }, "nixpkgs": { + "locked": { + "lastModified": 1736344531, + "narHash": "sha256-8YVQ9ZbSfuUk2bUf2KRj60NRraLPKPS0Q4QFTbc+c2c=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "bffc22eb12172e6db3c5dde9e3e5628f8e3e7912", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "nixos-unstable", + "type": "indirect" + } + }, + "nixpkgs-stable": { + "locked": { + "lastModified": 1742937945, + "narHash": "sha256-lWc+79eZRyvHp/SqMhHTMzZVhpxkRvthsP1Qx6UCq0E=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "d02d88f8de5b882ccdde0465d8fa2db3aa1169f7", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-24.11", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_2": { + "locked": { + "lastModified": 1739214665, + "narHash": "sha256-26L8VAu3/1YRxS8MHgBOyOM8xALdo6N0I04PgorE7UM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "64e75cd44acf21c7933d61d7721e812eac1b5a0a", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_3": { + "locked": { + "lastModified": 1743076231, + "narHash": "sha256-yQugdVfi316qUfqzN8JMaA2vixl+45GxNm4oUfXlbgw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "6c5963357f3c1c840201eda129a99d455074db04", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_4": { + "locked": { + "lastModified": 1743259260, + "narHash": "sha256-ArWLUgRm1tKHiqlhnymyVqi5kLNCK5ghvm06mfCl4QY=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "eb0e0f21f15c559d2ac7633dc81d079d1caf5f5f", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_5": { "locked": { "lastModified": 1743095683, "narHash": "sha256-gWd4urRoLRe8GLVC/3rYRae1h+xfQzt09xOfb0PaHSk=", @@ -134,11 +818,163 @@ "type": "github" } }, + "nixpkgs_6": { + "locked": { + "lastModified": 1730768919, + "narHash": "sha256-8AKquNnnSaJRXZxc5YmF/WfmxiHX6MMZZasRP6RRQkE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "a04d33c0c3f1a59a2c1cb0c6e34cd24500e5a1dc", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_7": { + "locked": { + "lastModified": 1692934111, + "narHash": "sha256-9EEE59v/esKNMR5zKbLRV9NoRPYvERw5jHQOnfr47bk=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1e44a037bbf4fcaba041436e65e87be88f3f495b", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixvim": { + "inputs": { + "flake-parts": [ + "flake-parts" + ], + "nixpkgs": [ + "nixpkgs" + ], + "nuschtosSearch": "nuschtosSearch" + }, + "locked": { + "lastModified": 1743288994, + "narHash": "sha256-hUlfAcIUnS8/eSFq+uzOHPZO1p8QgBTAoqhDWzEkUto=", + "owner": "nix-community", + "repo": "nixvim", + "rev": "81fdde9fc529e0a5f9ff0d570f31acfe85fd20ac", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixvim", + "type": "github" + } + }, + "nur": { + "inputs": { + "flake-parts": "flake-parts_4", + "nixpkgs": "nixpkgs_5", + "treefmt-nix": "treefmt-nix_3" + }, + "locked": { + "lastModified": 1743335104, + "narHash": "sha256-wEEHpF+h+9m2QvjYtIx11EMi+sXG3wS9f/QSE6KPpJs=", + "owner": "nix-community", + "repo": "NUR", + "rev": "374adb7fb2c751f679519f8db532f726488293a0", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "NUR", + "type": "github" + } + }, + "nuschtosSearch": { + "inputs": { + "flake-utils": "flake-utils_2", + "ixx": "ixx", + "nixpkgs": [ + "nixvim", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1742659553, + "narHash": "sha256-i/JCrr/jApVorI9GkSV5to+USrRCa0rWuQDH8JSlK2A=", + "owner": "NuschtOS", + "repo": "search", + "rev": "508752835128a3977985a4d5225ff241f7756181", + "type": "github" + }, + "original": { + "owner": "NuschtOS", + "repo": "search", + "type": "github" + } + }, + "pre-commit-hooks": { + "inputs": { + "flake-compat": "flake-compat_3", + "gitignore": "gitignore_2", + "nixpkgs": "nixpkgs_6" + }, + "locked": { + "lastModified": 1742649964, + "narHash": "sha256-DwOTp7nvfi8mRfuL1escHDXabVXFGT1VlPD1JHrtrco=", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "rev": "dcf5072734cb576d2b0c59b2ac44f5050b5eac82", + "type": "github" + }, + "original": { + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "type": "github" + } + }, "root": { "inputs": { + "arkenfox-userjs": "arkenfox-userjs", + "asus-touchpad-numpad-driver": "asus-touchpad-numpad-driver", "clan-core": "clan-core", + "filetags": "filetags", "flake-parts": "flake-parts", - "nixpkgs": "nixpkgs" + "home-manager": "home-manager", + "impermanence": "impermanence", + "jovian": "jovian", + "master": "master", + "neovim-nightly-overlay": "neovim-nightly-overlay", + "niri": "niri", + "nix-index-database": "nix-index-database", + "nix-monitored": "nix-monitored", + "nixpkgs": "nixpkgs_4", + "nixvim": "nixvim", + "nur": "nur", + "pre-commit-hooks": "pre-commit-hooks", + "stable": "stable", + "timers": "timers" + } + }, + "rust-analyzer-src": { + "flake": false, + "locked": { + "lastModified": 1736266405, + "narHash": "sha256-V2FDSb8YjuquZduBRNp5niWYlWurja2yGN6Xzh5GPYk=", + "owner": "rust-lang", + "repo": "rust-analyzer", + "rev": "91fc0a239af4e56b84b1d3974ac0f34dcc99b895", + "type": "github" + }, + "original": { + "owner": "rust-lang", + "ref": "nightly", + "repo": "rust-analyzer", + "type": "github" } }, "sops-nix": { @@ -149,11 +985,11 @@ ] }, "locked": { - "lastModified": 1742700801, - "narHash": "sha256-ZGlpUDsuBdeZeTNgoMv+aw0ByXT2J3wkYw9kJwkAS4M=", + "lastModified": 1743305778, + "narHash": "sha256-Ux/UohNtnM5mn9SFjaHp6IZe2aAnUCzklMluNtV6zFo=", "owner": "Mic92", "repo": "sops-nix", - "rev": "67566fe68a8bed2a7b1175fdfb0697ed22ae8852", + "rev": "8e873886bbfc32163fe027b8676c75637b7da114", "type": "github" }, "original": { @@ -162,6 +998,22 @@ "type": "github" } }, + "stable": { + "locked": { + "lastModified": 1743231893, + "narHash": "sha256-tpJsHMUPEhEnzySoQxx7+kA+KUtgWqvlcUBqROYNNt0=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "c570c1f5304493cafe133b8d843c7c1c4a10d3a6", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-24.11", + "repo": "nixpkgs", + "type": "github" + } + }, "systems": { "locked": { "lastModified": 1681028828, @@ -177,6 +1029,71 @@ "type": "github" } }, + "systems_2": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_3": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_4": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "timers": { + "inputs": { + "naersk": "naersk", + "nixpkgs": "nixpkgs_7", + "utils": "utils" + }, + "locked": { + "lastModified": 1693040925, + "narHash": "sha256-AhJSwmp7XN/9V66EYHFnNuIAjqOrYUN3LGRjwrTN6T0=", + "ref": "refs/heads/main", + "rev": "739f76fa90271860e2c1d683e3a53cfb93e6eb89", + "revCount": 27, + "type": "git", + "url": "https://gitea.moritzboeh.me/moritz/timers.git" + }, + "original": { + "type": "git", + "url": "https://gitea.moritzboeh.me/moritz/timers.git" + } + }, "treefmt-nix": { "inputs": { "nixpkgs": [ @@ -197,6 +1114,99 @@ "repo": "treefmt-nix", "type": "github" } + }, + "treefmt-nix_2": { + "inputs": { + "nixpkgs": [ + "neovim-nightly-overlay", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1743081648, + "narHash": "sha256-WRAylyYptt6OX5eCEBWyTwOEqEtD6zt33rlUkr6u3cE=", + "owner": "numtide", + "repo": "treefmt-nix", + "rev": "29a3d7b768c70addce17af0869f6e2bd8f5be4b7", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "treefmt-nix", + "type": "github" + } + }, + "treefmt-nix_3": { + "inputs": { + "nixpkgs": [ + "nur", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1733222881, + "narHash": "sha256-JIPcz1PrpXUCbaccEnrcUS8jjEb/1vJbZz5KkobyFdM=", + "owner": "numtide", + "repo": "treefmt-nix", + "rev": "49717b5af6f80172275d47a418c9719a31a78b53", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "treefmt-nix", + "type": "github" + } + }, + "utils": { + "inputs": { + "systems": "systems_4" + }, + "locked": { + "lastModified": 1692799911, + "narHash": "sha256-3eihraek4qL744EvQXsK1Ha6C3CR7nnT8X2qWap4RNk=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "f9e7cf818399d17d347f847525c5a5a8032e4e44", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "xwayland-satellite-stable": { + "flake": false, + "locked": { + "lastModified": 1739246919, + "narHash": "sha256-/hBM43/Gd0/tW+egrhlWgOIISeJxEs2uAOIYVpfDKeU=", + "owner": "Supreeeme", + "repo": "xwayland-satellite", + "rev": "44590a416d4a3e8220e19e29e0b6efe64a80315d", + "type": "github" + }, + "original": { + "owner": "Supreeeme", + "ref": "v0.5.1", + "repo": "xwayland-satellite", + "type": "github" + } + }, + "xwayland-satellite-unstable": { + "flake": false, + "locked": { + "lastModified": 1742773235, + "narHash": "sha256-YhJex62HHVF6EfdGLIC01uM6jH8XJu5ryZ+LlhG7wMs=", + "owner": "Supreeeme", + "repo": "xwayland-satellite", + "rev": "b2613aec05f9e3f8488ef924203d62cafb712642", + "type": "github" + }, + "original": { + "owner": "Supreeeme", + "repo": "xwayland-satellite", + "type": "github" + } } }, "root": "root", diff --git a/flake.nix b/flake.nix index 86eeb3a..69a5109 100644 --- a/flake.nix +++ b/flake.nix @@ -1,7 +1,9 @@ { inputs = { - nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable"; + nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable"; + master.url = "github:nixos/nixpkgs"; + stable.url = "github:nixos/nixpkgs/nixos-24.11"; # New flake-parts input flake-parts.url = "github:hercules-ci/flake-parts"; @@ -13,6 +15,46 @@ # New inputs.flake-parts.follows = "flake-parts"; }; + + home-manager.inputs.nixpkgs.follows = "nixpkgs"; + home-manager.url = "github:nix-community/home-manager"; + + impermanence.url = "github:nix-community/impermanence"; + + pre-commit-hooks.url = "github:cachix/pre-commit-hooks.nix"; + + nur.url = "github:nix-community/NUR"; + + nix-index-database.url = "github:Mic92/nix-index-database"; + nix-index-database.inputs.nixpkgs.follows = "nixpkgs"; + + nix-monitored.url = "github:ners/nix-monitored"; + nix-monitored.inputs.nixpkgs.follows = "nixpkgs"; + + jovian.url = "github:Jovian-Experiments/Jovian-NixOS"; + + # Programs + timers.url = "git+https://gitea.moritzboeh.me/moritz/timers.git"; + filetags.url = "git+https://gitea.moritzboeh.me/moritz/filetags.git"; + + # Neovim + neovim-nightly-overlay.url = "github:nix-community/neovim-nightly-overlay"; + + nixvim.url = "github:nix-community/nixvim"; + nixvim.inputs.flake-parts.follows = "flake-parts"; + nixvim.inputs.nixpkgs.follows = "nixpkgs"; + + # Niri + niri.url = "github:sodiboo/niri-flake"; + niri.inputs.nixpkgs.follows = "nixpkgs"; + + # Laptop + asus-touchpad-numpad-driver.url = "github:MoritzBoehme/asus-touchpad-numpad-driver/german-layout"; + asus-touchpad-numpad-driver.flake = false; + + # Firefox user.js + arkenfox-userjs.url = "github:arkenfox/user.js"; + arkenfox-userjs.flake = false; }; outputs = inputs@{ flake-parts, ... }: @@ -39,6 +81,21 @@ meta.name = "cool-clan"; # Ensure to choose a unique name. machines = { }; + + specialArgs = { + inherit inputs self; + }; + + inventory = { + services.zerotier.default = { + roles.controller.machines = [ + "moritz-server" + ]; + roles.peer.machines = [ + "moritz-desktop" + ]; + }; + }; }; }); } diff --git a/machines/moritz-desktop/configuration.nix b/machines/moritz-desktop/configuration.nix new file mode 100644 index 0000000..247f93e --- /dev/null +++ b/machines/moritz-desktop/configuration.nix @@ -0,0 +1,138 @@ +# Edit this configuration file to define what should be installed on +# your system. Help is available in the configuration.nix(5) man page +# and in the NixOS manual (accessible by running ‘nixos-help’). +{ pkgs +, config +, inputs +, ... +}: + +{ + imports = [ + # Include the results of the hardware scan. + ./hardware-configuration.nix + ./disko.nix + ../../modules/moritz/default.nix + ../../modules/shared.nix + ]; + + # This is your user login name. + users.users.user.name = "moritz"; + + users.users.root.openssh.authorizedKeys.keys = [ + '' + ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDHlemuKagHwz2T5rEwgJNlVUdUdOXyPtCEzD73CrwY2zmpR4AMj7y9u3Rm7HwHUDjLap1ZFwg+53bAsVP6HFZccCXoIfO/8BL0WDGQJrfgb+A+UiRhSqSvyZ77bGJkadbBkadguz3qR3PHcb41DOlhuqVcHxsY8ceHMxAuyb0pLJVJLeytMD+CHS/r7hoj2hckTNAZ+VhCXBtdZfZ7uPUBxLfluYRNNMmdwCglsg3RUS242nJUzy3A84+CXIGeWmNG9Fu45IDkwMthxSW9klyU9R38R9DBDcugkyb6vz+JKSuRVAa47qh/kmtsYekfL3ul9D2JN32P8S+6ZoXx+gXupGJ0ltwJWAFkhLJ+yeXj9kCOv/mIUmCB14jMGsvKiSwV25O/twyjqe2LEkMVgimgrjEYoHu+ZTyp0iFtUvSrFo4tsAhfWPV9yj4F/hUksW7xKIwq5Niyx7he5M/XddudtnAximyiBDGCdJm1Ejl0UaGa6ZQv7y6VZdx0PyZuraT7l9ub8so6JlE4cVgSSU9vE0IS2QqBuHhsIjh8RVksoTR2NQbeDdGaGpGnq2C8y0rDXwE/EJA4LK45khX/GPn73n8F0kBG8dBrWgRDAEODpmebScO7d5mCeM0z3lPcRmh+3e3DPnVVOl+uR7udlc7NauLzl7q913UtxZaF1PlD7Q== cardno:15_584_308 + '' + ]; + + # Set this for clan commands use ssh i.e. `clan machines update` + # If you change the hostname, you need to update this line to root@ + # This only works however if you have avahi running on your admin machine else use IP + clan.core.networking.targetHost = "root@192.168.0.14"; + + my = { + ai.enable = true; + profiles = { + desktop.enable = true; + gaming.enable = true; + personal.enable = true; + personal.mail = true; + impermanence.enable = true; + webis.enable = true; + }; + programs.prismlauncher.enable = true; + programs.aider.enable = true; + services.wallpaper.enable = true; + }; + + home-manager.users.moritz.home.packages = with pkgs; [ + anki + stable.calibre # NOTE: breaks often in unstable + ]; + + home-manager.users.moritz.services.kanshi.settings = [ + { + profile.name = "default"; + profile.outputs = [ + { + adaptiveSync = true; + criteria = "*"; + scale = 1.2; + } + ]; + } + ]; + + hardware = { + keyboard.qmk.enable = true; + nvidia = { + modesetting.enable = true; + open = true; + }; + nvidia-container-toolkit.enable = true; + graphics = { + enable = true; + enable32Bit = true; + }; + + bluetooth.enable = true; + }; + + boot = { + # BOOT + supportedFilesystems = [ "zfs" "btrfs" "ntfs" ]; + loader = { + systemd-boot.enable = true; + efi.canTouchEfiVariables = true; + }; + }; + + # NETWORKING + networking = { + defaultGateway = { + address = "192.168.0.1"; + interface = "enp6s0"; + }; + nameservers = [ "192.168.0.4" ]; + useDHCP = false; + interfaces.enp6s0 = { + ipv4.addresses = [ + { + address = "192.168.0.14"; + prefixLength = 24; + } + ]; + ipv6.addresses = [ + { + address = "fe80::60fb:ffc:df6f:e29e"; + prefixLength = 64; + } + ]; + }; + networkmanager.enable = true; + }; + + services = { + xserver.videoDrivers = [ "nvidia" ]; + xserver.xrandrHeads = [ + { output = "HDMI-1"; } + { + output = "HDMI-0"; + primary = true; + } + ]; + + # Powersaving + tlp.enable = true; + }; + + powerManagement.enable = true; + + # This value determines the NixOS release from which the default + # settings for stateful data, like file locations and database versions + # on your system were taken. It‘s perfectly fine and recommended to leave + # this value at the release version of the first install of this system. + # Before changing this value read the documentation for this option + # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html). + system.stateVersion = "22.05"; # Did you read the comment? +} diff --git a/machines/moritz-desktop/disko.nix b/machines/moritz-desktop/disko.nix new file mode 100644 index 0000000..831b9ec --- /dev/null +++ b/machines/moritz-desktop/disko.nix @@ -0,0 +1,114 @@ +{ lib, pkgs, ... }: + +{ + # needed for zfs pool + networking.hostId = "1f8b8073"; + disko.devices = { + disk = { + main = { + type = "disk"; + device = "/dev/disk/by-id/ata-Samsung_SSD_850_EVO_500GB_S2RBNX0J351943M"; + content = { + type = "gpt"; + partitions = { + ESP = { + size = "512M"; + type = "EF00"; + content = { + type = "filesystem"; + format = "vfat"; + mountpoint = "/boot"; + }; + }; + encryptedSwap = { + size = "8G"; + content = { + type = "swap"; + randomEncryption = true; + }; + }; + zfs = { + size = "100%"; + content = { + type = "zfs"; + pool = "zroot"; + }; + }; + }; + }; + }; + }; + zpool = { + zroot = { + type = "zpool"; + rootFsOptions = { + compression = "zstd"; + "com.sun:auto-snapshot" = "false"; + "acltype" = "posixacl"; # NOTE: needed for systemd https://github.com/NixOS/nixpkgs/issues/16954 + }; + mountpoint = null; + + datasets = { + encrypted = { + type = "zfs_fs"; + options = { + mountpoint = "none"; + encryption = "aes-256-gcm"; + keyformat = "passphrase"; + }; + # use this to read the key during boot + postCreateHook = '' + zfs set keylocation="prompt" "zroot/$name"; + ''; + }; + "encrypted/root" = { + type = "zfs_fs"; + options.mountpoint = "legacy"; + mountpoint = "/"; + postCreateHook = "zfs snapshot zroot/encrypted/root@blank"; + }; + "encrypted/nix" = { + type = "zfs_fs"; + options.mountpoint = "legacy"; + mountpoint = "/nix"; + }; + "encrypted/persist" = { + type = "zfs_fs"; + options.mountpoint = "legacy"; + mountpoint = "/persist"; + options."com.sun:auto-snapshot" = "true"; + }; + }; + }; + }; + }; + # rollback to blank + boot.initrd.systemd.services.rollback = { + description = "Rollback ZFS datasets to a pristine state"; + wantedBy = [ + "initrd.target" + ]; + after = [ + "zfs-import-zroot.service" + ]; + before = [ + "sysroot.mount" + ]; + path = with pkgs; [ + zfs + ]; + unitConfig.DefaultDependencies = "no"; + serviceConfig.Type = "oneshot"; + script = '' + zfs rollback -r zroot/encrypted/root@blank && echo "rollback complete" + ''; + }; + boot.initrd.systemd.enable = true; + fileSystems."/persist".neededForBoot = true; + # HACK: to fix issue of agenix running before impermanence + services.zfs = { + autoScrub.enable = true; + trim.enable = true; + autoSnapshot.enable = true; + }; +} diff --git a/machines/moritz-desktop/hardware-configuration.nix b/machines/moritz-desktop/hardware-configuration.nix new file mode 100644 index 0000000..d5fa4da --- /dev/null +++ b/machines/moritz-desktop/hardware-configuration.nix @@ -0,0 +1,27 @@ +# Do not modify this file! It was generated by ‘nixos-generate-config’ +# and may be overwritten by future invocations. Please make changes +# to /etc/nixos/configuration.nix instead. +{ config, lib, pkgs, modulesPath, ... }: + +{ + imports = + [ + (modulesPath + "/installer/scan/not-detected.nix") + ]; + + boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "ahci" "usbhid" "sd_mod" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-amd" ]; + boot.extraModulePackages = [ ]; + + # Enables DHCP on each ethernet and wireless interface. In case of scripted networking + # (the default) this is the recommended approach. When using systemd-networkd it's + # still possible to use this option, but it's recommended to use it in conjunction + # with explicit per-interface declarations with `networking.interfaces..useDHCP`. + networking.useDHCP = lib.mkDefault true; + # networking.interfaces.enp6s0.useDHCP = lib.mkDefault true; + # networking.interfaces.wlp7s0.useDHCP = lib.mkDefault true; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; +} diff --git a/machines/moritz-server/configuration.nix b/machines/moritz-server/configuration.nix index e8022d0..08cca30 100644 --- a/machines/moritz-server/configuration.nix +++ b/machines/moritz-server/configuration.nix @@ -37,8 +37,4 @@ ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDHlemuKagHwz2T5rEwgJNlVUdUdOXyPtCEzD73CrwY2zmpR4AMj7y9u3Rm7HwHUDjLap1ZFwg+53bAsVP6HFZccCXoIfO/8BL0WDGQJrfgb+A+UiRhSqSvyZ77bGJkadbBkadguz3qR3PHcb41DOlhuqVcHxsY8ceHMxAuyb0pLJVJLeytMD+CHS/r7hoj2hckTNAZ+VhCXBtdZfZ7uPUBxLfluYRNNMmdwCglsg3RUS242nJUzy3A84+CXIGeWmNG9Fu45IDkwMthxSW9klyU9R38R9DBDcugkyb6vz+JKSuRVAa47qh/kmtsYekfL3ul9D2JN32P8S+6ZoXx+gXupGJ0ltwJWAFkhLJ+yeXj9kCOv/mIUmCB14jMGsvKiSwV25O/twyjqe2LEkMVgimgrjEYoHu+ZTyp0iFtUvSrFo4tsAhfWPV9yj4F/hUksW7xKIwq5Niyx7he5M/XddudtnAximyiBDGCdJm1Ejl0UaGa6ZQv7y6VZdx0PyZuraT7l9ub8so6JlE4cVgSSU9vE0IS2QqBuHhsIjh8RVksoTR2NQbeDdGaGpGnq2C8y0rDXwE/EJA4LK45khX/GPn73n8F0kBG8dBrWgRDAEODpmebScO7d5mCeM0z3lPcRmh+3e3DPnVVOl+uR7udlc7NauLzl7q913UtxZaF1PlD7Q== cardno:15_584_308 '' ]; - - # Zerotier needs one controller to accept new nodes. Once accepted - # the controller can be offline and routing still works. - clan.core.networking.zerotier.controller.enable = true; } diff --git a/modules/lib.nix b/modules/lib.nix new file mode 100644 index 0000000..6f9f812 --- /dev/null +++ b/modules/lib.nix @@ -0,0 +1,80 @@ +{ lib, ... }: + +rec { + mkDate = longDate: lib.concatStringsSep "-" [ + (builtins.substring 0 4 longDate) + (builtins.substring 4 2 longDate) + (builtins.substring 6 2 longDate) + ]; + mkVersionSrc = src: "unstable-" + builtins.substring 0 7 src.rev; + mkVersionInput = input: + let + date = mkDate (input.lastModifiedDate or "19700101"); + rev = input.shortRev or "dirty"; + in + "unstable-${date}_${rev}"; + + mapModules = f: dir: + let + filterModules = name: type: + let + isPublic = !(lib.hasPrefix "_" name); + isSomething = type != null; + isModule = + let + path = "${toString dir}/${name}"; + isDefault = type == "directory" && builtins.pathExists "${path}/default.nix"; + isFile = type == "regular" && lib.hasSuffix ".nix" name && name != "default.nix"; + in + isDefault || isFile; + in + isPublic && isSomething && isModule; + + modulesInDir = lib.filterAttrs filterModules (builtins.readDir dir); + + mkModule = name: _: + let + path = "${toString dir}/${name}"; + normalizedName = + if name == "default.nix" + then name + else lib.removeSuffix ".nix" name; + in + lib.nameValuePair normalizedName (f path); + in + lib.mapAttrs' mkModule modulesInDir; + + mapModules' = f: dir: lib.attrValues (mapModules f dir); + + listModules = mapModules' (path: path); + + mapModulesRec = f: dir: + let + filterDirs = name: type: + let + isPublic = !(lib.hasPrefix "_" name); + isSomething = type != null; + isDir = type == "directory"; + isDefault = isDir && builtins.pathExists "${toString dir}/${name}/default.nix"; + in + isPublic && isSomething && isDir && !isDefault; + + subDirs = lib.filterAttrs filterDirs (builtins.readDir dir); + + mkSubModule = name: _: + let + path = "${toString dir}/${name}"; + in + lib.nameValuePair name (mapModulesRec f path); + in + mapModules f dir // + (lib.mapAttrs' mkSubModule subDirs); + + mapModulesRec' = f: dir: + let + attrValuesRec = attrs: map (values: if lib.isAttrs values then attrValuesRec values else values) (lib.attrValues attrs); + in + lib.flatten (attrValuesRec (mapModulesRec f dir)); + + listModulesRec = mapModulesRec' (path: path); +} diff --git a/modules/moritz/config/ai.nix b/modules/moritz/config/ai.nix new file mode 100644 index 0000000..aae43d0 --- /dev/null +++ b/modules/moritz/config/ai.nix @@ -0,0 +1,26 @@ +{ lib +, config +, ... +}: +let + cfg = config.my.ai; +in +{ + options.my.ai.enable = lib.mkEnableOption "AI stuff"; + + config = lib.mkIf cfg.enable { + clan.core.vars.generators.moritz-openai = { + prompts.api-key.description = "the openai api key"; + prompts.api-key.type = "hidden"; + prompts.api-key.persist = true; + share = true; + }; + + clan.core.vars.generators.moritz-anthropic = { + prompts.api-key.description = "the anthropic api key"; + prompts.api-key.type = "hidden"; + prompts.api-key.persist = true; + share = true; + }; + }; +} diff --git a/modules/moritz/config/shell.nix b/modules/moritz/config/shell.nix new file mode 100644 index 0000000..9a4811b --- /dev/null +++ b/modules/moritz/config/shell.nix @@ -0,0 +1,22 @@ +{ lib +, ... +}: + +with lib; +{ + options.my.shell = { + abbreviations = mkOption { + default = { }; + type = with types; attrsOf str; + example = { gs = "git status"; }; + }; + aliases = mkOption { + default = { }; + type = with types; attrsOf str; + }; + variables = mkOption { + default = { }; + type = with types; attrsOf str; + }; + }; +} diff --git a/modules/moritz/config/terminal.nix b/modules/moritz/config/terminal.nix new file mode 100644 index 0000000..871e9bd --- /dev/null +++ b/modules/moritz/config/terminal.nix @@ -0,0 +1,14 @@ +{ lib +, ... +}: + +with lib; +{ + options.my.terminal = { + package = mkOption { + description = "Terminal emulator package to use. Gets converted to path of bin automatically."; + type = types.package; + apply = lib.getExe; + }; + }; +} diff --git a/modules/moritz/config/theming/_catppuccin.nix b/modules/moritz/config/theming/_catppuccin.nix new file mode 100644 index 0000000..6d69def --- /dev/null +++ b/modules/moritz/config/theming/_catppuccin.nix @@ -0,0 +1,458 @@ +{ config +, pkgs +, flavor +, rosewater +, flamingo +, pink +, mauve +, red +, maroon +, peach +, yellow +, green +, teal +, sky +, sapphire +, blue +, lavender +, text +, subtext1 +, subtext0 +, overlay2 +, overlay1 +, overlay0 +, surface2 +, surface1 +, surface0 +, base +, mantle +, crust +, ... +}: + +{ + my.programs.tofi.settings = { + text-color = "#${text}"; + prompt-color = "#${red}"; + selection-color = "#${yellow}"; + background-color = "#${base}"; + }; + home-manager.users.moritz = { + programs = { + fzf.colors = { + "bg+" = "#${surface0}"; + "fg+" = "#${text}"; + "hl+" = "#${red}"; + bg = "#${base}"; + fg = "#${text}"; + header = "#${red}"; + hl = "#${red}"; + info = "#${mauve}"; + marker = "#${rosewater}"; + pointer = "#${rosewater}"; + prompt = "#${mauve}"; + spinner = "#${rosewater}"; + }; + foot.settings.colors = { + foreground = text; # Text + background = base; # Base + regular0 = surface1; # Surface 1 + regular1 = red; # red + regular2 = green; # green + regular3 = yellow; # yellow + regular4 = blue; + regular5 = pink; + regular6 = teal; + regular7 = subtext1; + bright0 = surface2; + bright1 = red; + bright2 = green; + bright3 = yellow; + bright4 = blue; + bright5 = pink; + bright6 = teal; + bright7 = subtext0; + }; + kitty.extraConfig = '' + # vim:ft=kitty + + ## name: Catppuccin-Frappe + ## author: Pocco81 (https://github.com/Pocco81) + ## license: MIT + ## upstream: https://github.com/catppuccin/kitty/blob/main/frappe.conf + ## blurb: Soothing pastel theme for the high-spirited! + + + + # The basic colors + foreground #${text} + background #${base} + selection_foreground #${base} + selection_background #${rosewater} + + # Cursor colors + cursor #${rosewater} + cursor_text_color #${base} + + # URL underline color when hovering with mouse + url_color #${rosewater} + + # Kitty window border colors + active_border_color #${lavender} + inactive_border_color #${overlay0} + bell_border_color #${yellow} + + # OS Window titlebar colors + wayland_titlebar_color system + macos_titlebar_color system + + # Tab bar colors + active_tab_foreground #${crust} + active_tab_background #${mauve} + inactive_tab_foreground #${text} + inactive_tab_background #${mantle} + tab_bar_background #${crust} + + # Colors for marks (marked text in the terminal) + mark1_foreground #${base} + mark1_background #${lavender} + mark2_foreground #${base} + mark2_background #${mauve} + mark3_foreground #${base} + mark3_background #${sapphire} + + # The 16 terminal colors + + # black + color0 #${surface1} + color8 #${surface2} + + # red + color1 #${red} + color9 #${red} + + # green + color2 #${green} + color10 #${green} + + # yellow + color3 #${yellow} + color11 #${yellow} + + # blue + color4 #${blue} + color12 #${blue} + + # magenta + color5 #${pink} + color13 #${pink} + + # cyan + color6 #${teal} + color14 #${teal} + + # white + color7 #${subtext1} + color15 #${subtext0} + ''; + tmux.plugins = with pkgs.tmuxPlugins; [ + { + plugin = catppuccin; + extraConfig = "set -g @catppuccin_flavour '${flavor}'"; + } + ]; + zathura.extraConfig = '' + set window-title-basename "true" + set selection-clipboard "clipboard" + + set default-fg "#${text}" + set default-bg "#${base}" + + set completion-bg "#${surface0}" + set completion-fg "#${text}" + set completion-highlight-bg "#575268" + set completion-highlight-fg "#${text}" + set completion-group-bg "#${surface0}" + set completion-group-fg "#${blue}" + + set statusbar-fg "#${text}" + set statusbar-bg "#${surface0}" + + set notification-bg "#${surface0}" + set notification-fg "#${text}" + set notification-error-bg "#${surface0}" + set notification-error-fg "#${red}" + set notification-warning-bg "#${surface0}" + set notification-warning-fg "#FAE3B0" + + set inputbar-fg "#${text}" + set inputbar-bg "#${surface0}" + + set recolor-lightcolor "#${base}" + set recolor-darkcolor "#${text}" + + set index-fg "#${text}" + set index-bg "#${base}" + set index-active-fg "#${text}" + set index-active-bg "#${surface0}" + + set render-loading-bg "#${base}" + set render-loading-fg "#${text}" + + set highlight-color "#575268" + set highlight-fg "#${pink}" + set highlight-active-color "#${pink}" + ''; + rofi = { + theme = "custom"; + extraConfig = { + show-icons = true; + terminal = "alacritty"; + drun-display-format = "{icon} {name}"; + location = 0; + disable-history = false; + hide-scrollbar = true; + display-drun = "  Apps "; + display-run = "  Run "; + display-window = " 﩯 Window"; + display-Network = " 󰤨 Network"; + sidebar-mode = true; + }; + }; + }; + xsession.windowManager.bspwm.settings = { + focused_border_color = "#${mauve}"; + normal_border_color = "#${base}"; + active_border_color = "#${base}"; + }; + services = { + dunst.settings = { + global = { + # Defines color of the frame around the notification window. + frame_color = "#${blue}"; + + # Define a color for the separator. + # possible values are: + # * auto: dunst tries to find a color fitting to the background; + # * foreground: use the same color as the foreground; + # * frame: use the same color as the frame; + # * anything else will be interpreted as a X color. + separator_color = "frame"; + }; + + urgency_low = { + background = "#${base}"; + foreground = "#${text}"; + }; + urgency_normal = { + background = "#${base}"; + foreground = "#${text}"; + }; + urgency_critical = { + background = "#${base}"; + foreground = "#${text}"; + frame_color = "#${peach}"; + }; + }; + polybar = { + config = { + "bar/bottom" = { + background = base; + foreground = text; + border-color = base; + }; + "module/bspwm" = { + label-focused-foreground = pink; + label-occupied-foreground = overlay1; + label-urgent-foreground = maroon; + label-empty-foreground = overlay1; + label-separator-foreground = base; + }; + "module/cpu" = { + format-foreground = base; + format-background = green; + }; + "module/time" = { + format-foreground = base; + format-background = blue; + }; + "module/date" = { + format-foreground = base; + format-background = peach; + }; + "module/memory" = { + format-foreground = base; + format-background = blue; + }; + "module/pulseaudio" = { + format-volume-foreground = base; + format-volume-background = mauve; + label-muted = "婢 muted"; + format-muted-foreground = base; + format-muted-background = red; + }; + "module/network" = { + format-connected-foreground = base; + format-connected-background = mauve; + }; + "module/battery" = { + format-charging-foreground = base; + format-charging-background = green; + format-full-foreground = base; + format-full-background = green; + format-discharging-foreground = base; + format-discharging-background = red; + }; + }; + }; + }; + xdg.configFile = { + "fish/conf.d/theme.fish".text = '' + # Catppuccin color palette + + # --> special + set -l foreground ${text} + set -l selection ${surface0} + + # --> palette + set -l teal ${teal} + set -l flamingo ${flamingo} + set -l mauve ${mauve} + set -l pink ${pink} + set -l red ${red} + set -l peach ${peach} + set -l green ${green} + set -l yellow ${yellow} + set -l blue ${blue} + set -l gray ${overlay0} + + # Syntax Highlighting + set -g fish_color_normal $foreground + set -g fish_color_command $blue + set -g fish_color_param $flamingo + set -g fish_color_keyword $red + set -g fish_color_quote $green + set -g fish_color_redirection $pink + set -g fish_color_end $peach + set -g fish_color_error $red + set -g fish_color_gray $gray + set -g fish_color_selection --background=$selection + set -g fish_color_search_match --background=$selection + set -g fish_color_operator $pink + set -g fish_color_escape $flamingo + set -g fish_color_autosuggestion $gray + set -g fish_color_cancel $red + + # Prompt + set -g fish_color_cwd $yellow + set -g fish_color_user $teal + set -g fish_color_host $blue + + # Completion Pager + set -g fish_pager_color_progress $gray + set -g fish_pager_color_prefix $pink + set -g fish_pager_color_completion $foreground + set -g fish_pager_color_description $gray + ''; + "rofi/custom.rasi".text = '' + * { + bg-col: #${base}; + bg-col-light: #${base}; + border-col: #${base}; + selected-col: #${base}; + blue: #${blue}; + fg-col: #${text}; + fg-col2: #${red}; + grey: #${overlay0}; + + width: 900; + font: "JetBrainsMono Nerd Font 14"; + } + + element-text, element-icon , mode-switcher { + background-color: inherit; + text-color: inherit; + } + + window { + height: 360px; + border: 3px; + border-color: @border-col; + background-color: @bg-col; + } + + mainbox { + background-color: @bg-col; + } + + inputbar { + children: [prompt,entry]; + background-color: @bg-col; + border-radius: 5px; + padding: 2px; + } + + prompt { + background-color: @blue; + padding: 6px; + text-color: @bg-col; + border-radius: 3px; + margin: 20px 0px 0px 20px; + } + + textbox-prompt-colon { + expand: false; + str: ":"; + } + + entry { + padding: 6px; + margin: 20px 0px 0px 10px; + text-color: @fg-col; + background-color: @bg-col; + } + + listview { + border: 0px 0px 0px; + padding: 6px 0px 0px; + margin: 10px 0px 0px 20px; + columns: 2; + lines: 5; + background-color: @bg-col; + } + + element { + padding: 5px; + background-color: @bg-col; + text-color: @fg-col ; + } + + element-icon { + size: 25px; + } + + element selected { + background-color: @selected-col ; + text-color: @fg-col2 ; + } + + mode-switcher { + spacing: 0; + } + + button { + padding: 10px; + background-color: @bg-col-light; + text-color: @grey; + vertical-align: 0.5; + horizontal-align: 0.5; + } + + button selected { + background-color: @bg-col; + text-color: @blue; + } + ''; + }; + }; +} diff --git a/modules/moritz/config/theming/catppuccin-frappe.nix b/modules/moritz/config/theming/catppuccin-frappe.nix new file mode 100644 index 0000000..0a98a0f --- /dev/null +++ b/modules/moritz/config/theming/catppuccin-frappe.nix @@ -0,0 +1,40 @@ +{ config, lib, pkgs, ... }: + +with lib; +let + cfg = config.my.theming; +in +{ + config = mkIf (cfg.enable && cfg.scheme == "catppuccin-frappe") + (import ./_catppuccin.nix + { + inherit config lib pkgs; + flavor = "mocha"; + rosewater = "f2d5cf"; + flamingo = "eebebe"; + pink = "f4b8e4"; + mauve = "ca9ee6"; + red = "e78284"; + maroon = "ea999c"; + peach = "ef9f76"; + yellow = "e5c890"; + green = "a6d189"; + teal = "81c8be"; + sky = "99d1db"; + sapphire = "85c1dc"; + blue = "8caaee"; + lavender = "babbf1"; + text = "c6d0f5"; + subtext1 = "b5bfe2"; + subtext0 = "a5adce"; + overlay2 = "949cbb"; + overlay1 = "838ba7"; + overlay0 = "737994"; + surface2 = "626880"; + surface1 = "51576d"; + surface0 = "414559"; + base = "303446"; + mantle = "292c3c"; + crust = "232634"; + }); +} diff --git a/modules/moritz/config/theming/catppuccin-latte.nix b/modules/moritz/config/theming/catppuccin-latte.nix new file mode 100644 index 0000000..3c64d83 --- /dev/null +++ b/modules/moritz/config/theming/catppuccin-latte.nix @@ -0,0 +1,40 @@ +{ config, lib, pkgs, ... }: + +with lib; +let + cfg = config.my.theming; +in +{ + config = mkIf (cfg.enable && cfg.scheme == "catppuccin-latte") + (import ./_catppuccin.nix + { + inherit config lib pkgs; + flavor = "mocha"; + rosewater = "dc8a78"; + flamingo = "dd7878"; + pink = "ea76cb"; + mauve = "8839ef"; + red = "d20f39"; + maroon = "e64553"; + peach = "fe640b"; + yellow = "df8e1d"; + green = "40a02b"; + teal = "179299"; + sky = "04a5e5"; + sapphire = "209fb5"; + blue = "1e66f5"; + lavender = "7287fd"; + text = "4c4f69"; + subtext1 = "5c5f77"; + subtext0 = "6c6f85"; + overlay2 = "7c7f93"; + overlay1 = "8c8fa1"; + overlay0 = "9ca0b0"; + surface2 = "acb0be"; + surface1 = "bcc0cc"; + surface0 = "ccd0da"; + base = "eff1f5"; + mantle = "e6e9ef"; + crust = "dce0e8"; + }); +} diff --git a/modules/moritz/config/theming/catppuccin-macchiato.nix b/modules/moritz/config/theming/catppuccin-macchiato.nix new file mode 100644 index 0000000..b5029ed --- /dev/null +++ b/modules/moritz/config/theming/catppuccin-macchiato.nix @@ -0,0 +1,40 @@ +{ config, lib, pkgs, ... }: + +with lib; +let + cfg = config.my.theming; +in +{ + config = mkIf (cfg.enable && cfg.scheme == "catppuccin-macchiato") + (import ./_catppuccin.nix + { + inherit config lib pkgs; + flavor = "macchiato"; + rosewater = "f4dbd6"; + flamingo = "f0c6c6"; + pink = "f5bde6"; + mauve = "c6a0f6"; + red = "ed8796"; + maroon = "ee99a0"; + peach = "f5a97f"; + yellow = "eed49f"; + green = "a6da95"; + teal = "8bd5ca"; + sky = "91d7e3"; + sapphire = "7dc4e4"; + blue = "8aadf4"; + lavender = "b7bdf8"; + text = "cad3f5"; + subtext1 = "b8c0e0"; + subtext0 = "a5adcb"; + overlay2 = "939ab7"; + overlay1 = "8087a2"; + overlay0 = "6e738d"; + surface2 = "5b6078"; + surface1 = "494d64"; + surface0 = "363a4f"; + base = "24273a"; + mantle = "1e2030"; + crust = "181926"; + }); +} diff --git a/modules/moritz/config/theming/catppuccin-mocha.nix b/modules/moritz/config/theming/catppuccin-mocha.nix new file mode 100644 index 0000000..732ab23 --- /dev/null +++ b/modules/moritz/config/theming/catppuccin-mocha.nix @@ -0,0 +1,40 @@ +{ config, lib, pkgs, ... }: + +with lib; +let + cfg = config.my.theming; +in +{ + config = mkIf (cfg.enable && cfg.scheme == "catppuccin-mocha") + (import ./_catppuccin.nix + { + inherit config lib pkgs; + flavor = "mocha"; + rosewater = "f5e0dc"; + flamingo = "f2cdcd"; + pink = "f5c2e7"; + mauve = "cba6f7"; + red = "f38ba8"; + maroon = "eba0ac"; + peach = "fab387"; + yellow = "f9e2af"; + green = "a6e3a1"; + teal = "94e2d5"; + sky = "89dceb"; + sapphire = "74c7ec"; + blue = "89b4fa"; + lavender = "b4befe"; + text = "cdd6f4"; + subtext1 = "bac2de"; + subtext0 = "a6adc8"; + overlay2 = "9399b2"; + overlay1 = "7f849c"; + overlay0 = "6c7086"; + surface2 = "585b70"; + surface1 = "45475a"; + surface0 = "494d64"; + base = "1e1e2e"; + mantle = "181825"; + crust = "11111b"; + }); +} diff --git a/modules/moritz/config/theming/default.nix b/modules/moritz/config/theming/default.nix new file mode 100644 index 0000000..bf794f5 --- /dev/null +++ b/modules/moritz/config/theming/default.nix @@ -0,0 +1,218 @@ +{ config +, lib +, pkgs +, ... +}: + +with lib; +let + cfg = config.my.theming; +in +{ + imports = [ + ./dracula.nix + ./catppuccin-frappe.nix + ./catppuccin-latte.nix + ./catppuccin-macchiato.nix + ./catppuccin-mocha.nix + ]; + + options.my.theming = { + enable = mkEnableOption "theming"; + scheme = mkOption { + type = types.enum [ + "dracula" + "catppuccin-latte" + "catppuccin-frappe" + "catppuccin-macchiato" + "catppuccin-mocha" + ]; + }; + }; + + config = mkIf cfg.enable { + my.programs.tofi.settings = { + font-size = "20"; + font = + let + fontBasePath = pkgs.nerd-fonts.fira-code; + in + "${fontBasePath}/share/fonts/truetype/NerdFonts/FiraCodeNerdFont-Regular.ttf"; + height = "360"; + width = "720"; + outline-width = "0"; + border-width = "0"; + }; + my.programs.ghostty.settings.theme = cfg.scheme; + home-manager.users.moritz = { + services.polybar = { + config = { + "bar/bottom" = { + # position + monitor = "\${env:MONITOR}"; + bottom = true; + width = "100%"; + height = 15; + + border-size = 2; + + separator = " "; + + font-0 = "FiraCode Nerd Font:size=8;0"; + font-1 = "FiraCode Nerd Font:size=8;1"; + font-2 = "FiraCode Nerd Font:size=8;2"; + + modules-left = "cpu memory network battery"; + modules-center = "bspwm"; + modules-right = "pulseaudio date time"; + + tray-position = "right"; + tray-padding = 2; + + wm-restack = "bspwm"; + + cursor-click = "pointer"; + cursor-scroll = "ns-resize"; + }; + "module/battery" = { + type = "internal/battery"; + battery = "BATT"; + adapter = "ACAD"; + time-format = "%H:%M"; + + format-charging = " "; + format-charging-padding = 1; + format-discharging = " "; + format-discharging-padding = 1; + format-full = " "; + format-full-padding = 1; + + label-charging = "%percentage%% %time% remaining"; + label-discharging = "%percentage%% %time% remaining"; + label-full = "Fully charged"; + + animation-charging-0 = " "; + animation-charging-1 = " "; + animation-charging-2 = " "; + animation-charging-3 = " "; + animation-charging-4 = " "; + animation-charging-framerate = 500; + + animation-discharging-0 = " "; + animation-discharging-1 = " "; + animation-discharging-2 = " "; + animation-discharging-3 = " "; + animation-discharging-4 = " "; + animation-discharging-framerate = 500; + }; + "module/bspwm" = { + type = "internal/bspwm"; + + label-focused = ""; + label-focused-padding = 1; + + label-occupied = ""; + label-occupied-padding = 1; + + label-urgent = ""; + label-urgent-padding = 1; + + label-empty = ""; + label-empty-padding = 1; + + label-separator = " "; + label-separator-padding = 1; + + pin-workspaces = true; + }; + "module/cpu" = { + type = "internal/cpu"; + interval = 2; + + format = "