diff --git a/nixos/common/desktop/README.md b/common/desktop/README.md similarity index 100% rename from nixos/common/desktop/README.md rename to common/desktop/README.md diff --git a/nixos/common/desktop/default.nix b/common/desktop/default.nix similarity index 100% rename from nixos/common/desktop/default.nix rename to common/desktop/default.nix diff --git a/nixos/common/desktop/home.nix b/common/desktop/home.nix similarity index 100% rename from nixos/common/desktop/home.nix rename to common/desktop/home.nix diff --git a/nixos/common/default.nix b/nixos/common/default.nix deleted file mode 100644 index 50e28ef..0000000 --- a/nixos/common/default.nix +++ /dev/null @@ -1,106 +0,0 @@ -{ lib, pkgs, inputs, config, ... }: { - imports = - [ ./users ./modules inputs.vault-secrets.nixosModules.vault-secrets ]; - - vault-secrets = - let - inherit (config.networking) domain hostName; - server = if domain == "olympus" then "vault" else "vault-0"; - in - lib.mkIf (domain == "olympus" || domain == "hades") { - vaultPrefix = "${domain}_secrets/nixos"; - vaultAddress = "http://${server}.${domain}:8200/"; - approlePrefix = "${domain}-${hostName}"; - }; - - home-manager = { - useGlobalPkgs = true; - useUserPackages = true; - extraSpecialArgs = { inherit inputs; }; - sharedModules = [ ./hm-modules inputs.nixvim.homeManagerModules.nixvim ]; - }; - - virtualisation.oci-containers.backend = lib.mkDefault "podman"; - - # Clean /tmp on boot. - boot.tmp.cleanOnBoot = true; - - # Set your time zone. - time.timeZone = lib.mkDefault "Europe/Amsterdam"; - - # Systemd OOMd - # Fedora enables these options by default. See the 10-oomd-* files here: - # https://src.fedoraproject.org/rpms/systemd/tree/acb90c49c42276b06375a66c73673ac3510255 - systemd.oomd = { - enableRootSlice = true; - enableUserServices = true; - }; - - # security.polkit.enable = lib.mkDefault true; - boot.tmp.useTmpfs = lib.mkDefault true; - - # Nix Settings - nix = { - registry.nixpkgs.flake = inputs.nixpkgs; - nixPath = [ "nixpkgs=${inputs.nixpkgs}" ]; - package = pkgs.nixUnstable; - settings = { - auto-optimise-store = true; - trusted-users = [ "root" "vivian" ]; - substituters = [ - "https://nix-community.cachix.org" - "https://nixpkgs-review-bot.cachix.org" - "https://colmena.cachix.org" - # "https://cache.garnix.io" - "https://cachix.cachix.org" - ]; - trusted-public-keys = [ - "cachix.cachix.org-1:eWNHQldwUO7G2VkjpnjDbWwy4KQ/HNxht7H4SSoMckM=" - "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=" - "nixpkgs-review-bot.cachix.org-1:eppgiDjPk7Hkzzz7XlUesk3rcEHqNDozGOrcLc8IqwE=" - "colmena.cachix.org-1:7BzpDnjjH8ki2CT3f6GdOk7QAzPOl+1t3LvTLXqYcSg=" - # "cache.garnix.io:CTFPyKSLcx5RMJKfLo5EEPUObbA78b0YQ2DTCJXqr9g=" - ]; - }; - optimise = { - automatic = true; - dates = [ "weekly" ]; - }; - gc = { - automatic = true; - dates = "weekly"; - randomizedDelaySec = "3h"; - options = "--delete-older-than 7d"; - }; - extraOptions = '' - experimental-features = nix-command flakes - ''; - }; - - nixpkgs.config.allowUnfree = true; - - # Limit the systemd journal to 100 MB of disk or the - # last 7 days of logs, whichever happens first. - services.journald.extraConfig = '' - SystemMaxUse=100M - MaxFileSec=7day - ''; - - # Enable SSH - services.openssh = { - enable = true; - settings = { - PasswordAuthentication = lib.mkDefault false; - PermitRootLogin = lib.mkDefault "no"; - }; - }; - - # Debloat - documentation = { - enable = lib.mkForce false; - doc.enable = lib.mkForce false; - man.enable = lib.mkForce false; - info.enable = lib.mkForce false; - nixos.enable = lib.mkForce false; - }; -} diff --git a/nixos/common/generic-lxc.nix b/nixos/common/generic-lxc.nix deleted file mode 100644 index 9874944..0000000 --- a/nixos/common/generic-lxc.nix +++ /dev/null @@ -1,13 +0,0 @@ -_: { - # See also: https://blog.xirion.net/posts/nixos-proxmox-lxc/ - - # Supress systemd services that don't work (correctly) on LXC - systemd.suppressedSystemUnits = [ - "dev-mqueue.mount" - "sys-kernel-debug.mount" - "sys-fs-fuse-connections.mount" - ]; - - # https://github.com/NixOS/nixpkgs/issues/157449#issuecomment-1459299764 - boot.specialFileSystems."/run".options = [ "rshared" ]; -} diff --git a/nixos/common/hm-modules/catppuccin.nix b/nixos/common/hm-modules/catppuccin.nix deleted file mode 100644 index 68c7191..0000000 --- a/nixos/common/hm-modules/catppuccin.nix +++ /dev/null @@ -1,40 +0,0 @@ -{ config, pkgs, lib, ... }: -with lib; -let cfg = config.themes.v.catppuccin; -in { - options.themes.v.catppuccin = { enable = mkEnableOption "catppuccin"; }; - config = - let - theme = "Catppuccin-Pink-Dark"; - cursorTheme = config.home.pointerCursor.name; - in - mkIf cfg.enable { - home.pointerCursor = { - name = "Bibata_Ghost"; - size = 24; - package = pkgs.bibata-cursors-translucent; - }; - - gtk = { - enable = true; - theme = { - name = theme; - package = pkgs.catppuccin-gtk; - }; - iconTheme = { - name = "Papirus-Dark"; - package = pkgs.papirus-icon-theme.override { color = "violet"; }; - }; - cursorTheme = { - name = cursorTheme; - inherit (config.home.pointerCursor) package size; - }; - }; - - programs.vscode = { - userSettings."workbench.colorTheme" = "Catppuccin Frappé"; - extensions = [ pkgs.vscode-extensions.catppuccin.catppuccin-vsc ]; - }; - }; -} - diff --git a/nixos/common/hm-modules/default.nix b/nixos/common/hm-modules/default.nix deleted file mode 100644 index 2dbbe8f..0000000 --- a/nixos/common/hm-modules/default.nix +++ /dev/null @@ -1,3 +0,0 @@ -{ ... }: { - imports = [ ./catppuccin.nix ./nvim.nix ./riff.nix ./vscode.nix ./git.nix ./rust.nix ]; -} diff --git a/nixos/common/hm-modules/git.nix b/nixos/common/hm-modules/git.nix deleted file mode 100644 index febbd3b..0000000 --- a/nixos/common/hm-modules/git.nix +++ /dev/null @@ -1,31 +0,0 @@ -{ config, pkgs, lib, ... }: -with lib; -let cfg = config.programs.v.git; -in { - options.programs.v.git = { enable = mkEnableOption "git"; }; - config = mkIf cfg.enable { - programs.git = { - enable = true; - package = pkgs.gitAndTools.gitFull; - userName = "Vivian"; - userEmail = "vivian@0x76.dev"; - lfs.enable = true; - extraConfig = { - push.autoSetupRemote = true; - init.defaultBranch = "main"; - # Git merge driver that always grabs upstream changes - # Useful for e.g. lock files - merge.ours = { - name = "Overwrite Upstream Changes"; - driver = "cp -f '%A' '%B'"; - }; - }; - - difftastic.enable = true; - }; - - home.file.".config/git/attributes".text = '' - flake.lock merge=ours - ''; - }; -} diff --git a/nixos/common/hm-modules/nvim.nix b/nixos/common/hm-modules/nvim.nix deleted file mode 100644 index 7172324..0000000 --- a/nixos/common/hm-modules/nvim.nix +++ /dev/null @@ -1,190 +0,0 @@ -{ config, pkgs, lib, ... }: -let cfg = config.programs.v.nvim; -in with lib; { - options.programs.v.nvim = { enable = mkEnableOption "nvim"; }; - config = mkIf cfg.enable { - programs.nixvim = { - enable = true; - package = pkgs.neovim-unwrapped; - vimAlias = true; - luaLoader.enable = true; - - globals.mapleader = " "; - - options.number = true; - - clipboard = { providers.wl-copy.enable = true; }; - - keymaps = [ - { - mode = "n"; - key = "ff"; - action = "require('telescope.builtin').find_files"; - lua = true; - } - { - mode = "n"; - key = "fg"; - action = "require('telescope.builtin').live_grep"; - lua = true; - } - { - mode = "n"; - key = ""; - action = "require('Comment.api').toggle.linewise.current"; - lua = true; - } - { - mode = "x"; - key = ""; - action = '' - function() - local esc = vim.api.nvim_replace_termcodes( - '', true, false, true - ) - vim.api.nvim_feedkeys(esc, 'nx', false) - require('Comment.api').toggle.linewise(vim.fn.visualmode()) - end - ''; - lua = true; - } - { - mode = "n"; - key = "g="; - action = "vim.lsp.buf.format"; - lua = true; - } - { - mode = "n"; - key = "t"; - action = ":FloatermToggle myfloat"; - } - { - mode = "t"; - key = ""; - action = "function() vim.cmd(':FloatermToggle myfloat') end"; - lua = true; - } - ]; - - extraPlugins = with pkgs.vimPlugins; [ - FixCursorHold-nvim - luasnip - plenary-nvim - neotest - neotest-plenary - neotest-rust - ]; - - colorschemes.catppuccin = { - enable = true; - flavour = "frappe"; - }; - - extraConfigLua = '' - require("neotest").setup({ - adapters = { - require("neotest-plenary"), - require("neotest-rust") { - args = { "--no-capture" }, - } - }, - }) - ''; - - plugins = { - bufferline.enable = true; - none-ls = { - enable = true; - sources = { - formatting.nixpkgs_fmt.enable = true; - code_actions.shellcheck.enable = true; - code_actions.statix.enable = true; - diagnostics = { - statix.enable = true; - deadnix.enable = true; - shellcheck.enable = true; - }; - }; - }; - nix.enable = true; - treesitter = { - enable = true; - nixGrammars = true; - disabledLanguages = [ "latex" ]; - }; - surround.enable = true; - fugitive.enable = true; - gitgutter.enable = true; - lualine = { - enable = true; - theme = "catppuccin"; - }; - telescope = { - enable = true; - extensions.fzf-native.enable = true; - extensions.fzf-native.fuzzy = true; - }; - comment-nvim = { enable = true; }; - lsp = { - enable = true; - servers = { - nil_ls.enable = true; - rust-analyzer = { - installCargo = false; - installRustc = false; - }; - pyright.enable = true; - elixirls.enable = true; - clangd.enable = true; - yamlls.enable = true; - }; - }; - trouble.enable = true; - lspkind.enable = true; - - vimtex.enable = true; - - floaterm.enable = true; - - nvim-cmp = { - enable = true; - autoEnableSources = true; - sources = [ - { name = "nvim_lsp"; } - { - name = "luasnip"; - option = { show_autosnippets = true; }; - } - { name = "cmp-spell"; } - { name = "cmp-rg"; } - { name = "path"; } - { name = "buffer"; } - ]; - snippet.expand = "luasnip"; - mappingPresets = [ "insert" "cmdline" ]; - mapping = { - "" = "cmp.mapping.confirm({ select = true })"; - "" = { - modes = [ "i" "s" ]; - action = '' - function(fallback) - local luasnip = require('luasnip') - if cmp.visible() then - cmp.select_next_item() - elseif luasnip.expandable() then - luasnip.expand() - elseif luasnip.expand_or_jumpable() then - luasnip.expand_or_jump() - else - fallback() - end - end - ''; - }; - }; - }; - }; - }; - }; -} diff --git a/nixos/common/hm-modules/riff.nix b/nixos/common/hm-modules/riff.nix deleted file mode 100644 index 509a782..0000000 --- a/nixos/common/hm-modules/riff.nix +++ /dev/null @@ -1,28 +0,0 @@ -{ config, pkgs, lib, inputs, ... }: -with lib; -let cfg = config.programs.riff; -in { - options.programs.riff = { - enable = mkEnableOption "riff"; - direnv = mkOption { - type = types.bool; - default = false; - description = '' - Whether to enable direnv support - ''; - }; - }; - config = mkIf cfg.enable { - home.packages = [ inputs.riff.packages.${pkgs.system}.riff ]; - - xdg.configFile."direnv/lib/riff.sh" = mkIf cfg.direnv { - executable = true; - text = '' - use_riff() { - watch_file Cargo.toml watch_file Cargo.lock - eval "$(riff --offline print-dev-env)" - } - ''; - }; - }; -} diff --git a/nixos/common/hm-modules/rust.nix b/nixos/common/hm-modules/rust.nix deleted file mode 100644 index f489bd3..0000000 --- a/nixos/common/hm-modules/rust.nix +++ /dev/null @@ -1,26 +0,0 @@ -{ pkgs, lib, config, ... }: -with lib; -let cfg = config.programs.v.rust; -in { - options.programs.v.rust = { enable = mkEnableOption "rust"; }; - config = mkIf cfg.enable { - home = { - packages = with pkgs; [ rustup cargo-nextest cargo-msrv cargo-dist cargo-cross]; - - file = { - ".cargo/config.toml".text = '' - [registries.crates-io] - protocol = "sparse" - - [build] - rustc-wrapper = "${pkgs.sccache}/bin/sccache" - - [profile.rust-analyzer] - inherits = "dev" - ''; - }; - - sessionPath = [ "$HOME/.cargo/bin" ]; - }; - }; -} diff --git a/nixos/common/hm-modules/vscode.nix b/nixos/common/hm-modules/vscode.nix deleted file mode 100644 index 1cc5dd9..0000000 --- a/nixos/common/hm-modules/vscode.nix +++ /dev/null @@ -1,79 +0,0 @@ -{ config, pkgs, lib, ... }: -with lib; -let cfg = config.programs.v.vscode; -in { - options.programs.v.vscode = { enable = mkEnableOption "vscode"; }; - config = mkIf cfg.enable { - programs.vscode = { - enable = true; - package = pkgs.vscode; - userSettings = { - "ltex.language" = "en-GB"; - "latex-workshop.linting.chktex.enabled" = true; - "latex-workshop.latex.clean.subfolder.enabled" = true; - "latex-workshop.latex.outDir" = "%TMPDIR%/%RELATIVE_DOC%"; - "editor.fontFamily" = - "'DejaVuSansMono Nerd Font', 'monospace', monospace"; - "keyboard.dispatch" = "keyCode"; - "rust-analyzer.server.path" = "${pkgs.rust-analyzer}/bin/rust-analyzer"; - "rust-analyzer.check.extraArgs" = ["--profile" "rust-analyzer"]; - "rust-analyzer.check.command" = "clippy"; - "terminal.integrated.defaultProfile.linux" = "zsh"; - "nix.enableLanguageServer" = true; # Enable LSP. - "nix.serverPath" = "${pkgs.nil}/bin/nil"; - "[nix]" = { "editor.defaultFormatter" = "brettm12345.nixfmt-vscode"; }; - "[python]" = { "editor.formatOnType" = true; }; - "debug.allowBreakpointsEverywhere" = true; - "C_Cpp.clang_format_fallbackStyle" = - "{ BasedOnStyle: Google, IndentWidth: 4, ColumnLimit: 0}"; - "crates.compatibleDecorator" = "✓"; - "crates.errorDecorator" = "✗"; - "crates.incompatibleDecorator" = "🛇"; - # Don't index unecessary things - "files.exclude" = { - "**/.vscode" = true; - "**/.git" = true; - "**/.svn" = true; - "**/.hg" = true; - "**/.deps" = true; - "**/CVS" = true; - "**/.DS_Store" = true; - "/bin" = true; - "/boot" = true; - "/cdrom" = true; - "/dev" = true; - "/proc" = true; - "/etc" = true; - "/nix" = true; - }; - }; - extensions = with pkgs.vscode-extensions; - with pkgs.v.vscode-extensions; [ - brettm12345.nixfmt-vscode - codezombiech.gitignore - editorconfig.editorconfig - foxundermoon.shell-format - james-yu.latex-workshop - jnoortheen.nix-ide - matklad.rust-analyzer - mkhl.direnv - ms-vscode-remote.remote-ssh - ms-vscode.cpptools - platformio.platformio-ide - redhat.vscode-yaml - redhat.vscode-xml - tamasfe.even-better-toml - valentjn.vscode-ltex - vscodevim.vim - vadimcn.vscode-lldb - xaver.clang-format - sumneko.lua - davidlday.languagetool-linter - serayuzgur.crates - skellock.just - ]; - }; - - }; -} -