diff --git a/home/programs/git.nix b/home/programs/git.nix index 73deb04..20c04ac 100644 --- a/home/programs/git.nix +++ b/home/programs/git.nix @@ -5,6 +5,7 @@ graph = "log --oneline --all --graph"; amend = "commit --amend --no-edit"; sdiff = "diff --staged"; + fpush = "push --force-with-lease"; t = "tag --annotate"; bclone = "!sh ${pkgs.writeShellScriptBin "bare-clone" '' url=$1 diff --git a/home/programs/neovim/default.nix b/home/programs/neovim/default.nix index 5508be3..31d7b51 100644 --- a/home/programs/neovim/default.nix +++ b/home/programs/neovim/default.nix @@ -3,12 +3,12 @@ pkgs, lib, ... -}: { +} @ input: { programs.nixvim = { enable = true; } - // (import ../../../lib/nixvim.nix {inherit pkgs;}); + // (import ../../../lib/nixvim.nix input); programs.vscode = { extensions = [pkgs.vscode-extensions.asvetliakov.vscode-neovim]; diff --git a/home/programs/work.nix b/home/programs/work.nix index 09aeeb8..51140b3 100644 --- a/home/programs/work.nix +++ b/home/programs/work.nix @@ -15,6 +15,11 @@ in { email = "tristan.beedell@cryoserver.com"; terminal = false; }; + programs.git.extraConfig = { + "includeIf \"gitdir:~/Documents/personal/\"" = { + path = "~/Documents/personal/.gitconfig"; + }; + }; home.packages = [ pkgs.thunderbird @@ -31,17 +36,19 @@ in { desktopName = "Microsoft Teams"; }) pkgs.devcontainer - (pkgs.writeShellScriptBin "devcontainer-open" (let - jq = "${pkgs.jq}/bin/jq"; - devcontainer = "${pkgs.devcontainer}/bin/devcontainer"; - in '' - res=$(${devcontainer} up --workspace-folder .) - outcome=$(echo $res | ${jq} -r '.outcome') - [[ $outcome = "success" ]] || exit 1 - containerId=$(echo $res | ${jq} -r '.containerId') - remoteWorkspaceFolder=$(echo $res | ${jq} -r '.remoteWorkspaceFolder') - docker exec -it --workdir=$remoteWorkspaceFolder $containerId bash - '')) + (pkgs.writeShellScriptBin "devcontainer-open" ( + let + jq = "${pkgs.jq}/bin/jq"; + devcontainer = "${pkgs.devcontainer}/bin/devcontainer"; + in '' + res=$(${devcontainer} up --workspace-folder .) + outcome=$(echo $res | ${jq} -r '.outcome') + [[ $outcome = "success" ]] || exit 1 + containerId=$(echo $res | ${jq} -r '.containerId') + remoteWorkspaceFolder=$(echo $res | ${jq} -r '.remoteWorkspaceFolder') + docker exec -it --workdir=$remoteWorkspaceFolder $containerId bash + '' + )) ]; home.sessionVariables = { diff --git a/home/workstation.nix b/home/workstation.nix index 43aeaf6..481408b 100644 --- a/home/workstation.nix +++ b/home/workstation.nix @@ -28,6 +28,7 @@ playerctl quickemu devenv + logseq ]; services.udiskie = { @@ -37,7 +38,7 @@ programs.rbw.settings.pinentry = pkgs.pinentry-gnome3; - # https://docs.pipewire.org/page_module_raop_discover.html + # https://docs.pipewire.org/page_module_raop_discover.html xdg.configFile."pipewire/pipewire.conf.d/raop-discover.conf".text = '' context.modules = [ { @@ -47,28 +48,28 @@ ] ''; xdg.configFile."pipewire/pipewire.conf.d/raop-sink.conf".text = '' - context.modules = [ - { name = libpipewire-module-raop-sink - args = { - # Set the remote address to tunnel to - raop.ip = "127.0.0.1" - raop.port = 8190 - raop.name = "my-raop-device" - raop.hostname = "My Service" - #raop.transport = "udp" - raop.encryption.type = "RSA" - #raop.audio.codec = "PCM" - #raop.password = "****" - #audio.format = "S16" - #audio.rate = 44100 - #audio.channels = 2 - #audio.position = [ FL FR ] - stream.props = { - # extra sink properties - } - } - } - ] + context.modules = [ + { name = libpipewire-module-raop-sink + args = { + # Set the remote address to tunnel to + raop.ip = "127.0.0.1" + raop.port = 8190 + raop.name = "my-raop-device" + raop.hostname = "My Service" + #raop.transport = "udp" + raop.encryption.type = "RSA" + #raop.audio.codec = "PCM" + #raop.password = "****" + #audio.format = "S16" + #audio.rate = 44100 + #audio.channels = 2 + #audio.position = [ FL FR ] + stream.props = { + # extra sink properties + } + } + } + ] ''; services.gnome-keyring.enable = true; diff --git a/lib/nixvim.nix b/lib/nixvim.nix index 51f80c6..f98f4a0 100644 --- a/lib/nixvim.nix +++ b/lib/nixvim.nix @@ -1,9 +1,14 @@ -{pkgs, ...}: let +{ + pkgs, + lib, + ... +}: let lua = cmd: {__raw = cmd;}; - luaFunc = cmd: lua '' - function () - ${cmd} - end''; + luaFunc = cmd: + lua '' + function () + ${cmd} + end''; in { globals = { mapleader = " "; @@ -28,6 +33,8 @@ in { "extends:>" "precedes:<" ]; + + foldlevel = 2; }; extraPlugins = [(pkgs.vimPlugins.actions-preview-nvim)]; extraConfigLua = '' @@ -204,30 +211,32 @@ in { } ]; - autoCmd = [{ - event = "BufWritePre"; - pattern = "*.go"; - # https://github.com/golang/tools/blob/master/gopls/doc/vim.md#imports-and-formatting - callback = luaFunc '' - local params = vim.lsp.util.make_range_params() - params.context = {only = {"source.organizeImports"}} - -- buf_request_sync defaults to a 1000ms timeout. Depending on your - -- machine and codebase, you may want longer. Add an additional - -- argument after params if you find that you have to write the file - -- twice for changes to be saved. - -- E.g., vim.lsp.buf_request_sync(0, "textDocument/codeAction", params, 3000) - local result = vim.lsp.buf_request_sync(0, "textDocument/codeAction", params) - for cid, res in pairs(result or {}) do - for _, r in pairs(res.result or {}) do - if r.edit then - local enc = (vim.lsp.get_client_by_id(cid) or {}).offset_encoding or "utf-16" - vim.lsp.util.apply_workspace_edit(r.edit, enc) + autoCmd = [ + { + event = "BufWritePre"; + pattern = "*"; + # https://github.com/golang/tools/blob/master/gopls/doc/vim.md#imports-and-formatting + callback = luaFunc '' + local params = vim.lsp.util.make_range_params() + params.context = {only = {"source.organizeImports"}} + -- buf_request_sync defaults to a 1000ms timeout. Depending on your + -- machine and codebase, you may want longer. Add an additional + -- argument after params if you find that you have to write the file + -- twice for changes to be saved. + -- E.g., vim.lsp.buf_request_sync(0, "textDocument/codeAction", params, 3000) + local result = vim.lsp.buf_request_sync(0, "textDocument/codeAction", params) + for cid, res in pairs(result or {}) do + for _, r in pairs(res.result or {}) do + if r.edit then + local enc = (vim.lsp.get_client_by_id(cid) or {}).offset_encoding or "utf-16" + vim.lsp.util.apply_workspace_edit(r.edit, enc) + end end end - end - vim.lsp.buf.format({async = false}) - ''; - }]; + vim.lsp.buf.format({async = false}) + ''; + } + ]; plugins = { bufferline.enable = true; @@ -261,7 +270,15 @@ in { enable = true; servers = { ts-ls.enable = true; - nil-ls.enable = true; + nixd = { + enable = true; + settings = { + nixpkgs.expr = ''import {}''; + options.zenix.expr = ''(builtins.getFlake "git+https://git.tristans.cloud/tristan/nix").nixosConfigurations.zenix.options''; + options.alpine.expr = ''(builtins.getFlake "git+https://git.tristans.cloud/tristan/nix").nixosConfigurations.alpine.options''; + formatting.command = [(lib.getExe pkgs.alejandra)]; + }; + }; yamlls.enable = true; gopls.enable = true; }; diff --git a/nixos/programs/libvertd.nix b/nixos/programs/libvertd.nix index b7500d9..d251279 100644 --- a/nixos/programs/libvertd.nix +++ b/nixos/programs/libvertd.nix @@ -1,7 +1,6 @@ {config, ...}: let user = config.user; -in -{ +in { users.users.${user}.extraGroups = ["libvirtd" "kvm"]; virtualisation.libvirtd = { enable = true;