diff --git a/.config/nvim/fnl/core.fnl b/.config/nvim/fnl/core.fnl deleted file mode 100644 index d32973baf..000000000 --- a/.config/nvim/fnl/core.fnl +++ /dev/null @@ -1,34 +0,0 @@ -(module core {require {_ plugins} - autoload {nvim aniseed.nvim a aniseed.core fennel aniseed.fennel} - require-macros [macros zest.macros]}) - -; (let [(res err) (pcall #(require :packer_compiled))] #(do nil)) -; (if err)) -; (vim.notify (string.format "Failure loading packer_compiled %s" (tostring err)) vim.log.levels.ERROR))) -(opt-set mouse :a) -(opt-set termguicolors true) -(if (> (vim.fn.has :win32) 0) - (opt-set guifont "FiraCode Nerd Font:h13") - (opt-set guifont "FiraCode Nerd Font:h10")) - -(nvim.command "colorscheme pink_ocean") -;(_: colorscheme :pink_ocean) -(opt-set showmode false) -(opt-set tabstop 4) -(opt-set shiftwidth 4) -(opt-set hidden true) -(opt-set updatetime 300) -(opt-set signcolumn :yes) -(opt-set cursorline true) -(opt-set cursorlineopt :number) -(opt-set updatetime 400) -(opt-set conceallevel 3) -(opt-local-set rnu true) -(opt-local-set nu true) -(opt-set mapleader "\\") - -(def-keymap : [nvi] - "let g:neovide_fullscreen=!g:neovide_fullscreen") - -;{:switch_fullscreen switch_fullscreen} -;(_: autocmd "BufNewFile,BufRead" "*.agda" "setf agda") diff --git a/.config/nvim/fnl/macros.fnl b/.config/nvim/fnl/macros.fnl deleted file mode 100644 index 2c0a22156..000000000 --- a/.config/nvim/fnl/macros.fnl +++ /dev/null @@ -1,31 +0,0 @@ -{:lsp-cap (fn [name ...] - `(when (. client.server_capabilities ,(tostring name)) - ,...)) - :packer-use (fn [...] - "use packer plugins - Takes a list of package names and a table of the configuration for it - " - (let [a (require :aniseed.core) - sep (package.config:sub 1 1) - args [...] - use-statements []] - (for [i 1 (a.count args) 2] - (let [name (. args i) - block (. args (+ i 1))] - (a.assoc block 1 name) ; (when (. block :mod) ; (a.assoc block :config `(fn [] ; (require ,(.. :plugins. (tostring (. block :mod)))) - ; (,(-?> block (. :config)))))) - ; (a.assoc block :mod) - (when (. block :config) - (a.assoc block :config - `(fn [] - (let [(ok?# res#) (pcall ,(. block :config) - ,name)] - (when (not ok?#) - (_G.vim.notify (string.format "Failure loading config for %s: %s" - ,(tostring name) - res#))))))) - (table.insert use-statements block))) - (let [use-sym (gensym)] - `(let [lazy# (require :lazy)] - (lazy#.setup {:spec [,(unpack (icollect [_# v# (ipairs use-statements)] - v#))]})))))} diff --git a/.config/nvim/fnl/plugins.fnl b/.config/nvim/fnl/plugins.fnl deleted file mode 100644 index d6386e716..000000000 --- a/.config/nvim/fnl/plugins.fnl +++ /dev/null @@ -1,197 +0,0 @@ -(module plugins {require {nvim aniseed.nvim a aniseed.core} - require-macros [macros zest.macros]}) - -;; Plugins to be managed by packer. -; TODO FIX STUFF -(packer-use ;; libraries - :nvim-lua/plenary.nvim {:module :plenary} :tami5/sqlite.lua - {:module :sqlite} :tsbohc/zest.nvim {} - ;:config #(. (require :zest) :setup)} - :MunifTanjim/nui.nvim {:module :nui} ; Startup and typical operation - :Olical/aniseed {} :rktjmp/hotpot.nvim {} - ; :lewis6991/impatient.nvim {:require :sqlite.lua :config #(require "impatient")} - :wbthomason/packer.nvim {} - :kyazdani42/nvim-web-devicons {:config #(require :plugins.devicons)} :lucidph3nx/nvim-sops - {:event [:BufEnter]} :grafana/vim-alloy {} ;; gui features - :ellisonleao/glow.nvim {} :rktjmp/lush.nvim {} - :camspiers/animate.vim {:module :animate} - :kyazdani42/nvim-tree.lua {:config #(require :plugins.tree)} ; :keys :} ;:mod tree} - :angalexik/feline.nvim {:config #(require :plugins.feline)} - ; :mod feline} - :akinsho/nvim-bufferline.lua - {:config #(require :plugins.bufferline)} ; - :stevearc/conform.nvim {:config #(require :plugins.conform)} - ;:mod conform} - :nvim-telescope/telescope.nvim - {:cmd :Telescope - :keys [: :] - :module :telescope - :dependencies [:plenary.nvim - :nvim-telescope/telescope-ui-select.nvim - {1 :nvim-telescope/telescope-frecency.nvim - :dependencies :sqlite.lua}] - :config #(require :plugins.telescope)} - :numToStr/Comment.nvim {:config #(require :plugins.comment)} - :lewis6991/gitsigns.nvim - {:dependencies [:plenary.nvim] - :config #(require :plugins.gitsigns)} ;:mod gitsigns} - :TimUntersberger/neogit - {:cmd :Neogit - :dependencies [:plenary.nvim] - :config #(require :plugins.neogit)} ;:mod neogit} - :norcalli/nvim-colorizer.lua - {:config #((. (require :colorizer) :setup))} :rcarriga/nvim-notify - {:config #(set vim.notify (require :notify))} - :folke/todo-comments.nvim - {:dependencies :plenary.nvim :config #(require :plugins.todo)} - ;:mod todo} - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;: - ;;; quality of life improvements ;;; - ;;;:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - ; :glepnir/dashboard-nvim {:config #(require "plugins.dashboard")} - ; :folke/persistence.nvim {:event :BufReadPre :cmd :Load :module :persistence :config #(let [persistence (require "persistence")] - ;(vim.api.nvim_command "command! -nargs=0 Load :lua require('persistence').load()") - ; (persistence.setup))} - :christoomey/vim-tmux-navigator {} :folke/which-key.nvim - {:lazy false :config #(require :plugins.whichkey)} - :windwp/nvim-autopairs {:config #(require :plugins.autopairs)} - ; :mod autopairs} - ; :Yggdroot/indentLine {} ;; disable in favour of below plugin - :lukas-reineke/indent-blankline.nvim - {:config #(require :plugins.indent)} :ntpeters/vim-better-whitespace - {:config #(do - (set vim.g.better_whitespace_filetypes_blacklist - [:dashboard - :diff - :git - :gitcommit - :unite - :qf - :help - :markdown - :fugitive]) - (set vim.g.strip_whitespace_confirm 0) - (set vim.g.strip_whitespace_on_save 1))} - ; :nathanaelkane/vim-indent-guides {} - :jghauser/mkdir.nvim {:config #(require :mkdir)} - :chipsenkbeil/distant.nvim {:config #(require :plugins.distant)} - :tweekmonster/startuptime.vim {:cmd :StartupTime} - :andweeb/presence.nvim {:config #(require :plugins.presence)} - ; :mod presence} - :wakatime/vim-wakatime {} :tjdevries/train.nvim {:lazy true} - ; Completion - :github/copilot.vim {} ;:lazy true} - :saadparwaiz1/cmp_luasnip - {:lazy true :dependencies :luasnip :module :cmp_luasnip} - :L3mON4D3/luasnip {:module :luasnip} :uga-rosa/cmp-dictionary - {:module :cmp_dictionary} :hrsh7th/cmp-buffer - {:lazy true :module :cmp_buffer} :hrsh7th/cmp-path {} - :hrsh7th/cmp-cmdline {} :hrsh7th/cmp-nvim-lua {:ft [:lua :fennel]} - :hrsh7th/cmp-copilot {} :Saecki/crates.nvim - {:dependencies :plenary.nvim - :ft [:toml] - :config #((. (require :crates) :setup))} - :hrsh7th/nvim-cmp - {:dependencies [:crates.nvim - :cmp-copilot - :cmp_luasnip - :luasnip - :hrsh7th/cmp-buffer] - :config #(require :plugins.cmp)} - ; :module [:plugins.cmp :cmp] :ft [:lua :fennel] - ;Language support - :nvim-treesitter/nvim-treesitter - {:do :TSUpdate - :branch :main - :dependencies [:JoosepAlviste/nvim-ts-context-commentstring - :DariusCorvus/tree-sitter-language-injection.nvim] - :config #(require :plugins.treesitter)} - ; :mod treesitter} - :folke/twilight.nvim {:cmd :Twilight :dependencies :nvim-treesitter} - :iamcco/markdown-preview.nvim - {:ft :markdown :run "cd app && yarn install"} - ; :plasticboy/vim-markdown {:ft :markdown :config #(vim.cmd " - ; let g:vim_markdown_fenced_languages = ['bash=sh','nix=nix'] - ; ")} - :Olical/conjure {:ft [:fennel :racket :cl]} :wlangstroth/vim-racket - {:lazy true} :vmchale/dhall-vim {:lazy true} :ziglang/zig.vim - {:lazy true} :edwinb/idris2-vim {:lazy true} :shinKage/idris2-nvim - {:ft :idris2 :dependencies :nui.nvim} :udalov/kotlin-vim - {:lazy true} :derekelkins/agda-vim - {:ft :agda - :config #(vim.api.nvim_command "let maplocalleader = \",\"")} - :LnL7/vim-nix {:lazy true} :tikhomirov/vim-glsl {:ft :glsl} - :dag/vim-fish {:ft :fish} :purescript-contrib/purescript-vim - {:ft :purescript} :eraserhd/parinfer-rust - {:ft [:fennel :racket :scheme :lisp] - :build - "nix develop --command 'cargo build --release'"} - ; :gpanders/nvim-parinfer {:ft [:fennel :racket :scheme :lisp]} - :elkowar/yuck.vim {:ft :yuck} ; :elkowar/nvim-gehzu {:ft :fnl} - ; :vhyrro/neorg {:after [:nvim-cmp :nvim-treesitter] :ft :norg :require [:plenary.nvim] :config #(require :plugins.neorg)} ;:mod neorg} - :nvim-lua/lsp-status.nvim {:module :lsp-status} - :simrat39/symbols-outline.nvim {:lazy true} :scalameta/nvim-metals - {:ft :scala :dependencies [:plenary.nvim :nvim-lspconfig]} - :onsails/lspkind-nvim {:module :lspkind} - :jamestthompson3/nvim-remote-containers {} - :esensar/nvim-dev-container - {:config (fn [] - ((. (require :devcontainer) :setup) {}))} - :jmbuhr/otter.nvim - {:dependencies [:nvim-treesitter/nvim-treesitter]} - :neovim/nvim-lspconfig - {:ft [:scss - :htmldjango - :html - :css - :haskell - :rust - :typescript - :javascript - :lua - :zig - :go - :c - :cpp - :typescriptreact - :scala - :nix - :purescript - :ocaml - :idris2 - :ps1 - :java - :python - :kotlin - :cs - :ada] - :lazy true - :dependencies [;FIXME change to use branch - {1 :mrcjkb/rustaceanvim :dependencies [:nvim-dap]} - :nvim-lua/lsp_extensions.nvim - :kosayoda/nvim-lightbulb - {1 :mason-org/mason.nvim :module :mason} - {1 :mason-org/mason-lspconfig.nvim - :module :mason-lspconfig} - {1 :filipdutescu/renamer.nvim - :branch :master - :module :renamer - :dependencies [:plenary.nvim]} - :which-key.nvim - {1 :ray-x/lsp_signature.nvim - :module :lsp_signature} - :nvim-cmp - :jubnzv/virtual-types.nvim - :luasnip - {1 :hrsh7th/cmp-nvim-lsp :module :cmp_nvim_lsp} - :symbols-outline.nvim - :idris2-nvim] - :config #(require :plugins.lsp)} ; :mod nvim_lsp} - ; :karb94/neoscroll.nvim {:config #(. (require "neoscroll") :setup) } - :mfussenegger/nvim-dap - {:ft [:rust :c :cpp] - :lazy true - :config #(require :plugins.dap) - :dependencies [{1 :rcarriga/nvim-dap-ui - :module :dapui - :dependencies [:nvim-neotest/nvim-nio]}]}) diff --git a/.config/nvim/fnl/plugins/feline.fnl b/.config/nvim/fnl/plugins/feline.fnl deleted file mode 100644 index 52d015349..000000000 --- a/.config/nvim/fnl/plugins/feline.fnl +++ /dev/null @@ -1,226 +0,0 @@ -(module plugins.feline - {require {feline feline - colors colors - lsp feline.providers.lsp - vi_mode_utils feline.providers.vi_mode} - autoload {lsp-status lsp-status}}) - -(local b vim.b) -(local fnn vim.fn) - -(set vim.o.termguicolors true) -(local vi_mode_colors {:NORMAL colors.white - :OP :green - :INSERT colors.dark_cyan - :VISUAL colors.blue - :BLOCK colors.blue - :REPLACE colors.red - :V-REPLACE :violet - :ENTER :cyan - :MORE :cyan - :SELECT :orange - :COMMAND colors.black - :SHELL :green - :TERM :green - :NONE :yellow}) - -(fn nc [...] - (accumulate [str "" _ v (ipairs [...])] - (if v - (.. str v) - str))) - -(local spinner_frames ["⣾" "⣽" "⣻" "⢿" "⡿" "⣟" "⣯" "⣷"]) - -(fn lsp-statusline-short [] - (local buf_messages (lsp-status.messages)) - (local outputs {}) - (each [_ msg (ipairs buf_messages)] - (when msg.progress - (table.insert outputs - (. spinner_frames - (+ 1 (% msg.spinner (length spinner_frames))))))) - (table.concat outputs " ")) - -(fn lsp-statusline [] - (local buf_messages (lsp-status.messages)) - (local msgs {}) - (each [_ msg (ipairs buf_messages)] - (let [client_name (.. "[" msg.name "]")] - (table.insert msgs (nc " " - (if msg.progress ; add spinner if the spinner exists - (nc (when msg.spinner - (.. (. spinner_frames - (+ 1 - (% msg.spinner - (length spinner_frames)))) - " ")) - ; add the title - msg.title - ; if there is a message add the message - (nc " " msg.message) ; add the percentage - (when msg.percentage - (string.format " (%.0f%%%%)" - msg.percentage))) - msg.content))))) - (or (table.concat msgs " ") "")) - -(local components {:active [{} {} {}] :inactive [{} {} {}]}) - -(tset components.active 1 - [{:provider " 󰊠 " - :left_sep [" " {:str " " :hl {:fg colors.cyan :bg :NONE}}] - :hl #{:bg colors.cyan - :style :bold - :name (vi_mode_utils.get_mode_highlight_name) - :fg (vi_mode_utils.get_mode_color)}} - {:provider :file_info - :type :relative-short - :hl {:fg :white :bg colors.dark_cyan :style :bold} - :left_sep {:str " " :hl {:bg colors.dark_cyan}} - ; "slant_left_2" {:str " " :hl {:bg colors.grey :fg "NONE"}}] - :right_sep [{:str " " :hl {:bg colors.dark_cyan}}]} - {:provider :file_size - :hl {:bg :black} - :enabled (fn [] - (> (fnn.getfsize (fnn.expand "%:p")) 0)) - :left_sep {:str " " :hl {:bg :black}} - :right_sep [{:str " " :hl {:bg :black}} - {:str :right_rounded :hl {:fg :black :bg :NONE}}]}]) - -(tset components.active 2 - [{:provider :lsp_client_names - :hl {:fg :white :bg "#3f3f3f"} - ; :enabled (vim.lsp.buf.server_ready) - :enabled #(> (length (vim.lsp.get_clients)) 0) - :right_sep [{:str :right_rounded :hl {:fg "#3f3f3f" :bg :NONE}}] - :left_sep [{:str :left_rounded :hl {:fg "#3f3f3f" :bg :NONE}}]}]) - -(tset components.active 3 [{:provider :position - :hl {:bg colors.red :fg colors.white :style :bold} - :left_sep [{:str :left_rounded - :hl {:fg colors.red :bg :NONE}}] - :right_sep [{:str " " :hl {:bg colors.red}} - {:str " " :hl {:bg :black}}]} - {:provider :git_branch - :hl {:fg :white :bg :black :style :bold} - :right_sep (fn [] - (local val - {:hl {:fg :NONE :bg :black}}) - (if b.gitsigns_status_dict - (set val.str " ") - (set val.str "")) - val)} - {:provider :git_diff_added - :hl {:fg :green :bg :black}} - {:provider :git_diff_changed - :hl {:fg :orange :bg :black}} - {:provider :git_diff_removed - :hl {:fg :red :bg :black} - :right_sep (fn [] - (local val - {:hl {:fg :NONE :bg :black}}) - (if b.gitsigns_status_dict - (set val.str " ") - (set val.str "")) - val)} - {:provider :line_percentage - :hl {:bg :black :style :bold} - :left_sep {:str " " :hl {:bg :black}} - :right_sep {:str " " :hl {:bg :black}}} - {:provider :diagnostic_errors - :enabled #(lsp.diagnostics_exist :error) - :right_sep {:str " " :hl {:bg :black}} - :hl {:bg :black :fg :red}} - {:provider :diagnostic_warnings - :enabled #(lsp.diagnostics_exist :warn) - :right_sep {:str " " :hl {:bg :black}} - :hl {:bg :black :fg :yellow}} - {:provider :diagnostic_hints - :enabled #(lsp.diagnostics_exist :hint) - :right_sep {:str " " :hl {:bg :black}} - :hl {:bg :black :fg :cyan}} - {:provider :diagnostic_info - :enabled #(lsp.diagnostics_exist :info) - :hl {:fg :skyblue :bg :black}} - {:provider #(lsp-statusline) - :short_provider #(lsp-statusline-short) - :enabled #(> (length (vim.lsp.get_clients)) 0) - :hl {:bg :black} - :right_sep {:str " " :hl {:bg :black}}} - {:provider :scroll_bar - :hl {:bg :black :fg colors.red :style :bold} - :right_sep [{:str " " :hl {:bg :black}} - {:str :right_rounded - :hl {:fg :black :bg :NONE}} - " "]}]) - -(tset components.inactive 1 - [{:provider :file_type - :hl {:fg :white :bg colors.cyan} - :left_sep [{:str " " :hl {:fg :NONE :bg :NONE}} - :left_rounded - {:str " " :hl {:fg :NONE :bg colors.cyan}}] - :right_sep {:str " " :hl {:bg colors.cyan}}} - {:provider :file_info - :hl {:fg :white :bg colors.dark_cyan :style :bold} - :left_sep {:str " " :hl {:bg colors.dark_cyan}} - :right_sep [{:str " " :hl {:fg :NONE :bg colors.dark_cyan}} - {:str :right_rounded :hl {:bg :NONE :fg colors.dark_cyan}}]}]) - --- - -This - -table - -is - -equal - -to - -the - -default - -separators - -table -(local separators {:vertical_bar "┃" - :vertical_bar_thin "│" - :left "" - :right "" - :block "█" - :left_filled "" - :right_filled "" - :slant_left "" - :slant_left_thin "" - :slant_right "" - :slant_right_thin "" - :slant_left_2 "" - :slant_left_2_thin "" - :slant_right_2 "" - :slant_right_2_thin "" - :left_rounded "" - :left_rounded_thin "" - :right_rounded "" - :right_rounded_thin "" - :circle "●"}) - -;(feline.winbar.setup) - -(feline.setup {: colors - : separators - :force_inactive {:filetypes [:NvimTree - :dbui - :packer - :startify - :NeogitStatus - :fugitive - :fugitiveblame - :telescope] - :buftypes [:terminal] - :bufnames []} - : components - : vi_mode_colors}) diff --git a/.config/nvim/fnl/plugins/lsp.fnl b/.config/nvim/fnl/plugins/lsp.fnl deleted file mode 100644 index cc0539668..000000000 --- a/.config/nvim/fnl/plugins/lsp.fnl +++ /dev/null @@ -1,200 +0,0 @@ -(module plugins.lsp {require {mason mason - mason-lspconfig mason-lspconfig - plugins-cmp plugins.cmp} - autoload {idris2 idris2 - lsp-signature lsp_signature - virtualtypes virtualtypes - renamer renamer - lsp lspconfig - cmp_nvim_lsp cmp_nvim_lsp - a aniseed.core - nvim aniseed.nvim - wk which-key - cmp cmp - utils utils - lspkind lspkind - lsp-status lsp-status - configs lspconfig.configs} - require-macros [macros zest.macros]}) - -(vim.lsp.set_log_level :debug) -(set nvim.o.completeopt "menu,menuone,noselect") - -(defn on_attach - [client bufnr] - (renamer.setup {}) - (cmp.setup.buffer {:sources (a.concat [{:name :nvim_lsp :max_item_count 1000}] - sources)}) - (lsp-cap codeLens (virtualtypes.on_attach client bufnr)) - (lsp-status.on_attach client bufnr) - (lsp-signature.on_attach {:bind true :handler_opts {:border :rounded}} bufnr) - (let [opts {:noremap true :silent true} - basem (fn [mode key command commen] - (nvim.buf_set_keymap bufnr mode key command opts) - (wk.register {key commen} (a.merge opts {: mode :buffer bufnr}))) - map (fn [...] (basem :n ...)) - rangemap (fn [key command] - (nvim.buf_set_keymap bufnr :v key command opts))] - (nvim.buf_set_option bufnr :omnifunc "v:lua.vim.lsp.omnifunc") - (map :gD "lua vim.lsp.buf.declaration()" "Go to declaration") - (map :gd "lua vim.lsp.buf.definition()" "Go to definition") - (lsp-cap signature_help (map :K "lua vim.lsp.buf.signature_help()" - "Signature help")) - (map :gi "lua vim.lsp.buf.implementation()" - "Go to implementations") - (map :r "lua vim.lsp.buf.references()" "See references") ; (map : "lua vim.lsp.buf.signature_help()" "") - (map :rn "lua require(\"renamer\").rename()" - "Rename symbol under cursor") - (map :d "lua require 'telescope.builtin'.diagnostics {}" - "See workspace diagnostics") - (map :qf "lua vim.lsp.buf.code_action ()" - "See code actions under cursor") - (map :ff "lua vim.lsp.buf.formatting()" "format file") - (rangemap :ff "lua vim.lsp.buf.range_formatting()" - "format selected")) ; (def-autocmd [:BufWritePre] : "lua vim.lsp.buf.format()")) - (when client.server_capabilities.hover - (def-augroup :lsp_hover)) ; (def-autocmd :CursorHold :* "lua vim.lsp.buf.hover()"))) - (when client.server_capabilities.document_highlight - (utils.highlight :LspReferenceRead {:gui :underline}) - (utils.highlight :LspReferenceText {:gui :underline}) - (utils.highlight :LspReferenceWrite {:gui :underline}) - (vim.api.nvim_exec "augroup lsp_document_highlight - autocmd! * - autocmd CursorHold lua vim.lsp.buf.document_highlight() - augroup END" false)) - (vim.api.nvim_exec "augroup lsp_references - autocmd! * - autocmd CursorMoved lua vim.lsp.buf.clear_references() - autocmd CursorHold,CursorHoldI lua require'nvim-lightbulb'.update_lightbulb() - augroup END" false)) - -(lspkind.init {:preset :default}) - -(lsp-status.config {:status_symbol " " - :kind_labels lspkind.symbol_map - :indicator_errors "  " - :indicator_warnings "  " - :indicator_hint "  " - :indicator_info "  "}) - -(lsp-status.register_progress) - -(local capabilities - (vim.tbl_extend :keep (cmp_nvim_lsp.default_capabilities) - lsp-status.capabilities)) - -(set lsp.util.default_config - (vim.tbl_extend :force lsp.util.default_config - {: capabilities - :handlers {:window/showMessage (fn [err - result - ctx - config] - (let [MessageType vim.lsp.protocol.MessageType - levels vim.log.levels - mat {MessageType.Error levels.ERROR - MessageType.Warning levels.WARN - MessageType.Info levels.INFO - MessageType.Log levels.TRACE}] - (vim.notify result.message - (. mat - result.type))))}})) - -(var lsp_server_count 0) -(var lsp_server_table []) - -(fn au_ft_once [fts once] - (var index nil) - (let [_fts (if (= (type fts) :table) - (do - (set index lsp_server_count) - (set lsp_server_count (+ lsp_server_count 1)) - (tset lsp_server_table index true) - (table.concat fts ",")) - fts)] - (vim.cmd (vlua-format (.. "au FileType " _fts " ++once call %s()") - (if index - (fn [] - (when (. lsp_server_table index) - (tset lsp_server_table index false) - (once) - (vim.cmd ":LspStart"))) - (fn [] - (once) - (vim.cmd ":LspStart"))))))) - -(var lsp_server_table_name []) - -(fn init-lsp [lsp-name ?opts] - "initialise a language server with defaults" - (let [merged-opts (a.merge {: on_attach : capabilities} (or ?opts {})) - run-server #(vim.lsp.enable lsp-name)] - (vim.lsp.config lsp-name merged_opts) - (if merged_opts.fts - (let [fts merged_opts.fts] - (a.assoc merged_opts :fts) - (au_ft_once fts run-server)) - (run-server)))) - -(set vim.g.rustaceanvim - {:server {: capabilities - : on_attach - :default_settings {:rust-analyzer {:checkOnSave {:command :clippy} - :procMacro {:enable true}}}}}) - -(mason.setup) -(mason-lspconfig.setup {:ensure_installed [:tailwindcss]}) - -(def-augroup :LspAuGroup - (init-lsp :tailwindcss {:fts [:html - :scss - :htmldjango - :css - :typescriptreact - :javascriptreact - :javascript - :typescript - :svelte - :vue]}) - (init-lsp :ts_ls {:fts [:typescriptreact :typescript :javascript] - :autostart false}) - (init-lsp :denols {:fts [:typescript] :autostart false}) - (init-lsp :hls - {:no-install true - :fts [:haskell] - :settings {:haskell {:formattingProvider :fourmolu}}}) - (init-lsp :gopls {:fts :go}) - (init-lsp :sumneko_lua {:fts :lua}) - (init-lsp :clangd - {:fts [:cpp :c] - :init_options {:clangdFileStatus true} - :handlers (lsp-status.extensions.clangd.setup)}) ; (init-lsp :ccls {:fts [:cpp :c]}) - (init-lsp :nil_ls - {:fts [:nix] - :settings {:nil {:nix {:flake {;:autoEvalInputs true - :autoArchive true}}}}}) - (init-lsp :ocamlls {:fts :ocaml}) - (init-lsp :pyright - {:fts :python - :handlers (lsp-status.extensions.pyls_ms.setup) - :settings {:python {:workspaceSymbols {:enable true}}}}) - (init-lsp :docker_compose_language_service {:fts :yaml}) - (init-lsp :zls {:fts :zig}) - (init-lsp :metals {:fts :scala}) - (init-lsp :dhall_lsp_server {:fts :dhall}) - (init-lsp :purescriptls {:fts :purescript}) - (init-lsp :powershell_es {:fts :ps1}) - ;:bundle_path "~/packages/PowershellEditorServices"}) - (init-lsp :kotlin_language_server {:fts :kotlin}) - (init-lsp :omnisharp {:fts :cs}) - (init-lsp :als {:fts :ada}) - (init-lsp :jdtls {:fts :java - :cmd [:jdtls] - :root_dir (fn [fname] - (or (((. (require :lspconfig) :util - :root_pattern) :pom.xml :gradle.build - :.git) fname) - (vim.fn.getcwd)))}) - (au_ft_once :idris2 - (fn [] - (idris2.setup {:server {: capabilities : on_attach}})))) diff --git a/.config/nvim/fnl/plugins/neorg.fnl b/.config/nvim/fnl/plugins/neorg.fnl deleted file mode 100644 index d668ee328..000000000 --- a/.config/nvim/fnl/plugins/neorg.fnl +++ /dev/null @@ -1,10 +0,0 @@ -(module plugins.neorg {require {neorg neorg cmp cmp}}) - -(neorg.setup {:load {:core.defaults {} - ; Load all the default modules - :core.norg.concealer {} - ; Allows for use of icons - :core.norg.completion {:config {:engine :nvim-cmp}} - ; "core.integrations.treesitter" {} - :core.norg.dirman {; Manage your directories with Neorg - :config {:workspaces {:my_workspace "~/neorg"}}}}}) diff --git a/.config/nvim/fnl/plugins/treesitter.fnl b/.config/nvim/fnl/plugins/treesitter.fnl deleted file mode 100644 index 697c96c1a..000000000 --- a/.config/nvim/fnl/plugins/treesitter.fnl +++ /dev/null @@ -1,104 +0,0 @@ -(module plugins.treesitter - {require {treesitter nvim-treesitter - parsers nvim-treesitter.parsers - tree-sitter-language-injection tree-sitter-language-injection - install nvim-treesitter.install}}) - -;(tset (parsers.get_parser_configs) :agda { -; :install_info {:url "~/packages/tree-sitter-agda" -; :files [:src/parser.c :src/scanner.cc]} -; :filetype :agda}}) -; (tset (parsers.get_parser_configs) :norg { -; :install_info {:url "https://github.com/nvim-neorg/tree-sitter-norg" :files [:src/parser.c :src/scanner.cc] :branch :main}}}) -(set vim.wo.foldmethod :expr) -(set vim.wo.foldexpr "nvim_treesitter#foldexpr()") -(set vim.wo.foldlevel 1) - -;(if (> (vim.fn.has :win32) 0)) -; (tset (. install :compilers) [:clang]) - -(tset install :compilers [(let [(status res) (pcall (fn [] - (require :treesitter_compiler)))] - (if status res))]) - -(treesitter.setup {:highlight {:enable true} - :autopairs {:enable true} - :query_linter {:enable true} - :textobjects {:enable true - :lookahead true - :keymaps {:af "@function.outer" - :if "@function.inner" - :ac "@class.outer" - :ic "@class.inner"} - :move {:enable true :set_jumps true}}}) - -;(let [ensure_installed [:rust :haskell -; :javascript -; :c -; :fennel -; :go -; :zig -; :nix -; :cpp -; :bash -; :glsl -; :python -; :lua -; :toml -; :typescript -; :yaml -; :css -; :commonlisp -; :kotlin -; :markdown -; :jsonc] -; already-installed ((. (require :nvim-treesitter.config) :get_installed)) -; parsers-to-install (-> (require :nvim-treesitter.config) -; (. :get_installed) -; (vim.iter) -; (: :filter (fn [parser] -; (not (vim.tbl_contains already-installed parser)))) -; (: :totable))] -; ((. (require :nvim-treesitter) :install) parsers-to-install)) -(tree-sitter-language-injection.setup {:nix {:comment {; :query " - ; ((comment) @comment . - ; (lexical_declaration - ; (variable_declarator - ; value: [ - ; (string(string_fragment)@injection.content) - ; (template_string(string_fragment)@injection.content) - ; ]@injection.content) - ; ) - ; (#match? @comment \"{match}\") - ; (#set! injection.language \"{name}\") - ; ) - ; " - :langs [{:name :bash - :match "^(\r -|\r| -)#( )*{lang}"} - {:name :sh - :match "^(\r -|\r| -)#( )*{lang}"} - {:name :fish - :match "^(\r -|\r| -)#( )*{lang}"} - {:name :commonlisp - :match "^(\r -|\r| -)#( )*{lang}"}]} - :string {; :query " - ; ((string_fragment) @injection.content - ; (#match? @injection.content \"{match}\") - ; (#set! injection.language \"{name}\")) - ; " - :langs [{:name :bash - :match "^(\r -|\r| -)#( )*{lang}"} - {:name :sh - :match "^(\r -|\r| -)#( )*{lang}"}]}}}) diff --git a/.config/nvim/init.lua b/.config/nvim/init.lua deleted file mode 100644 index 89a5a479b..000000000 --- a/.config/nvim/init.lua +++ /dev/null @@ -1,43 +0,0 @@ -local packages_path = vim.fn.stdpath("data") .. "/lazy" - -local function install_package(name, alias) - ---@type unknown, unknown, string, string - local _, _, owner, repo = name:find("(.+)/(.+)") - local path = ("%s/%s"):format(packages_path, alias or repo) - - if not vim.uv.fs_stat(path) then - vim.notify(("Installing %s/%s..."):format(owner, repo), vim.log.levels.INFO) - - vim.system({ - "git", - "clone", - "--filter=blob:none", - "--single-branch", - ("https://github.com/%s/%s.git"):format(owner, repo), - path, - }):wait() - end - - vim.opt.runtimepath:prepend(path) -end -install_package("folke/lazy.nvim") -install_package("Olical/aniseed") -install_package("tsbohc/zest.nvim") - -vim.g.mapleader = " " -vim.g.maplocalleader = "\\" - -vim.loader.enable() --- ensure("rktjmp","hotpot.nvim") --- --- ---require ("hotpot") -require("zest").setup() - -vim.o.termguicolors = true - -vim.g["aniseed#env"] = { - module = "core", - compile = true, - correlate = false, -} diff --git a/.config/nvim/lazy-lock.json b/.config/nvim/lazy-lock.json deleted file mode 100644 index 865a36b5d..000000000 --- a/.config/nvim/lazy-lock.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "Comment.nvim": { "branch": "master", "commit": "e30b7f2008e52442154b66f7c519bfd2f1e32acb" }, - "agda-vim": { "branch": "master", "commit": "4a0f475aaef756702222bdd5b01e25f814f5691f" }, - "animate.vim": { "branch": "master", "commit": "ca124da441b4d4ea721f33a999d4493e0d0a7a31" }, - "aniseed": { "branch": "master", "commit": "97078331cf59765613d248ca6d6c7942ebbd219b" }, - "cmp-buffer": { "branch": "main", "commit": "b74fab3656eea9de20a9b8116afa3cfc4ec09657" }, - "cmp-cmdline": { "branch": "main", "commit": "d126061b624e0af6c3a556428712dd4d4194ec6d" }, - "cmp-copilot": { "branch": "main", "commit": "1f3f31c54bd71e41ed157430702bc2837ea582ab" }, - "cmp-dictionary": { "branch": "main", "commit": "fecc3ef2435c2be35818f8fcac4a6c5655f3a8f0" }, - "cmp-nvim-lsp": { "branch": "main", "commit": "cbc7b02bb99fae35cb42f514762b89b5126651ef" }, - "cmp-nvim-lua": { "branch": "main", "commit": "e3a22cb071eb9d6508a156306b102c45cd2d573d" }, - "cmp-path": { "branch": "main", "commit": "c642487086dbd9a93160e1679a1327be111cbc25" }, - "cmp_luasnip": { "branch": "master", "commit": "98d9cb5c2c38532bd9bdb481067b20fea8f32e90" }, - "conform.nvim": { "branch": "master", "commit": "18aeab3d63d350dcf44d64c462cc489a3412af40" }, - "conjure": { "branch": "main", "commit": "fbc9e2b85b924ba678a4e254d4d8911d0461eb91" }, - "copilot.vim": { "branch": "release", "commit": "a12fd5672110c8aa7e3c8419e28c96943ca179be" }, - "crates.nvim": { "branch": "main", "commit": "694357861ec9ebf12475ddcdd04ea45a0923c32d" }, - "dhall-vim": { "branch": "master", "commit": "bd9fd99f21dbc7174fb728a21d04e073ef7dd930" }, - "distant.nvim": { "branch": "v0.3", "commit": "67d6b066e8490725718b79f643966f4eafc7da3c" }, - "feline.nvim": { "branch": "main", "commit": "9e71b9189789edd5dc8d20c86b4d43ca110c88b7" }, - "gitsigns.nvim": { "branch": "main", "commit": "dd3f588bacbeb041be6facf1742e42097f62165d" }, - "glow.nvim": { "branch": "main", "commit": "5d5954b2f22e109d4a6eba8b2618c5b96e4ee7a2" }, - "hotpot.nvim": { "branch": "main", "commit": "bfca1c460d3781d548a226fb232bf7e71a6f5b4f" }, - "idris2-nvim": { "branch": "main", "commit": "ec0fb7f22feeaa8d454e2b11675ae4c493228833" }, - "idris2-vim": { "branch": "master", "commit": "964cebee493c85f75796e4f4e6bbb4ac54e2da9e" }, - "indent-blankline.nvim": { "branch": "master", "commit": "d28a3f70721c79e3c5f6693057ae929f3d9c0a03" }, - "kotlin-vim": { "branch": "master", "commit": "53fe045906df8eeb07cb77b078fc93acda6c90b8" }, - "lazy.nvim": { "branch": "main", "commit": "306a05526ada86a7b30af95c5cc81ffba93fef97" }, - "lsp-status.nvim": { "branch": "master", "commit": "54f48eb5017632d81d0fd40112065f1d062d0629" }, - "lsp_extensions.nvim": { "branch": "master", "commit": "92c08d4914d5d272fae13c499aafc9f14eb05ada" }, - "lsp_signature.nvim": { "branch": "master", "commit": "b7ace9ddb1640ce266012a45a672dfdaedfa5ec6" }, - "lspkind-nvim": { "branch": "master", "commit": "c7274c48137396526b59d86232eabcdc7fed8a32" }, - "luasnip": { "branch": "master", "commit": "0abc8f390b278c3b4aabc4c004ac8a088b65cf24" }, - "lush.nvim": { "branch": "main", "commit": "9c60ec2279d62487d942ce095e49006af28eed6e" }, - "markdown-preview.nvim": { "branch": "master", "commit": "a923f5fc5ba36a3b17e289dc35dc17f66d0548ee" }, - "mason-lspconfig.nvim": { "branch": "main", "commit": "7b01e2974a47d489bb92f47a41e4c0088ea8f86e" }, - "mason.nvim": { "branch": "main", "commit": "bb639d4bf385a4d89f478b83af4d770be05ab7eb" }, - "mkdir.nvim": { "branch": "main", "commit": "c55d1dee4f099528a1853b28bb28caa802eba217" }, - "neogit": { "branch": "master", "commit": "99326a1310fb2d616b455d2fd16d01bf00682f06" }, - "nui.nvim": { "branch": "main", "commit": "de740991c12411b663994b2860f1a4fd0937c130" }, - "nvim-autopairs": { "branch": "master", "commit": "7b9923abad60b903ece7c52940e1321d39eccc79" }, - "nvim-bufferline.lua": { "branch": "main", "commit": "655133c3b4c3e5e05ec549b9f8cc2894ac6f51b3" }, - "nvim-cmp": { "branch": "main", "commit": "a1d504892f2bc56c2e79b65c6faded2fd21f3eca" }, - "nvim-colorizer.lua": { "branch": "master", "commit": "a065833f35a3a7cc3ef137ac88b5381da2ba302e" }, - "nvim-dap": { "branch": "master", "commit": "531771530d4f82ad2d21e436e3cc052d68d7aebb" }, - "nvim-dap-ui": { "branch": "master", "commit": "1a66cabaa4a4da0be107d5eda6d57242f0fe7e49" }, - "nvim-dev-container": { "branch": "main", "commit": "365b4c815339d42133829006dce3e5f8b182b771" }, - "nvim-lightbulb": { "branch": "master", "commit": "b8c08c5f3b1586dfcdd9f34d7d54fe6982e01ac9" }, - "nvim-lspconfig": { "branch": "master", "commit": "a4ed4e761c400849e8c9f8bda33e5083f890268c" }, - "nvim-metals": { "branch": "main", "commit": "4cc98f07ec96bb748a8796831767538e0e4f9be4" }, - "nvim-nio": { "branch": "master", "commit": "21f5324bfac14e22ba26553caf69ec76ae8a7662" }, - "nvim-notify": { "branch": "master", "commit": "8701bece920b38ea289b457f902e2ad184131a5d" }, - "nvim-remote-containers": { "branch": "master", "commit": "73c2cbc59b69b4026682aea6bab225831fb8eaa4" }, - "nvim-sops": { "branch": "main", "commit": "1791eec21e78c9736ae504f02712a2f509c69b2c" }, - "nvim-tree.lua": { "branch": "master", "commit": "07f541fcaa4a5ae019598240362449ab7e9812b3" }, - "nvim-treesitter": { "branch": "main", "commit": "4916d6592ede8c07973490d9322f187e07dfefac" }, - "nvim-ts-context-commentstring": { "branch": "main", "commit": "6141a40173c6efa98242dc951ed4b6f892c97027" }, - "nvim-web-devicons": { "branch": "master", "commit": "0d7d35fa946837b8738b17c18d1faa1ac351e7f9" }, - "otter.nvim": { "branch": "main", "commit": "a455e68a99d395889ab30a25ac3846a135e93c46" }, - "packer.nvim": { "branch": "master", "commit": "ea0cc3c59f67c440c5ff0bbe4fb9420f4350b9a3" }, - "parinfer-rust": { "branch": "master", "commit": "845bfbb9916687cba5b6bae088c9eab70dbb83a3" }, - "plenary.nvim": { "branch": "master", "commit": "74b06c6c75e4eeb3108ec01852001636d85a932b" }, - "presence.nvim": { "branch": "main", "commit": "87c857a56b7703f976d3a5ef15967d80508df6e6" }, - "purescript-vim": { "branch": "main", "commit": "82348352e6568fcc0385bd7c99a8ead3a479feea" }, - "renamer.nvim": { "branch": "master", "commit": "1614d466df53899f11dd5395eaac3c09a275c384" }, - "rustaceanvim": { "branch": "main", "commit": "8eea5f85d5ce4c1c66643317ebec96e72623e2be" }, - "sqlite.lua": { "branch": "master", "commit": "50092d60feb242602d7578398c6eb53b4a8ffe7b" }, - "startuptime.vim": { "branch": "master", "commit": "dfa57f522d6f61793fe5fea65bca7484751b8ca2" }, - "symbols-outline.nvim": { "branch": "master", "commit": "564ee65dfc9024bdde73a6621820866987cbb256" }, - "telescope-frecency.nvim": { "branch": "master", "commit": "5479d8a269e30479280c59e44f805396127653e6" }, - "telescope-ui-select.nvim": { "branch": "master", "commit": "6e51d7da30bd139a6950adf2a47fda6df9fa06d2" }, - "telescope.nvim": { "branch": "master", "commit": "7d324792b7943e4aa16ad007212e6acc6f9fe335" }, - "todo-comments.nvim": { "branch": "main", "commit": "31e3c38ce9b29781e4422fc0322eb0a21f4e8668" }, - "train.nvim": { "branch": "master", "commit": "87a45f805497e7e929702c75187704de8990de14" }, - "tree-sitter-language-injection.nvim": { "branch": "main", "commit": "5f5b962232d189017d040a55eee623daf486b393" }, - "twilight.nvim": { "branch": "main", "commit": "664e752f4a219801265cc3fc18782b457b58c1e1" }, - "vim-alloy": { "branch": "main", "commit": "0273f88f7199189f9a0f32213a34ab778e226f86" }, - "vim-better-whitespace": { "branch": "master", "commit": "de99b55a6fe8c96a69f9376f16b1d5d627a56e81" }, - "vim-fish": { "branch": "master", "commit": "50b95cbbcd09c046121367d49039710e9dc9c15f" }, - "vim-glsl": { "branch": "master", "commit": "40dd0b143ef93f3930a8a409f60c1bb85e28b727" }, - "vim-nix": { "branch": "master", "commit": "7235c7ce2cea530cb6b59bc3e46d4bfe917d15c8" }, - "vim-racket": { "branch": "master", "commit": "2c7ec0f35a2ad1ca00305e5d67837bc1f1d4b6cc" }, - "vim-tmux-navigator": { "branch": "master", "commit": "e41c431a0c7b7388ae7ba341f01a0d217eb3a432" }, - "vim-wakatime": { "branch": "master", "commit": "2a856d0b7863dc34ffc80647cb52fbd1319fe144" }, - "virtual-types.nvim": { "branch": "master", "commit": "d652ec0b1781bbb0e83dc588fb62d638006cf61e" }, - "which-key.nvim": { "branch": "main", "commit": "3aab2147e74890957785941f0c1ad87d0a44c15a" }, - "yuck.vim": { "branch": "master", "commit": "9b5e0370f70cc30383e1dabd6c215475915fe5c3" }, - "zest.nvim": { "branch": "master", "commit": "06cd8b2c35f0cda66f348fa3a6225c746cad2edc" }, - "zig.vim": { "branch": "master", "commit": "1a1112eec20e28c832a06ddb1d0060f6ce652372" } -} diff --git a/.config/sketchybar/colors.sh b/.config/sketchybar/colors.sh new file mode 100755 index 000000000..00ec56a78 --- /dev/null +++ b/.config/sketchybar/colors.sh @@ -0,0 +1,11 @@ +#!/usr/bin/env sh + +# Define colors from polybar config +BLACK="0xff2A2A2A" +WHITE="0xffD9D9D9" +BLUE="0xff0000ff" +GREEN="0xff00ff00" +PINK="0xffffd1dc" +YELLOW="0xffFFDB9E" +PURPLE="0xff9591FF" +GRAY="0xff707078" \ No newline at end of file diff --git a/.config/sketchybar/plugins/battery.sh b/.config/sketchybar/plugins/battery.sh new file mode 100755 index 000000000..83e4baab6 --- /dev/null +++ b/.config/sketchybar/plugins/battery.sh @@ -0,0 +1,28 @@ +#!/usr/bin/env sh + +# Get battery percentage and charging status +PERCENTAGE=$(pmset -g batt | grep -Eo "\d+%" | cut -d% -f1) +CHARGING=$(pmset -g batt | grep 'AC Power') + +if [ "$CHARGING" != "" ]; then + # Charging - show charging icon + case ${PERCENTAGE} in + 100) ICON=" 󱐋";; + 9[0-9]) ICON=" 󱐋";; + [6-8][0-9]) ICON=" 󱊥󱐋" ;; + [3-5][0-9]) ICON=" 󱊤󱐋" ;; + [1-2][0-9]) ICON=" 󰢟󱐋" ;; + *) ICON=" 󱐋" ;; + esac +else + # Discharging - show battery level icon + case ${PERCENTAGE} in + 9[0-9]|100) ICON=" " COLOR=0xff82FFA2 ;; + [6-8][0-9]) ICON=" " COLOR=0xff82FFA2 ;; + [3-5][0-9]) ICON=" " COLOR=0xffFFFFFF ;; + [1-2][0-9]) ICON="" COLOR=0xffFFAE8F ;; + *) ICON=" " COLOR=0xffFF6970 ;; + esac +fi + +sketchybar --set $NAME icon="$ICON" label="${PERCENTAGE}%" icon.color=${COLOR:-0xffffffff} diff --git a/.config/sketchybar/plugins/date.sh b/.config/sketchybar/plugins/date.sh new file mode 100755 index 000000000..7fce86cd4 --- /dev/null +++ b/.config/sketchybar/plugins/date.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env sh + +date=$(date +"%a %d %b") + +sketchybar --set $NAME label=" $date" \ + icon="" diff --git a/.config/sketchybar/plugins/media.sh b/.config/sketchybar/plugins/media.sh new file mode 100755 index 000000000..cab1ccc2d --- /dev/null +++ b/.config/sketchybar/plugins/media.sh @@ -0,0 +1,35 @@ +#!/usr/bin/env sh + +# This gets the currently playing track from Music/Spotify +PLAYER_STATE=$(osascript -e 'tell application "System Events" + set processList to name of every process + if processList contains "Music" then + tell application "Music" + if player state is playing then + set trackName to name of current track + set artistName to artist of current track + return "♫ " & trackName & " - " & artistName + else + return "" + end if + end tell + else if processList contains "Spotify" then + tell application "Spotify" + if player state is playing then + set trackName to name of current track + set artistName to artist of current track + return "♫ " & trackName & " - " & artistName + else + return "" + end if + end tell + else + return "" + end if +end tell') + +if [ "$PLAYER_STATE" = "" ]; then + sketchybar --set $NAME label="" +else + sketchybar --set $NAME label="$PLAYER_STATE" +fi \ No newline at end of file diff --git a/.config/sketchybar/plugins/power.sh b/.config/sketchybar/plugins/power.sh new file mode 100755 index 000000000..bdf6e6059 --- /dev/null +++ b/.config/sketchybar/plugins/power.sh @@ -0,0 +1,21 @@ +#!/usr/bin/env sh + +# Handle power menu click +osascript -e 'tell application "System Events" to display dialog "Power Options" buttons {"Sleep", "Restart", "Shutdown", "Cancel"} default button "Cancel" with title "Power Menu"' > /tmp/power_choice_result 2>&1 + +choice=$(cat /tmp/power_choice_result | grep "button returned" | awk -F":" '{print $2}' | tr -d ' ') + +case "$choice" in + "Sleep") + osascript -e 'tell application "System Events" to sleep' + ;; + "Restart") + osascript -e 'tell application "System Events" to restart' + ;; + "Shutdown") + osascript -e 'tell application "System Events" to shut down' + ;; + *) + # Cancel or no selection + ;; +esac \ No newline at end of file diff --git a/.config/sketchybar/plugins/time.sh b/.config/sketchybar/plugins/time.sh new file mode 100755 index 000000000..c389cf035 --- /dev/null +++ b/.config/sketchybar/plugins/time.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env sh + +# Format time in a style similar to polybar +time=$(date +"%I:%M%p" | tr '[:upper:]' '[:lower:]') + +sketchybar --set $NAME label="$time" \ + background.color=0xff3f3f3f \ + label.color=0xffffffff \ No newline at end of file diff --git a/.config/sketchybar/plugins/uptime.sh b/.config/sketchybar/plugins/uptime.sh new file mode 100755 index 000000000..50d0dc6ba --- /dev/null +++ b/.config/sketchybar/plugins/uptime.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env sh + +# Get uptime in hours +uptime_output=$(uptime) +uptime_hours=$(echo "$uptime_output" | awk -F" " '{ print $3}' | sed 's/,//') + +sketchybar --set $NAME label=" $uptime_hours" \ + icon="" \ No newline at end of file diff --git a/.config/sketchybar/plugins/volume.sh b/.config/sketchybar/plugins/volume.sh new file mode 100755 index 000000000..bdb830d60 --- /dev/null +++ b/.config/sketchybar/plugins/volume.sh @@ -0,0 +1,24 @@ +#!/usr/bin/env sh + +# Get volume percentage +volume=$(osascript -e "output volume of (get volume settings)") +muted=$(osascript -e "output muted of (get volume settings)") + +if [ "$muted" = "true" ]; then + icon="" + label="muted" +else + if [ "$volume" -gt 66 ]; then + icon="" + elif [ "$volume" -gt 33 ]; then + icon="󰖀" + else + icon="" + fi + label="$volume%" +fi + +sketchybar --set $NAME icon="$icon" \ + label="$label" \ + icon.color=0xff8BB2C1 \ + label.color=0xff8BB2C1 diff --git a/.config/sketchybar/plugins/workspaces.sh b/.config/sketchybar/plugins/workspaces.sh new file mode 100755 index 000000000..8c24a0dd9 --- /dev/null +++ b/.config/sketchybar/plugins/workspaces.sh @@ -0,0 +1,20 @@ +#!/usr/bin/env sh + +# This is a simplified version - you'll need to integrate with your window manager +# For now, we'll create a simple space indicator + +spaces=$(yabai -m query --spaces | jq -r '.[] | select(."is-visible" == true).index') +active=$(yabai -m query --spaces | jq -r '.[] | select(."has-focus" == true).index') + +workspace_list="" +for i in {1..7}; do + if [ "$i" = "$active" ]; then + workspace_list+="[$i]" + elif echo "$spaces" | grep -q "$i"; then + workspace_list+=" $i " + else + workspace_list+=" $i " + fi +done + +sketchybar --set $NAME label="$workspace_list" --width dynamic diff --git a/.config/sketchybar/sketchybarrc b/.config/sketchybar/sketchybarrc new file mode 100755 index 000000000..fa523db18 --- /dev/null +++ b/.config/sketchybar/sketchybarrc @@ -0,0 +1,87 @@ +#!/usr/bin/env sh + +PLUGIN_DIR="$HOME/.config/sketchybar/plugins" + +# Colors +source "$HOME/.config/sketchybar/colors.sh" + +# Bar Properties +sketchybar --bar height=40 \ + position=top \ + padding_left=10 \ + padding_right=10 \ + color=$BLACK \ + border_width=0 \ + corner_radius=0 \ + margin=0 \ + blur_radius=0 \ + notch_width=0 + +# Set default values +sketchybar --default updates=when_shown \ + drawing=on \ + icon.font="RobotoMono Nerd Font:Bold:15.0" \ + icon.color=$WHITE \ + label.font="RobotoMono Nerd Font:Medium:15.0" \ + label.color=$WHITE \ + padding_left=5 \ + padding_right=5 + +# Left items (workspaces) +sketchybar --add item workspaces left \ + --set workspaces script="$PLUGIN_DIR/workspaces.sh" \ + update_freq=2 \ + background.color=$BLACK \ + background.border_width=0 \ + background.padding_left=10 + +# Center items (time) +sketchybar --add item time right \ + --set time update_freq=10 \ + script="$PLUGIN_DIR/time.sh" \ + background.color=$BLACK \ + background.height=30 \ + background.padding_right=10 \ + background.padding_left=10 + +# Right items +sketchybar --add item song right \ + --set song update_freq=5 \ + script="$PLUGIN_DIR/media.sh" \ + background.color=$BLACK \ + background.padding_right=10 \ + label.color=$GRAY + +sketchybar --add item volume right \ + --set volume update_freq=2 \ + script="$PLUGIN_DIR/volume.sh" \ + background.color=$BLACK + +sketchybar --add item uptime right \ + --set uptime update_freq=30 \ + script="$PLUGIN_DIR/uptime.sh" \ + background.color=$BLACK + +sketchybar --add item date right \ + --set date update_freq=60 \ + script="$PLUGIN_DIR/date.sh" \ + background.color=$BLACK \ + label.color=$PINK + +sketchybar --add item power right \ + --set power icon="襤" \ + icon.color=$PINK \ + background.color=$BLACK \ + click_script="$PLUGIN_DIR/power.sh" \ + label="" + +# Add battery item for laptops +if system_profiler SPPowerDataType 2>/dev/null | grep -q "Battery"; then + sketchybar --add item battery right \ + --set battery update_freq=120 \ + script="$PLUGIN_DIR/battery.sh" \ + background.color=$BLACK +fi + +# Start sketchybar +sketchybar --update diff --git a/.config/wezterm/config.fnl b/.config/wezterm/config.fnl deleted file mode 100644 index b98e5124b..000000000 --- a/.config/wezterm/config.fnl +++ /dev/null @@ -1,36 +0,0 @@ -(local wezterm (require :wezterm)) -(local lume (require :lume)) -(local util (require :util)) - -(local target_triples (lume.split wezterm.target_triple "-")) -(local acos (. target_triples 3)) - -(fn ?windows [a b] - (if (= acos :windows) - a) - b) - -(local base {:color_schemes {"Pink Ocean" (require :pink_ocean)} - :front_end :WebGpu - :webgpu_preferred_adapter (. (wezterm.gui.enumerate_gpus) 1) - :max_fps 120 - :webgpu_power_preference :HighPerformance - :enable_scroll_bar true - ;(~= os "GNU/Linux") - :enable_wayland true - :window_padding {:left 10 - ; This will become the scrollbar width if you have enabled the scrollbar! - :right 10 - :top 5 - :bottom 5} - :default_prog (?windows [:powershell :pwsh]) - :window_background_opacity 0.8 - :font (?windows (wezterm.font "FiraCode NF") - (wezterm.font_with_fallback ["Hasklug Nerd Font Mono" - :codicon])) - :font_size 15 - :color_scheme "Pink Ocean"}) - -; :color_scheme "Guezwhoz"}) -(util.merge_files base :tab_bar) -;base diff --git a/backgrounds/header-boygenius-photo-credit_-shervin-lainez-jpg_wide-c30c5310750b194eff4b49e26120b93d31595bc7.jpg b/backgrounds/header-boygenius-photo-credit_-shervin-lainez-jpg_wide-c30c5310750b194eff4b49e26120b93d31595bc7.jpg old mode 100644 new mode 100755 index 0d716d479..00a4f04a8 Binary files a/backgrounds/header-boygenius-photo-credit_-shervin-lainez-jpg_wide-c30c5310750b194eff4b49e26120b93d31595bc7.jpg and b/backgrounds/header-boygenius-photo-credit_-shervin-lainez-jpg_wide-c30c5310750b194eff4b49e26120b93d31595bc7.jpg differ diff --git a/desktoppr.nix b/desktoppr.nix new file mode 100644 index 000000000..c9b4499da --- /dev/null +++ b/desktoppr.nix @@ -0,0 +1,34 @@ + {stdenv, fetchurl,lib, unzip }: +stdenv.mkDerivation { +name ="desktoppr"; + version = "0.5-218"; + pname = "desktoppr"; + src = fetchurl { + url = "https://github.com/scriptingosx/desktoppr/releases/download/v0.5/desktoppr-0.5-218.zip"; + hash = "sha256-Oa9gAQjOaJHYyT5JBUiFCxL1sQP1dqlFBm+GdmLHNNM="; + }; + + buildInputs = [ + unzip + ]; + + unpackPhase = '' + runHook preUnpack + + unzip $src + + runHook postUnpack + ''; + + + + installPhase = '' + runHook preInstall + + mkdir -p $out/bin + cp -r desktoppr $out/bin + + runHook postInstall + ''; + + } diff --git a/file.svg b/file.svg index c7ba749f8..357d2f252 100644 --- a/file.svg +++ b/file.svg @@ -1,1586 +1 @@ - - - - - - - - -cluster_ctx_host - -host { host } - - -cluster_ctx_user - -user { host, user } - - - -Ivys_MacBook_Pro - -Ivys-MacBook-Pro - - - -builders - -builders - - - -Ivys_MacBook_Pro->builders - - - - - -homebrew - -homebrew - - - -Ivys_MacBook_Pro->homebrew - - - - - -karabiner_driver - -karabiner-driver - - - -Ivys_MacBook_Pro->karabiner_driver - - - - - -sudoagents - -sudoagents - - - -Ivys_MacBook_Pro->sudoagents - - - - - -vpn - -vpn - - - -Ivys_MacBook_Pro->vpn - - - - - -agenix_rekey_host_Ivys_MacBook_Pro - -agenix-rekey - - - -host__resolve_agenix_rekey_ - -host/resolve(agenix-rekey) -({ aspect-chain, class, host, user }) - - - -agenix_rekey_host_Ivys_MacBook_Pro->host__resolve_agenix_rekey_ - - - - - -darwin_base - -darwin-base - - - -darwin_finder - -darwin-finder - - - -darwin_base->darwin_finder - - - - - -darwin_general - -darwin-general - - - -darwin_base->darwin_general - - - - - -darwin_hmApps - -darwin-hmApps - - - -darwin_base->darwin_hmApps - - - - - -pam_touchid - -pam-touchid - - - -darwin_base->pam_touchid - - - - - -default_host_Ivys_MacBook_Pro - -default - - - -den__batteries__define_user - -batteries/define-user - - - -default_host_Ivys_MacBook_Pro->den__batteries__define_user - - - - - -home_base - -home-base - - - -default_host_Ivys_MacBook_Pro->home_base - - - - - -host__resolve__anon__10_ - -host/resolve(<anon>:10) - - - -default_host_Ivys_MacBook_Pro->host__resolve__anon__10_ - - - - - -host__resolve__anon__11_ - -host/resolve(<anon>:11) - - - -default_host_Ivys_MacBook_Pro->host__resolve__anon__11_ - - - - - -host__resolve__anon__12_ - -host/resolve(<anon>:12) - - - -default_host_Ivys_MacBook_Pro->host__resolve__anon__12_ - - - - - -host__resolve__anon__9_ - -host/resolve(<anon>:9) - - - -default_host_Ivys_MacBook_Pro->host__resolve__anon__9_ - - - - - -host__resolve_default_ - -host/resolve(default) - - - -default_host_Ivys_MacBook_Pro->host__resolve_default_ - - - - - -den__batteries__hostname - -batteries/hostname - - - -default_host_Ivys_MacBook_Pro->den__batteries__hostname - - - - - -den__batteries__inputs_ - -batteries/inputs' - - - -default_host_Ivys_MacBook_Pro->den__batteries__inputs_ - - - - - -insecure_predicate - -insecure-predicate - - - -default_host_Ivys_MacBook_Pro->insecure_predicate - - - - - -lib - -lib - - - -default_host_Ivys_MacBook_Pro->lib - - - - - -nix - -nix - - - -default_host_Ivys_MacBook_Pro->nix - - - - - -overlays - -overlays - - - -default_host_Ivys_MacBook_Pro->overlays - - - - - -den__batteries__self_ - -batteries/self' - - - -default_host_Ivys_MacBook_Pro->den__batteries__self_ - - - - - -den__batteries__sources - -batteries/sources - - - -default_host_Ivys_MacBook_Pro->den__batteries__sources - - - - - -unfree_predicate - -unfree-predicate - - - -default_host_Ivys_MacBook_Pro->unfree_predicate - - - - - -den__batteries__define_user__ivypierlot_Ivys_MacBook_Pro - -batteries/define-user/ivypierlot@Ivys-MacBook-Pro -({ host, user }) - - - -den__batteries__define_user->den__batteries__define_user__ivypierlot_Ivys_MacBook_Pro - - - - - -difftastic - -difftastic - - - -fonts_host_Ivys_MacBook_Pro - -fonts - - - -fonts___when__0 - -fonts/<when>:0 - - - -fonts_host_Ivys_MacBook_Pro->fonts___when__0 - - - - - -fonts___when__1 - -fonts/<when>:1 - - - -fonts_host_Ivys_MacBook_Pro->fonts___when__1 - - - - - -shell_host_Ivys_MacBook_Pro - -shell - - - -home_base->shell_host_Ivys_MacBook_Pro - - - - - -host - -host - - - -host->Ivys_MacBook_Pro - - - - - -host->darwin_base - - - - - -host->default_host_Ivys_MacBook_Pro - - - - - -host->fonts_host_Ivys_MacBook_Pro - - - - - -host__resolve_host_ - -host/resolve(host) - - - -host->host__resolve_host_ - - - - - -nixos_general - -nixos-general - - - -host->nixos_general - - - - - -nixpkgs_config_host_Ivys_MacBook_Pro - -nixpkgs-config - - - -host->nixpkgs_config_host_Ivys_MacBook_Pro - - - - - -openssh - -openssh - - - -host->openssh - - - - - -pam_rssh_host_Ivys_MacBook_Pro - -pam-rssh - - - -host->pam_rssh_host_Ivys_MacBook_Pro - - - - - -host_to_hm_users - -host-to-hm-users - - - -host_to_users - -host-to-users - - - -host__resolve_nix_ - -host/resolve(nix) -({ aspect-chain, class }) - - - -host__resolve_overlays_ - -host/resolve(overlays) -({ aspect-chain, host }) - - - -host__resolve_user_ - -host/resolve(user) - - - -host__resolve_vpn_ - -host/resolve(vpn) -({ aspect-chain, class }) - - - -den__batteries__hostname__os - -batteries/hostname/os -({ host }) - - - -den__batteries__hostname->den__batteries__hostname__os - - - - - -den__batteries__inputs___os - -batteries/inputs'/os -({ host }) - - - -den__batteries__inputs_->den__batteries__inputs___os - - - - - -den__batteries__inputs___user - -batteries/inputs'/user -({ host, user }) - - - -den__batteries__inputs_->den__batteries__inputs___user - - - - - -den__batteries__inputs___user->host__resolve_user_ - - - - - -insecure_predicate__os - -insecure-predicate/os -({ host }) - - - -insecure_predicate->insecure_predicate__os - - - - - -insecure_predicate__user - -insecure-predicate/user -({ host, user }) - - - -insecure_predicate->insecure_predicate__user - - - - - -jujutsu - -jujutsu - - - -jujutsu->difftastic - - - - - -nix->host__resolve_nix_ - - - - - -os_to_host_host_Ivys_MacBook_Pro - -os-to-host - - - -overlays->host__resolve_overlays_ - - - - - -pipe_unfree_host_Ivys_MacBook_Pro - -pipe-unfree - - - -den__batteries__self___os - -batteries/self'/os -({ host }) - - - -den__batteries__self_->den__batteries__self___os - - - - - -den__batteries__self___user - -batteries/self'/user -({ host, user }) - - - -den__batteries__self_->den__batteries__self___user - - - - - -den__batteries__self___user->host__resolve_user_ - - - - - -shell_host_Ivys_MacBook_Pro->jujutsu - - - - - -starship - -starship - - - -shell_host_Ivys_MacBook_Pro->starship - - - - - -den__batteries__sources__os - -batteries/sources/os -({ host }) - - - -den__batteries__sources->den__batteries__sources__os - - - - - -den__batteries__sources__user - -batteries/sources/user -({ host, user }) - - - -den__batteries__sources->den__batteries__sources__user - - - - - -den__batteries__sources__user->host__resolve_user_ - - - - - -unfree_predicate__os - -unfree-predicate/os -({ host }) - - - -unfree_predicate->unfree_predicate__os - - - - - -unfree_predicate__user - -unfree-predicate/user -({ host, user }) - - - -unfree_predicate->unfree_predicate__user - - - - - -vpn->host__resolve_vpn_ - - - - - -vpn_secrets - -vpn-secrets - - - -vpn->vpn_secrets - - - - - -vpn_secrets->agenix_rekey_host_Ivys_MacBook_Pro - - - - - -_policy_agenix_rekey__to_users__0_ - -<policy:agenix-rekey/to-users>[0] - - - -_policy_hm_user_detect__3_ - -<policy:hm-user-detect>[3] - - - -_policy_main_ssh_key__to_hosts__6_ - -<policy:main-ssh-key/to-hosts>[6] - - - -_policy_nixvim_user_forward__8_ - -<policy:nixvim-user-forward>[8] - - - -agenix_rekey_user_ivypierlot - -agenix-rekey - - - -agenix_rekey__to_users - -agenix-rekey/to-users - - - -packages__cotabby - -packages/cotabby - - - -default_user_ivypierlot - -default - - - -default__to_users - -default/to-users - - - -dev - -dev - - - -dev_cli - -dev-cli - - - -dev->dev_cli - - - - - -dev_nix - -dev-nix - - - -dev->dev_nix - - - - - -user__resolve_dev_nix_ - -user/resolve(dev-nix) -({ user }) - - - -dev_nix->user__resolve_dev_nix_ - - - - - -packages__eagle_nvim - -packages/eagle-nvim - - - -file_local - -file-local - - - -fish - -fish - - - -shell_user_ivypierlot - -shell - - - -fish->shell_user_ivypierlot - - - - - -user_shell__ivypierlot_Ivys_MacBook_Pro - -user-shell/ivypierlot@Ivys-MacBook-Pro -({ host, user }) - - - -fish->user_shell__ivypierlot_Ivys_MacBook_Pro - - - - - -user__resolve_fish_ - -user/resolve(fish) - - - -fish->user__resolve_fish_ - - - - - -fonts_user_ivypierlot - -fonts - - - -packages__ghostty - -packages/ghostty - - - -ghostty - -ghostty - - - -ghostty->packages__ghostty - - - - - -gpg - -gpg - - - -gui - -gui - - - -onepassword - -onepassword - - - -gui->onepassword - - - - - -packages__helium - -packages/helium - - - -browsers__helium - -browsers/helium - - - -browsers__helium->packages__helium - - - - - -helium__to_hosts - -helium/to-hosts - - - -hm_user_detect - -hm-user-detect - - - -packages__ivy_fetch - -packages/ivy-fetch - - - -ivy_fetch - -ivy-fetch - - - -ivy_fetch->packages__ivy_fetch - - - - - -ivypierlot - -ivypierlot -({ user }) - - - -ivypierlot->agenix_rekey_user_ivypierlot - - - - - -ivypierlot->packages__cotabby - - - - - -ivypierlot->dev - - - - - -ivypierlot->file_local - - - - - -ivypierlot->fish - - - - - -ivypierlot->ghostty - - - - - -ivypierlot->gpg - - - - - -ivypierlot->gui - - - - - -ivypierlot->browsers__helium - - - - - -kanata - -kanata - - - -ivypierlot->kanata - - - - - -neovim - -neovim - - - -ivypierlot->neovim - - - - - -nixvim - -nixvim - - - -ivypierlot->nixvim - - - - - -nushell - -nushell - - - -ivypierlot->nushell - - - - - -den__batteries__primary_user_ivypierlot_Ivys_MacBook_Pro_ - -batteries/primary-user(ivypierlot@Ivys-MacBook-Pro) -({ host, user }) - - - -ivypierlot->den__batteries__primary_user_ivypierlot_Ivys_MacBook_Pro_ - - - - - -rift - -rift - - - -ivypierlot->rift - - - - - -sketchybar - -sketchybar - - - -ivypierlot->sketchybar - - - - - -zotero - -zotero - - - -ivypierlot->zotero - - - - - -ivypierlot__Ivys_MacBook_Pro__to_users - -Ivys-MacBook-Pro/to-users - - - -ivypierlot->ivypierlot__Ivys_MacBook_Pro__to_users - - - - - -ivypierlot__Ivys_MacBook_Pro - -ivypierlot/Ivys-MacBook-Pro - - - -packages__jankyborders - -packages/jankyborders - - - -jankyborders - -jankyborders - - - -jankyborders->packages__jankyborders - - - - - -main_ssh_key - -main-ssh-key - - - -pam_rssh_user_ivypierlot - -pam-rssh - - - -main_ssh_key->pam_rssh_user_ivypierlot - - - - - -main_ssh_key__to_hosts - -main-ssh-key/to-hosts - - - -stylix - -stylix - - - -neovim->stylix - - - - - -neovim__to_users - -neovim/to-users - - - -nh_env - -nh-env - - - -nixpkgs_config_user_ivypierlot - -nixpkgs-config - - - -nixvim->packages__eagle_nvim - - - - - -den__provides__unfree_cmp_nvim_lsp_document_symbol_ - -provides/unfree(cmp-nvim-lsp-document-symbol) -({ class, host }) - - - -nixvim->den__provides__unfree_cmp_nvim_lsp_document_symbol_ - - - - - -nixvim_hm_module - -nixvim-hm-module - - - -nixvim_user_forward - -nixvim-user-forward - - - -den__provides__unfree_onepassword_password_manager_ - -provides/unfree(onepassword-password-manager) -({ class, host }) - - - -onepassword->den__provides__unfree_onepassword_password_manager_ - - - - - -os_to_host_user_ivypierlot - -os-to-host - - - -overlays__to_users - -overlays/to-users - - - -pipe_unfree_user_ivypierlot - -pipe-unfree - - - -rift->jankyborders - - - - - -shell__to_users - -shell/to-users - - - -packages__sketchybar - -packages/sketchybar - - - -sketchybar->packages__sketchybar - - - - - -packages__sketchybar_app_font - -packages/sketchybar_app_font - - - -sketchybar->packages__sketchybar_app_font - - - - - -sketchybar__to_users - -sketchybar/to-users - - - -user - -user - - - -user->_policy_agenix_rekey__to_users__0_ - - - - - -user->_policy_hm_user_detect__3_ - - - - - -user->_policy_main_ssh_key__to_hosts__6_ - - - - - -user->_policy_nixvim_user_forward__8_ - - - - - -user->default_user_ivypierlot - - - - - -user->default__to_users - - - - - -user->fonts_user_ivypierlot - - - - - -user->helium__to_hosts - - - - - -user->ivy_fetch - - - - - -user->ivypierlot - - - - - -user->ivypierlot__Ivys_MacBook_Pro - - - - - -user->main_ssh_key - - - - - -user->neovim__to_users - - - - - -user->nixpkgs_config_user_ivypierlot - - - - - -user->overlays__to_users - - - - - -user->shell__to_users - - - - - -user->sketchybar__to_users - - - - - -user__resolve_user_ - -user/resolve(user) - - - -user->user__resolve_user_ - - - - - -user_to_host - -user-to-host - - - -_anon_ - -<anon> - - - -browsers - -browsers - - - -browsers->browsers__helium - - - - - -packages - -packages - - - -packages->packages__cotabby - - - - - -packages->packages__eagle_nvim - - - - - -packages->packages__ghostty - - - - - -packages->packages__helium - - - - - -packages->packages__ivy_fetch - - - - - -packages->packages__jankyborders - - - - - -packages->packages__sketchybar - - - - - -packages->packages__sketchybar_app_font - - - - - +cluster_ctx_hosthost { host }cluster_ctx_useruser { host, user }Ivys_MacBook_ProIvys-MacBook-ProbuildersbuildersIvys_MacBook_Pro->buildershomebrewhomebrewIvys_MacBook_Pro->homebrewkarabiner_driverkarabiner-driverIvys_MacBook_Pro->karabiner_driversudoagentssudoagentsIvys_MacBook_Pro->sudoagentsvpnvpnIvys_MacBook_Pro->vpnagenix_rekey_host_Ivys_MacBook_Proagenix-rekeyhost__resolve_agenix_rekey_host/resolve(agenix-rekey)({ aspect-chain, class, host, user })agenix_rekey_host_Ivys_MacBook_Pro->host__resolve_agenix_rekey_darwin_basedarwin-basedarwin_finderdarwin-finderdarwin_base->darwin_finderdarwin_generaldarwin-generaldarwin_base->darwin_generaldarwin_hmAppsdarwin-hmAppsdarwin_base->darwin_hmAppspam_touchidpam-touchiddarwin_base->pam_touchiddefault_host_Ivys_MacBook_Prodefaultden__batteries__define_userbatteries/define-userdefault_host_Ivys_MacBook_Pro->den__batteries__define_userhome_basehome-basedefault_host_Ivys_MacBook_Pro->home_basehost__resolve__anon__10_host/resolve(<anon>:10)default_host_Ivys_MacBook_Pro->host__resolve__anon__10_host__resolve__anon__11_host/resolve(<anon>:11)default_host_Ivys_MacBook_Pro->host__resolve__anon__11_host__resolve__anon__12_host/resolve(<anon>:12)default_host_Ivys_MacBook_Pro->host__resolve__anon__12_host__resolve__anon__9_host/resolve(<anon>:9)default_host_Ivys_MacBook_Pro->host__resolve__anon__9_host__resolve_default_host/resolve(default)default_host_Ivys_MacBook_Pro->host__resolve_default_den__batteries__hostnamebatteries/hostnamedefault_host_Ivys_MacBook_Pro->den__batteries__hostnameden__batteries__inputs_batteries/inputs'default_host_Ivys_MacBook_Pro->den__batteries__inputs_insecure_predicateinsecure-predicatedefault_host_Ivys_MacBook_Pro->insecure_predicateliblibdefault_host_Ivys_MacBook_Pro->libnixnixdefault_host_Ivys_MacBook_Pro->nixoverlaysoverlaysdefault_host_Ivys_MacBook_Pro->overlaysden__batteries__self_batteries/self'default_host_Ivys_MacBook_Pro->den__batteries__self_den__batteries__sourcesbatteries/sourcesdefault_host_Ivys_MacBook_Pro->den__batteries__sourcesunfree_predicateunfree-predicatedefault_host_Ivys_MacBook_Pro->unfree_predicateden__batteries__define_user__ivypierlot_Ivys_MacBook_Probatteries/define-user/ivypierlot@Ivys-MacBook-Pro({ host, user })den__batteries__define_user->den__batteries__define_user__ivypierlot_Ivys_MacBook_Prodifftasticdifftasticfonts_host_Ivys_MacBook_Profontsfonts___when__0fonts/<when>:0fonts_host_Ivys_MacBook_Pro->fonts___when__0fonts___when__1fonts/<when>:1fonts_host_Ivys_MacBook_Pro->fonts___when__1shell_host_Ivys_MacBook_Proshellhome_base->shell_host_Ivys_MacBook_Prohosthosthost->Ivys_MacBook_Prohost->darwin_basehost->default_host_Ivys_MacBook_Prohost->fonts_host_Ivys_MacBook_Prohost__resolve_host_host/resolve(host)host->host__resolve_host_nixos_generalnixos-generalhost->nixos_generalnixpkgs_config_host_Ivys_MacBook_Pronixpkgs-confighost->nixpkgs_config_host_Ivys_MacBook_Proopensshopensshhost->opensshpam_rssh_host_Ivys_MacBook_Propam-rsshhost->pam_rssh_host_Ivys_MacBook_Prohost_to_hm_usershost-to-hm-usershost_to_usershost-to-usershost__resolve_nix_host/resolve(nix)({ aspect-chain, class })host__resolve_overlays_host/resolve(overlays)({ aspect-chain, host })host__resolve_user_host/resolve(user)host__resolve_vpn_host/resolve(vpn)({ aspect-chain, class })den__batteries__hostname__osbatteries/hostname/os({ host })den__batteries__hostname->den__batteries__hostname__osden__batteries__inputs___osbatteries/inputs'/os({ host })den__batteries__inputs_->den__batteries__inputs___osden__batteries__inputs___userbatteries/inputs'/user({ host, user })den__batteries__inputs_->den__batteries__inputs___userden__batteries__inputs___user->host__resolve_user_insecure_predicate__osinsecure-predicate/os({ host })insecure_predicate->insecure_predicate__osinsecure_predicate__userinsecure-predicate/user({ host, user })insecure_predicate->insecure_predicate__userjujutsujujutsujujutsu->difftasticnix->host__resolve_nix_os_to_host_host_Ivys_MacBook_Proos-to-hostoverlays->host__resolve_overlays_pipe_unfree_host_Ivys_MacBook_Propipe-unfreeden__batteries__self___osbatteries/self'/os({ host })den__batteries__self_->den__batteries__self___osden__batteries__self___userbatteries/self'/user({ host, user })den__batteries__self_->den__batteries__self___userden__batteries__self___user->host__resolve_user_shell_host_Ivys_MacBook_Pro->jujutsustarshipstarshipshell_host_Ivys_MacBook_Pro->starshipden__batteries__sources__osbatteries/sources/os({ host })den__batteries__sources->den__batteries__sources__osden__batteries__sources__userbatteries/sources/user({ host, user })den__batteries__sources->den__batteries__sources__userden__batteries__sources__user->host__resolve_user_unfree_predicate__osunfree-predicate/os({ host })unfree_predicate->unfree_predicate__osunfree_predicate__userunfree-predicate/user({ host, user })unfree_predicate->unfree_predicate__uservpn->host__resolve_vpn_vpn_secretsvpn-secretsvpn->vpn_secretsvpn_secrets->agenix_rekey_host_Ivys_MacBook_Pro_policy_agenix_rekey__to_users__0_<policy:agenix-rekey/to-users>[0]_policy_hm_user_detect__3_<policy:hm-user-detect>[3]_policy_main_ssh_key__to_hosts__6_<policy:main-ssh-key/to-hosts>[6]_policy_nixvim_user_forward__8_<policy:nixvim-user-forward>[8]agenix_rekey_user_ivypierlotagenix-rekeyagenix_rekey__to_usersagenix-rekey/to-userspackages__cotabbypackages/cotabbydefault_user_ivypierlotdefaultdefault__to_usersdefault/to-usersdevdevdev_clidev-clidev->dev_clidev_nixdev-nixdev->dev_nixuser__resolve_dev_nix_user/resolve(dev-nix)({ user })dev_nix->user__resolve_dev_nix_packages__eagle_nvimpackages/eagle-nvimfile_localfile-localfishfishshell_user_ivypierlotshellfish->shell_user_ivypierlotuser_shell__ivypierlot_Ivys_MacBook_Prouser-shell/ivypierlot@Ivys-MacBook-Pro({ host, user })fish->user_shell__ivypierlot_Ivys_MacBook_Prouser__resolve_fish_user/resolve(fish)fish->user__resolve_fish_fonts_user_ivypierlotfontspackages__ghosttypackages/ghosttyghosttyghosttyghostty->packages__ghosttygpggpgguiguionepasswordonepasswordgui->onepasswordpackages__heliumpackages/heliumbrowsers__heliumbrowsers/heliumbrowsers__helium->packages__heliumhelium__to_hostshelium/to-hostshm_user_detecthm-user-detectpackages__ivy_fetchpackages/ivy-fetchivy_fetchivy-fetchivy_fetch->packages__ivy_fetchivypierlotivypierlot({ user })ivypierlot->agenix_rekey_user_ivypierlotivypierlot->packages__cotabbyivypierlot->devivypierlot->file_localivypierlot->fishivypierlot->ghosttyivypierlot->gpgivypierlot->guiivypierlot->browsers__heliumkanatakanataivypierlot->kanataneovimneovimivypierlot->neovimnixvimnixvimivypierlot->nixvimnushellnushellivypierlot->nushellden__batteries__primary_user_ivypierlot_Ivys_MacBook_Pro_batteries/primary-user(ivypierlot@Ivys-MacBook-Pro)({ host, user })ivypierlot->den__batteries__primary_user_ivypierlot_Ivys_MacBook_Pro_riftriftivypierlot->riftsketchybarsketchybarivypierlot->sketchybarzoterozoteroivypierlot->zoteroivypierlot__Ivys_MacBook_Pro__to_usersIvys-MacBook-Pro/to-usersivypierlot->ivypierlot__Ivys_MacBook_Pro__to_usersivypierlot__Ivys_MacBook_Proivypierlot/Ivys-MacBook-Propackages__jankyborderspackages/jankybordersjankybordersjankybordersjankyborders->packages__jankybordersmain_ssh_keymain-ssh-keypam_rssh_user_ivypierlotpam-rsshmain_ssh_key->pam_rssh_user_ivypierlotmain_ssh_key__to_hostsmain-ssh-key/to-hostsstylixstylixneovim->stylixneovim__to_usersneovim/to-usersnh_envnh-envnixpkgs_config_user_ivypierlotnixpkgs-confignixvim->packages__eagle_nvimden__provides__unfree_cmp_nvim_lsp_document_symbol_provides/unfree(cmp-nvim-lsp-document-symbol)({ class, host })nixvim->den__provides__unfree_cmp_nvim_lsp_document_symbol_nixvim_hm_modulenixvim-hm-modulenixvim_user_forwardnixvim-user-forwardden__provides__unfree_onepassword_password_manager_provides/unfree(onepassword-password-manager)({ class, host })onepassword->den__provides__unfree_onepassword_password_manager_os_to_host_user_ivypierlotos-to-hostoverlays__to_usersoverlays/to-userspipe_unfree_user_ivypierlotpipe-unfreerift->jankybordersshell__to_usersshell/to-userspackages__sketchybarpackages/sketchybarsketchybar->packages__sketchybarpackages__sketchybar_app_fontpackages/sketchybar_app_fontsketchybar->packages__sketchybar_app_fontsketchybar__to_userssketchybar/to-usersuseruseruser->_policy_agenix_rekey__to_users__0_user->_policy_hm_user_detect__3_user->_policy_main_ssh_key__to_hosts__6_user->_policy_nixvim_user_forward__8_user->default_user_ivypierlotuser->default__to_usersuser->fonts_user_ivypierlotuser->helium__to_hostsuser->ivy_fetchuser->ivypierlotuser->ivypierlot__Ivys_MacBook_Prouser->main_ssh_keyuser->neovim__to_usersuser->nixpkgs_config_user_ivypierlotuser->overlays__to_usersuser->shell__to_usersuser->sketchybar__to_usersuser__resolve_user_user/resolve(user)user->user__resolve_user_user_to_hostuser-to-host_anon_<anon>browsersbrowsersbrowsers->browsers__heliumpackagespackagespackages->packages__cotabbypackages->packages__eagle_nvimpackages->packages__ghosttypackages->packages__heliumpackages->packages__ivy_fetchpackages->packages__jankyborderspackages->packages__sketchybarpackages->packages__sketchybar_app_font \ No newline at end of file diff --git a/flake.lock b/flake.lock deleted file mode 100644 index c055f243f..000000000 --- a/flake.lock +++ /dev/null @@ -1,1971 +0,0 @@ -{ - "nodes": { - "age-plugin-gpg": { - "inputs": { - "crane": [ - "crane" - ], - "flake-parts": [ - "flake-parts" - ], - "nixpkgs": [ - "nixpkgs" - ], - "rust-overlay": [ - "rust-overlay" - ], - "shelly": "shelly" - }, - "locked": { - "lastModified": 1763855494, - "narHash": "sha256-S6zO+8DAC37CkQjp75CU6rxq1MUbSU3vag5XBlBMmPk=", - "owner": "certainlach", - "repo": "age-plugin-gpg", - "rev": "9a485c1af359e877e01b45956342769087f7559b", - "type": "github" - }, - "original": { - "owner": "certainlach", - "repo": "age-plugin-gpg", - "type": "github" - } - }, - "agenix": { - "inputs": { - "darwin": [ - "darwin" - ], - "home-manager": [ - "home-manager" - ], - "nixpkgs": [ - "nixpkgs" - ], - "systems": "systems" - }, - "locked": { - "lastModified": 1770165109, - "narHash": "sha256-9VnK6Oqai65puVJ4WYtCTvlJeXxMzAp/69HhQuTdl/I=", - "owner": "ryantm", - "repo": "agenix", - "rev": "b027ee29d959fda4b60b57566d64c98a202e0feb", - "type": "github" - }, - "original": { - "owner": "ryantm", - "repo": "agenix", - "type": "github" - } - }, - "agenix-rekey": { - "inputs": { - "devshell": [ - "devshell" - ], - "flake-parts": [ - "flake-parts" - ], - "nixpkgs": [ - "nixpkgs" - ], - "pre-commit-hooks": "pre-commit-hooks", - "treefmt-nix": "treefmt-nix" - }, - "locked": { - "lastModified": 1774522439, - "narHash": "sha256-GvINrdGznE7mGlDNjW0/PMgOJlC+Nl9MkfxALB4QvWs=", - "owner": "oddlama", - "repo": "agenix-rekey", - "rev": "8b9c179bc1300ab130c90f2d25426bf0e7a2b58d", - "type": "github" - }, - "original": { - "owner": "oddlama", - "repo": "agenix-rekey", - "type": "github" - } - }, - "argononed": { - "flake": false, - "locked": { - "lastModified": 1729566243, - "narHash": "sha256-DPNI0Dpk5aym3Baf5UbEe5GENDrSmmXVdriRSWE+rgk=", - "owner": "nvmd", - "repo": "argononed", - "rev": "16dbee54d49b66d5654d228d1061246b440ef7cf", - "type": "github" - }, - "original": { - "owner": "nvmd", - "repo": "argononed", - "type": "github" - } - }, - "arion": { - "inputs": { - "flake-parts": [ - "flake-parts" - ], - "haskell-flake": "haskell-flake", - "nixpkgs": [ - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1770259557, - "narHash": "sha256-EvZ09k9+mzXAngPzU2K7oLLUDlKoT1numb4bDb3Gtl4=", - "owner": "hercules-ci", - "repo": "arion", - "rev": "9b24cf65c72cb0e9616e437d55e1ac8e5c6bc715", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "arion", - "type": "github" - } - }, - "base16": { - "inputs": { - "fromYaml": "fromYaml" - }, - "locked": { - "lastModified": 1755819240, - "narHash": "sha256-qcMhnL7aGAuFuutH4rq9fvAhCpJWVHLcHVZLtPctPlo=", - "owner": "SenchoPens", - "repo": "base16.nix", - "rev": "75ed5e5e3fce37df22e49125181fa37899c3ccd6", - "type": "github" - }, - "original": { - "owner": "SenchoPens", - "repo": "base16.nix", - "type": "github" - } - }, - "base16-fish": { - "flake": false, - "locked": { - "lastModified": 1765809053, - "narHash": "sha256-XCUQLoLfBJ8saWms2HCIj4NEN+xNsWBlU1NrEPcQG4s=", - "owner": "tomyun", - "repo": "base16-fish", - "rev": "86cbea4dca62e08fb7fd83a70e96472f92574782", - "type": "github" - }, - "original": { - "owner": "tomyun", - "repo": "base16-fish", - "rev": "86cbea4dca62e08fb7fd83a70e96472f92574782", - "type": "github" - } - }, - "base16-helix": { - "flake": false, - "locked": { - "lastModified": 1776754714, - "narHash": "sha256-E3OAK27smtATTmX45uoTSRsVD+Y+ZiVVfgM/tjpbtYg=", - "owner": "tinted-theming", - "repo": "base16-helix", - "rev": "4d508123037e7851ad36ebf7d9c48b0e9e1eb581", - "type": "github" - }, - "original": { - "owner": "tinted-theming", - "repo": "base16-helix", - "type": "github" - } - }, - "base16-vim": { - "flake": false, - "locked": { - "lastModified": 1732806396, - "narHash": "sha256-e0bpPySdJf0F68Ndanwm+KWHgQiZ0s7liLhvJSWDNsA=", - "owner": "tinted-theming", - "repo": "base16-vim", - "rev": "577fe8125d74ff456cf942c733a85d769afe58b7", - "type": "github" - }, - "original": { - "owner": "tinted-theming", - "repo": "base16-vim", - "rev": "577fe8125d74ff456cf942c733a85d769afe58b7", - "type": "github" - } - }, - "blobs": { - "flake": false, - "locked": { - "lastModified": 1604995301, - "narHash": "sha256-wcLzgLec6SGJA8fx1OEN1yV/Py5b+U5iyYpksUY/yLw=", - "owner": "simple-nixos-mailserver", - "repo": "blobs", - "rev": "2cccdf1ca48316f2cfd1c9a0017e8de5a7156265", - "type": "gitlab" - }, - "original": { - "owner": "simple-nixos-mailserver", - "repo": "blobs", - "type": "gitlab" - } - }, - "brew-src": { - "flake": false, - "locked": { - "lastModified": 1781226006, - "narHash": "sha256-w4ZTuOnhYiDxjaynrMTASzp802QblBWmo3wpB8wVN4Y=", - "owner": "Homebrew", - "repo": "brew", - "rev": "109191be4988470b51a60a5ef1998520aa24c01b", - "type": "github" - }, - "original": { - "owner": "Homebrew", - "ref": "6.0.1", - "repo": "brew", - "type": "github" - } - }, - "celler": { - "inputs": { - "crane": [ - "crane" - ], - "flake-compat": "flake-compat_2", - "flake-parts": [ - "flake-parts" - ], - "nixpkgs": [ - "nixpkgs" - ], - "nixpkgs-stable": "nixpkgs-stable" - }, - "locked": { - "lastModified": 1781600249, - "narHash": "sha256-YiY2h0Hi37DyNlom+ZRmC1p4Ghdj62hD/lbT4TOvCY8=", - "owner": "blitz", - "repo": "celler", - "rev": "867c49f84ffb78acfe81831174ecec8e29aad7ba", - "type": "github" - }, - "original": { - "owner": "blitz", - "ref": "main", - "repo": "celler", - "type": "github" - } - }, - "crane": { - "locked": { - "lastModified": 1781825982, - "narHash": "sha256-SlXKwIRIhrOSAcTjCB3ftPLzJWZStQIPS7J1FlZPnKk=", - "owner": "ipetkov", - "repo": "crane", - "rev": "469fd08d0bcf6926321fa973c6777fbc87785dd7", - "type": "github" - }, - "original": { - "owner": "ipetkov", - "repo": "crane", - "type": "github" - } - }, - "crane_2": { - "locked": { - "lastModified": 1778106249, - "narHash": "sha256-cM/AuKy5tMhwOOQIbha8ZRRMHVfNf7cv2aljIw+qoCg=", - "owner": "ipetkov", - "repo": "crane", - "rev": "6d015ea29630b7ad2402841386da2cb617a470a7", - "type": "github" - }, - "original": { - "owner": "ipetkov", - "repo": "crane", - "type": "github" - } - }, - "darwin": { - "inputs": { - "nixpkgs": [ - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1781761792, - "narHash": "sha256-rCPytmKNjctLloB6UgK5CRrHSwV4b0ygxtJLPPp8R14=", - "owner": "nix-darwin", - "repo": "nix-darwin", - "rev": "a1fa429e945becaf60468600daf649be4ba0350c", - "type": "github" - }, - "original": { - "owner": "nix-darwin", - "repo": "nix-darwin", - "type": "github" - } - }, - "den": { - "locked": { - "lastModified": 1781621963, - "narHash": "sha256-8Mntz200pNVIF2l8twpdc4wvEFqzrlkICz2tvkfwz0s=", - "owner": "denful", - "repo": "den", - "rev": "5df0987658d6e44268abba953406480e9f066928", - "type": "github" - }, - "original": { - "owner": "denful", - "ref": "latest", - "repo": "den", - "type": "github" - } - }, - "den-diagram": { - "inputs": { - "nixpkgs": [ - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1779682342, - "narHash": "sha256-NtOMbKnrhQPnpnJ5d/P47r1wK1r958XFu0apEsbE3Jg=", - "owner": "denful", - "repo": "den-diagram", - "rev": "ff9952d6320d8a6052801f8aa1f47fe1dc9a54d3", - "type": "github" - }, - "original": { - "owner": "denful", - "repo": "den-diagram", - "type": "github" - } - }, - "devshell": { - "inputs": { - "nixpkgs": [ - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1768818222, - "narHash": "sha256-460jc0+CZfyaO8+w8JNtlClB2n4ui1RbHfPTLkpwhU8=", - "owner": "numtide", - "repo": "devshell", - "rev": "255a2b1725a20d060f566e4755dbf571bbbb5f76", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "devshell", - "type": "github" - } - }, - "emacs": { - "inputs": { - "nixpkgs": [ - "nixpkgs" - ], - "nixpkgs-stable": "nixpkgs-stable_2" - }, - "locked": { - "lastModified": 1782669544, - "narHash": "sha256-2PrdpoD4Fllge0k0kt+3pcxY/ELYw6ZoMkU8e8dGM/Y=", - "owner": "nix-community", - "repo": "emacs-overlay", - "rev": "66a245bb3af63d38971270739cec941c4020d573", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "emacs-overlay", - "type": "github" - } - }, - "fenix": { - "inputs": { - "nixpkgs": "nixpkgs", - "rust-analyzer-src": "rust-analyzer-src" - }, - "locked": { - "lastModified": 1774682177, - "narHash": "sha256-OVbuJnJLlbHE28eRMudjtA6NXz/ifuXSho79gvh6GHY=", - "owner": "nix-community", - "repo": "fenix", - "rev": "e0f515387df77b9fdbaaf81e7f866f0365474c18", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "fenix", - "type": "github" - } - }, - "firefox-gnome-theme": { - "flake": false, - "locked": { - "lastModified": 1779670703, - "narHash": "sha256-UdfMivNMwCCqQsYDg5pSz8X2IOaOrIZLIIy+Bg3CO2o=", - "owner": "rafaelmardojai", - "repo": "firefox-gnome-theme", - "rev": "942159e73e40bf785816f7f1f5feed9ef3d7c8f9", - "type": "github" - }, - "original": { - "owner": "rafaelmardojai", - "repo": "firefox-gnome-theme", - "type": "github" - } - }, - "flake-compat": { - "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_2": { - "flake": false, - "locked": { - "lastModified": 1767039857, - "narHash": "sha256-vNpUSpF5Nuw8xvDLj2KCwwksIbjua2LZCqhV1LNRDns=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "5edf11c44bc78a0d334f6334cdaf7d60d732daab", - "type": "github" - }, - "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-compat_3": { - "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-compat_4": { - "locked": { - "lastModified": 1733328505, - "narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=", - "rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec", - "revCount": 69, - "type": "tarball", - "url": "https://api.flakehub.com/f/pinned/edolstra/flake-compat/1.1.0/01948eb7-9cba-704f-bbf3-3fa956735b52/source.tar.gz" - }, - "original": { - "type": "tarball", - "url": "https://flakehub.com/f/edolstra/flake-compat/1.tar.gz" - } - }, - "flake-compat_5": { - "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-compat_6": { - "locked": { - "lastModified": 1767039857, - "narHash": "sha256-vNpUSpF5Nuw8xvDLj2KCwwksIbjua2LZCqhV1LNRDns=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "5edf11c44bc78a0d334f6334cdaf7d60d732daab", - "type": "github" - }, - "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-compat_7": { - "flake": false, - "locked": { - "lastModified": 1767039857, - "narHash": "sha256-vNpUSpF5Nuw8xvDLj2KCwwksIbjua2LZCqhV1LNRDns=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "5edf11c44bc78a0d334f6334cdaf7d60d732daab", - "type": "github" - }, - "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-compat_8": { - "flake": false, - "locked": { - "lastModified": 1767039857, - "narHash": "sha256-vNpUSpF5Nuw8xvDLj2KCwwksIbjua2LZCqhV1LNRDns=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "5edf11c44bc78a0d334f6334cdaf7d60d732daab", - "type": "github" - }, - "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-file": { - "locked": { - "lastModified": 1781217157, - "narHash": "sha256-N3q/SP2Ropk336e9KSgLh7kpROY6P70dprYdbPIfd5c=", - "owner": "denful", - "repo": "flake-file", - "rev": "ce63eaf7ebfe04a176653f66385a7f0a36380cee", - "type": "github" - }, - "original": { - "owner": "denful", - "repo": "flake-file", - "type": "github" - } - }, - "flake-parts": { - "inputs": { - "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-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_4" - }, - "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" - } - }, - "fromYaml": { - "flake": false, - "locked": { - "lastModified": 1731966426, - "narHash": "sha256-lq95WydhbUTWig/JpqiB7oViTcHFP8Lv41IGtayokA8=", - "owner": "SenchoPens", - "repo": "fromYaml", - "rev": "106af9e2f715e2d828df706c386a685698f3223b", - "type": "github" - }, - "original": { - "owner": "SenchoPens", - "repo": "fromYaml", - "type": "github" - } - }, - "git-hooks": { - "inputs": { - "flake-compat": [ - "nixos-mailserver", - "flake-compat" - ], - "gitignore": "gitignore_2", - "nixpkgs": [ - "nixos-mailserver", - "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" - } - }, - "gitignore": { - "inputs": { - "nixpkgs": [ - "agenix-rekey", - "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" - } - }, - "gitignore_2": { - "inputs": { - "nixpkgs": [ - "nixos-mailserver", - "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" - } - }, - "gnome-shell": { - "flake": false, - "locked": { - "lastModified": 1767737596, - "narHash": "sha256-eFujfIUQDgWnSJBablOuG+32hCai192yRdrNHTv0a+s=", - "owner": "GNOME", - "repo": "gnome-shell", - "rev": "ef02db02bf0ff342734d525b5767814770d85b49", - "type": "github" - }, - "original": { - "owner": "GNOME", - "repo": "gnome-shell", - "rev": "ef02db02bf0ff342734d525b5767814770d85b49", - "type": "github" - } - }, - "haskell-flake": { - "locked": { - "lastModified": 1675296942, - "narHash": "sha256-u1X1sblozi5qYEcLp1hxcyo8FfDHnRUVX3dJ/tW19jY=", - "owner": "srid", - "repo": "haskell-flake", - "rev": "c2cafce9d57bfca41794dc3b99c593155006c71e", - "type": "github" - }, - "original": { - "owner": "srid", - "ref": "0.1.0", - "repo": "haskell-flake", - "type": "github" - } - }, - "home-manager": { - "inputs": { - "nixpkgs": [ - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1782657028, - "narHash": "sha256-PHTCpYZCMzJYS3phhywqRAZphKVr2zjvlGYa+H20ZZ4=", - "owner": "nix-community", - "repo": "home-manager", - "rev": "4ad9aaae70c9aaab504127f926c0fa9cfbc2b365", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "home-manager", - "type": "github" - } - }, - "homebrew-cask": { - "flake": false, - "locked": { - "lastModified": 1782697763, - "narHash": "sha256-CYecH4njTCdlm67ZkCuX7sKR3RhXuDBewM+zf3W41yA=", - "owner": "homebrew", - "repo": "homebrew-cask", - "rev": "51a2d7526a8117d9d832b77383721c6c4b05b506", - "type": "github" - }, - "original": { - "owner": "homebrew", - "repo": "homebrew-cask", - "type": "github" - } - }, - "homebrew-core": { - "flake": false, - "locked": { - "lastModified": 1782694376, - "narHash": "sha256-CZ8XMLe8CypjfFAzGgmW9TXPMHe0UAFliXhd+/i91BI=", - "owner": "homebrew", - "repo": "homebrew-core", - "rev": "c1fb51517a40990c55bc1abbac13d856567fa9cc", - "type": "github" - }, - "original": { - "owner": "homebrew", - "repo": "homebrew-core", - "type": "github" - } - }, - "homebrew-speedtest": { - "flake": false, - "locked": { - "lastModified": 1660162552, - "narHash": "sha256-IaVzg2Nw02RXXz0hmWHP5oq94aAN4Qn6+Y1dC+k+JVM=", - "owner": "teamookla", - "repo": "homebrew-speedtest", - "rev": "1ff487f465bb01c3007c0bc17f1f793244ee2eaa", - "type": "github" - }, - "original": { - "owner": "teamookla", - "repo": "homebrew-speedtest", - "type": "github" - } - }, - "homebrew-typewhisper": { - "flake": false, - "locked": { - "lastModified": 1779354298, - "narHash": "sha256-DLwRY8thO4f3YUZZqtj3BfigtD0vbPd289fB78v/8VM=", - "owner": "typewhisper", - "repo": "homebrew-tap", - "rev": "46c2b5929134590c01e15da20f20bef0a2986b21", - "type": "github" - }, - "original": { - "owner": "typewhisper", - "repo": "homebrew-tap", - "type": "github" - } - }, - "impermanence": { - "inputs": { - "home-manager": [ - "home-manager" - ], - "nixpkgs": [ - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1769548169, - "narHash": "sha256-03+JxvzmfwRu+5JafM0DLbxgHttOQZkUtDWBmeUkN8Y=", - "owner": "nix-community", - "repo": "impermanence", - "rev": "7b1d382faf603b6d264f58627330f9faa5cba149", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "impermanence", - "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" - } - }, - "mk-shell-bin": { - "locked": { - "lastModified": 1677004959, - "narHash": "sha256-/uEkr1UkJrh11vD02aqufCxtbF5YnhRTIKlx5kyvf+I=", - "owner": "rrbutani", - "repo": "nix-mk-shell-bin", - "rev": "ff5d8bd4d68a347be5042e2f16caee391cd75887", - "type": "github" - }, - "original": { - "owner": "rrbutani", - "repo": "nix-mk-shell-bin", - "type": "github" - } - }, - "my-nur": { - "inputs": { - "fenix": "fenix", - "nixpkgs": [ - "nixpkgs" - ], - "nvfetcher": [ - "nvfetcher" - ] - }, - "locked": { - "lastModified": 1778480997, - "narHash": "sha256-TRHUnWYfCUijHDS5APa5bWsNVFRSFz/AqJZKGEkJ3ek=", - "owner": "auscyber", - "repo": "nur-packages", - "rev": "5d677b0de94e18ab7e3717df8b6eddacb670f83b", - "type": "github" - }, - "original": { - "owner": "auscyber", - "repo": "nur-packages", - "type": "github" - } - }, - "nh": { - "inputs": { - "nixpkgs": [ - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1782566317, - "narHash": "sha256-onDOwJTQyL5b1f56BivEnlEWwDbDAk7M9s/UBvPY6yI=", - "owner": "nix-community", - "repo": "nh", - "rev": "67ffe6b9d039cecc540b7e8e937fcc97f5aeef78", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "nh", - "type": "github" - } - }, - "niri": { - "inputs": { - "niri-stable": "niri-stable", - "niri-unstable": "niri-unstable", - "nixpkgs": [ - "nixpkgs" - ], - "nixpkgs-stable": "nixpkgs-stable_3", - "xwayland-satellite-stable": "xwayland-satellite-stable", - "xwayland-satellite-unstable": "xwayland-satellite-unstable" - }, - "locked": { - "lastModified": 1782592242, - "narHash": "sha256-kgINba6Ilpj3rdTi2BeKlQBs6ZxTdu3Gb49U5gDUVhg=", - "owner": "sodiboo", - "repo": "niri-flake", - "rev": "9e26dfe0fb8d61475b6f9e8d63477fe92509f1db", - "type": "github" - }, - "original": { - "owner": "sodiboo", - "repo": "niri-flake", - "type": "github" - } - }, - "niri-stable": { - "flake": false, - "locked": { - "lastModified": 1756556321, - "narHash": "sha256-RLD89dfjN0RVO86C/Mot0T7aduCygPGaYbog566F0Qo=", - "owner": "YaLTeR", - "repo": "niri", - "rev": "01be0e65f4eb91a9cd624ac0b76aaeab765c7294", - "type": "github" - }, - "original": { - "owner": "YaLTeR", - "ref": "v25.08", - "repo": "niri", - "type": "github" - } - }, - "niri-unstable": { - "flake": false, - "locked": { - "lastModified": 1781781064, - "narHash": "sha256-Ii/koEm/sRyg65qbAQWqEgboSEIhdH0EL4KglAc14p0=", - "owner": "YaLTeR", - "repo": "niri", - "rev": "49fc6117fd6c043adaa2ead316b82db5ed735d36", - "type": "github" - }, - "original": { - "owner": "YaLTeR", - "repo": "niri", - "type": "github" - } - }, - "nix-flatpak": { - "locked": { - "lastModified": 1780908363, - "narHash": "sha256-llGS4y3Qh1eUkli3/Y2VY9FV3GOUKFZR1E2BDftt45Q=", - "owner": "gmodena", - "repo": "nix-flatpak", - "rev": "1df08625f0f8c7d6e300a0e5df7955bbb877d809", - "type": "github" - }, - "original": { - "owner": "gmodena", - "repo": "nix-flatpak", - "type": "github" - } - }, - "nix-homebrew": { - "inputs": { - "brew-src": "brew-src" - }, - "locked": { - "lastModified": 1781389246, - "narHash": "sha256-ORqLAo/hoJdsZC7UPAuEHev6S0+XIqKEC7vjo5prz1k=", - "owner": "zhaofengli", - "repo": "nix-homebrew", - "rev": "de7953a08ed4bb9245be043e468561c17b89130d", - "type": "github" - }, - "original": { - "owner": "zhaofengli", - "repo": "nix-homebrew", - "type": "github" - } - }, - "nix-openclaw": { - "inputs": { - "flake-utils": "flake-utils", - "home-manager": [ - "home-manager" - ], - "nix-openclaw-tools": "nix-openclaw-tools", - "nixpkgs": [ - "nixpkgs" - ], - "qmd": "qmd" - }, - "locked": { - "lastModified": 1782523441, - "narHash": "sha256-NDH1nJuh9F+zJr2b3TWUK74xDDAxcnElzKCXtQ7Fl/8=", - "owner": "openclaw", - "repo": "nix-openclaw", - "rev": "ceeb2ef2334d270b21164982cbfa350afd83a376", - "type": "github" - }, - "original": { - "owner": "openclaw", - "repo": "nix-openclaw", - "type": "github" - } - }, - "nix-openclaw-tools": { - "inputs": { - "nixpkgs": "nixpkgs_2" - }, - "locked": { - "lastModified": 1778060041, - "narHash": "sha256-tXWkN1VnwFG8XlRqW/e7VwbKnUfyU9tB7YDm9QHJXTY=", - "owner": "openclaw", - "repo": "nix-openclaw-tools", - "rev": "4c1cee3c7eaf68f9de0f756be1484534f5bb5f34", - "type": "github" - }, - "original": { - "owner": "openclaw", - "repo": "nix-openclaw-tools", - "type": "github" - } - }, - "nix2container": { - "inputs": { - "nixpkgs": [ - "rift", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1767430085, - "narHash": "sha256-SiXJ6xv4pS2MDUqfj0/mmG746cGeJrMQGmoFgHLS25Y=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "66f4b8a47e92aa744ec43acbb5e9185078983909", - "type": "github" - }, - "original": { - "owner": "nlewo", - "repo": "nix2container", - "type": "github" - } - }, - "nixcord": { - "inputs": { - "flake-compat": "flake-compat_4", - "flake-parts": [ - "flake-parts" - ], - "nixpkgs": [ - "nixpkgs" - ], - "nixpkgs-nixcord": "nixpkgs-nixcord" - }, - "locked": { - "lastModified": 1782670213, - "narHash": "sha256-7IX/sy/gvDxPCBze4q5dbux6kxF90hc5PIO8u2c2tqk=", - "owner": "kaylorben", - "repo": "nixcord", - "rev": "6db6f545223015523d72e9727811a3569ef4b099", - "type": "github" - }, - "original": { - "owner": "kaylorben", - "repo": "nixcord", - "type": "github" - } - }, - "nixos-hardware": { - "inputs": { - "nixpkgs": [ - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1782562157, - "narHash": "sha256-a7+T6QSeowynwZ1ZJJbP8T8ntAytvrui8kFGJmIZt2c=", - "owner": "NixOS", - "repo": "nixos-hardware", - "rev": "a9cf7546a938c737b079e738de73934a13de9784", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixos-hardware", - "type": "github" - } - }, - "nixos-images": { - "inputs": { - "nixos-stable": [ - "nixpkgs-nvmd" - ], - "nixos-unstable": [ - "nixpkgs-nvmd" - ] - }, - "locked": { - "lastModified": 1747747741, - "narHash": "sha256-LUOH27unNWbGTvZFitHonraNx0JF/55h30r9WxqrznM=", - "owner": "nvmd", - "repo": "nixos-images", - "rev": "cbbd6db325775096680b65e2a32fb6187c09bbb4", - "type": "github" - }, - "original": { - "owner": "nvmd", - "ref": "sdimage-installer", - "repo": "nixos-images", - "type": "github" - } - }, - "nixos-mailserver": { - "inputs": { - "blobs": "blobs", - "flake-compat": "flake-compat_5", - "git-hooks": "git-hooks", - "nixpkgs": [ - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1781892035, - "narHash": "sha256-e46EhlHo0jupcYCLE4QJRitd3+y+RgIQYNcfcCdLbKg=", - "owner": "simple-nixos-mailserver", - "repo": "nixos-mailserver", - "rev": "c37fd9c40877450716692b6478e6dda330dfc46a", - "type": "gitlab" - }, - "original": { - "owner": "simple-nixos-mailserver", - "repo": "nixos-mailserver", - "type": "gitlab" - } - }, - "nixos-raspberrypi": { - "inputs": { - "argononed": "argononed", - "flake-compat": "flake-compat_6", - "nixos-images": [ - "nixos-images" - ], - "nixpkgs": [ - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1779023229, - "narHash": "sha256-MInilg7B/06c34SwOuGSBho4l0H1EZcmvxTkSWCs5pE=", - "owner": "nvmd", - "repo": "nixos-raspberrypi", - "rev": "06c6e3513e1ee64b651913193fc6ac38aa4963f5", - "type": "github" - }, - "original": { - "owner": "nvmd", - "ref": "main", - "repo": "nixos-raspberrypi", - "type": "github" - } - }, - "nixos-wsl": { - "inputs": { - "flake-compat": "flake-compat_7", - "nixpkgs": [ - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1781182279, - "narHash": "sha256-V5EQQbDnmdiXGQXrEF1PEL7QYsFqfH8N1E89Z5ONwFk=", - "owner": "nix-community", - "repo": "NixOS-WSL", - "rev": "5675822ba756e6e56f8f6a5a76e90e0da2ece94d", - "type": "github" - }, - "original": { - "owner": "nix-community", - "ref": "main", - "repo": "NixOS-WSL", - "type": "github" - } - }, - "nixpkgs": { - "locked": { - "lastModified": 1774386573, - "narHash": "sha256-4hAV26quOxdC6iyG7kYaZcM3VOskcPUrdCQd/nx8obc=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "46db2e09e1d3f113a13c0d7b81e2f221c63b8ce9", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-nixcord": { - "locked": { - "lastModified": 1781216227, - "narHash": "sha256-9mUW6gNwoN2SWc/l0fW4svPNOulXLl8ijqKyeSOGgJE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "a0374025a863d007d98e3297f6aa46cc3141c2f0", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-26.05", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-nvmd": { - "locked": { - "lastModified": 1771867432, - "narHash": "sha256-KOb/xJgNRoUDD7y42/lh2a1+akUQ7OYuBdwX/CZevFY=", - "owner": "nvmd", - "repo": "nixpkgs", - "rev": "2597cb7e564b9004c9d3182afb29b37ae842411a", - "type": "github" - }, - "original": { - "owner": "nvmd", - "ref": "modules-with-keys-25.11", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-stable": { - "locked": { - "lastModified": 1781216227, - "narHash": "sha256-9mUW6gNwoN2SWc/l0fW4svPNOulXLl8ijqKyeSOGgJE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "a0374025a863d007d98e3297f6aa46cc3141c2f0", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-26.05", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-stable_2": { - "locked": { - "lastModified": 1782535326, - "narHash": "sha256-ZeRxu4yn6shd3SNF5ZUQb4r7BaVo1zBKMjRhfoNSBmw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "714a5f8c4ead6b31148d829288440ed033ccc041", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-26.05", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-stable_3": { - "locked": { - "lastModified": 1782498288, - "narHash": "sha256-8/X3yyTXiE82b38n32ItbOqfWOVBl+gKa8fILyZfR4Q=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "3cac626ec5e3703e835f227687e88aa9e2f25701", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-25.11", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_2": { - "locked": { - "lastModified": 1767364772, - "narHash": "sha256-fFUnEYMla8b7UKjijLnMe+oVFOz6HjijGGNS1l7dYaQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "16c7794d0a28b5a37904d55bcca36003b9109aaa", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_3": { - "locked": { - "lastModified": 1782636521, - "narHash": "sha256-OG8laCOGtkxlB1JH3XqOnXxnkGJme4mQdXo5hkhCQIY=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "e1c1b84752fb0897897380a3cae9dc7fcab91ca3", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_4": { - "locked": { - "lastModified": 1778869304, - "narHash": "sha256-30sZNZoA1cqF5JNO9fVX+wgiQYjB7HJqqJ4ztCDeBZE=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "d233902339c02a9c334e7e593de68855ad26c4cb", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_5": { - "locked": { - "lastModified": 1767364772, - "narHash": "sha256-fFUnEYMla8b7UKjijLnMe+oVFOz6HjijGGNS1l7dYaQ=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "16c7794d0a28b5a37904d55bcca36003b9109aaa", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixvim": { - "inputs": { - "flake-parts": [ - "flake-parts" - ], - "nixpkgs": [ - "nixpkgs" - ], - "systems": "systems_3" - }, - "locked": { - "lastModified": 1782254890, - "narHash": "sha256-kjsEECqhpPnJWqhooXp6tWh2qGQftCPAo2G1GvZtKdw=", - "owner": "nix-community", - "repo": "nixvim", - "rev": "dbf9550dba8448b03e11d58e5695d6c44a464554", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "nixvim", - "type": "github" - } - }, - "nur": { - "inputs": { - "flake-parts": [ - "flake-parts" - ], - "nixpkgs": [ - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1782697154, - "narHash": "sha256-4mMY48QI8Ztw+eZAdPrY5xfAbjttZJE546aaXHGRqeE=", - "owner": "nix-community", - "repo": "NUR", - "rev": "ad01fab87df3f1addd0f78e4c8d14458ebaab6e0", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "NUR", - "type": "github" - } - }, - "nvfetcher": { - "inputs": { - "flake-compat": "flake-compat_8", - "flake-utils": "flake-utils_2", - "nixpkgs": [ - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1773379327, - "narHash": "sha256-Bj1ZaZVKTGyTOwwkp7TvAG0wxK9AAn717G/C8HnKFQM=", - "owner": "berberman", - "repo": "nvfetcher", - "rev": "e41af9779ea14adf1d8c3edb075713c2668d45b9", - "type": "github" - }, - "original": { - "owner": "berberman", - "repo": "nvfetcher", - "type": "github" - } - }, - "op-shell-plugins": { - "inputs": { - "nixpkgs": [ - "nixpkgs" - ], - "systems": "systems_5" - }, - "locked": { - "lastModified": 1782340892, - "narHash": "sha256-wQ+HccO8BfcKhu4P4M6+zeSghu8CnmCE1toBrcDLnXk=", - "owner": "1Password", - "repo": "shell-plugins", - "rev": "3862aad14fad65a44025a9101790a19c4291703d", - "type": "github" - }, - "original": { - "owner": "1Password", - "repo": "shell-plugins", - "type": "github" - } - }, - "pre-commit-hooks": { - "inputs": { - "flake-compat": "flake-compat", - "gitignore": "gitignore", - "nixpkgs": [ - "agenix-rekey", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1735882644, - "narHash": "sha256-3FZAG+pGt3OElQjesCAWeMkQ7C/nB1oTHLRQ8ceP110=", - "owner": "cachix", - "repo": "pre-commit-hooks.nix", - "rev": "a5a961387e75ae44cc20f0a57ae463da5e959656", - "type": "github" - }, - "original": { - "owner": "cachix", - "repo": "pre-commit-hooks.nix", - "type": "github" - } - }, - "qmd": { - "inputs": { - "flake-utils": [ - "nix-openclaw", - "flake-utils" - ], - "nixpkgs": [ - "nix-openclaw", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1775429264, - "narHash": "sha256-bqIVaNRTa8H5vrw3RwsD7QdtTa0xNvRuEVzlzE1hIBQ=", - "owner": "tobi", - "repo": "qmd", - "rev": "65cd1b3fd02891d1ee0eefa751620918664fa321", - "type": "github" - }, - "original": { - "owner": "tobi", - "ref": "v2.1.0", - "repo": "qmd", - "type": "github" - } - }, - "rift": { - "inputs": { - "crane": [ - "crane" - ], - "flake-parts": [ - "flake-parts" - ], - "mk-shell-bin": "mk-shell-bin", - "nix2container": "nix2container", - "nixpkgs": [ - "nixpkgs" - ], - "rust-flake": "rust-flake", - "treefmt-nix": "treefmt-nix_2" - }, - "locked": { - "lastModified": 1782290283, - "narHash": "sha256-TI7V6FxYxPHB2y2Zqc8jti7knzr21L4nQh3N5qAdEho=", - "owner": "auscyber", - "repo": "rift", - "rev": "b7e69e4cef27ed835a88ff58ec6b276de91e6885", - "type": "github" - }, - "original": { - "owner": "auscyber", - "repo": "rift", - "type": "github" - } - }, - "root": { - "inputs": { - "age-plugin-gpg": "age-plugin-gpg", - "agenix": "agenix", - "agenix-rekey": "agenix-rekey", - "arion": "arion", - "celler": "celler", - "crane": "crane", - "darwin": "darwin", - "den": "den", - "den-diagram": "den-diagram", - "devshell": "devshell", - "emacs": "emacs", - "flake-compat": "flake-compat_3", - "flake-file": "flake-file", - "flake-parts": "flake-parts", - "home-manager": "home-manager", - "homebrew-cask": "homebrew-cask", - "homebrew-core": "homebrew-core", - "homebrew-speedtest": "homebrew-speedtest", - "homebrew-typewhisper": "homebrew-typewhisper", - "impermanence": "impermanence", - "import-tree": "import-tree", - "my-nur": "my-nur", - "nh": "nh", - "niri": "niri", - "nix-flatpak": "nix-flatpak", - "nix-homebrew": "nix-homebrew", - "nix-openclaw": "nix-openclaw", - "nixcord": "nixcord", - "nixos-hardware": "nixos-hardware", - "nixos-images": "nixos-images", - "nixos-mailserver": "nixos-mailserver", - "nixos-raspberrypi": "nixos-raspberrypi", - "nixos-wsl": "nixos-wsl", - "nixpkgs": "nixpkgs_3", - "nixpkgs-nvmd": "nixpkgs-nvmd", - "nixvim": "nixvim", - "nur": "nur", - "nvfetcher": "nvfetcher", - "op-shell-plugins": "op-shell-plugins", - "rift": "rift", - "rust-overlay": "rust-overlay_2", - "stylix": "stylix", - "zen-browser": "zen-browser" - } - }, - "rust-analyzer-src": { - "flake": false, - "locked": { - "lastModified": 1774569884, - "narHash": "sha256-E8iWEPzg7OnE0XXXjo75CX7xFauqzJuGZ5wSO9KS8Ek=", - "owner": "rust-lang", - "repo": "rust-analyzer", - "rev": "443ddcddd0c73b07b799d052f5ef3b448c2f3508", - "type": "github" - }, - "original": { - "owner": "rust-lang", - "ref": "nightly", - "repo": "rust-analyzer", - "type": "github" - } - }, - "rust-flake": { - "inputs": { - "crane": "crane_2", - "nixpkgs": "nixpkgs_4", - "rust-overlay": "rust-overlay" - }, - "locked": { - "lastModified": 1779033734, - "narHash": "sha256-PZeFIGm4o46yg1u4yM6pCMlEUwk8ACNP7a8OpmD8L00=", - "owner": "juspay", - "repo": "rust-flake", - "rev": "21bd4a4ce27024bb247a2f93727f59609fc78b44", - "type": "github" - }, - "original": { - "owner": "juspay", - "repo": "rust-flake", - "type": "github" - } - }, - "rust-overlay": { - "inputs": { - "nixpkgs": [ - "rift", - "rust-flake", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1778901358, - "narHash": "sha256-n35a8GOPs8zi35GXPe4uBz0Y8xseTkQpNgcrq81gPg0=", - "owner": "oxalica", - "repo": "rust-overlay", - "rev": "61ec6a4fc56fe0c2b863f7b3eaba07b6664697d9", - "type": "github" - }, - "original": { - "owner": "oxalica", - "repo": "rust-overlay", - "type": "github" - } - }, - "rust-overlay_2": { - "inputs": { - "nixpkgs": [ - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1782616745, - "narHash": "sha256-NN5B1cKBXF6h1Ec681gMGZ2o/99d7vKXAAfFNEvyOKA=", - "owner": "oxalica", - "repo": "rust-overlay", - "rev": "b916d014dc57eb555f84e51172a82f7f6fb560d7", - "type": "github" - }, - "original": { - "owner": "oxalica", - "repo": "rust-overlay", - "type": "github" - } - }, - "shelly": { - "locked": { - "lastModified": 1756323923, - "owner": "CertainLach", - "repo": "shelly", - "rev": "b5dd29a500db04f54a9f1c2bf81cdd84df8b0cd7", - "type": "github" - }, - "original": { - "owner": "CertainLach", - "repo": "shelly", - "type": "github" - } - }, - "stylix": { - "inputs": { - "base16": "base16", - "base16-fish": "base16-fish", - "base16-helix": "base16-helix", - "base16-vim": "base16-vim", - "firefox-gnome-theme": "firefox-gnome-theme", - "flake-parts": [ - "flake-parts" - ], - "gnome-shell": "gnome-shell", - "nixpkgs": [ - "nixpkgs" - ], - "nur": [ - "nur" - ], - "systems": "systems_6", - "tinted-kitty": "tinted-kitty", - "tinted-schemes": "tinted-schemes", - "tinted-tmux": "tinted-tmux", - "tinted-zed": "tinted-zed" - }, - "locked": { - "lastModified": 1782658900, - "narHash": "sha256-/s51VbBRGLH1NSjJ3AGhOGG8BXH/Jo+5JWMmaa2n+Jk=", - "owner": "nix-community", - "repo": "stylix", - "rev": "1fbdd38c16645731b2bdc4f70170765f725a3735", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "stylix", - "type": "github" - } - }, - "systems": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "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": 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" - } - }, - "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" - } - }, - "systems_5": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } - }, - "systems_6": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } - }, - "tinted-kitty": { - "flake": false, - "locked": { - "lastModified": 1735730497, - "narHash": "sha256-4KtB+FiUzIeK/4aHCKce3V9HwRvYaxX+F1edUrfgzb8=", - "owner": "tinted-theming", - "repo": "tinted-kitty", - "rev": "de6f888497f2c6b2279361bfc790f164bfd0f3fa", - "type": "github" - }, - "original": { - "owner": "tinted-theming", - "repo": "tinted-kitty", - "type": "github" - } - }, - "tinted-schemes": { - "flake": false, - "locked": { - "lastModified": 1777806186, - "narHash": "sha256-PDF0/wObw4nIsSBeXVYLsloXOiphXCgIdsrNcVXguKs=", - "owner": "tinted-theming", - "repo": "schemes", - "rev": "0c94645546f4f3ddac77a1a5fce54eb95bf50795", - "type": "github" - }, - "original": { - "owner": "tinted-theming", - "repo": "schemes", - "type": "github" - } - }, - "tinted-tmux": { - "flake": false, - "locked": { - "lastModified": 1778379944, - "narHash": "sha256-wPDFzMGSlARlw0Sfsn48Q2+jPSfk6N0Ng6BC/d+7Q24=", - "owner": "tinted-theming", - "repo": "tinted-tmux", - "rev": "fe0203a198690e71a5ff11e08812a4673de3678d", - "type": "github" - }, - "original": { - "owner": "tinted-theming", - "repo": "tinted-tmux", - "type": "github" - } - }, - "tinted-zed": { - "flake": false, - "locked": { - "lastModified": 1778378178, - "narHash": "sha256-OXPXRIQgGwV77HjYRryOHguh4ALX96jkg+tseLkGgHA=", - "owner": "tinted-theming", - "repo": "base16-zed", - "rev": "9cd816033ff969415b190722cddf134e78a5665f", - "type": "github" - }, - "original": { - "owner": "tinted-theming", - "repo": "base16-zed", - "type": "github" - } - }, - "treefmt-nix": { - "inputs": { - "nixpkgs": [ - "agenix-rekey", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1735135567, - "narHash": "sha256-8T3K5amndEavxnludPyfj3Z1IkcFdRpR23q+T0BVeZE=", - "owner": "numtide", - "repo": "treefmt-nix", - "rev": "9e09d30a644c57257715902efbb3adc56c79cf28", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "treefmt-nix", - "type": "github" - } - }, - "treefmt-nix_2": { - "inputs": { - "nixpkgs": "nixpkgs_5" - }, - "locked": { - "lastModified": 1768158989, - "narHash": "sha256-67vyT1+xClLldnumAzCTBvU0jLZ1YBcf4vANRWP3+Ak=", - "owner": "numtide", - "repo": "treefmt-nix", - "rev": "e96d59dff5c0d7fddb9d113ba108f03c3ef99eca", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "treefmt-nix", - "type": "github" - } - }, - "xwayland-satellite-stable": { - "flake": false, - "locked": { - "lastModified": 1755491097, - "narHash": "sha256-m+9tUfsmBeF2Gn4HWa6vSITZ4Gz1eA1F5Kh62B0N4oE=", - "owner": "Supreeeme", - "repo": "xwayland-satellite", - "rev": "388d291e82ffbc73be18169d39470f340707edaa", - "type": "github" - }, - "original": { - "owner": "Supreeeme", - "ref": "v0.7", - "repo": "xwayland-satellite", - "type": "github" - } - }, - "xwayland-satellite-unstable": { - "flake": false, - "locked": { - "lastModified": 1781226823, - "narHash": "sha256-28696iIw8uE0ZUyFTtzhEM8xMh85clCYypMxkvUi+sc=", - "owner": "Supreeeme", - "repo": "xwayland-satellite", - "rev": "8575d0ef55d70f9b4c46b6bffb3accf912217e1e", - "type": "github" - }, - "original": { - "owner": "Supreeeme", - "repo": "xwayland-satellite", - "type": "github" - } - }, - "zen-browser": { - "inputs": { - "home-manager": [ - "home-manager" - ], - "nixpkgs": [ - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1782623843, - "narHash": "sha256-zQdTvI8jcVfblsrWafw1ykTnCVoV94ttxb5e6drwVaI=", - "owner": "0xc000022070", - "repo": "zen-browser-flake", - "rev": "c59e57b9c6ea4c86f9f3b7efc92db3cbd305d078", - "type": "github" - }, - "original": { - "owner": "0xc000022070", - "repo": "zen-browser-flake", - "type": "github" - } - } - }, - "root": "root", - "version": 7 -} diff --git a/flake.nix b/flake.nix deleted file mode 100644 index 25fe684db..000000000 --- a/flake.nix +++ /dev/null @@ -1,290 +0,0 @@ -# _ -# __ _ _ _ ___ ___ _ _| |__ ___ _ __ -# / _` | | | / __|/ __| | | | '_ \ / _ \ '__| -#| (_| | |_| \__ \ (__| |_| | |_) | __/ | -# \__,_|\__,_|___/\___|\__, |_.__/ \___|_| -# |___/ -# This file is generated by the `write-flake` script. To make changes, edit the source files in `aspects/modules/` and run `nix run .#write-flake`. -{ - outputs = - inputs: - let - # Flake-LEVEL input overrides. ./patched-inputs.nix returns an attrset - # that is merged over `inputs`, so the result is what every module - # (and flake-level import) sees as `inputs`. Patched sources are built - # with the pinned system below; empty patched-inputs.nix is a no-op - # (pkgs is only forced when an override actually uses it). - imports = - with inputs.nixpkgs.lib; - ./aspects - |> fileset.fileFilter (file: file.hasExt "nix" && !hasPrefix "_" file.name) - |> fileset.toList; - - inputsFn = - finalInputs: - inputs.flake-parts.lib.mkFlake - { - inputs = finalInputs; - specialArgs = { - realInputs = inputs; - lib = inputs.nixpkgs.lib; - }; - } - { - # Import all *.nix files in the ./aspects directory - # Except ones that start with '_' - inherit imports; - - _module.args.rootPath = ./.; - }; - output = - let - patchedInputs = (inputsFn inputs).newInputs; - in - inputsFn (patchedInputs); - in - builtins.removeAttrs output [ "newInputs" ]; - - nixConfig = { - extra-substituters = [ - "https://cache.nixos.org" - "https://devenv.cachix.org" - "https://nix-community.cachix.org" - ]; - extra-trusted-public-keys = [ - "cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=" - "devenv.cachix.org-1:w1cLUi8dv3hnoSPGAuibQv+f9TZLr6cv/Hm9XgU50cw=" - "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=" - ]; - }; - - inputs = { - age-plugin-gpg = { - url = "github:certainlach/age-plugin-gpg"; - inputs = { - crane.follows = "crane"; - flake-parts.follows = "flake-parts"; - nixpkgs.follows = "nixpkgs"; - rust-overlay.follows = "rust-overlay"; - }; - }; - agenix = { - url = "github:ryantm/agenix"; - inputs = { - darwin.follows = "darwin"; - home-manager.follows = "home-manager"; - nixpkgs.follows = "nixpkgs"; - }; - }; - agenix-rekey = { - url = "github:oddlama/agenix-rekey"; - inputs = { - devshell.follows = "devshell"; - flake-parts.follows = "flake-parts"; - nixpkgs.follows = "nixpkgs"; - }; - }; - arion = { - url = "github:hercules-ci/arion"; - inputs = { - flake-parts.follows = "flake-parts"; - nixpkgs.follows = "nixpkgs"; - }; - }; - celler = { - url = "github:blitz/celler/main"; - inputs = { - crane.follows = "crane"; - flake-parts.follows = "flake-parts"; - nixpkgs.follows = "nixpkgs"; - }; - }; - crane = { - url = "github:ipetkov/crane"; - inputs = { }; - }; - darwin = { - url = "github:nix-darwin/nix-darwin"; - inputs.nixpkgs.follows = "nixpkgs"; - }; - den = { - url = "github:denful/den/latest"; - inputs = { }; - }; - den-diagram = { - url = "github:denful/den-diagram"; - inputs.nixpkgs.follows = "nixpkgs"; - }; - devshell = { - url = "github:numtide/devshell"; - inputs.nixpkgs.follows = "nixpkgs"; - }; - emacs = { - url = "github:nix-community/emacs-overlay"; - inputs.nixpkgs.follows = "nixpkgs"; - }; - flake-compat = { - url = "github:nixos/flake-compat"; - flake = false; - }; - flake-file = { - url = "github:denful/flake-file"; - inputs = { }; - }; - flake-parts = { - url = "github:hercules-ci/flake-parts"; - inputs.nixpkgs-lib.follows = "nixpkgs"; - }; - home-manager = { - url = "github:nix-community/home-manager"; - inputs.nixpkgs.follows = "nixpkgs"; - }; - homebrew-cask = { - url = "github:homebrew/homebrew-cask"; - flake = false; - }; - homebrew-core = { - url = "github:homebrew/homebrew-core"; - flake = false; - }; - homebrew-speedtest = { - url = "github:teamookla/homebrew-speedtest"; - flake = false; - }; - homebrew-typewhisper = { - url = "github:typewhisper/homebrew-tap"; - flake = false; - }; - impermanence = { - url = "github:nix-community/impermanence"; - inputs = { - home-manager.follows = "home-manager"; - nixpkgs.follows = "nixpkgs"; - }; - }; - import-tree = { - url = "github:vic/import-tree"; - inputs = { }; - }; - my-nur = { - url = "github:auscyber/nur-packages"; - inputs = { - nixpkgs.follows = "nixpkgs"; - nvfetcher.follows = "nvfetcher"; - }; - }; - nh = { - url = "github:nix-community/nh"; - inputs.nixpkgs.follows = "nixpkgs"; - }; - niri = { - url = "github:sodiboo/niri-flake"; - inputs.nixpkgs.follows = "nixpkgs"; - }; - nix-flatpak = { - url = "github:gmodena/nix-flatpak/"; - inputs = { }; - }; - nix-homebrew = { - url = "github:zhaofengli/nix-homebrew"; - inputs = { }; - }; - nix-openclaw = { - url = "github:openclaw/nix-openclaw"; - inputs = { - home-manager.follows = "home-manager"; - nixpkgs.follows = "nixpkgs"; - }; - }; - nixcord = { - url = "github:kaylorben/nixcord"; - inputs = { - flake-parts.follows = "flake-parts"; - nixpkgs.follows = "nixpkgs"; - }; - }; - nixos-hardware = { - url = "github:NixOS/nixos-hardware"; - inputs.nixpkgs.follows = "nixpkgs"; - }; - nixos-images = { - url = "github:nvmd/nixos-images/sdimage-installer"; - inputs = { - nixos-stable.follows = "nixpkgs-nvmd"; - nixos-unstable.follows = "nixpkgs-nvmd"; - }; - }; - nixos-mailserver = { - url = "gitlab:simple-nixos-mailserver/nixos-mailserver"; - inputs.nixpkgs.follows = "nixpkgs"; - }; - nixos-raspberrypi = { - url = "github:nvmd/nixos-raspberrypi/main"; - inputs = { - nixos-images.follows = "nixos-images"; - nixpkgs.follows = "nixpkgs"; - }; - }; - nixos-wsl = { - url = "github:nix-community/NixOS-WSL/main"; - inputs.nixpkgs.follows = "nixpkgs"; - }; - nixpkgs = { - url = "github:nixos/nixpkgs?ref=nixpkgs-unstable"; - inputs = { }; - }; - nixpkgs-nvmd = { - url = "github:nvmd/nixpkgs/modules-with-keys-25.11"; - inputs = { }; - }; - nixvim = { - url = "github:nix-community/nixvim"; - inputs = { - flake-parts.follows = "flake-parts"; - nixpkgs.follows = "nixpkgs"; - }; - }; - nur = { - url = "github:nix-community/NUR"; - inputs = { - flake-parts.follows = "flake-parts"; - nixpkgs.follows = "nixpkgs"; - }; - }; - nvfetcher = { - url = "github:berberman/nvfetcher"; - inputs.nixpkgs.follows = "nixpkgs"; - }; - op-shell-plugins = { - url = "github:1Password/shell-plugins"; - inputs.nixpkgs.follows = "nixpkgs"; - }; - rift = { - url = "github:auscyber/rift"; - inputs = { - crane.follows = "crane"; - flake-parts.follows = "flake-parts"; - nixpkgs.follows = "nixpkgs"; - }; - }; - rust-overlay = { - url = "github:oxalica/rust-overlay"; - inputs.nixpkgs.follows = "nixpkgs"; - }; - stylix = { - url = "github:nix-community/stylix"; - inputs = { - flake-parts.follows = "flake-parts"; - nixpkgs.follows = "nixpkgs"; - nur.follows = "nur"; - }; - }; - zen-browser = { - url = "github:0xc000022070/zen-browser-flake"; - inputs = { - home-manager.follows = "home-manager"; - nixpkgs.follows = "nixpkgs"; - }; - }; - }; -} diff --git a/hm/arch.nix b/hm/arch.nix new file mode 100755 index 000000000..fbbd5e86f --- /dev/null +++ b/hm/arch.nix @@ -0,0 +1,22 @@ +{ config +, pkgs +, system +, lib +, ... +}: +{ + targets.genericLinux.enable = true; + home.packages = with pkgs; [ + discord + prismlauncher + # rnix-lsp + (polybar.override { + pulseSupport = true; + iwSupport = true; + githubSupport = true; + }) + gnome.gnome-mines + #google-chrome + + ]; +} diff --git a/hm/default.nix b/hm/default.nix new file mode 100755 index 000000000..3e878e228 --- /dev/null +++ b/hm/default.nix @@ -0,0 +1,108 @@ +{ config +, pkgs +, system +, lib +, modulesPath +, ... +}: +{ + config = { + home.stateVersion = "23.11"; + nix = { + # package = pkgs.nixVersions.latest; + settings = { + experimental-features = [ + "nix-command" + "flakes" + ]; + }; + }; + home.shell.enableZshIntegration = true; + manual.manpages.enable = true; + programs.zsh.enable = true; + programs = { + command-not-found.enable = true; + direnv = { + enable = true; + nix-direnv = { + enable = true; + }; + }; + home-manager.enable = true; + + }; + + services.lorri = { + enable = false; + }; + programs.git = { + enable = true; + userName = "Ivy Pierlot"; + userEmail = "ivyp@outlook.com.au"; + }; + programs.eza = { + enable = true; + git = true; + icons = "auto"; + enableZshIntegration = true; + }; + home.packages = with pkgs; [ + devenv + agenix + shellify + ripgrep + nil + nh + vim + nil + neovim + nixfmt-rfc-style + starship + treefmt + coreutils + ]; + home.file = { + ".local/bin/fetch" = { + source = ../fetch; + }; + ".config/nvim" = { + source = ../.config/nvim; + recursive = true; + }; + ".config/wezterm" = { + source = ../.config/wezterm; + recursive = true; + }; + ".config/wezterm/lume.lua" = { + source = ../libs/lume.lua; + }; + ".config/wezterm/fennel.lua" = { + source = ../libs/fennel.lua; + }; + ".config/starship.toml" = { + source = ../.config/starship.toml; + }; + + }; + xdg.configFile."nvim/lua/compiler.lua".text = '' + return "${pkgs.stdenv.cc}/bin/cc" + ''; + + }; + options = with lib; { + packagenames = mkOption { + type = types.str; + default = " + "; + }; + packagecount = mkOption { + type = types.int; + default = 0; + description = " + package + count + "; + }; + }; + +} diff --git a/hm/doom.d/config.el b/hm/doom.d/config.el new file mode 100755 index 000000000..756000385 --- /dev/null +++ b/hm/doom.d/config.el @@ -0,0 +1,54 @@ +;;; $DOOMDIR/config.el -*- lexical-binding: t; -*- + +;; Place your private configuration here! Remember, you do not need to run 'doom +;; sync' after modifying this file! + + +;; Some functionality uses this to identify you, e.g. GPG configuration, email +;; clients, file templates and snippets. +(setq user-full-name "John Doe" + user-mail-address "john@doe.com") + +;; Doom exposes five (optional) variables for controlling fonts in Doom. Here +;; are the three important ones: +;; +;; + `doom-font' +;; + `doom-variable-pitch-font' +;; + `doom-big-font' -- used for `doom-big-font-mode'; use this for +;; presentations or streaming. +;; +;; They all accept either a font-spec, font string ("Input Mono-12"), or xlfd +;; font string. You generally only need these two: +;; (setq doom-font (font-spec :family "monospace" :size 12 :weight 'semi-light) +;; doom-variable-pitch-font (font-spec :family "sans" :size 13)) + +;; There are two ways to load a theme. Both assume the theme is installed and +;; available. You can either set `doom-theme' or manually load a theme with the +;; `load-theme' function. This is the default: +(setq doom-theme 'doom-one) + +;; If you use `org' and don't want your org files in the default location below, +;; change `org-directory'. It must be set before org loads! +(setq org-directory "~/org/") + +;; This determines the style of line numbers in effect. If set to `nil', line +;; numbers are disabled. For relative line numbers, set this to `relative'. +(setq display-line-numbers-type t) + + +;; Here are some additional functions/macros that could help you configure Doom: +;; +;; - `load!' for loading external *.el files relative to this one +;; - `use-package!' for configuring packages +;; - `after!' for running code after a package has loaded +;; - `add-load-path!' for adding directories to the `load-path', relative to +;; this file. Emacs searches the `load-path' when you load packages with +;; `require' or `use-package'. +;; - `map!' for binding new keys +;; +;; To get information about any of these functions/macros, move the cursor over +;; the highlighted symbol at press 'K' (non-evil users must press 'C-c c k'). +;; This will open documentation for it, including demos of how they are used. +;; +;; You can also try 'gd' (or 'C-c c d') to jump to their definition and see how +;; they are implemented. diff --git a/hm/doom.d/init.el b/hm/doom.d/init.el new file mode 100755 index 000000000..dee61b058 --- /dev/null +++ b/hm/doom.d/init.el @@ -0,0 +1,190 @@ +;;; init.el -*- lexical-binding: t; -*- + +;; This file controls what Doom modules are enabled and what order they load +;; in. Remember to run 'doom sync' after modifying it! + +;; NOTE Press 'SPC h d h' (or 'C-h d h' for non-vim users) to access Doom's +;; documentation. There you'll find a "Module Index" link where you'll find +;; a comprehensive list of Doom's modules and what flags they support. + +;; NOTE Move your cursor over a module's name (or its flags) and press 'K' (or +;; 'C-c c k' for non-vim users) to view its documentation. This works on +;; flags as well (those symbols that start with a plus). +;; +;; Alternatively, press 'gd' (or 'C-c c d') on a module to browse its +;; directory (for easy access to its source code). + +(doom! :input + ;;chinese + ;;japanese + ;;layout ; auie,ctsrnm is the superior home row + + :completion + company ; the ultimate code completion backend + ;;helm ; the *other* search engine for love and life + ido ; the other *other* search engine... + ;;ivy ; a search engine for love and life + vertico ; the search engine of the future + + :ui + ;;deft ; notational velocity for Emacs + doom ; what makes DOOM look the way it does + doom-dashboard ; a nifty splash screen for Emacs + doom-quit ; DOOM quit-message prompts when you quit Emacs + ;;(emoji +unicode) ; 🙂 + hl-todo ; highlight TODO/FIXME/NOTE/DEPRECATED/HACK/REVIEW + ;;hydra + indent-guides ; highlighted indent columns + ligatures ; ligatures and symbols to make your code pretty again + ;;minimap ; show a map of the code on the side + modeline ; snazzy, Atom-inspired modeline, plus API + ;;nav-flash ; blink cursor line after big motions + ;;neotree ; a project drawer, like NERDTree for vim + ophints ; highlight the region an operation acts on + (popup +defaults) ; tame sudden yet inevitable temporary windows + ;;tabs ; a tab bar for Emacs + ;;treemacs ; a project drawer, like neotree but cooler + ;;unicode ; extended unicode support for various languages + vc-gutter ; vcs diff in the fringe + vi-tilde-fringe ; fringe tildes to mark beyond EOB + ;;window-select ; visually switch windows + workspaces ; tab emulation, persistence & separate workspaces + ;;zen ; distraction-free coding or writing + + :editor + (evil +everywhere); come to the dark side, we have cookies + file-templates ; auto-snippets for empty files + fold ; (nigh) universal code folding + ;;(format +onsave) ; automated prettiness + ;;god ; run Emacs commands without modifier keys + ;;lispy ; vim for lisp, for people who don't like vim + ;;multiple-cursors ; editing in many places at once + ;;objed ; text object editing for the innocent + parinfer ; turn lisp into python, sort of + ;;rotate-text ; cycle region at point between text candidates + snippets ; my elves. They type so I don't have to + ;;word-wrap ; soft wrapping with language-aware indent + + :emacs + dired ; making dired pretty [functional] + electric ; smarter, keyword-based electric-indent + ;;ibuffer ; interactive buffer management + undo ; persistent, smarter undo for your inevitable mistakes + vc ; version-control and Emacs, sitting in a tree + + :term + ;;eshell ; the elisp shell that works everywhere + ;;shell ; simple shell REPL for Emacs + ;;term ; basic terminal emulator for Emacs + vterm ; the best terminal emulation in Emacs + + :checkers + syntax ; tasing you for every semicolon you forget + (spell +flyspell) ; tasing you for misspelling mispelling + grammar ; tasing grammar mistake every you make + + :tools + ;;ansible + ;;biblio ; Writes a PhD for you (citation needed) + ;;debugger ; FIXME stepping through code, to help you add bugs + direnv + ;;docker + ;;editorconfig ; let someone else argue about tabs vs spaces + ;;ein ; tame Jupyter notebooks with emacs + (eval +overlay) ; run code, run (also, repls) + ;;gist ; interacting with github gists + lookup ; navigate your code and its documentation + lsp ; M-x vscode + magit ; a git porcelain for Emacs + ;;make ; run make tasks from Emacs + ;;pass ; password manager for nerds + ;;pdf ; pdf enhancements + ;;prodigy ; FIXME managing external services & code builders + ;;rgb ; creating color strings + ;;taskrunner ; taskrunner for all your projects + ;;terraform ; infrastructure as code + ;;tmux ; an API for interacting with tmux + ;;upload ; map local to remote projects via ssh/ftp + + :os + (:if IS-MAC macos) ; improve compatibility with macOS + ;;tty ; improve the terminal Emacs experience + + :lang + agda ; types of types of types of types... + ;;beancount ; mind the GAAP + ;;cc ; C > C++ == 1 + ;;clojure ; java with a lisp + ;;common-lisp ; if you've seen one lisp, you've seen them all + ;;coq ; proofs-as-programs + ;;crystal ; ruby at the speed of c + ;;csharp ; unity, .NET, and mono shenanigans + ;;data ; config/data formats + ;;(dart +flutter) ; paint ui and not much else + ;;dhall + ;;elixir ; erlang done right + ;;elm ; care for a cup of TEA? + emacs-lisp ; drown in parentheses + ;;erlang ; an elegant language for a more civilized age + ;;ess ; emacs speaks statistics + ;;factor + ;;faust ; dsp, but you get to keep your soul + ;;fsharp ; ML stands for Microsoft's Language + ;;fstar ; (dependent) types and (monadic) effects and Z3 + ;;gdscript ; the language you waited for + ;;(go +lsp) ; the hipster dialect + (haskell +lsp) ; a language that's lazier than I am + ;;hy ; readability of scheme w/ speed of python + idris ; a language you can depend on + ;;json ; At least it ain't XML + ;;(java +meghanada) ; the poster child for carpal tunnel syndrome + ;;javascript ; all(hope(abandon(ye(who(enter(here)))))) + ;;julia ; a better, faster MATLAB + ;;kotlin ; a better, slicker Java(Script) + ;;latex ; writing papers in Emacs has never been so fun + ;;lean ; for folks with too much to prove + ;;ledger ; be audit you can be + lua ; one-based indices? one-based indices + markdown ; writing docs for people to ignore + ;;nim ; python + lisp at the speed of c + nix ; I hereby declare "nix geht mehr!" + ;;ocaml ; an objective camel + org ; organize your plain life in plain text + ;;php ; perl's insecure younger brother + ;;plantuml ; diagrams for confusing people more + ;;purescript ; javascript, but functional + ;;python ; beautiful is better than ugly + ;;qt ; the 'cutest' gui framework ever + ;;racket ; a DSL for DSLs + ;;raku ; the artist formerly known as perl6 + ;;rest ; Emacs as a REST client + ;;rst ; ReST in peace + ;;(ruby +rails) ; 1.step {|i| p "Ruby is #{i.even? ? 'love' : 'life'}"} + rust ; Fe2O3.unwrap().unwrap().unwrap().unwrap() + ;;scala ; java, but good + ;;(scheme +guile) ; a fully conniving family of lisps + sh ; she sells {ba,z,fi}sh shells on the C xor + ;;sml + ;;solidity ; do you need a blockchain? No. + ;;swift ; who asked for emoji variables? + ;;terra ; Earth and Moon in alignment for performance. + ;;web ; the tubes + ;;yaml ; JSON, but readable + ;;zig ; C, but simpler + + :email + (mu4e +org +gmail) + ;;notmuch + ;;(wanderlust +gmail) + + :app + calendar + ;;emms + ;;everywhere ; *leave* Emacs!? You must be joking + ;;irc ; how neckbeards socialize + ;;(rss +org) ; emacs as an RSS reader + ;;twitter ; twitter client https://twitter.com/vnought + + :config + ;;literate + (default +bindings +smartparens)) diff --git a/hm/doom.d/packages.el b/hm/doom.d/packages.el new file mode 100755 index 000000000..b80e9cce2 --- /dev/null +++ b/hm/doom.d/packages.el @@ -0,0 +1,50 @@ +;; -*- no-byte-compile: t; -*- +;;; $DOOMDIR/packages.el + +;; To install a package with Doom you must declare them here and run 'doom sync' +;; on the command line, then restart Emacs for the changes to take effect -- or +;; use 'M-x doom/reload'. + + +;; To install SOME-PACKAGE from MELPA, ELPA or emacsmirror: +;(package! some-package) + +;; To install a package directly from a remote git repo, you must specify a +;; `:recipe'. You'll find documentation on what `:recipe' accepts here: +;; https://github.com/raxod502/straight.el#the-recipe-format +;(package! another-package +; :recipe (:host github :repo "username/repo")) + +;; If the package you are trying to install does not contain a PACKAGENAME.el +;; file, or is located in a subdirectory of the repo, you'll need to specify +;; `:files' in the `:recipe': +;(package! this-package +; :recipe (:host github :repo "username/repo" +; :files ("some-file.el" "src/lisp/*.el"))) + +;; If you'd like to disable a package included with Doom, you can do so here +;; with the `:disable' property: +;(package! builtin-package :disable t) + +;; You can override the recipe of a built in package without having to specify +;; all the properties for `:recipe'. These will inherit the rest of its recipe +;; from Doom or MELPA/ELPA/Emacsmirror: +;(package! builtin-package :recipe (:nonrecursive t)) +;(package! builtin-package-2 :recipe (:repo "myfork/package")) + +;; Specify a `:branch' to install a package from a particular branch or tag. +;; This is required for some packages whose default branch isn't 'master' (which +;; our package manager can't deal with; see raxod502/straight.el#279) +;(package! builtin-package :recipe (:branch "develop")) + +;; Use `:pin' to specify a particular commit to install. +;(package! builtin-package :pin "1a2b3c4d5e") + + +;; Doom's packages are pinned to a specific commit and updated from release to +;; release. The `unpin!' macro allows you to unpin single packages... +;(unpin! pinned-package) +;; ...or multiple packages +;(unpin! pinned-package another-pinned-package) +;; ...Or *all* packages (NOT RECOMMENDED; will likely break things) +;(unpin! t) diff --git a/hm/home.nix b/hm/home.nix new file mode 100755 index 000000000..95da550bd --- /dev/null +++ b/hm/home.nix @@ -0,0 +1 @@ +import ./default.nix diff --git a/hm/hyprland.nix b/hm/hyprland.nix new file mode 100644 index 000000000..541641aad --- /dev/null +++ b/hm/hyprland.nix @@ -0,0 +1,6 @@ +{config,pkgs,...}: +{ + programs.kitty.enable = true; # required for the default Hyprland config + wayland.windowManager.hyprland.enable = true; # enable Hyprland + +} diff --git a/hm/install.sh b/hm/install.sh new file mode 100755 index 000000000..218b5cd14 --- /dev/null +++ b/hm/install.sh @@ -0,0 +1,13 @@ +#!/bin/sh +nix () { + nix --experimental-features 'nix-command flakes' $@ +} +set -e +if test -z "$1" +then + echo -e '\033[38;5;160m'Error: '\033[0m'System not supplied! + exit 1 +fi +echo -e '\033[38;5;214m'System: '\033[0m'"$1" +nix build .#homeConfigurations."$1".activationPackage +./result/activate diff --git a/hm/laptop.nix b/hm/laptop.nix new file mode 100755 index 000000000..1a6271eeb --- /dev/null +++ b/hm/laptop.nix @@ -0,0 +1,18 @@ +{ config +, pkgs +, system +, lib +, ... +}: + +{ + targets.genericLinux.enable = true; + home.packages = with pkgs; [ + discord + # rnix-lsp + + gnome-browser-connector + + ]; + +} diff --git a/hm/mac.nix b/hm/mac.nix new file mode 100755 index 000000000..2b9be15f0 --- /dev/null +++ b/hm/mac.nix @@ -0,0 +1,381 @@ +# home.nix + +{ config, pkgs, inputs, ... }: + +{ + + # Home Manager needs a bit of information about you and the paths it should + # manage. + + # This value determines the Home Manager release that your configuration is + # compatible with. This helps avoid breakage when a new Home Manager release + # introduces backwards incompatible changes. + # + # You should not change this value, even if you update Home Manager. If you do + # want to update the value, then make sure to first check the Home Manager + # release notes. + + # The home.packages option allows you to install Nix packages into your + # environment. + # # Adds the 'hello' command to your environment. It prints a friendly + # # "Hello, world!" when run. + # pkgs.hello + + # # It is sometimes useful to fine-tune packages, for example, by applying + # # overrides. You can do that directly here, just don't forget the + # # parentheses. Maybe you want to install Nerd Fonts with a limited number of + # # fonts? + # (pkgs.nerdfonts.override { fonts = [ "FantasqueSansMono" ]; }) + + # # You can also create simple shell scripts directly inside your + # # configuration. For example, this adds a command 'my-hello' to your + # # environment: + # (pkgs.writeShellScriptBin "my-hello" '' + # echo "Hello, ${config.home.username}!" + # '') + # programs.ghostty.package = pkgs.nur.repos.DimitarNestorov.ghostty; + + home.packages = with pkgs; + [ + nodejs + desktoppr + vscode + pandoc + discord + spotify + texliveFull + # wezterm + zotero + gnupg + prismlauncher + virt-manager + mupdf +# (agda.withPackages +# (p: [ +# p.standard-library +# ])) + ]; + # Home Manager is pretty good at managing dotfiles. The primary way to manage + # plain files is through 'home.file'. + home.file = { + # # Building this configuration will create a copy of 'dotfiles/screenrc' in + # # the Nix store. Activating the configuration will then make '~/.screenrc' a + # # symlink to the Nix store copy. + # ".screenrc".source = dotfiles/screenrc; + + # # You can also set the file content immediately. + # ".gradle/gradle.properties".text = '' + # org.gradle.console=verbose + # org.gradle.daemon.idletimeout=3600000 + # ''; + }; + + # You can also manage environment variables but you will have to manually + services.espanso = { + enable = true; + matches = { + french = { + matches = [ + + { + trigger = "e'"; + replace = "é"; + } + + { + trigger = "e`"; + replace = "è"; + } + + { + trigger = "e^"; + replace = "ê"; + } + + { + trigger = "e:"; + replace = "ë"; + } + + { + trigger = "o^"; + replace = "ô"; + } + + { + trigger = "a`"; + replace = "à"; + } + + { + trigger = "a^"; + replace = "â"; + } + + { + trigger = "i^"; + replace = "î"; + } + + { + trigger = "i:"; + replace = "ï"; + } + + { + trigger = "u`"; + replace = "ù"; + } + + { + trigger = "u^"; + replace = "û"; + } + + { + trigger = "u:"; + replace = "ü"; + } + + { + trigger = "oe"; + replace = "œ"; + } + + { + trigger = "ae"; + replace = "æ"; + } + + { + trigger = "y:"; + replace = "ÿ"; + } + + { + trigger = "c,"; + replace = "ç"; + } + + { + trigger = "E'"; + replace = "É"; + } + + { + trigger = "E`"; + replace = "È"; + } + + { + trigger = "E^"; + replace = "Ê"; + } + + { + trigger = "E:"; + replace = "Ë"; + } + + { + trigger = "O^"; + replace = "Ô"; + } + + { + trigger = "A`"; + replace = "À"; + } + + { + trigger = "A^"; + replace = "Â"; + } + + { + trigger = "I^"; + replace = "Î"; + } + + { + trigger = "I:"; + replace = "Ï"; + } + + { + trigger = "U`"; + replace = "Ù"; + } + + { + trigger = "U^"; + replace = "Û"; + } + + { + trigger = "U:"; + replace = "Ü"; + } + + { + trigger = "OE"; + replace = "Œ"; + } + + { + trigger = "AE"; + replace = "Æ"; + } + + { + trigger = "Y:"; + replace = "Ÿ"; + } + + { + trigger = "C,"; + replace = "Ç"; + } + ]; + }; + }; + }; +services.skhd = { + enable = true; + + config = + let + input = { + "cmd + alt - s " = "yabai -m window --toggle spotify || open -a Spotify "; +"cmd + alt - d " = " yabai -m window --toggle discord || open -a Discord"; + # focus window + "alt - h" = " yabai -m window --focus west"; + + # swap managed window + "shift + alt - h " = "yabai -m window --swap north"; + + # move managed window + "shift + cmd - h " = "yabai -m window --warp east"; + + # balance size of windows + "shift + alt - 0 " = "yabai -m space --balance"; + + # make floating window fill screen + "shift + alt - up " = "yabai -m window --grid 1:1:0:0:1:1"; + + # make floating window fill left-half of screen + "shift + alt - left " = "yabai -m window --grid 1:2:0:0:1:1"; + + # create desktop, move window and follow focus - uses jq for parsing json (brew install jq) + "shift + cmd - n" = ''yabai -m space --create && \ + index="$(yabai -m query --spaces --display | jq 'map(select(."is-native-fullscreen" == false))[-1].index')" && \ + yabai -m window --space "''${index}" && \ + yabai -m space --focus "''${index}" + ''; + + # fast focus desktop + "cmd + alt - x " = " yabai -m space --focus recent"; + "cmd + alt - 1 " = " yabai -m space --focus 1"; + + # send window to desktop and follow focus + # shift + cmd - z : yabai -m window --space next; yabai -m space --focus next + # shift + cmd - 2 : yabai -m window --space 2; yabai -m space --focus 2 + + # focus monitor + "ctrl + alt - z " = " yabai -m display --focus prev"; + "ctrl + alt - 3 " = " yabai -m display --focus 3"; + + # send window to monitor and follow focus + # ctrl + cmd - c : yabai -m window --display next; yabai -m display --focus next + # ctrl + cmd - 1 : yabai -m window --display 1; yabai -m display --focus 1 + + # move floating window + "shift + ctrl - a " = " yabai -m window --move rel:-20:0"; + "shift + ctrl - s " = " yabai -m window --move rel:0:20"; + + # increase window size + "shift + alt - a " = " yabai -m window --resize left:-20:0"; + "shift + alt - w " = " yabai -m window --resize top:0:-20"; + + # decrease window size + "shift + cmd - s " = " yabai -m window --resize bottom:0:-20"; + "shift + cmd - w " = " yabai -m window --resize top:0:20"; + + # set insertion point in focused container + "ctrl + alt - h " = " yabai -m window --insert west"; + + # toggle window zoom + "alt - d " = " yabai -m window --toggle zoom-parent"; + "alt - f " = " yabai -m window --toggle zoom-fullscreen"; + + # toggle window split type + "alt - e " = " yabai -m window --toggle split"; + + # float / unfloat window and center on screen + "alt - t " = " yabai -m window --toggle float --grid 4:4:1:1:2:2"; + + # toggle sticky(+float), picture-in-picture + "alt - p " = " yabai -m window --toggle sticky --toggle pip"; + }; + attibutes = builtins.attrNames input; + rows = map (v: "${v} : ${builtins.getAttr v input}") attibutes; + in + builtins.concatStringsSep "\n" rows; + + }; + services.yabai = { +enableScriptingAddition = true; + enable = true; +config = { + focus_follows_mouse = "off"; + mouse_follows_focus = "off"; + window_placement = "second_child"; + window_opacity = "off"; + layout = "bsp"; + top_padding = 10; + bottom_padding = 10; + left_padding = 10; + right_padding = 10; + window_gap = 10; + }; + extraConfig = '' + yabai -m signal --add app='^Ghostty$' event=window_created action='yabai -m space --layout bsp' + yabai -m signal --add app='^Ghostty$' event=window_destroyed action='yabai -m space --layout bsp' + yabai -m rule --add app="^Spotify$" scratchpad=spotify grid=11:11:1:1:9:9 + yabai -m rule --add app="^Discord$" title!="^Discord Updater$" scratchpad=discord grid=11:11:1:1:9:9 + ''; + + }; +targets.darwin.defaults.NSGlobalDomain = { + AppleInterfaceStyle = "Dark"; # dark mode + AppleShowAllFiles = true; + ApplePressAndHoldEnabled = false; # enable press and hold + + # If you press and hold certain keyboard keys when in a text area, the key’s character begins to repeat. + # This is very useful for vim users, they use `hjkl` to move cursor. + # sets how long it takes before it starts repeating. + InitialKeyRepeat = 10; # normal minimum is 15 (225 ms), maximum is 120 (1800 ms) + # sets how fast it repeats once it starts. + KeyRepeat = 3; # normal minimum is 2 (30 ms), maximum is 120 (1800 ms) + }; + # source + # + # ~/.nix-profile/etc/profile.d/hm-session-vars.sh + # + # or + # + # /etc/profiles/per-user/davish/etc/profile.d/hm-session-vars.sh + # + # if you don't want to manage your shell through Home Manager. + home.activation = { + background = '' + run ${pkgs.desktoppr}/bin/desktoppr all ${config.stylix.image} + ''; + + }; + home.sessionVariables = { + # EDITOR = "emacs"; + }; + + # Let Home Manager install and manage itself. +} diff --git a/hm/modules/.DS_Store b/hm/modules/.DS_Store new file mode 100644 index 000000000..5008ddfcf Binary files /dev/null and b/hm/modules/.DS_Store differ diff --git a/hm/modules/1password.nix b/hm/modules/1password.nix new file mode 100755 index 000000000..ac82dddda --- /dev/null +++ b/hm/modules/1password.nix @@ -0,0 +1,15 @@ +{ config, pkgs, ... }: +{ + programs._1password-shell-plugins = { + # enable 1Password shell plugins for bash, zsh, and fish shell + enable = true; + # the specified packages as well as 1Password CLI will be + # automatically installed and configured to use shell plugins + plugins = with pkgs; [ + gh + nodePackages.vercel + pkgs.awscli2 + ]; + }; + +} diff --git a/hm/modules/agda.nix b/hm/modules/agda.nix new file mode 100755 index 000000000..2562f6582 --- /dev/null +++ b/hm/modules/agda.nix @@ -0,0 +1,12 @@ +{ config, pkgs, ... }: +{ + home.packages = with pkgs; [ + (agda.withPackages ( + p: with p; [ + standard-library + cubical + agda-categories + ] + )) + ]; +} diff --git a/hm/modules/desktop.nix b/hm/modules/desktop.nix new file mode 100644 index 000000000..4625cffe8 --- /dev/null +++ b/hm/modules/desktop.nix @@ -0,0 +1,6 @@ +{ pkgs, config, ... }: { + + home.packages = with pkgs; [ prismlauncher ]; + + +} diff --git a/hm/modules/emacs.nix b/hm/modules/emacs.nix new file mode 100755 index 000000000..e1d7f2545 --- /dev/null +++ b/hm/modules/emacs.nix @@ -0,0 +1,18 @@ +{ + config, + pkgs, + system, + lib, + ... +}: +{ + programs.emacs = { + enable = true; + # extraPackages = epkgs: with epkgs; [ magit vterm ]; + package = pkgs.emacsNativeComp; + }; + # home.packages = with pkgs; [ ]; + services.emacs = { + enable = true; + }; +} diff --git a/hm/modules/idris2.nix b/hm/modules/idris2.nix new file mode 100755 index 000000000..6706012f7 --- /dev/null +++ b/hm/modules/idris2.nix @@ -0,0 +1,10 @@ +{ config, pkgs, ... }: +{ + home.packages = + with pkgs.idris2Pkgs; + [ + lsp + Prettier + ] + ++ [ pkgs.idris2 ]; +} diff --git a/hm/modules/kakoune.nix b/hm/modules/kakoune.nix new file mode 100755 index 000000000..f6e13830a --- /dev/null +++ b/hm/modules/kakoune.nix @@ -0,0 +1,13 @@ +{ config, pkgs, ... }: +{ + programs.kakoune = { + enable = true; + plugins = with pkgs.kakounePlugins; [ + kak-lsp + parinfer-rust + kakoune-extra-filetypes + powerline-kak + ]; + }; + +} diff --git a/hm/modules/neovim.nix b/hm/modules/neovim.nix new file mode 100755 index 000000000..b7bd1a2c6 --- /dev/null +++ b/hm/modules/neovim.nix @@ -0,0 +1,11 @@ +{ config, pkgs, ... }: +{ + programs.neovim = { + enable = true; + vimAlias = true; + # package = pkgs.neovim-nightly; + # extraConfig = '' + # let g:sqlite_clib_path = "${pkgs.sqlite.out}/lib/libsqlite3.so" + # ''; + }; +} diff --git a/hm/modules/polybar.nix b/hm/modules/polybar.nix new file mode 100755 index 000000000..8bf3984bd --- /dev/null +++ b/hm/modules/polybar.nix @@ -0,0 +1,7 @@ +{ + pkgs ? import { }, +}: +pkgs.polybar.override { + githubSupport = true; + pulseSupport = true; +} diff --git a/hm/modules/zotero.nix b/hm/modules/zotero.nix new file mode 100644 index 000000000..6b29fafbf --- /dev/null +++ b/hm/modules/zotero.nix @@ -0,0 +1,10 @@ +{ config, pkgs, ... }: { + + home.packages = with pkgs; [ + zotero + tesseract + poppler_utils + ]; + +} + diff --git a/hm/modules/zsh.nix b/hm/modules/zsh.nix new file mode 100755 index 000000000..5ae4a9821 --- /dev/null +++ b/hm/modules/zsh.nix @@ -0,0 +1,73 @@ +{ config +, pkgs +, system +, lib +, modulesPath +, ... +}: +{ + programs.eza.enable = true; + home.packages = with pkgs; [ bat] ; + home.file."Music/Phoebe/lyricslist" = { + source = ../../phoebelyrics/lyricslist; + }; + programs.zsh = { + enable = true; + enableCompletion = true; + syntaxHighlighting.enable = true; + history = { + size = 10000; + path = "${config.xdg.dataHome}/zsh/history"; + }; + sessionVariables = { + MANPATH = "\${MANPATH-$(manpath)}:$NPM_PACKAGES/share/man"; + + EDITOR = "nvim"; + editor = "$EDITOR"; + BROWSER = "firefox"; + GTK2_RC_FILES = "$HOME/.gtkrc-2.0"; + _JAVA_AWT_WM_NONREPARENTING = 1; + WLR_NO_HARDWARE_CURSORS = 1; + + }; + plugins = builtins.map + (package: { + name = package.pname; + inherit (package) src; + }) + ( + with pkgs; + [ + zsh-autosuggestions + nix-zsh-completions + zsh-completions + zsh-nix-shell + zsh-syntax-highlighting + ] + ); + shellAliases = { + ghc = "stack exec -- ghc"; + fzf = "fzf --reverse --height 40%"; + vim = "nvim"; + cat = "bat"; + e = "vim"; + #alias ng="nvim -c ':Neogit'" + ls = "exa --icons --git"; + ll = "ls -la"; + t = "tmux"; + grep = "grep --color=auto"; + windows = "sudo grub-reboot 2 && sudo reboot"; + hm = "home-manager --flake $NIXFLAKE#$FLAKENAME"; + + }; + initExtra = '' + export GPG_TTY="$(tty)" + gpg-connect-agent updatestartuptty /bye &>/dev/null + export SSH_AUTH_SOCK="$(gpgconf --list-dirs agent-ssh-socket)" + + export PATH=$PATH:~/.cabal/bin:~/go/bin:~/.emacs.d/bin:~/.local/bin:~/.dotnet/tools:/usr/sbin:/snap/bin:$NPM_PACKAGES/bin:~/.luarocks/bin:/usr/local/go/bin:$DENO_INSTALL/bin:/opt/jdk8u292-b10:$IDRIS_PREFIX/bin + fetch -s + eval "$(starship init zsh)" + ''; + }; +} diff --git a/hm/nixos.nix b/hm/nixos.nix new file mode 100755 index 000000000..1d9287a0d --- /dev/null +++ b/hm/nixos.nix @@ -0,0 +1,173 @@ +conf@{ config +, pkgs +, system +, lib +, ... +}: +let + impConf = fil: import fil conf; + +in +rec { + stylix = { + targets.kde.enable = true; + }; + # imports = [ ./picom.nix ]; + programs = { + git = { + enable = true; + signing = { + key = "0xC3F28549AD3115E8"; + signByDefault = true; + }; + }; + vim = { + enable = true; + plugins = with pkgs.vimPlugins; [ + vim-airline + vim-addon-nix + ]; + settings = { + ignorecase = true; + }; + extraConfig = '' + set mouse=a + ''; + }; + home-manager.enable = true; + }; + # xdg.configFile."nvim/parser/c.so".source = "${pkgs.tree-sitter.builtGrammars.tree-sitter-c}/parser"; + # xdg.configFile."nvim/parser/lua.so".source = "${pkgs.tree-sitter.builtGrammars.tree-sitter-lua}/parser"; + # xdg.configFile."nvim/parser/rust.so".source = "${pkgs.tree-sitter.builtGrammars.tree-sitter-rust}/parser"; + # xdg.configFile."nvim/parser/python.so".source = "${pkgs.tree-sitter.builtGrammars.tree-sitter-python}/parser"; + # xdg.configFile."nvim/parser/nix.so".source = "${pkgs.tree-sitter.builtGrammars.tree-sitter-nix}/parser"; + + # xdg.configFile."nvim/fnl/plugins/sqlite.fnl".text = '' + # (module plugins.sqlite) + # (print "hi") + # (set vim.g.sql_clib_path "${pkgs.sqlite.out}/lib/libsqlite3.so") + # ''; + + services = { + dunst.enable = false; + gpg-agent = { + enable = true; + pinentryFlavor = "qt"; + enableSshSupport = true; + extraConfig = '' + allow-loopback-pinentry + ''; + }; + }; + programs.gpg.enable = true; + + home.packages = + with pkgs; + [ + st + (pkgs.gradleGen.override { + java = jdk8; + }).gradle_latest + rclone + neovim-nightly + firefox + tmux + rust-analyzer + wineWowPackages.stable + emacsGcc + kotlin + pcmanfm + fzf + vscode + openjdk8 + xorg.xmodmap + xorg.xmessage + multimc + skypeforlinux + rofi + arandr + ccls + steam + jetbrains.idea-ultimate + libnotify + stack + xclip + ripgrep + discord + polybarFull + playerctl + htop + eclipses.eclipse-java + starship + fish + nitrogen + maim + teams + gcc + dunst + procps-ng + nodejs-14_x + nixfmt + lua + (spotify.overrideAttrs (attrs: { + nativeInputs = [ gnutls ]; + })) + unzip + scala + rnix-lsp + # starship ardour + slack + # luaPackages.lua-lsp + #idris2 + stdenv.cc.cc.lib + grub2_efi + (python3.withPackages (p: with p; [ pynvim ])) + metals + _1password + gnome.gnome-keyring + gnome.nautilus + eww + #wezterm + zoom-us + file + mitscheme + libreoffice + pinentry + thunderbird + ] + ++ (with pkgs.lua51Packages; [ luarocks ]) + ++ (with pkgs.haskellPackages; [ + fourmolu + taffybar + #my-xmonad + haskell-language-server + ]) + ++ [ + (pkgs.haskellPackages.ghcWithPackages ( + pk: with pk; [ + microlens-th + microlens + dbus + xmonad-contrib + cabal-install + X11 + xmonad + ] + )) + ] + ++ (with nodePackages; [ + p3x-onenote + yarn + typescript-language-server + typescript + purescript-language-server + ]) + ++ (with ocamlPackages; [ + utop + dune + ocaml + opam + merlin + ]); + # home.stateVersion = "21.11"; +} diff --git a/hm/picom.nix b/hm/picom.nix new file mode 100755 index 000000000..21982c40b --- /dev/null +++ b/hm/picom.nix @@ -0,0 +1,32 @@ +{ pkgs, lib, ... }: + +{ + services.picom = { + enable = true; + experimentalBackends = true; + fade = false; + shadow = false; + shadowOffsets = [ + (-30) + (-30) + ]; + shadowOpacity = "0.25"; + shadowExclude = [ "name = 'xmonad'" ]; + blur = true; + blurExclude = [ "class_g = 'slop'" ]; + vSync = true; + refreshRate = 60; + extraOptions = '' + # Corners + corner-radius = 5.0; + rounded-corners-exclude = [ + "class_g = 'Polybar'", + "class_g = 'Minecraft* 1.16.4'", + "class_g = 'xmobar'" + ] + round-borders = 1; + + + ''; + }; +} diff --git a/hm/standalone.nix b/hm/standalone.nix new file mode 100644 index 000000000..031495381 --- /dev/null +++ b/hm/standalone.nix @@ -0,0 +1,6 @@ +{ config +, pkg +, ... +}: { + nix.package = pkgs.nixVersions.latest; +} diff --git a/hm/term.nix b/hm/term.nix new file mode 100644 index 000000000..d2bb08602 --- /dev/null +++ b/hm/term.nix @@ -0,0 +1,50 @@ +{ config +, nixpkgs +, ... +}: { + + programs.ghostty = { + + enable = true; + themes = { + pink_ocean = { + + foreground = "d0d0d0"; + cursor-color = "eeeeee"; + selection-background = "005f5f"; + selection-foreground = "eeeeee"; + palette = [ + "0=#080808" + "1=#ff5f5f" + "2=#87d7af" + "3=#d7d787" + "4=#5fafd7" + "5=#afafff" + "6=#5fd7d7" + "7=#dadada" + "8=#8a8a8a" + "9=#d75f5f" + "10=#afd7af" + "11=#d7d7af" + "12=#87afd7" + "13=#afafd7" + "14=#87d7d7" + "14=#dadada" + ]; + background = "202020"; + + }; + + + + + }; + settings = { + macos-icon = "paper"; + theme = "pink_ocean"; + background-opacity = 0.8; + font-size = 15; + font-family = "Hasklug Nerd Font"; + }; + }; +} diff --git a/hm/ui.nix b/hm/ui.nix new file mode 100755 index 000000000..f2e21ab23 --- /dev/null +++ b/hm/ui.nix @@ -0,0 +1,27 @@ +{ config, pkgs, ... }: +let + # onePassPath = "~/Library/Group Containers/2BUA8C4S2C.com.1password/t/agent.sock"; + onePassPath = "~/.1password/agent.sock"; +in +{ + # targets.genericLinux.enable = true; + home.packages = with pkgs; [ + #input-leap + discord + # wezterm + spotify + # rnix-lsp + # beeper + # google-chrome + # thunderbird + ]; + + # programs._1password.enable = true; + programs.ssh = { + enable = false; + extraConfig = '' + Host * + IdentityAgent ${onePassPath} + ''; + }; +} diff --git a/hm/yabai.nix b/hm/yabai.nix new file mode 100644 index 000000000..c596454c1 --- /dev/null +++ b/hm/yabai.nix @@ -0,0 +1,130 @@ +{ config, lib, pkgs, ... }: + +with lib; + +let + cfg = config.services.yabai; + + toYabaiConfig = opts: + concatStringsSep "\n" (mapAttrsToList + (p: v: "yabai -m config ${p} ${toString v}") + opts); + + configFile = mkIf (cfg.config != { } || cfg.extraConfig != "") + "${pkgs.writeScript "yabairc" ( + (if (cfg.config != {}) + then "${toYabaiConfig cfg.config}" + else "") + + optionalString (cfg.extraConfig != "") ("\n" + cfg.extraConfig + "\n"))}"; +in + +{ + options = with types; { + services.yabai.enable = mkOption { + type = bool; + default = false; + description = "Whether to enable the yabai window manager."; + }; + + services.yabai.package = mkOption { + type = path; + default = pkgs.yabai; + description = "The yabai package to use."; + }; + + services.yabai.enableScriptingAddition = mkOption { + type = bool; + default = false; + description = '' + Whether to enable yabai's scripting-addition. + SIP must be disabled for this to work. + ''; + }; + services.yabai.errorLogFile = lib.mkOption { + type = with lib.types; nullOr (either path str); + defaultText = lib.literalExpression "\${config.home.homeDirectory}/Library/Logs/yabai/err.log"; + example = "/Users/khaneliman/Library/Logs/yabai.log"; + description = "Absolute path to log all stderr output."; + }; + + services.yabai.outLogFile = lib.mkOption { + type = with lib.types; nullOr (either path str); + defaultText = lib.literalExpression "\${config.home.homeDirectory}/Library/Logs/yabai/out.log"; + example = "/Users/khaneliman/Library/Logs/yabai.log"; + description = "Absolute path to log all stdout output."; + }; + + services.yabai.config = mkOption { + type = attrs; + default = { }; + example = literalExpression '' + { + focus_follows_mouse = "autoraise"; + mouse_follows_focus = "off"; + window_placement = "second_child"; + window_opacity = "off"; + top_padding = 36; + bottom_padding = 10; + left_padding = 10; + right_padding = 10; + window_gap = 10; + } + ''; + description = '' + Key/Value pairs to pass to yabai's 'config' domain, via the configuration file. + ''; + }; + + services.yabai.extraConfig = mkOption { + type = lines; + default = ""; + example = literalExpression '' + yabai -m rule --add app='System Preferences' manage=off + ''; + description = "Extra arbitrary configuration to append to the configuration file"; + }; + }; + + config = lib.mkMerge [ + (mkIf (cfg.enable) { + assertions = [ + (lib.hm.assertions.assertPlatform "services.yabai" pkgs lib.platforms.darwin) + ]; + home.packages = [ cfg.package ]; + + launchd.agents.yabai = { + enable = true; + config = { + ProcessType = "Interactive"; + ProgramArguments = [ "${cfg.package}/bin/yabai" ] + ++ optionals (cfg.config != { } || cfg.serviceConfig.extraConfig != "") [ "-c" configFile ]; + EnvironmentVariables.PATH = "${cfg.package}/bin:/usr/bin:/bin:/usr/sbin:/sbin"; + KeepAlive = true; + RunAtLoad = true; + StandardErrorPath = cfg.errorLogFile; + StandardOutPath = cfg.outLogFile; + + }; + + }; + services.yabai = { + errorLogFile = lib.mkOptionDefault "${config.home.homeDirectory}/Library/Logs/yabai/yabai.err.log"; + outLogFile = lib.mkOptionDefault "${config.home.homeDirectory}/Library/Logs/yabai/yabai.out.log"; + }; + }) + + + # TODO: [@cmacrae] Handle removal of yabai scripting additions + (mkIf (cfg.enableScriptingAddition) { + launchd.agents.yabai-sa = { + config.UserName = "root"; + config.ProgramArguments = ["${cfg.package}/bin/yabai" "--load-sa"]; + config.EnvironmentVariables.Path = "${cfg.package}/bin:/usr/bin:/bin:/usr/sbin:/sbin"; + config.RunAtLoad = true; + config.KeepAlive.SuccessfulExit = false; + }; + + + }) + ]; +} diff --git a/modules/1password.nix b/modules/1password.nix new file mode 100755 index 000000000..3ae0d63fa --- /dev/null +++ b/modules/1password.nix @@ -0,0 +1,15 @@ +{ + config, + pkgs, + lib, + ... +}: +{ + programs._1password.enable = true; + programs._1password-gui = { + enable = true; + # Certain features, including CLI integration and system authentication support, + # require enabling PolKit integration on some desktop environments (e.g. Plasma). + polkitPolicyOwners = [ "auscyber" ]; + }; +} diff --git a/modules/common.nix b/modules/common.nix new file mode 100755 index 000000000..cb011bf1a --- /dev/null +++ b/modules/common.nix @@ -0,0 +1,57 @@ +{ config +, lib +, pkgs +, ... +}: + +{ + + fonts.packages = + with pkgs; + (map (x: nerd-fonts.${x}) [ + "fira-code" + "inconsolata" + "hasklug" + "roboto-mono" + ]); + + environment.systemPackages = with pkgs; [ + git + vim + neovim + wget + htop + curl + ]; + + programs.zsh.enable = true; + nix = { + # Binary Cache for Haskell.nix + settings = { + substituters = [ + "https://nix-community.cachix.org" + "https://iohk.cachix.org" + "https://cache.nixos.org" + "https://devenv.cachix.org" + ]; + trusted-public-keys = [ + "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=" + "iohk.cachix.org-1:DpRUyj7h7V830dp/i6Nti+NEO2/nhblbov/8MW7Rqoo=" + "devenv.cachix.org-1:w1cLUi8dv3hnoSPGAuibQv+f9TZLr6cv/Hm9XgU50cw=" + ]; + }; + + package = pkgs.nixVersions.latest; + + extraOptions = '' + experimental-features = nix-command flakes + ''; + gc = { + automatic = true; + options = "--delete-older-than 30d"; + }; + }; + + nixpkgs.config.allowUnfree = true; + +} diff --git a/modules/hm.nix b/modules/hm.nix new file mode 100644 index 000000000..9ec176232 --- /dev/null +++ b/modules/hm.nix @@ -0,0 +1,12 @@ +{ + inputs, + config, + pkgs, + ... +}: +{ + home-manager.useGlobalPkgs = true; + home-manager.sharedModules = [ ../hm/default.nix ]; + home-manager.useUserPackages = true; + home-manager.extraSpecialArgs = { inherit inputs; }; +} diff --git a/pink_ocean.yml b/pink_ocean.yml new file mode 100644 index 000000000..27af9776a --- /dev/null +++ b/pink_ocean.yml @@ -0,0 +1,26 @@ +system: "base16" +name: "Pink Ocean" +author: "Ivy Pierlot" +variant: "dark" +palette: + base00: "#080808" + base01: "#d0d0d0" + base02: "#005f5f" + + base03: "#8a8a8a" + base05: "#eeeeee" + base08: "#ff5f5f" + base0B: "#87d7af" + base0A: "#d7d787" + base0D: "#5fafd7" + base0E: "#afafff" + base0C: "#5fd7d7" + base05: "#dadada" + base08: "#d75f5f" + base0B: "#afd7af" + base0A: "#d7d7af" + base0D: "#87afd7" + base0E: "#afafd7" + base0C: "#87d7d7" + base07: "#dadada" + diff --git a/secrets/secrets.nix b/secrets/secrets.nix new file mode 100755 index 000000000..86a63f173 --- /dev/null +++ b/secrets/secrets.nix @@ -0,0 +1,17 @@ +let + auscyber = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILeCdR16VYTNmoEekYk/b1sskC+trPx9tpOBJoKML17H willp@outlook.com.au"; + auspc = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPyXyBMVHaVmR3f5gI3pQ+VWdMjHKPI9yR4/trIV+W/D root@auspc"; + mac = "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDWLBfISIzlyIXewHmETOnkiPI09bpqU1oywBvLoclWaettdNaP84NGmCRvADLc3DkWAzQo/WB4nVlEEQXD7kvcptnUC0ufyhH1su9yQYKYLRu01E9KzUmeIWrGTd6x+EcQ12qP4xaY3EjgJyLdZjZj0dlBtpubRWmlLiZ8Dz832hBsx/wL5F/4jgirwBJxvmnNDDbKRylwcMxwTIoyU1hzTZc5br9j4ZELomDLR6IChByLWLooZzrI8Hrws3DUdUhyD+mdrfhqOnL0lb/xlsI9wGJhoxaT3FkkKHb//HMRWth5RjO/ygGG1L/HMk9oyvfbF6oAX9l5b65TKLdMkePtsA+kyjfrjyGvQyfpv+HQi41yrMXzEeO5uY2vNQqgDuDrbF5jhyEJXDO7aERZVeByOXKCwfIb5Iv8peGkweL/ftQWnpi9ulq9SP3M9Xx1pdohUsuO51fIsnJnYE9tY6OOFvT4zbajJzkVRPIXNFV0ueg1M+e51uByICWCgzAnWJk="; +in +{ + "spotify_api.age".publicKeys = [ + auscyber + auspc + mac + ]; + "smb_secrets.age".publicKeys = [ + auscyber + auspc + mac + ]; +} diff --git a/secrets/smb_secrets.age b/secrets/smb_secrets.age new file mode 100644 index 000000000..d58dd92db --- /dev/null +++ b/secrets/smb_secrets.age @@ -0,0 +1,18 @@ +age-encryption.org/v1 +-> ssh-ed25519 9v/vwA uFrbKmyiWyK3TGxAT4qbw3TvHtBmILXXoUZDN2jUaw8 +SsQkSs6qocutiqjEwHFUuT0TnwEatJdF9xjM8+TW02E +-> ssh-ed25519 E/UTlQ fWpE3VYMQt5jOegBwRCqpwJ7zinXyorfqmfehTXJXwc +zNyvILUcqrw2oi9YWo240mzMNTbnRYir/CO9tHzvph0 +-> ssh-rsa Lca52g +YZ7JGG+3VtRw2EazFHhfwAG2uK83i08ByMSiwl2pleVeU1FjyAjCDZSMPicof1wq +ikKj1LyWJu5BuU37ctR4DzGBe+wMXeWYEAd7GysOl35hdP3cOmqyCKrn8qDkeyzw +ziOZL/hRkGzemuoYlXcGd1qHjrcRcZ0Mug2L3vNUeStGqXvxbjvMGyaS9G0mpBNF +3hzSEw/vUq88C8jobAfNRWUqyLviWkr9bd8ys1XeKztfP19/qwOgr2AfMdfMWXX5 +WDOpPacuWBk6ln4PXy9bOsnZsHz7TZ82I4qByQ7qPGax/LX9b2C51j1905hWGvVM +aSAVUP40O8T4TTjGe8ASf658CYo/QW0jhaecESV7S2shzLQX+3KNpUwgWNZ0I6dZ +qtoc4PpPhtWYlpOD6nLTt+U52ZudIAfvIqbyY2C+ThvjiWZCFor1qMhPgdPr3/M+ +XJjCGqRm6sSzk8SQZVSdjDtkgMXYj+ZKJwqd02WmnRfO8hCz4UOt9jTYlqpaeqX8 + +--- 6wLJSodlchqtLmneW9vDNRSfcG5dA895NURWvkA8p8Y +?yo=g\K+) +D۱#:NC~r_*(R[j \ No newline at end of file diff --git a/secrets/spotify_api.age b/secrets/spotify_api.age new file mode 100755 index 000000000..f3b959331 Binary files /dev/null and b/secrets/spotify_api.age differ diff --git a/smb-secrets b/smb-secrets new file mode 100755 index 000000000..8b1378917 --- /dev/null +++ b/smb-secrets @@ -0,0 +1 @@ + diff --git a/systems/auspc/alx-wol.nix b/systems/auspc/alx-wol.nix new file mode 100644 index 000000000..7367eb039 --- /dev/null +++ b/systems/auspc/alx-wol.nix @@ -0,0 +1,80 @@ +{ lib, stdenv, fetchurl, fetchpatch, kernel }: + +stdenv.mkDerivation rec { + pname = "alx-wol-dkms"; + version = "6"; + + srcs = { + alx_h = fetchurl { + url = "https://raw.githubusercontent.com/archlinux/linux/v6.1-arch1/drivers/net/ethernet/atheros/alx/alx.h"; + sha256 = "0ac6445e832c3413be3887917203699139ec05553270c5006b5a33ba5e2a158d"; + }; + ethtool_c = fetchurl { + url = "https://raw.githubusercontent.com/archlinux/linux/v6.1-arch1/drivers/net/ethernet/atheros/alx/ethtool.c"; + sha256 = "a0df2f5f93253a7dde775479142bf3eb209b5268ad124f200915736de7cf5063"; + }; + hw_c = fetchurl { + url = "https://raw.githubusercontent.com/archlinux/linux/v6.1-arch1/drivers/net/ethernet/atheros/alx/hw.c"; + sha256 = "bf9ac0fa98031523e05d5d62c08ee116fd4a437f66538c95eac18adda10ff89b"; + }; + hw_h = fetchurl { + url = "https://raw.githubusercontent.com/archlinux/linux/v6.1-arch1/drivers/net/ethernet/atheros/alx/hw.h"; + sha256 = "fcc0306b37382cf8e2f75eafb6bd8696a4a5e360110e5cfe800485f4eebe55aa"; + }; + main_c = fetchurl { + url = "https://raw.githubusercontent.com/archlinux/linux/v6.1-arch1/drivers/net/ethernet/atheros/alx/main.c"; + sha256 = "2bd9ee44c72a657007a9bbaef332b9435e949295773733d0ca96cea8a69e075f"; + }; + reg_h = fetchurl { + url = "https://raw.githubusercontent.com/archlinux/linux/v6.1-arch1/drivers/net/ethernet/atheros/alx/reg.h"; + sha256 = "88a23ab8e6fe814efe81910bd8806f5988d367a628458154edaebdf4ccbe4902"; + }; + patch_wol = fetchpatch { + url = "https://raw.githubusercontent.com/MarkWalters-dev/aur/master/alx-wol-dkms/0001-drivers-net-alx-Re-enable-WoL-functionality.patch"; + sha256 = "98f1ad3377a1b0a96dfe7b71eb6dedc0f9779033c59f5dc093b4a7779d270a89"; + }; + patch_version = fetchpatch { + url = "https://raw.githubusercontent.com/MarkWalters-dev/aur/master/alx-wol-dkms/0002-net-alx-Add-MODULE_VERSION-to-fix-dkms-override.patch"; + sha256 = "560783c1d0cd19859047360c317312f23cf1caabbd9d15aa101e98d3219da9a5"; + }; + }; + + sourceRoot = "."; + nativeBuildInputs = kernel.moduleBuildDependencies; + + # Prepare sources and apply patches + postPatch = '' + mkdir workdir + cd workdir + cp ${srcs.alx_h} ${srcs.ethtool_c} ${srcs.hw_c} ${srcs.hw_h} ${srcs.main_c} ${srcs.reg_h} . + + patch -p6 < ../${srcs.patch_wol} + patch -p6 < ../${srcs.patch_version} + ''; + + makeFlags = kernel.makeFlags ++ [ + "-C" + "${kernel.dev}/lib/modules/${kernel.modDirVersion}/build" + "M=$(pwd)/workdir" + ]; + + buildFlags = [ "modules" ]; + + installPhase = '' + local dest=$out/lib/modules/${kernel.modDirVersion}/extra + mkdir -p $dest + cp workdir/*.ko $dest + depmod -a ${kernel.modDirVersion} + ''; + + meta = with lib; { + description = "The alx kernel module with a patch enabling WoL applied"; + homepage = "https://bugzilla.kernel.org/show_bug.cgi?id=61651"; + license = licenses.gpl2Plus; + platforms = platforms.linux; + }; +} + + + + diff --git a/systems/auspc/boot.nix b/systems/auspc/boot.nix new file mode 100755 index 000000000..f6f95dab5 --- /dev/null +++ b/systems/auspc/boot.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, + ... +}: + +{ + + boot.loader.efi.canTouchEfiVariables = true; + boot.loader.efi.efiSysMountPoint = "/boot/efi"; + boot.loader.grub = { + useOSProber = true; + efiSupport = true; + version = 2; + device = "nodev"; + extraConfig = " set theme=($drive2)${pkgs.breeze-grub}/grub/themes/breeze/theme.txt"; + # splashImage ="/usr/share/grub/themes/breeze/background.png"; + # splashImage = null; + gfxmodeEfi = "1920x1080"; + }; + +} diff --git a/systems/auspc/configuration.nix b/systems/auspc/configuration.nix new file mode 100755 index 000000000..0668208a4 --- /dev/null +++ b/systems/auspc/configuration.nix @@ -0,0 +1,238 @@ +# Edit this configuration file to define what should be installed on +# your system. Help is available in the configuration.nix(5) man page, on +# https://search.nixos.org/options and in the NixOS manual (`nixos-help`). + +{ config +, lib +, pkgs +, ... +}: + +{ + imports = [ + # Include the results of the hardware scan. + ./hardware-configuration.nix + ]; + services.tailscale.enable = true; + boot.supportedFilesystems = [ "ntfs" ]; + boot.kernelPackages = pkgs.linuxPackages_zen; + # boot.extraModulePackages = [ (config.boot.kernelPackages.callPackage ./alx-wol.nix { }) ]; + + + fileSystems."/mnt/hdd" = { + device = "/dev/disk/by-label/hdd"; + fsType = "lowntfs-3g"; + options = [ "uid=1000" "gid=100" "rw" "user" "exec" "umask=000" ]; + }; + fileSystems."/mnt/ssd2" = { + device = "/dev/disk/by-uuid/704821B848217DCA"; + fsType = "lowntfs-3g"; + options = [ "uid=1000" "gid=100" "rw" "user" "exec" "umask=000" ]; + }; + programs.virt-manager.enable = true; + + users.groups.libvirtd.members = [ "auscyber" ]; + + virtualisation.libvirtd.enable = true; + + virtualisation.spiceUSBRedirection.enable = true; + + boot.kernelModules = [ "kvm-intel" ]; + #boot.extraModulePackages = [ (config.boot.kernel.callPackage ./alx-wol.nix { }) ]; + # Use the systemd-boot EFI boot loader. + boot.loader.systemd-boot.enable = lib.mkForce false; + #boot.loader.systemd-boot.enable = true; + + + boot.lanzaboote = { + enable = true; + pkiBundle = "/var/lib/sbctl"; + }; + boot.loader.efi = { + canTouchEfiVariables = true; + efiSysMountPoint = "/boot"; + }; + + networking.hostName = "auspc"; # Define your hostname. + # Pick only one of the below networking options. + # networking.wireless.enable = true; # Enables wireless support via wpa_supplicant. + networking.networkmanager.enable = true; # Easiest to use and most distros use this by default. + programs.hyprland.enable = true; + # Set your time zone. + time.timeZone = "Australia/Melbourne"; + + # Configure network proxy if necessary + # networking.proxy.default = "http://user:password@proxy:port/"; + # networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain"; + + hardware.bluetooth = { + enable = true; + powerOnBoot = true; + }; + services.blueman.enable = true; + + + # Select internationalisation properties. + i18n.defaultLocale = "en_AU.UTF-8"; + console = { + useXkbConfig = true; # use xkb.options in tty. + }; + # + # Enable the X11 windowing system. + # services.xserver.enable = true; + networking.interfaces.enp6s0.wakeOnLan = { + policy = [ "magic" "broadcast" "multicast" ]; + enable = true; + }; + + # networking.interfaces.enp6s0.useDHCP = true; + + # Configure keymap in X11 + # services.xserver.xkb.layout = "us"; + # services.xserver.xkb.options = "eurosign:e,caps:escape"; + + # Enable CUPS to print documents. + services.printing.enable = true; + + # Enable sound. + # hardware.pulseaudio.enable = true; + + programs.dconf.enable = true; + programs.zsh.enable = true; + services.pipewire = { + enable = true; + alsa.enable = true; + pulse = { + enable = true; + # package = pkgs.pulseaudioFull; + }; + }; + + # Enable touchpad support (enabled default in most desktopManager). + # services.xserver.libinput.enable = true; + # security.wrappers = { + # "1Password-KeyringHelper" = { + # source = "${pkgs._1password-gui.out}/share/1password/1Password-KeyringHelper"; + # setuid = true; + # owner = "root"; + # group = "nobody"; + # }; + # }; + + # Define a user account. Don't forget to set a password with ‘passwd’. + users.users.auscyber = { + isNormalUser = true; + description = "Ivy"; + shell = pkgs.zsh; + extraGroups = [ "wheel" ]; # Enable ‘sudo’ for the user. + packages = with pkgs; [ + ]; + }; + + # List packages installed in system profile. To search, run: + # $ nix search wget + environment.systemPackages = with pkgs; [ + google-chrome + #input-leap + vscode + sbctl + vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default. + wget + git + ]; + + programs.sway.enable = true; + # Some programs need SUID wrappers, can be configured further or are + # started in user sessions. + # programs.mtr.enable = true; + # programs.gnupg.agent = { + # enable = true; + # enableSSHSupport = true; + # }; + + services.displayManager.sddm.enable = true; + # List services that you want to enable: + # Enable the OpenSSH daemon. + services.openssh.enable = true; + + services.displayManager.defaultSession = "plasma"; + services.displayManager.autoLogin = { + enable = true; + user = "auscyber"; + }; + services.xserver = { + xkb.layout = "us"; + enable = true; + config = '' + + Section "InputClass" + Identifier "My Mouse" + MatchIsPointer "yes" + Option "AccelerationProfile" "-1" + Option "AccelerationScheme" "none" + Option "AccelSpeed" "-1" + EndSection + ''; + #displayManager.lightdm = { + # enable = true; + # greeter.enable = true; + # }; + + videoDrivers = [ "nvidia" ]; + # videoDrivers = [ "nouveau" ]; + desktopManager.plasma6.enable = true; + displayManager.startx.enable = true; + + windowManager.awesome = { + enable = false; + luaModules = with pkgs.luaPackages; [ luarocks ]; + }; + windowManager.xmonad = { + enable = false; + extraPackages = + haskellPackages: with haskellPackages; [ + xmonad-contrib + xmonad + ]; + + }; + }; + programs._1password.enable = true; + programs._1password-gui = { + enable = true; + polkitPolicyOwners = [ "auscyber" ]; + }; + + # Open ports in the firewall. + networking.firewall.allowedTCPPorts = [ 24800 ]; + # networking.firewall.allowedUDPPorts = [ ... ]; + # Or disable the firewall altogether. + networking.firewall.enable = true; + + + programs.hyprland.enable = true; + + # Copy the NixOS configuration file and link it from the resulting system + # (/run/current-system/configuration.nix). This is useful in case you + # accidentally delete configuration.nix. + # system.copySystemConfiguration = true; + + # This option defines the first version of NixOS you have installed on this particular machine, + # and is used to maintain compatibility with application data (e.g. databases) created on older NixOS versions. + # + # Most users should NEVER change this value after the initial install, for any reason, + # even if you've upgraded your system to a new NixOS release. + # + # This value does NOT affect the Nixpkgs version your packages and OS are pulled from, + # so changing it will NOT upgrade your system. + # + # This value being lower than the current NixOS release does NOT mean your system is + # out of date, out of support, or vulnerable. + # + # Do NOT change this value unless you have manually inspected all the changes it would make to your configuration, + # and migrated your data accordingly. + # + # For more information, see `man configuration.nix` or https://nixos.org/manual/nixos/stable/options#opt-system.stateVersion . + system.stateVersion = "23.11"; # Did you read the comment? + +} diff --git a/systems/auspc/default.nix b/systems/auspc/default.nix new file mode 100755 index 000000000..c9e205f28 --- /dev/null +++ b/systems/auspc/default.nix @@ -0,0 +1,38 @@ +{ nixpkgs +, config +, overlays +, inputs +, home-manager +, home-manager-modules +, modules +, ... +}: +nixpkgs.lib.nixosSystem { + specialArgs = { inherit inputs; }; + system = "x86_64-linux"; + modules = modules ++ [ + ./configuration.nix + ./hardware-configuration.nix + ./games.nix + ./graphics.nix + #./../../modules/system/grub.nix + #./boot.nix + # ./mailserver.nix + # ./minecraft.nix + home-manager.nixosModules.home-manager + { + home-manager.users.auscyber = { + imports = home-manager-modules; + home.username = "auscyber"; + home.sessionVariables = { + FLAKENAME = "auscyber"; + NIXFLAKE = "$HOME/dotfiles/nixos-config"; + }; + + }; + nixpkgs = { inherit config overlays; }; + + } + ]; + +} diff --git a/systems/auspc/games.nix b/systems/auspc/games.nix new file mode 100644 index 000000000..b72df97ff --- /dev/null +++ b/systems/auspc/games.nix @@ -0,0 +1,15 @@ +{ config +, lib +, pkgs +, ... +}: { + programs.gamemode.enable = true; + programs.steam = { + enable = true; + extraCompatPackages = with pkgs; [ proton-ge-bin vkd3d-proton ]; + protontricks.enable = true; + gamescopeSession.enable = true; + + }; + +} diff --git a/systems/auspc/graphics.nix b/systems/auspc/graphics.nix new file mode 100644 index 000000000..eeecf8bad --- /dev/null +++ b/systems/auspc/graphics.nix @@ -0,0 +1,39 @@ +{ config +, lib +, pkgs +, ... +}: { + hardware.nvidia = { + package = config.boot.kernelPackages.nvidiaPackages.beta; + # fullCompositionPipeline = true; + modesetting.enable = true; + open = false; + powerManagement.enable = true; + powerManagement.finegrained = false; + nvidiaSettings = true; + gsp.enable = true; + }; + + hardware.graphics = { + enable = true; + enable32Bit = true; + extraPackages = with pkgs; [ mesa ]; + }; + boot.initrd.kernelModules = [ + "nvidia" + "nvidia_modeset" + "nvidia_uvm" + "nvidia_drm" + ]; + hardware.enableAllFirmware = true; + hardware.enableRedistributableFirmware = true; + + boot.kernelParams = [ + "nvidia-drm.modeset=1" + "nvidia.NVreg_UsePageAttributeTable=1" + + + ]; + + +} diff --git a/systems/auspc/hardware-configuration.nix b/systems/auspc/hardware-configuration.nix new file mode 100755 index 000000000..59bc1fcd3 --- /dev/null +++ b/systems/auspc/hardware-configuration.nix @@ -0,0 +1,59 @@ +# 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 = [ + "xhci_pci" + "ahci" + "nvme" + "usbhid" + "usb_storage" + "sd_mod" + ]; + + boot.kernelModules = [ "kvm-intel" ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = { + device = "/dev/disk/by-uuid/aa10e35d-2531-4b1d-9c1b-1f120963b444"; + fsType = "ext4"; + }; + + fileSystems."/home" = { + device = "/dev/disk/by-uuid/d5e8c31c-eebf-4907-a8ce-309e2ba575aa"; + fsType = "ext2"; + }; + + fileSystems."/boot" = { + device = "/dev/disk/by-uuid/832A-EFCE"; + fsType = "vfat"; + options = [ + "fmask=0022" + "dmask=0022" + ]; + }; + + swapDevices = [ ]; + + # 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.wlo1.useDHCP = lib.mkDefault true; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; +} diff --git a/systems/macbook/configuration.nix b/systems/macbook/configuration.nix new file mode 100755 index 000000000..f8142b5f8 --- /dev/null +++ b/systems/macbook/configuration.nix @@ -0,0 +1,150 @@ +# darwin.nix + +{ pkgs, config, ... }: + +{ + # List packages installed in system profile. To search by name, run: + documentation.enable = true; + security.pam.services.sudo_local.touchIdAuth = true; + fonts.packages = with pkgs; (with nerd-fonts; [ hack roboto-mono ]); + # $ nix-env -qaP | grep wget + system.primaryUser = "ivypierlot"; + environment.systemPackages = with pkgs; [ + vim + nodejs + vscode + pandoc + # _1password + texliveFull + # wezterm + zotero + qemu + utm + gnupg + prismlauncher + virt-manager + # nixos-conf-editor + ]; + stylix = { + enable = false; + image = ../../backgrounds/phoebebridgers-2.jpg; + }; + + nix.channel.enable = false; + nix.gc.automatic = true; + # Auto upgrade nix package and the daemon service. + # nix.package = pkgs.nix; + + # Necessary for using flakes on this system. + nix.distributedBuilds = true; + + nix.linux-builder.enable = true; + nix.settings = { + + experimental-features = "nix-command flakes"; + + }; + # Create /etc/zshrc that loads the nix-darwin environment. + programs.zsh.enable = true; # default shell on catalina + # programs.fish.enable = true; + + # Used for backwards compatibility, please read the changelog before changing. + # $ darwin-rebuild changelog + system.stateVersion = 5; + nix.enable = true; + # The platform the configuration will be used on. + nixpkgs.hostPlatform = "aarch64-darwin"; + homebrew.enable = true; + homebrew.onActivation = { + autoUpdate = true; # Fetch the newest stable branch of Homebrew's git repo + upgrade = true; # Upgrade outdated casks, formulae, and App Store apps + # 'zap': uninstalls all formulae(and related files) not listed in the generated Brewfile + cleanup = "zap"; + }; + homebrew.brews = [ "nowplaying-cli" ]; + homebrew.casks = [ + "calibre" + "ollama" + "beeper" + "amethyst" + "steam" + "notion" + "google-drive" + "zen@twilight" + "arc" + # "zen-browser" + "affinity-designer" + "affinity-publisher" + "grammarly-desktop" + "nitro-pdf-pro" + # "wezterm@nightly" + "amethyst" + "plover" + "postman" + "bartender" + "onedrive" + "skype" + "1password" + # "wezterm@nightly" + "zoom" + ]; + homebrew.masApps = { + # "1Password for Safari" = 1569813296; + "Microsoft 365" = 1450038993; + Fantastical = 975937182; + "Microsoft Teams" = 1113153706; + "Microsoft Outlook" = 985367838; + }; + + services.yabai = { + enable = false; + enableScriptingAddition = true; + config = { + focus_follows_mouse = "off"; + mouse_follows_focus = "off"; + window_placement = "second_child"; + window_opacity = "off"; + layout = "bsp"; + top_padding = 10; + bottom_padding = 10; + left_padding = 10; + right_padding = 10; + window_gap = 10; + }; + extraConfig = '' + yabai -m signal --add app='^Ghostty$' event=window_created action='yabai -m space --layout bsp' + yabai -m signal --add app='^Ghostty$' event=window_destroyed action='yabai -m space --layout bsp' + ''; + + }; + system.defaults.dock = { + persistent-apps = [ + "/System/Applications/Launchpad.app" + "/Applications/Arc.app" + "${pkgs.spotify}/Applications/Spotify.app" + "/Applications/Notion.app" + "/Applications/Microsoft Outlook.app" + "/Applications/Fantastical.app" + "/System/Applications/App Store.app/" + "/Applications/Microsoft Teams.app" + "/Applications/Microsoft Word.app" + "/System/Applications/Messages.app" + "/Applications/Beeper Desktop.app" + "/Applications/1Password.app" + "/System/Applications/System Settings.app" + "/System/Applications/Home.app" + "${pkgs.vscode}/Applications/Visual Studio Code.App" + "${pkgs.ghostty}/Applications/Ghostty.app" + "${pkgs.zotero}/Applications/Zotero.app" + ]; + }; + + services.sketchybar.enable = true; + services.sketchybar.extraPackages = with pkgs; [ jq yabai ]; + + users.users.ivypierlot = { + name = "ivypierlot"; + home = "/Users/ivypierlot"; + shell = pkgs.zsh; + }; +} diff --git a/systems/macbook/default.nix b/systems/macbook/default.nix new file mode 100755 index 000000000..ae409c580 --- /dev/null +++ b/systems/macbook/default.nix @@ -0,0 +1,42 @@ +{ nixpkgs +, config +, overlays +, inputs +, home-manager +, darwin +, home-manager-modules +, modules +, ... +}: +darwin.lib.darwinSystem { + specialArgs = { inherit inputs; }; + system = "aarch64-darwin"; + modules = modules ++ [ + ./configuration.nix + home-manager.darwinModules.home-manager + { + home-manager.users.ivypierlot = { + imports = home-manager-modules; + home.username = "ivypierlot"; + home.sessionVariables = { + NH_FLAKE = "/Users/ivypierlot/dotfiles/nixos-config"; + }; + }; + nixpkgs = { + + overlays = overlays ++ [ + (prev: this: + { + + ghostty = prev.ghostty-mac; + } + + ) + ]; + inherit config; + }; + # Optionally, use home-manager.extraSpecialArgs to pass + # arguments to home.nix + } + ]; +} diff --git a/systems/macmini/configuration.nix b/systems/macmini/configuration.nix new file mode 100755 index 000000000..33590247d --- /dev/null +++ b/systems/macmini/configuration.nix @@ -0,0 +1,77 @@ +# darwin.nix + +{ pkgs, ... }: + +{ + # List packages installed in system profile. To search by name, run: + documentation.enable = true; + security.pam.enableSudoTouchIdAuth = true; + # $ nix-env -qaP | grep wget + environment.systemPackages = with pkgs; [ + vim + nodejs + vscode + wezterm + gnupg + ]; + + nix.channel.enable = false; + # Auto upgrade nix package and the daemon service. + services.nix-daemon.enable = true; + # nix.package = pkgs.nix; + + # Necessary for using flakes on this system. + nix.settings.experimental-features = "nix-command flakes"; + + # Create /etc/zshrc that loads the nix-darwin environment. + programs.gnupg.agent = { + enable = true; + enableSSHSupport = true; + }; + programs.zsh.enable = true; # default shell on catalina + # programs.fish.enable = true; + + # Used for backwards compatibility, please read the changelog before changing. + # $ darwin-rebuild changelog + system.stateVersion = 5; + + # The platform the configuration will be used on. + nixpkgs.hostPlatform = "aarch64-darwin"; + homebrew.enable = true; + homebrew.onActivation = { + autoUpdate = true; # Fetch the newest stable branch of Homebrew's git repo + upgrade = true; # Upgrade outdated casks, formulae, and App Store apps + # 'zap': uninstalls all formulae(and related files) not listed in the generated Brewfile + cleanup = "zap"; + }; + + homebrew.casks = [ + "visual-studio-code" + "postman" + "bartender" + ]; + system.defaults.NSGlobalDomain = { + AppleInterfaceStyle = "Dark"; # dark mode + AppleShowAllFiles = true; + ApplePressAndHoldEnabled = false; # enable press and hold + + # If you press and hold certain keyboard keys when in a text area, the key’s character begins to repeat. + # This is very useful for vim users, they use `hjkl` to move cursor. + # sets how long it takes before it starts repeating. + InitialKeyRepeat = 10; # normal minimum is 15 (225 ms), maximum is 120 (1800 ms) + # sets how fast it repeats once it starts. + KeyRepeat = 3; # normal minimum is 2 (30 ms), maximum is 120 (1800 ms) + }; + system.defaults.dock = { + persistent-apps = [ + "/Applications/Arc.app" + "/Applications/Nix Apps/WezTerm.app" + ]; + }; + + users.users.ivypierlot = { + name = "ivypierlot"; + home = "/Users/ivypierlot"; + shell = pkgs.zsh; + }; +} diff --git a/systems/macmini/default.nix b/systems/macmini/default.nix new file mode 100755 index 000000000..496d03879 --- /dev/null +++ b/systems/macmini/default.nix @@ -0,0 +1,29 @@ +{ + nixpkgs, + config, + overlays, + inputs, + home-manager, + darwin, + home-manager-modules, + modules, + ... +}: +darwin.lib.darwinSystem { + system = "aarch64-darwin"; + modules = modules ++ [ + ./configuration.nix + home-manager.darwinModules.home-manager + { + home-manager.useGlobalPkgs = true; + home-manager.useUserPackages = true; + home-manager.users.ivypierlot = { + imports = home-manager-modules; + home.username = "ivypierlot"; + }; + nixpkgs = { inherit config overlays; }; + # Optionally, use home-manager.extraSpecialArgs to pass + # arguments to home.nix + } + ]; +} diff --git a/systems/secondpc/configuration.nix b/systems/secondpc/configuration.nix new file mode 100755 index 000000000..3a72ba590 --- /dev/null +++ b/systems/secondpc/configuration.nix @@ -0,0 +1,250 @@ +# 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’). + +{ + config, + lib, + pkgs, + ... +}: +{ + + nix = { + package = pkgs.nixUnstable; + extraOptions = '' + experimental-features = nix-command flakes + ''; + }; + + # Use the systemd-boot EFI boot loader. + # boot.loader.systemd-boot.enable = true; + # boot.loader.efi.canTouchEfiVariables = true; + # boot.loader.efi.efiSysMountPoint = "/boot/efi"; + # boot.loader.grub.useOSProber = true; + networking.hostName = "secondpc"; # Define your hostname. + # networking.wireless = { enable = true; # Enables wireless support via wpa_supplicant. + # networks.NeddySB.pskRaw = "e9331ef6ad7d0a1d67e81afaba284e4544cedb73b33f840c9812fc1991562dcc"; + # }; + # Set your time zone. + time.timeZone = "Australia/Melbourne"; + + # The global useDHCP flag is deprecated, therefore explicitly set to false here. + # Per-interface useDHCP will be mandatory in the future, so this generated config + # replicates the default behaviour. + hardware.openrazer.enable = true; + networking.useDHCP = false; + networking.enableIPv6 = true; + networking.defaultGateway6 = { + address = "fe80::1"; + interface = "br0"; + }; + networking.bridges = { + "br0" = { + interfaces = [ "enp2s0" ]; + }; + }; + # + networking.interfaces.br0.useDHCP = false; + networking.interfaces.br0.ipv4.addresses = [ + { + address = "192.168.0.26"; + prefixLength = 24; + } + ]; + + # Or disable the firewall altogether. + # networking.firewall.enable = false; + + # networking.interfaces.wlo1.useDHCP = true; + networking.wireless.userControlled.enable = false; + # Configure network proxy if necessary + # networking.proxy.default = "http://user:password@proxy:port/"; + # networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain"; + + # Select internationalisation properties. + i18n.defaultLocale = "en_AU.UTF-8"; + # console = { + # font = "Lat2-Terminus16"; + # keyMap = "us"; + # }; + + # Configure keymap in X11 + # services.xserver.xkbOptions = "eurosign:e"; + #fonts.fonts = with pkgs; + # [ + # (nerdfonts.override { + # fonts = [ "FiraCode" "Inconsolata" "Hasklig" "RobotoMono" ]; + # }) + # ]; + + services.accounts-daemon = { + enable = true; + }; + + # Enable CUPS to print documents. + # services.printing.enable = true; + #services.blueman.enable = true; + # Enable sound. + sound.enable = false; + hardware.pulseaudio = { + enable = false; + + # NixOS allows either a lightweight build (default) or full build of PulseAudio to be installed. + # Only the full build has Bluetooth support, so it must be selected here. + package = pkgs.pulseaudioFull; + }; + # services.jack = { + # jackd.enable = true; + # + # alsa.enable = false; + # loopback = { + # enable = true; + # }; + # }; + # Enable touchpad support (enabled default in most desktopManager). + # services.xserver.libinput.enable = true; + + # Define a user account. Don't forget to set a password with ‘passwd’. + users.mutableUsers = true; + users.users.auscyber = { + isNormalUser = true; + extraGroups = [ + "jackaudio" + "audio" + "libvirtd" + "plugdev" + "wheel" + "docker" + "video" + ]; + shell = pkgs.zsh; + }; + + security.sudo = { + enable = true; + # extraRules = { + + # }; + }; + programs.zsh.enable = true; + hardware.opengl.enable = true; + # List packages installed in system profile. To search, run: + # $ nix search wget + environment.systemPackages = with pkgs; [ + vscode-fhs + wget + wireshark + bind + ripgrep + vim + docker-compose + python3 + #Virtualisation + breeze-grub + qemu + OVMF + virt-manager + dconf + + #Required for vscode + #nodejs-14_x + ]; + programs.nix-ld.enable = true; + programs.dconf.enable = false; + + # services.xserver = { + # layout = "us"; + # enable = true; + # config = '' + # + # Section "InputClass" + # Identifier "My Mouse" + # MatchIsPointer "yes" + # Option "AccelerationProfile" "-1" + # Option "AccelerationScheme" "none" + # Option "AccelSpeed" "-1" + # EndSection + # ''; + # videoDrivers = [ "intel" ]; + # # videoDrivers = [ "nouveau" ]; + # displayManager.lightdm = { + # enable = true; + # greeter.enable = true; + # background = "/usr/share/pixmaps/background1.jpg"; + # }; + ## desktopManager.plasma5.enable = true; + # # displayManager.startx.enable = true; + # displayManager.defaultSession = "none+xmonad"; + # # displayManager.autoLogin = { + # # enable = true; + # # user = "auscyber"; + # # }; + # windowManager.awesome = { + # enable = true; + # luaModules = with pkgs.luaPackages; [ luarocks ]; + # }; + # windowManager.xmonad = { + # enable = true; + # extraPackages = haskellPackages: + # with haskellPackages; [ + # xmonad-contrib + # xmonad + # ]; + # + # }; + # }; + hardware.opengl.driSupport32Bit = true; + # services.cron = { + # enable = true; + # systemCronJobs = [ + # "0 0 1-31/2 * * auscyber . /etc/profile' ${pkgs.bash}/bin/bash /home/auscyber/dotfiles/backup2.sh" + # ]; + # }; + + virtualisation.docker = { + enable = true; + liveRestore = false; + }; + virtualisation.libvirtd = { + qemu = { + ovmf.enable = true; + runAsRoot = false; + }; + allowedBridges = [ "br0" ]; + enable = true; + }; + environment.pathsToLink = [ "/share/agda" ]; + + # Some programs need SUID wrappers, can be configured further or are + # started in user sessions. + # programs.mtr.enable = true; + # programs.gnupg.agent = { + # enable = true; + # enableSSHSupport = true; + # }; + + # List services that you want to enable: + + # Enable the OpenSSH daemon. + services.openssh = { + enable = true; + forwardX11 = true; + }; + #services.espanso.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 = "21.05"; # Did you read the comment? + environment.etc."current-system-packages".text = + let + packages = builtins.map (p: "${p.name}") config.environment.systemPackages; + sortedUnique = builtins.sort builtins.lessThan (lib.unique packages); + formatted = builtins.concatStringsSep "\n" sortedUnique; + in + formatted; +} diff --git a/systems/secondpc/default.nix b/systems/secondpc/default.nix new file mode 100755 index 000000000..41b3fbb09 --- /dev/null +++ b/systems/secondpc/default.nix @@ -0,0 +1,40 @@ +{ + nixpkgs, + config, + overlays, + inputs, + nixos-mailserver, + home-manager, + home-manager-modules, + modules, +}: +nixpkgs.lib.nixosSystem { + system = "x86_64-linux"; + specialArgs = { inherit inputs; }; + modules = modules ++ [ + ./configuration.nix + ./hardware-configuration.nix + # ./../../modules/system/grub.nix + ./boot.nix + nixos-mailserver.nixosModule + # ./mailserver.nix + # ./minecraft.nix + home-manager.nixosModules.home-manager + { + + home-manager. + users.auscyber = { + imports = home-manager-modules; + home.username = "auscyber"; + home.sessionVariables = { + FLAKENAME = "auscyber"; + NIXFLAKE = "$HOME/dotfiles/nixos-config"; + }; + + }; + nixpkgs = { inherit config overlays; }; + + } + ]; + +} diff --git a/systems/secondpc/mailserver.nix b/systems/secondpc/mailserver.nix new file mode 100755 index 000000000..47e89dca2 --- /dev/null +++ b/systems/secondpc/mailserver.nix @@ -0,0 +1,14 @@ +{ + config, + lib, + pkgs, + modulesPath, + ... +}: +{ + mailserver = { + enable = true; + + fqdn = ""; + }; +} diff --git a/systems/secondpc/minecraft.nix b/systems/secondpc/minecraft.nix new file mode 100755 index 000000000..eeba45e49 --- /dev/null +++ b/systems/secondpc/minecraft.nix @@ -0,0 +1,32 @@ +{ + config, + pkgs, + lib, + ... +}: +let + minecraft-server = pkgs.minecraft-server.overrideAttrs (attrs: { + src = pkgs.fetchurl { + url = "https://launcher.mojang.com/v1/objects/a16d67e5807f57fc4e550299cf20226194497dc2/server.jar"; + # sha1 because that comes from mojang via api + sha1 = "a16d67e5807f57fc4e550299cf20226194497dc2"; + }; + + }); +in +{ + services.minecraft-server = { + enable = true; + eula = true; + package = minecraft-server; + openFirewall = true; + serverProperties = { + server-port = 25565; + max-players = 20; + motd = "Super minecraft"; + }; + declarative = true; + jvmOpts = "-Xmx4096M -Xms2048M"; + + }; +} diff --git a/systems/surfacelaptop/configuration.nix b/systems/surfacelaptop/configuration.nix new file mode 100755 index 000000000..a21055d0c --- /dev/null +++ b/systems/surfacelaptop/configuration.nix @@ -0,0 +1,144 @@ +# 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’). + +{ + config, + pkgs, + lib, + ... +}: + +{ + imports = [ + # Include the results of the hardware scan. + ./hardware-configuration.nix + ]; + + # Bootloader. + boot.loader.systemd-boot.enable = true; + boot.loader.efi.canTouchEfiVariables = true; + + networking.hostName = "ivyslaptop"; # Define your hostname. + # networking.wireless.enable = true; # Enables wireless support via wpa_supplicant. + + # Configure network proxy if necessary + # networking.proxy.default = "http://user:password@proxy:port/"; + # networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain"; + + # Enable networking + networking.networkmanager.enable = true; + + # Set your time zone. + time.timeZone = "Australia/Melbourne"; + hardware.bluetooth = { + enable = true; + powerOnBoot = true; + }; + services.blueman.enable = true; + + # Select internationalisation properties. + i18n.defaultLocale = "en_AU.UTF-8"; + + i18n.extraLocaleSettings = { + LC_ADDRESS = "en_AU.UTF-8"; + LC_IDENTIFICATION = "en_AU.UTF-8"; + LC_MEASUREMENT = "en_AU.UTF-8"; + LC_MONETARY = "en_AU.UTF-8"; + LC_NAME = "en_AU.UTF-8"; + LC_NUMERIC = "en_AU.UTF-8"; + LC_PAPER = "en_AU.UTF-8"; + LC_TELEPHONE = "en_AU.UTF-8"; + LC_TIME = "en_AU.UTF-8"; + }; + + # Enable the X11 windowing system. + services.xserver.enable = true; + + # Enable the GNOME Desktop Environment. + services.xserver.displayManager.gdm.enable = true; + services.xserver.desktopManager.gnome.enable = true; + + # Configure keymap in X11 + services.xserver = { + layout = "au"; + xkbVariant = ""; + }; + + # Enable CUPS to print documents. + services.printing.enable = true; + + # Enable sound with pipewire. + hardware.pulseaudio.enable = false; + security.rtkit.enable = true; + services.pipewire = { + enable = true; + alsa.enable = true; + alsa.support32Bit = true; + pulse.enable = true; + # If you want to use JACK applications, uncomment this + #jack.enable = true; + + # use the example session manager (no others are packaged yet so this is enabled by default, + # no need to redefine it in your config for now) + #media-session.enable = true; + }; + + # Enable touchpad support (enabled default in most desktopManager). + services.xserver.libinput.enable = true; + + # Define a user account. Don't forget to set a password with ‘passwd’. + users.users.auscyber = { + isNormalUser = true; + shell = pkgs.zsh; + description = "Ivy Pierlot"; + extraGroups = [ + "networkmanager" + "wheel" + ]; + }; + + # Install firefox. + programs.firefox.enable = true; + + # Allow unfree packages + nixpkgs.config.allowUnfree = true; + + # List packages installed in system profile. To search, run: + # $ nix search wget + environment.systemPackages = with pkgs; [ + gnome.gnome-tweaks + vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default. + git + wget + ]; + + # Some programs need SUID wrappers, can be configured further or are + # started in user sessions. + # programs.mtr.enable = true; + # programs.gnupg.agent = { + # enable = true; + # enableSSHSupport = true; + # }; + + # List services that you want to enable: + + # Enable the OpenSSH daemon. + services.openssh.enable = true; + + # Open ports in the firewall. + # networking.firewall.allowedTCPPorts = [ ... ]; + # networking.firewall.allowedUDPPorts = [ ... ]; + # Or disable the firewall altogether. + # networking.firewall.enable = false; + + # 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). + microsoft-surface.ipts.enable = lib.mkForce false; + system.stateVersion = "24.05"; # Did you read the comment? + +} diff --git a/systems/surfacelaptop/default.nix b/systems/surfacelaptop/default.nix new file mode 100755 index 000000000..71da42e9e --- /dev/null +++ b/systems/surfacelaptop/default.nix @@ -0,0 +1,38 @@ +{ + nixpkgs, + config, + overlays, + inputs, + home-manager-modules, + modules ? [ ], + ... +}: +nixpkgs.lib.nixosSystem { + system = "x86_64-linux"; + modules = modules ++ [ + ./configuration.nix + ./hardware-configuration.nix + #./../../modules/system/grub.nix + #./boot.nix + # ./mailserver.nix + # ./minecraft.nix + { + home-manager = { + useGlobalPkgs = true; + useUserPackages = true; + users.auscyber = { + imports = home-manager-modules; + home.username = "auscyber"; + home.sessionVariables = { + FLAKENAME = "auscyber"; + NIXFLAKE = "$HOME/dotfiles/nixos-config"; + }; + + }; + }; + nixpkgs = { inherit config overlays; }; + + } + ]; + +} diff --git a/systems/surfacelaptop/hardware-configuration.nix b/systems/surfacelaptop/hardware-configuration.nix new file mode 100755 index 000000000..df483463e --- /dev/null +++ b/systems/surfacelaptop/hardware-configuration.nix @@ -0,0 +1,51 @@ +# 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" + "usb_storage" + "sd_mod" + ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-amd" ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = { + device = "/dev/disk/by-uuid/034ed0ec-6cfc-4cdd-ac6b-4b9af782eaa5"; + fsType = "ext4"; + }; + + fileSystems."/boot" = { + device = "/dev/disk/by-uuid/6084-C9C2"; + fsType = "vfat"; + options = [ + "fmask=0022" + "dmask=0022" + ]; + }; + + swapDevices = [ ]; + + # 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.wlp2s0.useDHCP = lib.mkDefault true; + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; +} diff --git a/systems/wsl-nixos/configuration.nix b/systems/wsl-nixos/configuration.nix new file mode 100644 index 000000000..ff01f22c0 --- /dev/null +++ b/systems/wsl-nixos/configuration.nix @@ -0,0 +1,37 @@ +# Edit this configuration file to define what should be installed on +# your system. Help is available in the configuration.nix(5) man page, on +# https://search.nixos.org/options and in the NixOS manual (`nixos-help`). + +# NixOS-WSL specific options are documented on the NixOS-WSL repository: +# https://github.com/nix-community/NixOS-WSL + +{ + config, + lib, + pkgs, + ... +}: + +{ + + wsl.enable = true; + wsl.defaultUser = "nixos"; + networking.hostName = "wsl-nixos"; + programs.nix-ld = { + enable = true; + package = pkgs.nix-ld-rs; # only for NixOS 24.05 + }; + programs.zsh.enable = true; + users.users.nixos = { + shell = pkgs.zsh; + }; + environment.systemPackages = [ pkgs.wget ]; + + # 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 = "24.05"; # Did you read the comment? +} diff --git a/systems/wsl-nixos/default.nix b/systems/wsl-nixos/default.nix new file mode 100755 index 000000000..26aabbcea --- /dev/null +++ b/systems/wsl-nixos/default.nix @@ -0,0 +1,56 @@ +{ + nixpkgs, + config, + overlays, + inputs, + home-manager-modules, + modules, + ... +}: +nixpkgs.lib.nixosSystem { + system = "x86_64-linux"; + modules = modules ++ [ + ./configuration.nix + #./../../modules/system/grub.nix + #./boot.nix + # ./mailserver.nix + # ./minecraft.nix + { + home-manager = { + useGlobalPkgs = true; + useUserPackages = true; + users.nixos = { + imports = [ + + ( + { + config, + pkgs, + system, + lib, + modulesPath, + ... + }: + { + programs.git.extraConfig = { + + core.sshCommand = "ssh.exe"; + }; + + } + ) + ] ++ home-manager-modules; + home.username = "nixos"; + home.sessionVariables = { + FLAKENAME = "nixos"; + NIXFLAKE = "$HOME/dotfiles/nixos-config"; + }; + + }; + }; + nixpkgs = { inherit config overlays; }; + + } + ]; + +}