diff options
author | Linnnus <[email protected]> | 2023-09-07 16:53:41 +0200 |
---|---|---|
committer | Linnnus <[email protected]> | 2023-09-07 16:53:41 +0200 |
commit | edcc3acea595d3045253c3c2fe2462599c1c54e0 (patch) | |
tree | 81e17fc5fe4f0a52d30e8d0209c6080cc77eda32 /use-cases | |
parent | d31d1bae8c38e145cdbafe105401d9528b416779 (diff) |
Reorganize everything
Diffstat (limited to 'use-cases')
-rw-r--r-- | use-cases/cli-basics.nix | 23 | ||||
-rw-r--r-- | use-cases/default.nix | 37 | ||||
-rw-r--r-- | use-cases/dev-cli-basics.nix | 10 | ||||
-rw-r--r-- | use-cases/git/default.nix | 18 | ||||
-rw-r--r-- | use-cases/neovim/default.nix | 27 | ||||
-rw-r--r-- | use-cases/neovim/filetype.nix | 20 | ||||
-rw-r--r-- | use-cases/neovim/lsp.nix | 106 | ||||
-rw-r--r-- | use-cases/zsh/default.nix | 25 | ||||
-rw-r--r-- | use-cases/zsh/plugins.nix | 69 |
9 files changed, 0 insertions, 335 deletions
diff --git a/use-cases/cli-basics.nix b/use-cases/cli-basics.nix deleted file mode 100644 index 17e29c7..0000000 --- a/use-cases/cli-basics.nix +++ /dev/null @@ -1,23 +0,0 @@ -# This module defines Home Manager configuration options for the 'sysadmin' use -# case. That is, basic system administration. - -{ pkgs, super, lib, ... }: - -{ - home.packages = with pkgs; [ - tree - jc - jq - vim - comma - ]; - - # basic qol shell aliases - home.shellAliases = { - "mv" = "mv -i"; - "rm" = "rm -i"; - "cp" = "cp -i"; - "ls" = "ls -A --color=auto"; - "grep" = "grep --color=auto"; - }; -} diff --git a/use-cases/default.nix b/use-cases/default.nix deleted file mode 100644 index e7a317a..0000000 --- a/use-cases/default.nix +++ /dev/null @@ -1,37 +0,0 @@ -{ config, pkgs, lib, flakeInputs, misc, ... }: - -let - inherit (lib) mkOption types optional elem; - - hasUseCase = c: elem c config.my.use-cases; - development = hasUseCase "development"; - sysadmin = hasUseCase "sysadmin"; - gui = hasUseCase "gui"; -in -{ - options.my.use-cases = mkOption { - description = "use-cases/modules to enable"; - type = types.listOf (types.enum ["gui" "development" "sysadmin"]); - }; - - config = { - home-manager.users.linus = { - imports = (optional development ./neovim) - ++ (optional development ./git) - ++ (optional development ./dev-cli-basics.nix) - #++ (optional (development && gui && pkgs.stdenv.isDarwin) ./iterm2) - #++ (optional (development && gui && pkgs.stdenv.isDarwin) ./st) - ++ (optional (development || sysadmin) ./zsh) - ++ (optional (development || sysadmin) ./cli-basics.nix); - - xdg.enable = true; - }; - - home-manager.extraSpecialArgs = { - super = config; - inherit flakeInputs misc; - }; - - home-manager.useGlobalPkgs = true; - }; -} diff --git a/use-cases/dev-cli-basics.nix b/use-cases/dev-cli-basics.nix deleted file mode 100644 index fae49cd..0000000 --- a/use-cases/dev-cli-basics.nix +++ /dev/null @@ -1,10 +0,0 @@ -# This file specifies a home-manager config for basic development CLI -# applications like interpreters and such. - -{ pkgs, ... }: - -{ - home.packages = with pkgs; [ - deno - ]; -} diff --git a/use-cases/git/default.nix b/use-cases/git/default.nix deleted file mode 100644 index 8df44db..0000000 --- a/use-cases/git/default.nix +++ /dev/null @@ -1,18 +0,0 @@ -{ ... }: - -{ - programs.git = { - enable = true; - - # Set privacy-respecting user information. - userName = "Linnnus"; - userEmail = "[email protected]"; - }; - - home.shellAliases = { - gs = "git status"; - gd = "git diff"; - gc = "git commit"; - gap = "git add --patch"; - }; -} diff --git a/use-cases/neovim/default.nix b/use-cases/neovim/default.nix deleted file mode 100644 index 883c170..0000000 --- a/use-cases/neovim/default.nix +++ /dev/null @@ -1,27 +0,0 @@ -# This file contains the HM configuration options for Neovim. - -{ pkgs, lib, ... }: - -{ - imports = - [ - ./lsp.nix - ./filetype.nix - ]; - - programs.neovim = { - enable = true; - - # Typing `vi`, `vim`, or `vimdiff` will also run neovim. - viAlias = true; - vimAlias = true; - vimdiffAlias = true; - }; - - # Set Neovim as the default editor. - home.sessionVariables.EDITOR = "nvim"; - home.sessionVariables.VISUAL = "nvim"; - - # Use neovim as man pager. - home.sessionVariables.MANPAGER = "nvim +Man!"; -} diff --git a/use-cases/neovim/filetype.nix b/use-cases/neovim/filetype.nix deleted file mode 100644 index 66d5e68..0000000 --- a/use-cases/neovim/filetype.nix +++ /dev/null @@ -1,20 +0,0 @@ -# This module configures various syntax/filetype plugins for Neovim. - -{ pkgs, ... }: - -let - vim-noweb = pkgs.vimUtils.buildVimPlugin { - pname = "vim-noweb"; - version = "26-08-2023"; # day of retrieval - src = pkgs.fetchzip { - url = "https://metaed.com/papers/vim-noweb/vim-noweb.tgz"; - hash = "sha256-c5eUZiKIjAfjJ33l821h5DjozMpMf0CaK03QIkSUfxg="; - }; - }; -in -{ - programs.neovim.plugins = with pkgs.vimPlugins; [ - vim-nix - vim-noweb - ]; -} diff --git a/use-cases/neovim/lsp.nix b/use-cases/neovim/lsp.nix deleted file mode 100644 index 588fb8b..0000000 --- a/use-cases/neovim/lsp.nix +++ /dev/null @@ -1,106 +0,0 @@ -# This module sets up LSP server configurations for Neovim. It is waaay -# overcomplicated as it kind of turned into an experiment in generating Lua -# code from a Nix attrset. - -{ pkgs, lib, ... }: - -{ - programs.neovim.plugins = [ - { - plugin = pkgs.vimPlugins.nvim-lspconfig; - type = "lua"; - config = '' - local lspconfig = require("lspconfig") - local util = require("lspconfig.util") - - -- Mappings. - -- See `:help vim.diagnostic.*` for documentation on any of the below functions - local opts = { noremap=true, silent=true } - vim.keymap.set('n', '<leader>e', vim.diagnostic.open_float, opts) - vim.keymap.set('n', '[d', vim.diagnostic.goto_prev, opts) - vim.keymap.set('n', ']d', vim.diagnostic.goto_next, opts) - vim.keymap.set('n', '<leader>q', vim.diagnostic.setloclist, opts) - - -- Use an on_attach function to only map the following keys - -- after the language server attaches to the current buffer - local on_attach = function(client, bufnr) - -- Enable completion triggered by <c-x><c-o> - vim.api.nvim_buf_set_option(bufnr, 'omnifunc', 'v:lua.vim.lsp.omnifunc') - - -- Mappings. - -- See `:help vim.lsp.*` for documentation on any of the below functions - local bufopts = { noremap=true, silent=true, buffer=bufnr } - vim.keymap.set('n', 'gD', vim.lsp.buf.declaration, bufopts) - vim.keymap.set('n', 'gd', vim.lsp.buf.definition, bufopts) - vim.keymap.set('n', 'K', vim.lsp.buf.hover, bufopts) - vim.keymap.set('n', 'gi', vim.lsp.buf.implementation, bufopts) - vim.keymap.set('n', '<C-k>', vim.lsp.buf.signature_help, bufopts) - vim.keymap.set('n', '<leader>wa', vim.lsp.buf.add_workspace_folder, bufopts) - vim.keymap.set('n', '<leader>wr', vim.lsp.buf.remove_workspace_folder, bufopts) - vim.keymap.set('n', '<leader>wl', function() - print(vim.inspect(vim.lsp.buf.list_workspace_folders())) - end, bufopts) - vim.keymap.set('n', '<leader>D', vim.lsp.buf.type_definition, bufopts) - vim.keymap.set('n', '<leader>rn', vim.lsp.buf.rename, bufopts) - vim.keymap.set('n', '<leader>ca', vim.lsp.buf.code_action, bufopts) - vim.keymap.set('n', 'gr', vim.lsp.buf.references, bufopts) - vim.keymap.set('n', '<leader>f', function() vim.lsp.buf.format { async = true } end, bufopts) - vim.keymap.set('n', '<leader>s', function() vim.cmd[[ClangdSwitchSourceHeader]] end, bufopts) - end - - -- Use a loop to conveniently call 'setup' on multiple servers and - -- map buffer local keybindings when the language server attaches - local servers = { - pyright = { cmd = { "${pkgs.pyright}/bin/pyright-langserver" } }, - rnix = { cmd = { "${pkgs.rnix-lsp}/bin/rnix-lsp" } }, - denols = { - init_options = { - enable = true, - unstable = true, - lint = true, - }, - cmd = { "${pkgs.deno}/bin/deno", "lsp", "--unstable" }, - root_dir = function(startpath) - if util.find_package_json_ancestor(startpath) then - -- This is a Node project; let tsserver handle this one. - return nil - else - -- Otherwise, we try to find the root or - -- default to the current directory. - return util.root_pattern("deno.json", "deno.jsonc", ".git")(startpath) - or util.path.dirname(startpath) - end - end, - }, - }; - for server, config in pairs(servers) do - # set common options - config.on_attach = on_attach; - config.debounce_text_changes = 150; - - lspconfig[server].setup(config) - end - ''; - } - ]; -} - -# I spent like an hour writing this, only to find it was a pretty bad idea. -# -# nixToLua = s: -# if builtins.isAttrs s then -# let -# renderAttr = name: value: "[ [==========[" + name + "]==========] ] = " + (nixToLua value); -# attrsList = map (name: renderAttr name s.${name}) (lib.attrNames s); -# attrsListStr = lib.concatStringsSep ", " attrsList; -# in -# "{ ${attrsListStr} }" -# else if builtins.isList s then -# "{ " + (lib.concatStringsSep ", " (map nixToLua s)) + " }" -# else if builtins.isString s then -# # Oh boy I sure hope `s` doesn't contain "]==========]". -# "[==========[" + s + "]==========]" -# else if builtins.isInt s || builtins.isFloat s then -# toString s -# else -# throw "Cannot convert ${builtins.typeOf s} to Lua value!"; diff --git a/use-cases/zsh/default.nix b/use-cases/zsh/default.nix deleted file mode 100644 index 1b8ce16..0000000 --- a/use-cases/zsh/default.nix +++ /dev/null @@ -1,25 +0,0 @@ -{ pkgs, config, lib, ... }: - -{ - imports = - [ - ./plugins.nix - ]; - - programs.zsh = { - enable = true; - - defaultKeymap = "viins"; - - # Feeble attempt at cleaning up home directory. - # TODO: dotDir = (pathRelativeTo config.xdg.configHome config.home) + "/zsh"; - dotDir = ".config/zsh"; - history.path = config.xdg.cacheHome + "/zsh/history"; - - }; - - programs.fzf = { - enable = true; - enableZshIntegration = true; - }; -} diff --git a/use-cases/zsh/plugins.nix b/use-cases/zsh/plugins.nix deleted file mode 100644 index 3bebfce..0000000 --- a/use-cases/zsh/plugins.nix +++ /dev/null @@ -1,69 +0,0 @@ -{ pkgs, lib, config, ... }: - -let - inherit (lib.strings) concatStringsSep; - inherit (lib.attrsets) catAttrs; - - plugins = - [ - { - name = "autovenv"; - src = pkgs.fetchFromGitHub { - owner = "linnnus"; - repo = "autovenv"; - rev = "d9f0cd7"; - hash = "sha256-GfJIybMYxE97xLSkrOSGsn+AREmnCyqe9n2aZwjw4w4="; - }; - } - { - name = "zsh-cwd-history"; - src = pkgs.stdenvNoCC.mkDerivation rec { - pname = "zsh-cwd-history"; - version = "73afed8"; - - src = pkgs.fetchFromGitHub { - owner = "ericfreese"; - repo = pname; - rev = version; - hash = "sha256-xW11wPFDuFU80AzgAgLwkvK7Qv58fo3i3kSasE3p0zs="; - }; - - fixupPhase = '' - substituteInPlace ${pname}.zsh \ - --replace md5 ${pkgs.outils}/bin/md5 - - mkdir -p $out - mv * $out - ''; - - # This is kind of a weird, useless derivation, so we have to - # manually avoid doing lots of the usual stuff. - dontInstall = true; - }; - config = '' - # Where to but history files - export ZSH_CWD_HISTORY_DIR=${config.xdg.dataHome}/zsh-cwd-history - mkdir -p "$ZSH_CWD_HISTORY_DIR" - - # Toggle between global/local history - bindkey '^G' cwd-history-toggle - ''; - } - { - name = "zsh-vi-mode-cursor"; - src = pkgs.fetchFromGitHub { - owner = "Buckmeister"; - repo = "zsh-vi-mode-cursor"; - rev = "fa7cc0973ee71636e906e25e782d0aea19545d60"; - hash = "sha256-j73M4bvAoHWt5Wwg47hM0p5Or74x/3btTOPnI22SqG8="; - }; - } - ]; -in -{ - programs.zsh = { - plugins = map (p: removeAttrs p ["config"]) plugins; - - initExtra = concatStringsSep "\n" (catAttrs "config" plugins); - }; -} |