Compare commits
12 Commits
claude-nvi
...
4f7cdc02c5
| Author | SHA1 | Date | |
|---|---|---|---|
| 4f7cdc02c5 | |||
| d85ee5316d | |||
| b847bcae1c | |||
| ea679f12a2 | |||
| 48b72f0530 | |||
| 3f47d9079e | |||
| c03d572675 | |||
| 39294a34b7 | |||
| 847db443e6 | |||
| c4448013e5 | |||
| 4029eae7aa | |||
| 022e5b17a0 |
2
.gitignore
vendored
2
.gitignore
vendored
@@ -4,3 +4,5 @@ result
|
|||||||
result-*
|
result-*
|
||||||
|
|
||||||
nixos-efi-vars.fd
|
nixos-efi-vars.fd
|
||||||
|
|
||||||
|
home/hosts/work/packages.local.nix
|
||||||
|
|||||||
159
CLAUDE.md
Normal file
159
CLAUDE.md
Normal file
@@ -0,0 +1,159 @@
|
|||||||
|
# CLAUDE.md
|
||||||
|
|
||||||
|
This file provides guidance to Claude Code (claude.ai/code) when working with
|
||||||
|
code in this repository.
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
|
||||||
|
This is a NixOS flake-based configuration repository managing both system
|
||||||
|
configurations (NixOS) and user environments (home-manager). The repository
|
||||||
|
follows a modular architecture with separate host configurations for physical
|
||||||
|
machines, VMs, and standalone home-manager setups.
|
||||||
|
|
||||||
|
## Essential Commands
|
||||||
|
|
||||||
|
### Building and Testing
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Build a NixOS system configuration
|
||||||
|
nix build -L '.#nixosConfigurations.<hostname>.config.system.build.toplevel'
|
||||||
|
|
||||||
|
# Build and run a VM with disko
|
||||||
|
nix build -L '.#nixosConfigurations.vm.config.system.build.vmWithDisko'
|
||||||
|
./result/bin/disko-vm
|
||||||
|
|
||||||
|
# Build home-manager configuration
|
||||||
|
nix build -L '.#homeConfigurations.work.activationPackage'
|
||||||
|
|
||||||
|
# Build the custom neovim package
|
||||||
|
nix build -L '.#nvim.packages.x86_64-linux.nvim'
|
||||||
|
```
|
||||||
|
|
||||||
|
### Development
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Update flake inputs
|
||||||
|
nix flake update
|
||||||
|
|
||||||
|
# Check flake for errors
|
||||||
|
nix flake check
|
||||||
|
|
||||||
|
# Show flake outputs
|
||||||
|
nix flake show
|
||||||
|
|
||||||
|
# Enter development shell for neovim
|
||||||
|
cd dots/.config/nvim && nix develop
|
||||||
|
```
|
||||||
|
|
||||||
|
## Architecture
|
||||||
|
|
||||||
|
### Repository Structure
|
||||||
|
|
||||||
|
The repository is organized into distinct layers:
|
||||||
|
|
||||||
|
- **`flake.nix`**: Root flake defining inputs and outputs. Uses `utils.dirNames` to automatically discover host directories.
|
||||||
|
- **`hosts/`**: NixOS system configurations (andromache, astyanax, vm). Each host has its own directory with `default.nix` and hardware configuration.
|
||||||
|
- **`home/`**: home-manager configurations, split into `hosts/` (per-host configs) and `modules/` (reusable user-level modules).
|
||||||
|
- **`modules/`**: Reusable NixOS modules for system-level configuration (audio, networking, fonts, etc.).
|
||||||
|
- **`dots/`**: Dotfiles and configurations, including a complete neovim flake at `dots/.config/nvim/`.
|
||||||
|
- **`utils/`**: Helper functions like `dirNames` for discovering directories.
|
||||||
|
|
||||||
|
### Key Architectural Patterns
|
||||||
|
|
||||||
|
**Host Discovery**: The flake uses `lib.genAttrs hostDirNames` to automatically
|
||||||
|
generate `nixosConfigurations` from directories in `hosts/`. Adding a new host
|
||||||
|
only requires creating a directory with a `default.nix`.
|
||||||
|
|
||||||
|
**Secrets Management**: Uses sops-nix with age encryption. Secrets are stored
|
||||||
|
in a separate private repository (`nix-secrets`) referenced as a flake input.
|
||||||
|
The `modules/secrets/default.nix` module provides options and templates for
|
||||||
|
injecting secrets into configurations.
|
||||||
|
|
||||||
|
**Disk Management**: Uses disko for declarative disk partitioning. The
|
||||||
|
`modules/disko.zfs-encrypted-root.nix` module provides a reusable ZFS-on-root
|
||||||
|
setup with encryption, taking a `device` parameter.
|
||||||
|
|
||||||
|
**Neovim as Flake**: The neovim configuration at `dots/.config/nvim/` is a
|
||||||
|
standalone flake using nixCats. It's referenced as a flake input in the root
|
||||||
|
and included in system packages. This allows independent development and
|
||||||
|
version control.
|
||||||
|
|
||||||
|
**Home Manager Integration**: Each NixOS host can include home-manager
|
||||||
|
configuration through `home-manager.users.<username>`, which imports from
|
||||||
|
`home/hosts/<hostname>`. Standalone home-manager configurations (like `work`)
|
||||||
|
are also available for non-NixOS systems.
|
||||||
|
|
||||||
|
**Module Parameterization**: Modules like `networking.nix` and
|
||||||
|
`secrets/default.nix` accept parameters and expose options, making them
|
||||||
|
reusable across hosts with different settings.
|
||||||
|
|
||||||
|
### Input Dependencies
|
||||||
|
|
||||||
|
- **nixpkgs**: Main package source (nixos-unstable)
|
||||||
|
- **nixos-hardware**: Hardware-specific configurations
|
||||||
|
- **disko**: Declarative disk partitioning
|
||||||
|
- **sops-nix**: Secrets management with age/sops
|
||||||
|
- **nix-secrets**: Private repository with encrypted secrets (git+ssh)
|
||||||
|
- **home-manager**: User environment management
|
||||||
|
- **nixgl**: OpenGL wrapper for non-NixOS systems
|
||||||
|
- **firefox-addons**: Firefox extension packages
|
||||||
|
- **nvim**: Local flake at `dots/.config/nvim/`
|
||||||
|
|
||||||
|
## Working with Hosts
|
||||||
|
|
||||||
|
### Adding a New NixOS Host
|
||||||
|
|
||||||
|
1. Create a new directory in `hosts/<hostname>/`
|
||||||
|
2. Add `default.nix` with imports and host-specific configuration
|
||||||
|
3. Add `hard.nix` for hardware configuration (generated by nixos-generate-config)
|
||||||
|
4. The host will automatically be discovered by the flake
|
||||||
|
|
||||||
|
### Adding a New Home Manager Host
|
||||||
|
|
||||||
|
1. Create directory in `home/hosts/<hostname>/`
|
||||||
|
2. Add `default.nix` importing desired modules from `home/modules/`
|
||||||
|
3. For standalone (non-NixOS) configs, add entry to `homeConfigurations` in root `flake.nix`
|
||||||
|
|
||||||
|
## Secrets Workflow
|
||||||
|
|
||||||
|
Secrets are managed with sops-nix and stored in the private `nix-secrets` repository:
|
||||||
|
|
||||||
|
1. Secrets are encrypted with age using keys at `~/.config/sops/age/keys.txt`
|
||||||
|
2. The `modules/secrets/default.nix` module reads from `${nix-secrets}/secrets.yaml`
|
||||||
|
3. Secrets are exposed as files in `/run/secrets/` with proper ownership
|
||||||
|
4. Templates can combine multiple secrets (see taskwarrior sync configuration)
|
||||||
|
|
||||||
|
## Common Patterns
|
||||||
|
|
||||||
|
### Import Patterns
|
||||||
|
|
||||||
|
Modules use different import patterns based on their needs:
|
||||||
|
|
||||||
|
```nix
|
||||||
|
# Simple module (no parameters)
|
||||||
|
imports = [ ../../modules/audio.nix ];
|
||||||
|
|
||||||
|
# Parameterized module (function call)
|
||||||
|
imports = [ (import ../../modules/networking.nix { hostName = "andromache"; }) ];
|
||||||
|
|
||||||
|
# Module with all parameters
|
||||||
|
imports = [
|
||||||
|
(import ../../modules/secrets {
|
||||||
|
inherit lib inputs config;
|
||||||
|
})
|
||||||
|
];
|
||||||
|
```
|
||||||
|
|
||||||
|
### Special Args
|
||||||
|
|
||||||
|
- `inputs`: Flake inputs, passed as `specialArgs` to NixOS and `extraSpecialArgs` to home-manager
|
||||||
|
- `lib`, `config`, `pkgs`: Standard NixOS/home-manager module arguments
|
||||||
|
|
||||||
|
### Username Handling
|
||||||
|
|
||||||
|
Each host defines a `username` variable (either "h" or "hektor") used for:
|
||||||
|
|
||||||
|
- User creation in NixOS
|
||||||
|
- Home directory paths
|
||||||
|
- Secrets ownership
|
||||||
|
- Home-manager configuration
|
||||||
12
dots/.config/nvim/flake.lock
generated
12
dots/.config/nvim/flake.lock
generated
@@ -2,11 +2,11 @@
|
|||||||
"nodes": {
|
"nodes": {
|
||||||
"nixCats": {
|
"nixCats": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1763330129,
|
"lastModified": 1764009888,
|
||||||
"narHash": "sha256-KbOeWIF52SV53BOeETGO2C5ewaV2Ex9iaXH7G72gOr8=",
|
"narHash": "sha256-hJekfTiW1792txgRSM4LcHnz1lDSY87LYbsJEn2V378=",
|
||||||
"owner": "BirdeeHub",
|
"owner": "BirdeeHub",
|
||||||
"repo": "nixCats-nvim",
|
"repo": "nixCats-nvim",
|
||||||
"rev": "c81551ed87db2aefab30a12cf7425ff94dc0ad64",
|
"rev": "16ac3281f322ea15d39843829e42a44d22da3715",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -17,11 +17,11 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1763464769,
|
"lastModified": 1764230294,
|
||||||
"narHash": "sha256-AJHrsT7VoeQzErpBRlLJM1SODcaayp0joAoEA35yiwM=",
|
"narHash": "sha256-Z63xl5Scj3Y/zRBPAWq1eT68n2wBWGCIEF4waZ0bQBE=",
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "6f374686605df381de8541c072038472a5ea2e2d",
|
"rev": "0d59e0290eefe0f12512043842d7096c4070f30e",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|||||||
@@ -47,15 +47,10 @@
|
|||||||
forEachSystem = utils.eachSystem nixpkgs.lib.platforms.all;
|
forEachSystem = utils.eachSystem nixpkgs.lib.platforms.all;
|
||||||
extra_pkg_config = { };
|
extra_pkg_config = { };
|
||||||
|
|
||||||
dependencyOverlays = [
|
dependencyOverlays = [ (utils.standardPluginOverlay inputs) ];
|
||||||
(utils.standardPluginOverlay inputs)
|
|
||||||
];
|
|
||||||
|
|
||||||
categoryDefinitions =
|
categoryDefinitions =
|
||||||
{
|
{ pkgs, ... }:
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
{
|
{
|
||||||
lspsAndRuntimeDeps = with pkgs; {
|
lspsAndRuntimeDeps = with pkgs; {
|
||||||
general = [
|
general = [
|
||||||
@@ -79,28 +74,6 @@
|
|||||||
|
|
||||||
startupPlugins = {
|
startupPlugins = {
|
||||||
general = with pkgs.vimPlugins; [
|
general = with pkgs.vimPlugins; [
|
||||||
## plug
|
|
||||||
vim-plug
|
|
||||||
vim-sandwich
|
|
||||||
context_filetype-vim
|
|
||||||
editorconfig-vim
|
|
||||||
vim-snippets
|
|
||||||
unicode-vim
|
|
||||||
vim-css-color
|
|
||||||
quarto-nvim
|
|
||||||
vimtex
|
|
||||||
wiki-vim
|
|
||||||
vim-pandoc
|
|
||||||
vim-pandoc-syntax
|
|
||||||
# TODO: ferrine/md-img-paste.vim
|
|
||||||
# TODO: supercollider/scvim
|
|
||||||
# TODO: tidalcycles/vim-tidal
|
|
||||||
vim-glsl
|
|
||||||
# TODO: timtro/glslView-nvim
|
|
||||||
# TODO: sirtaj/vim-openscad
|
|
||||||
jupytext-nvim
|
|
||||||
vim-openscad
|
|
||||||
## paq
|
|
||||||
eyeliner-nvim
|
eyeliner-nvim
|
||||||
fzf-lua
|
fzf-lua
|
||||||
ltex_extra-nvim
|
ltex_extra-nvim
|
||||||
@@ -138,18 +111,18 @@
|
|||||||
image-nvim
|
image-nvim
|
||||||
pkgs.neovimPlugins.beancount-nvim
|
pkgs.neovimPlugins.beancount-nvim
|
||||||
pkgs.neovimPlugins.nvimkit-nvim
|
pkgs.neovimPlugins.nvimkit-nvim
|
||||||
codecompanion-nvim
|
# codecompanion-nvim
|
||||||
pkgs.neovimPlugins.mcphub-nvim
|
pkgs.neovimPlugins.mcphub-nvim
|
||||||
copilot-lua
|
copilot-lua
|
||||||
copilot-cmp
|
copilot-cmp
|
||||||
pkgs.neovimPlugins.helm-ls-nvim
|
pkgs.neovimPlugins.helm-ls-nvim
|
||||||
pkgs.vimPlugins.kitty-scrollback-nvim
|
kitty-scrollback-nvim
|
||||||
|
obsidian-nvim
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
optionalPlugins = {
|
optionalPlugins = {
|
||||||
general = with pkgs.vimPlugins; [
|
general = with pkgs.vimPlugins; [ ];
|
||||||
];
|
|
||||||
};
|
};
|
||||||
|
|
||||||
sharedLibraries = {
|
sharedLibraries = {
|
||||||
@@ -175,8 +148,8 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
defaultPackageName = "nvim";
|
defaultPackageName = "nvim";
|
||||||
in
|
|
||||||
|
|
||||||
|
in
|
||||||
forEachSystem (
|
forEachSystem (
|
||||||
system:
|
system:
|
||||||
let
|
let
|
||||||
@@ -199,7 +172,7 @@
|
|||||||
name = defaultPackageName;
|
name = defaultPackageName;
|
||||||
packages = [ defaultPackage ];
|
packages = [ defaultPackage ];
|
||||||
inputsFrom = [ ];
|
inputsFrom = [ ];
|
||||||
shellHook = '''';
|
shellHook = "";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,4 @@
|
|||||||
{
|
{
|
||||||
pkgs ? import <nixpkgs> { },
|
pkgs ? import <nixpkgs> { },
|
||||||
}:
|
}:
|
||||||
pkgs.mkShell {
|
pkgs.mkShell { nativeBuildInputs = with pkgs.buildPackages; [ ]; }
|
||||||
nativeBuildInputs = with pkgs.buildPackages; [ ];
|
|
||||||
}
|
|
||||||
|
|||||||
12
dots/.config/nvim/snips/typescriptreact.lua
Normal file
12
dots/.config/nvim/snips/typescriptreact.lua
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
local ls = require("luasnip")
|
||||||
|
local s = ls.snippet
|
||||||
|
local t = ls.text_node
|
||||||
|
local i = ls.insert_node
|
||||||
|
|
||||||
|
return {
|
||||||
|
s("preJ", {
|
||||||
|
t("<pre>{JSON.stringify("),
|
||||||
|
i(1, "object"), -- first tab stop
|
||||||
|
t(", null, 2)}</pre>"),
|
||||||
|
}),
|
||||||
|
}
|
||||||
@@ -1,9 +1,11 @@
|
|||||||
|
[include]
|
||||||
|
path = ~/.gitconfig.email
|
||||||
|
|
||||||
[core]
|
[core]
|
||||||
editor = nvim
|
editor = nvim
|
||||||
excludesfile = ~/.gitignore
|
excludesfile = ~/.gitignore
|
||||||
|
|
||||||
[user]
|
[user]
|
||||||
email = hektor.misplon@pm.me
|
|
||||||
name = Hektor Misplon
|
name = Hektor Misplon
|
||||||
username = hektor
|
username = hektor
|
||||||
signingKey = AEB98353B8D72E465C4236435151AF79E723F21C
|
signingKey = AEB98353B8D72E465C4236435151AF79E723F21C
|
||||||
@@ -76,8 +78,6 @@
|
|||||||
[merge]
|
[merge]
|
||||||
tool = nvimdiff
|
tool = nvimdiff
|
||||||
conflictstyle = diff3
|
conflictstyle = diff3
|
||||||
[pull]
|
|
||||||
rebase = true
|
|
||||||
[diff]
|
[diff]
|
||||||
colorMoved = zebra
|
colorMoved = zebra
|
||||||
[commit]
|
[commit]
|
||||||
@@ -85,3 +85,11 @@
|
|||||||
|
|
||||||
[interactive]
|
[interactive]
|
||||||
singleKey = true
|
singleKey = true
|
||||||
|
|
||||||
|
[pull]
|
||||||
|
rebase = true
|
||||||
|
[rerere]
|
||||||
|
enabled = true
|
||||||
|
|
||||||
|
[includeIf "gitdir:~/work/"]
|
||||||
|
path = ~/.gitconfig.work
|
||||||
|
|||||||
2
dots/.gitconfig.email.example
Normal file
2
dots/.gitconfig.email.example
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
[user]
|
||||||
|
email = your.email@example.com
|
||||||
13
dots/.gitconfig.work
Normal file
13
dots/.gitconfig.work
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
[include]
|
||||||
|
path = ~/.gitconfig.work.email
|
||||||
|
|
||||||
|
[core]
|
||||||
|
longpaths = true
|
||||||
|
|
||||||
|
[user]
|
||||||
|
name = Hektor Misplon
|
||||||
|
username = hektor.misplon
|
||||||
|
signingKey = 1C88BE828184CEE6
|
||||||
|
|
||||||
|
[commit]
|
||||||
|
gpgsign = false
|
||||||
2
dots/.gitconfig.work.email.example
Normal file
2
dots/.gitconfig.work.email.example
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
[user]
|
||||||
|
email = your.work.email@example.com
|
||||||
45
flake.lock
generated
45
flake.lock
generated
@@ -29,11 +29,11 @@
|
|||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"dir": "pkgs/firefox-addons",
|
"dir": "pkgs/firefox-addons",
|
||||||
"lastModified": 1763885608,
|
"lastModified": 1764561884,
|
||||||
"narHash": "sha256-eFRbKKMaEHC5EaL7sxfPVFPFsr0Plzx03e1VkJkcsBA=",
|
"narHash": "sha256-vQ3iFPPhxsLqV3c5kgmYP53mVD6id6gsP0tN+oTmqok=",
|
||||||
"owner": "rycee",
|
"owner": "rycee",
|
||||||
"repo": "nur-expressions",
|
"repo": "nur-expressions",
|
||||||
"rev": "c94982d5890f4ff0737d57ed97503c1c8d40195c",
|
"rev": "aba4621459aec251d90d6452e3495b58a8a5e185",
|
||||||
"type": "gitlab"
|
"type": "gitlab"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -68,16 +68,15 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1758463745,
|
"lastModified": 1764544324,
|
||||||
"narHash": "sha256-uhzsV0Q0I9j2y/rfweWeGif5AWe0MGrgZ/3TjpDYdGA=",
|
"narHash": "sha256-GVBGjO7UsmzLrlOJV8NlKSxukHaHencrJqWkCA6FkqI=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"rev": "3b955f5f0a942f9f60cdc9cacb7844335d0f21c3",
|
"rev": "e4e25a8c310fa45f2a8339c7972dc43d2845a612",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"ref": "release-25.05",
|
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
@@ -85,10 +84,10 @@
|
|||||||
"nix-secrets": {
|
"nix-secrets": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1763919406,
|
"lastModified": 1764371082,
|
||||||
"narHash": "sha256-WaGxnH7dm63syPt8E4MXbg4XVxQveXPe+cZu3iPz25w=",
|
"narHash": "sha256-yxFxEKXFuXFyFIDZY1gla2OyuqcIE3uT8KDDgTmm3cE=",
|
||||||
"ref": "main",
|
"ref": "main",
|
||||||
"rev": "4423bf215047474ecb89f4d8ad63a04e734b252a",
|
"rev": "b9c2ce32cc4c95d7ff01372faea2668407ef8d27",
|
||||||
"shallow": true,
|
"shallow": true,
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "ssh://git@github.com/hektor/nix-secrets"
|
"url": "ssh://git@github.com/hektor/nix-secrets"
|
||||||
@@ -102,11 +101,11 @@
|
|||||||
},
|
},
|
||||||
"nixCats": {
|
"nixCats": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1763330129,
|
"lastModified": 1764009888,
|
||||||
"narHash": "sha256-KbOeWIF52SV53BOeETGO2C5ewaV2Ex9iaXH7G72gOr8=",
|
"narHash": "sha256-hJekfTiW1792txgRSM4LcHnz1lDSY87LYbsJEn2V378=",
|
||||||
"owner": "BirdeeHub",
|
"owner": "BirdeeHub",
|
||||||
"repo": "nixCats-nvim",
|
"repo": "nixCats-nvim",
|
||||||
"rev": "c81551ed87db2aefab30a12cf7425ff94dc0ad64",
|
"rev": "16ac3281f322ea15d39843829e42a44d22da3715",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -138,11 +137,11 @@
|
|||||||
},
|
},
|
||||||
"nixos-hardware": {
|
"nixos-hardware": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1762847253,
|
"lastModified": 1764440730,
|
||||||
"narHash": "sha256-BWWnUUT01lPwCWUvS0p6Px5UOBFeXJ8jR+ZdLX8IbrU=",
|
"narHash": "sha256-ZlJTNLUKQRANlLDomuRWLBCH5792x+6XUJ4YdFRjtO4=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixos-hardware",
|
"repo": "nixos-hardware",
|
||||||
"rev": "899dc449bc6428b9ee6b3b8f771ca2b0ef945ab9",
|
"rev": "9154f4569b6cdfd3c595851a6ba51bfaa472d9f3",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -154,16 +153,16 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1763622513,
|
"lastModified": 1764517877,
|
||||||
"narHash": "sha256-1jQnuyu82FpiSxowrF/iFK6Toh9BYprfDqfs4BB+19M=",
|
"narHash": "sha256-pp3uT4hHijIC8JUK5MEqeAWmParJrgBVzHLNfJDZxg4=",
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "c58bc7f5459328e4afac201c5c4feb7c818d604b",
|
"rev": "2d293cbfa5a793b4c50d17c05ef9e385b90edf6c",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"ref": "nixos-25.05",
|
"ref": "nixos-unstable",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
@@ -324,11 +323,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1763870012,
|
"lastModified": 1764483358,
|
||||||
"narHash": "sha256-AHxFfIu73SpNLAOZbu/AvpLhZ/Szhx6gRPj9ufZtaZA=",
|
"narHash": "sha256-EyyvCzXoHrbL467YSsQBTWWg4sR96MH1sPpKoSOelB4=",
|
||||||
"owner": "Mic92",
|
"owner": "Mic92",
|
||||||
"repo": "sops-nix",
|
"repo": "sops-nix",
|
||||||
"rev": "4e7d74d92398b933cc0e0e25af5b0836efcfdde3",
|
"rev": "5aca6ff67264321d47856a2ed183729271107c9c",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|||||||
12
flake.nix
12
flake.nix
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
inputs = {
|
inputs = {
|
||||||
nixpkgs = {
|
nixpkgs = {
|
||||||
url = "github:nixos/nixpkgs?ref=nixos-25.05";
|
url = "github:nixos/nixpkgs/nixos-unstable";
|
||||||
};
|
};
|
||||||
nixos-hardware = {
|
nixos-hardware = {
|
||||||
url = "github:NixOS/nixos-hardware/master";
|
url = "github:NixOS/nixos-hardware/master";
|
||||||
@@ -20,7 +20,7 @@
|
|||||||
flake = false;
|
flake = false;
|
||||||
};
|
};
|
||||||
home-manager = {
|
home-manager = {
|
||||||
url = "github:nix-community/home-manager/release-25.05";
|
url = "github:nix-community/home-manager";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
nixgl = {
|
nixgl = {
|
||||||
@@ -61,7 +61,9 @@
|
|||||||
};
|
};
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
nix.nixPath = [ "nixpkgs=${inputs.nixpkgs}" ]; # <https://github.com/nix-community/nixd/blob/main/nixd/docs/configuration.md>
|
nix.nixPath = [
|
||||||
|
"nixpkgs=${inputs.nixpkgs}"
|
||||||
|
]; # <https://github.com/nix-community/nixd/blob/main/nixd/docs/configuration.md>
|
||||||
nixosConfigurations = lib.genAttrs hostDirNames (
|
nixosConfigurations = lib.genAttrs hostDirNames (
|
||||||
host:
|
host:
|
||||||
nixpkgs.lib.nixosSystem {
|
nixpkgs.lib.nixosSystem {
|
||||||
@@ -73,9 +75,7 @@
|
|||||||
work = home-manager.lib.homeManagerConfiguration {
|
work = home-manager.lib.homeManagerConfiguration {
|
||||||
inherit pkgs;
|
inherit pkgs;
|
||||||
modules = [ ./home/hosts/work ];
|
modules = [ ./home/hosts/work ];
|
||||||
extraSpecialArgs = {
|
extraSpecialArgs = { inherit inputs; };
|
||||||
inherit inputs;
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ in
|
|||||||
imports = [
|
imports = [
|
||||||
../../modules/dconf.nix # TODO: Only enable when on Gnome?
|
../../modules/dconf.nix # TODO: Only enable when on Gnome?
|
||||||
../../modules/git.nix
|
../../modules/git.nix
|
||||||
|
../../modules/k9s.nix
|
||||||
(import ../../modules/taskwarrior.nix {
|
(import ../../modules/taskwarrior.nix {
|
||||||
inherit config;
|
inherit config;
|
||||||
inherit pkgs;
|
inherit pkgs;
|
||||||
|
|||||||
@@ -22,7 +22,6 @@ with pkgs;
|
|||||||
nixfmt-rfc-style
|
nixfmt-rfc-style
|
||||||
nmap
|
nmap
|
||||||
nodejs_24
|
nodejs_24
|
||||||
nodePackages.ts-node
|
|
||||||
nvimpager
|
nvimpager
|
||||||
ormolu
|
ormolu
|
||||||
pandoc
|
pandoc
|
||||||
|
|||||||
@@ -10,38 +10,37 @@ let
|
|||||||
in
|
in
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
../../modules/dconf.nix # TODO: Only enable when on Gnome?
|
../../modules/dconf.nix
|
||||||
|
../../modules/git.nix
|
||||||
|
../../modules/k9s.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
|
nixpkgs.config.allowUnfree = true;
|
||||||
|
|
||||||
home.stateVersion = "25.05";
|
home.stateVersion = "25.05";
|
||||||
home.username = username;
|
home.username = username;
|
||||||
home.homeDirectory = "/home/${username}";
|
home.homeDirectory = "/home/${username}";
|
||||||
|
|
||||||
sops = {
|
targets.genericLinux.nixGL = {
|
||||||
defaultSopsFile = "${builtins.toString inputs.nix-secrets}/secrets.yaml";
|
|
||||||
defaultSopsFormat = "yaml";
|
|
||||||
age.keyFile = "${config.home.homeDirectory}/.config/sops/age/keys.txt";
|
|
||||||
|
|
||||||
secrets."test" = { };
|
|
||||||
};
|
|
||||||
|
|
||||||
nixGL = {
|
|
||||||
packages = inputs.nixgl.packages;
|
packages = inputs.nixgl.packages;
|
||||||
defaultWrapper = "mesa";
|
defaultWrapper = "mesa";
|
||||||
};
|
};
|
||||||
|
|
||||||
programs = {
|
programs = {
|
||||||
anki = import ../../modules/anki.nix;
|
# editorconfig.enable = true;
|
||||||
firefox = import ../../modules/firefox.nix {
|
firefox = import ../../modules/firefox.nix {
|
||||||
inherit inputs;
|
inherit inputs;
|
||||||
inherit pkgs;
|
inherit pkgs;
|
||||||
inherit config;
|
inherit config;
|
||||||
};
|
};
|
||||||
git = import ../../modules/git.nix;
|
gh.enable = true;
|
||||||
keepassxc = import ../../modules/keepassxc.nix;
|
keepassxc = import ../../modules/keepassxc.nix;
|
||||||
|
kubecolor.enable = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
home.packages = import ./packages.nix {
|
home.packages = import ./packages.nix {
|
||||||
inherit pkgs;
|
inherit inputs;
|
||||||
inherit config;
|
inherit config;
|
||||||
|
inherit pkgs;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,19 @@
|
|||||||
{ pkgs, config, ... }:
|
{
|
||||||
|
inputs,
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
with pkgs;
|
let
|
||||||
[ ]
|
localPackages =
|
||||||
|
if builtins.pathExists ./packages.local.nix then
|
||||||
|
import ./packages.local.nix { inherit inputs config pkgs; }
|
||||||
|
else
|
||||||
|
[ ];
|
||||||
|
in
|
||||||
|
|
||||||
|
(with pkgs; [
|
||||||
|
inputs.nvim.packages.x86_64-linux.nvim
|
||||||
|
])
|
||||||
|
++ localPackages
|
||||||
|
|||||||
@@ -1,3 +1,6 @@
|
|||||||
{
|
{
|
||||||
enable = true;
|
enable = true;
|
||||||
|
# sync = {
|
||||||
|
# username = config.sops.secrets."email/personal".path;
|
||||||
|
# };
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,5 +7,107 @@
|
|||||||
"org/gnome/desktop/interface" = {
|
"org/gnome/desktop/interface" = {
|
||||||
color-scheme = "prefer-dark";
|
color-scheme = "prefer-dark";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
"org/gnome/desktop/applications/terminal" = {
|
||||||
|
exec = "kitty";
|
||||||
|
exec-arg = "";
|
||||||
|
};
|
||||||
|
|
||||||
|
"org/gnome/desktop/background" = {
|
||||||
|
color-shading-type = "solid";
|
||||||
|
picture-opacity = 100;
|
||||||
|
picture-options = "zoom";
|
||||||
|
picture-uri = "none";
|
||||||
|
picture-uri-dark = "none";
|
||||||
|
primary-color = "#555555";
|
||||||
|
secondary-color = "#555555";
|
||||||
|
show-desktop-icons = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
# "org/gnome/desktop/input-sources" = {
|
||||||
|
# sources = [
|
||||||
|
# (mkTuple [
|
||||||
|
# "xkb"
|
||||||
|
# "us"
|
||||||
|
# ])
|
||||||
|
# ];
|
||||||
|
# xkb-options = [ "caps:none" ];
|
||||||
|
# };
|
||||||
|
|
||||||
|
"org/gnome/desktop/wm/keybindings" = {
|
||||||
|
close = [ "<Shift><Super>Delete" ];
|
||||||
|
cycle-group = [ ];
|
||||||
|
cycle-group-backward = [ ];
|
||||||
|
cycle-panels = [ ];
|
||||||
|
cycle-panels-backward = [ ];
|
||||||
|
cycle-windows = [ ];
|
||||||
|
cycle-windows-backward = [ ];
|
||||||
|
maximize = [ "<Super> " ];
|
||||||
|
minimize = [ ];
|
||||||
|
move-to-workspace-1 = [ "<Super><Shift>a" ];
|
||||||
|
move-to-workspace-2 = [ "<Super><Shift>s" ];
|
||||||
|
move-to-workspace-3 = [ "<Super><Shift>d" ];
|
||||||
|
move-to-workspace-4 = [ "<Super><Shift>f" ];
|
||||||
|
move-to-workspace-5 = [ "<Super><Shift>g" ];
|
||||||
|
move-to-workspace-last = [ ];
|
||||||
|
move-to-workspace-left = [ "<Super><Shift>h" ];
|
||||||
|
move-to-workspace-right = [ "<Super><Shift>l" ];
|
||||||
|
panel-run-dialog = [ ];
|
||||||
|
switch-applications = [ "<Super>j" ];
|
||||||
|
switch-applications-backward = [ "<Super>k" ];
|
||||||
|
switch-group = [ ];
|
||||||
|
switch-group-backward = [ ];
|
||||||
|
switch-input-source = [ ];
|
||||||
|
switch-input-source-backward = [ ];
|
||||||
|
switch-panels = [ ];
|
||||||
|
switch-panels-backward = [ ];
|
||||||
|
switch-to-workspace-1 = [ "<Super>a" ];
|
||||||
|
switch-to-workspace-2 = [ "<Super>s" ];
|
||||||
|
switch-to-workspace-3 = [ "<Super>d" ];
|
||||||
|
switch-to-workspace-4 = [ "<Super>f" ];
|
||||||
|
switch-to-workspace-5 = [ "<Super>g" ];
|
||||||
|
switch-to-workspace-last = [ ];
|
||||||
|
switch-to-workspace-left = [ "<Super>h" ];
|
||||||
|
switch-to-workspace-right = [ "<Super>l" ];
|
||||||
|
switch-windows = [ ];
|
||||||
|
switch-windows-backward = [ ];
|
||||||
|
toggle-maximized = [ "<Super>space" ];
|
||||||
|
unmaximize = [ ];
|
||||||
|
};
|
||||||
|
|
||||||
|
"org/gnome/desktop/wm/preferences" = {
|
||||||
|
num-workspaces = 5;
|
||||||
|
workspace-names = [
|
||||||
|
"sh"
|
||||||
|
"www"
|
||||||
|
"dev"
|
||||||
|
"info"
|
||||||
|
"etc"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
"org/gnome/settings-daemon/plugins/media-keys" = {
|
||||||
|
custom-keybindings = [
|
||||||
|
"/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom1/"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
"org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0" = {
|
||||||
|
binding = "Print";
|
||||||
|
command = "flameshot gui";
|
||||||
|
name = "flameshot";
|
||||||
|
};
|
||||||
|
|
||||||
|
"org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom1" = {
|
||||||
|
binding = "<Super>Return";
|
||||||
|
command = "kitty";
|
||||||
|
name = "Kitty";
|
||||||
|
};
|
||||||
|
|
||||||
|
"org/gnome/shell/keybindings" = {
|
||||||
|
screenshot = [ "Print" ];
|
||||||
|
toggle-application-view = [ "<Super>p" ];
|
||||||
|
toggle-quick-settings = [ ];
|
||||||
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
programs.git.enable = true;
|
programs.git.enable = true;
|
||||||
home.file = {
|
home.file = {
|
||||||
".gitconfig".source = ../../dots/.gitconfig;
|
".gitconfig".source = ../../dots/.gitconfig;
|
||||||
|
".gitconfig.work".source = ../../dots/.gitconfig.work;
|
||||||
".gitignore".source = ../../dots/.gitignore;
|
".gitignore".source = ../../dots/.gitignore;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
11
home/modules/k9s.nix
Normal file
11
home/modules/k9s.nix
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
programs.k9s = {
|
||||||
|
enable = true;
|
||||||
|
settings.k9s = {
|
||||||
|
ui = {
|
||||||
|
logoless = true;
|
||||||
|
reactive = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -10,9 +10,8 @@ let
|
|||||||
username = "h";
|
username = "h";
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
system.stateVersion = "25.05";
|
|
||||||
|
|
||||||
imports = [
|
imports = [
|
||||||
|
../../modules/common.nix
|
||||||
inputs.disko.nixosModules.disko
|
inputs.disko.nixosModules.disko
|
||||||
inputs.sops-nix.nixosModules.sops
|
inputs.sops-nix.nixosModules.sops
|
||||||
inputs.home-manager.nixosModules.default
|
inputs.home-manager.nixosModules.default
|
||||||
@@ -77,13 +76,6 @@ in
|
|||||||
|
|
||||||
environment.systemPackages = [ inputs.nvim.packages.x86_64-linux.nvim ];
|
environment.systemPackages = [ inputs.nvim.packages.x86_64-linux.nvim ];
|
||||||
|
|
||||||
nix.settings.experimental-features = [
|
|
||||||
"nix-command"
|
|
||||||
"flakes"
|
|
||||||
];
|
|
||||||
|
|
||||||
nixpkgs.config.allowUnfree = true;
|
|
||||||
|
|
||||||
home-manager = {
|
home-manager = {
|
||||||
useGlobalPkgs = true;
|
useGlobalPkgs = true;
|
||||||
useUserPackages = true;
|
useUserPackages = true;
|
||||||
|
|||||||
@@ -1,14 +1,29 @@
|
|||||||
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
||||||
# and may be overwritten by future invocations. Please make changes
|
# and may be overwritten by future invocations. Please make changes
|
||||||
# to /etc/nixos/configuration.nix instead.
|
# to /etc/nixos/configuration.nix instead.
|
||||||
{ config, lib, pkgs, modulesPath, ... }:
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
modulesPath,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
{
|
{
|
||||||
imports =
|
imports = [
|
||||||
[ (modulesPath + "/installer/scan/not-detected.nix")
|
(modulesPath + "/installer/scan/not-detected.nix")
|
||||||
];
|
];
|
||||||
|
|
||||||
boot.initrd.availableKernelModules = [ "vmd" "xhci_pci" "ahci" "nvme" "usbhid" "usb_storage" "uas" "sd_mod" ];
|
boot.initrd.availableKernelModules = [
|
||||||
|
"vmd"
|
||||||
|
"xhci_pci"
|
||||||
|
"ahci"
|
||||||
|
"nvme"
|
||||||
|
"usbhid"
|
||||||
|
"usb_storage"
|
||||||
|
"uas"
|
||||||
|
"sd_mod"
|
||||||
|
];
|
||||||
boot.initrd.kernelModules = [ ];
|
boot.initrd.kernelModules = [ ];
|
||||||
boot.kernelModules = [ "kvm-intel" ];
|
boot.kernelModules = [ "kvm-intel" ];
|
||||||
boot.extraModulePackages = [ ];
|
boot.extraModulePackages = [ ];
|
||||||
|
|||||||
@@ -8,12 +8,11 @@
|
|||||||
|
|
||||||
let
|
let
|
||||||
username = "h";
|
username = "h";
|
||||||
hostName = "astynanax";
|
hostName = "astyanax";
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
system.stateVersion = "25.05";
|
|
||||||
|
|
||||||
imports = [
|
imports = [
|
||||||
|
../../modules/common.nix
|
||||||
inputs.nixos-hardware.nixosModules.lenovo-thinkpad-e14-intel
|
inputs.nixos-hardware.nixosModules.lenovo-thinkpad-e14-intel
|
||||||
inputs.disko.nixosModules.disko
|
inputs.disko.nixosModules.disko
|
||||||
inputs.sops-nix.nixosModules.sops
|
inputs.sops-nix.nixosModules.sops
|
||||||
@@ -46,13 +45,6 @@ in
|
|||||||
|
|
||||||
environment.systemPackages = [ inputs.nvim.packages.x86_64-linux.nvim ];
|
environment.systemPackages = [ inputs.nvim.packages.x86_64-linux.nvim ];
|
||||||
|
|
||||||
nix.settings.experimental-features = [
|
|
||||||
"nix-command"
|
|
||||||
"flakes"
|
|
||||||
];
|
|
||||||
|
|
||||||
nixpkgs.config.allowUnfree = true;
|
|
||||||
|
|
||||||
home-manager = {
|
home-manager = {
|
||||||
useGlobalPkgs = true;
|
useGlobalPkgs = true;
|
||||||
useUserPackages = true;
|
useUserPackages = true;
|
||||||
|
|||||||
@@ -10,9 +10,8 @@ let
|
|||||||
username = "h";
|
username = "h";
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
system.stateVersion = "25.05";
|
|
||||||
|
|
||||||
imports = [
|
imports = [
|
||||||
|
../../modules/common.nix
|
||||||
inputs.disko.nixosModules.disko
|
inputs.disko.nixosModules.disko
|
||||||
inputs.sops-nix.nixosModules.sops
|
inputs.sops-nix.nixosModules.sops
|
||||||
inputs.home-manager.nixosModules.default
|
inputs.home-manager.nixosModules.default
|
||||||
@@ -38,13 +37,6 @@ in
|
|||||||
|
|
||||||
environment.systemPackages = [ inputs.nvim.packages.x86_64-linux.nvim ];
|
environment.systemPackages = [ inputs.nvim.packages.x86_64-linux.nvim ];
|
||||||
|
|
||||||
nix.settings.experimental-features = [
|
|
||||||
"nix-command"
|
|
||||||
"flakes"
|
|
||||||
];
|
|
||||||
|
|
||||||
nixpkgs.config.allowUnfree = true;
|
|
||||||
|
|
||||||
disko = {
|
disko = {
|
||||||
devices.disk.main.device = "/dev/vda";
|
devices.disk.main.device = "/dev/vda";
|
||||||
devices.disk.main.imageName = "nixos-vm";
|
devices.disk.main.imageName = "nixos-vm";
|
||||||
|
|||||||
10
modules/common.nix
Normal file
10
modules/common.nix
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
system.stateVersion = "25.05";
|
||||||
|
|
||||||
|
nix.settings.experimental-features = [
|
||||||
|
"nix-command"
|
||||||
|
"flakes"
|
||||||
|
];
|
||||||
|
|
||||||
|
nixpkgs.config.allowUnfree = true;
|
||||||
|
}
|
||||||
@@ -25,6 +25,8 @@ in
|
|||||||
"taskwarrior_sync_server_url".owner = config.users.users.${cfg.username}.name;
|
"taskwarrior_sync_server_url".owner = config.users.users.${cfg.username}.name;
|
||||||
"taskwarrior_sync_server_client_id".owner = config.users.users.${cfg.username}.name;
|
"taskwarrior_sync_server_client_id".owner = config.users.users.${cfg.username}.name;
|
||||||
"taskwarrior_sync_encryption_secret".owner = config.users.users.${cfg.username}.name;
|
"taskwarrior_sync_encryption_secret".owner = config.users.users.${cfg.username}.name;
|
||||||
|
"email_personal".owner = config.users.users.${cfg.username}.name;
|
||||||
|
"email_work".owner = config.users.users.${cfg.username}.name;
|
||||||
};
|
};
|
||||||
|
|
||||||
templates."taskrc.d/sync" = {
|
templates."taskrc.d/sync" = {
|
||||||
@@ -35,6 +37,24 @@ in
|
|||||||
sync.encryption_secret=${config.sops.placeholder."taskwarrior_sync_encryption_secret"}
|
sync.encryption_secret=${config.sops.placeholder."taskwarrior_sync_encryption_secret"}
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
templates.".gitconfig.email" = {
|
||||||
|
owner = config.users.users.${cfg.username}.name;
|
||||||
|
path = "/home/${cfg.username}/.gitconfig.email";
|
||||||
|
content = ''
|
||||||
|
[user]
|
||||||
|
email = ${config.sops.placeholder."email_personal"}
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
templates.".gitconfig.work.email" = {
|
||||||
|
owner = config.users.users.${cfg.username}.name;
|
||||||
|
path = "/home/${cfg.username}/.gitconfig.work.email";
|
||||||
|
content = ''
|
||||||
|
[user]
|
||||||
|
email = ${config.sops.placeholder."email_work"}
|
||||||
|
'';
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user