summaryrefslogtreecommitdiff
path: root/use-cases
diff options
context:
space:
mode:
Diffstat (limited to 'use-cases')
-rw-r--r--use-cases/cli-basics.nix23
-rw-r--r--use-cases/default.nix37
-rw-r--r--use-cases/dev-cli-basics.nix10
-rw-r--r--use-cases/git/default.nix18
-rw-r--r--use-cases/neovim/default.nix27
-rw-r--r--use-cases/neovim/filetype.nix20
-rw-r--r--use-cases/neovim/lsp.nix106
-rw-r--r--use-cases/zsh/default.nix25
-rw-r--r--use-cases/zsh/plugins.nix69
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);
- };
-}