├── .gitignore ├── .sops.yaml ├── LICENSE ├── README.md ├── docs ├── add-new-host.md ├── images │ ├── desktop.png │ └── macbook.png ├── maintenance.md └── skhd-key-binds.md ├── flake.lock ├── flake.nix ├── machines ├── chad │ ├── README.md │ ├── default.nix │ └── hardware.nix ├── darwin │ └── default.nix ├── ghost │ └── default.nix └── legion │ ├── README.md │ ├── default.nix │ └── hardware.nix ├── modules ├── core │ ├── connectivity │ │ ├── cloudflared.nix │ │ ├── default.nix │ │ ├── systemd.nix │ │ └── wireless.nix │ ├── default.nix │ ├── home-manager │ │ └── default.nix │ ├── nix │ │ └── default.nix │ ├── shells │ │ ├── default.nix │ │ ├── starship │ │ │ └── default.nix │ │ └── zsh │ │ │ └── default.nix │ ├── sops │ │ └── default.nix │ ├── storage │ │ ├── default.nix │ │ └── zfs │ │ │ ├── README.md │ │ │ └── default.nix │ ├── system │ │ └── default.nix │ ├── users │ │ └── default.nix │ └── utils │ │ ├── bat │ │ └── default.nix │ │ ├── bottom │ │ └── default.nix │ │ ├── default.nix │ │ ├── direnv │ │ └── default.nix │ │ ├── eza │ │ └── default.nix │ │ ├── fzf │ │ └── default.nix │ │ ├── gpg │ │ └── default.nix │ │ ├── ripgrep │ │ └── default.nix │ │ ├── ssh │ │ └── default.nix │ │ ├── sshd │ │ └── default.nix │ │ ├── tmux │ │ └── default.nix │ │ ├── yazi │ │ └── default.nix │ │ └── zoxide │ │ └── default.nix ├── darwin │ ├── default.nix │ ├── development │ │ ├── .gitconfig │ │ ├── .gitconfig-secretz │ │ ├── default.nix │ │ └── git.nix │ ├── home │ │ ├── bat.nix │ │ ├── core.nix │ │ ├── default.nix │ │ ├── direnv.nix │ │ ├── eza.nix │ │ ├── files │ │ │ ├── adfinis_logo.ttf │ │ │ └── wallpapers │ │ │ │ ├── 3d-model.jpg │ │ │ │ ├── beach.jpg │ │ │ │ ├── black-hole.png │ │ │ │ ├── cabin-2.jpg │ │ │ │ ├── chess-gate.jpeg │ │ │ │ ├── city.png │ │ │ │ ├── clouds-3.png │ │ │ │ ├── cool.jpg │ │ │ │ ├── corals-fish-underwater.jpg │ │ │ │ ├── cottages-river.png │ │ │ │ ├── crane.png │ │ │ │ ├── dark-forest.jpg │ │ │ │ ├── dark-waves.jpg │ │ │ │ ├── diner-lonely-road.jpg │ │ │ │ ├── dino.jpg │ │ │ │ ├── dominik-mayer-10.jpg │ │ │ │ ├── dominik-mayer-2.jpg │ │ │ │ ├── dominik-mayer-21.jpg │ │ │ │ ├── dominik-mayer-22.jpg │ │ │ │ ├── dominik-mayer-23.jpg │ │ │ │ ├── dominik-mayer-4.jpg │ │ │ │ ├── dominik-mayer-7.jpg │ │ │ │ ├── excalibur-lake.jpg │ │ │ │ ├── fantasy-city.jpg │ │ │ │ ├── flower-field.jpg │ │ │ │ ├── flying-comets-clouds.jpg │ │ │ │ ├── fox-clearing.png │ │ │ │ ├── galaxy-waves.jpg │ │ │ │ ├── gentlemen-sunset.png │ │ │ │ ├── gingerbread-house.jpg │ │ │ │ ├── grandfather-tree.jpg │ │ │ │ ├── guy-majou.jpeg │ │ │ │ ├── haunted-house.jpg │ │ │ │ ├── hollow-knight.jpg │ │ │ │ ├── horizon-2.jpg │ │ │ │ ├── i-touch-this.jpg │ │ │ │ ├── japan-alley.png │ │ │ │ ├── keyboard-2.png │ │ │ │ ├── koi.jpg │ │ │ │ ├── lantern-light-room.png │ │ │ │ ├── mars.jpg │ │ │ │ ├── minimalist-black-hole.png │ │ │ │ ├── moon-beach.png │ │ │ │ ├── native-ruins.jpg │ │ │ │ ├── ocean_with_cloud.png │ │ │ │ ├── old-computer.png │ │ │ │ ├── oversized-cat.jpg │ │ │ │ ├── painting.jpg │ │ │ │ ├── pink-clouds.jpg │ │ │ │ ├── pitstop.png │ │ │ │ ├── pixel-napping.png │ │ │ │ ├── pompeii.png │ │ │ │ ├── puffy-stars.jpg │ │ │ │ ├── railroad-horizon.png │ │ │ │ ├── rainy-window.jpeg │ │ │ │ ├── retro2_live.gif │ │ │ │ ├── river-city.jpg │ │ │ │ ├── rooftops.jpg │ │ │ │ ├── sakura-gate.jpg │ │ │ │ ├── sakura-trees-over-river.jpg │ │ │ │ ├── samurai.jpg │ │ │ │ ├── satellite.png │ │ │ │ ├── shiba-inu.jpeg │ │ │ │ ├── ship-2.png │ │ │ │ ├── sky.png │ │ │ │ ├── snowflakes.jpg │ │ │ │ ├── soft-rose.jpg │ │ │ │ ├── space-piano.png │ │ │ │ ├── space.png │ │ │ │ ├── sushi.jpg │ │ │ │ ├── swirls.jpg │ │ │ │ ├── sword.jpg │ │ │ │ ├── temple.jpg │ │ │ │ ├── train-sideview.png │ │ │ │ ├── train-station.jpg │ │ │ │ ├── tree-stump.jpg │ │ │ │ ├── underwater-deep-blue-desktop-wallpaper.jpg │ │ │ │ ├── venice-market.png │ │ │ │ ├── vibrant-gate.png │ │ │ │ ├── voxel-houses-monochrome.png │ │ │ │ ├── wallhaven-vqoo1p.jpg │ │ │ │ ├── windows-xp.jpg │ │ │ │ └── yohoho.jpg │ │ ├── fzf.nix │ │ ├── gpg │ │ │ ├── default.nix │ │ │ └── gpg-agent.conf │ │ ├── jankyborders │ │ │ ├── bordersrc │ │ │ └── default.nix │ │ ├── kitty.nix │ │ ├── ripgrep.nix │ │ ├── shell.nix │ │ ├── sketchybar │ │ │ ├── colors.sh │ │ │ ├── default.nix │ │ │ ├── icon_map.sh │ │ │ ├── icons.sh │ │ │ ├── items │ │ │ │ ├── apple.sh │ │ │ │ ├── battery.sh │ │ │ │ ├── brew.sh │ │ │ │ ├── calendar.sh │ │ │ │ ├── control_center.sh │ │ │ │ ├── divider_notifications.sh │ │ │ │ ├── divider_system.sh │ │ │ │ ├── front_app.sh │ │ │ │ ├── mail.sh │ │ │ │ ├── mattermost.sh │ │ │ │ ├── spaces.sh │ │ │ │ ├── volume.sh │ │ │ │ └── wifi.sh │ │ │ ├── plugins │ │ │ │ ├── app_icons.sh │ │ │ │ ├── battery.sh │ │ │ │ ├── brew.sh │ │ │ │ ├── calendar.sh │ │ │ │ ├── mail.sh │ │ │ │ ├── mattermost.sh │ │ │ │ ├── space.sh │ │ │ │ ├── volume.sh │ │ │ │ ├── volume_click.sh │ │ │ │ ├── wifi.sh │ │ │ │ └── yabai.sh │ │ │ └── sketchybarrc │ │ ├── ssh.nix │ │ ├── starship.nix │ │ ├── yazi.nix │ │ └── zoxide.nix │ ├── homebrew │ │ └── default.nix │ ├── nix │ │ └── default.nix │ └── system │ │ ├── default.nix │ │ ├── skhd.nix │ │ └── yabai.nix ├── default.nix ├── development │ ├── ansible │ │ └── default.nix │ ├── aws-cli │ │ └── default.nix │ ├── azure-cli │ │ └── default.nix │ ├── default.nix │ ├── git │ │ ├── default.nix │ │ ├── github.nix │ │ └── lazy_git.nix │ ├── go │ │ └── default.nix │ ├── hashicorp │ │ └── default.nix │ ├── packer │ │ └── default.nix │ ├── powershell │ │ └── default.nix │ ├── python │ │ ├── default.nix │ │ └── python312 │ │ │ └── default.nix │ ├── virtualisation │ │ ├── default.nix │ │ ├── docker.nix │ │ ├── hypervisor.nix │ │ └── k8s.nix │ ├── vscode-server │ │ └── default.nix │ └── yaml │ │ └── default.nix ├── graphical │ ├── applications │ │ ├── default.nix │ │ ├── firefox │ │ │ └── default.nix │ │ └── obsidian │ │ │ └── default.nix │ ├── default.nix │ ├── desktop │ │ ├── _assets │ │ │ ├── lockscreen.png │ │ │ ├── wallpaper.jpg │ │ │ └── wlogout │ │ │ │ ├── lock-hover.png │ │ │ │ ├── lock.png │ │ │ │ ├── logout-hover.png │ │ │ │ ├── logout.png │ │ │ │ ├── power-hover.png │ │ │ │ ├── power.png │ │ │ │ ├── restart-hover.png │ │ │ │ ├── restart.png │ │ │ │ ├── sleep-hover.png │ │ │ │ └── sleep.png │ │ ├── default.nix │ │ ├── fuzzel │ │ │ └── default.nix │ │ ├── hyprland │ │ │ └── default.nix │ │ ├── hyprlock │ │ │ └── default.nix │ │ ├── hyprpaper │ │ │ └── default.nix │ │ ├── key_management │ │ │ └── default.nix │ │ ├── swaync │ │ │ └── default.nix │ │ ├── waybar │ │ │ └── default.nix │ │ └── wlogout │ │ │ └── default.nix │ ├── sound │ │ └── default.nix │ ├── terminal │ │ └── default.nix │ ├── theme │ │ └── default.nix │ └── xdg │ │ └── default.nix └── wsl │ ├── default.nix │ ├── services │ └── default.nix │ └── users │ └── default.nix ├── overlays └── default.nix ├── pkgs ├── default.nix └── niks │ └── default.nix └── secrets └── secrets.yaml /.gitignore: -------------------------------------------------------------------------------- 1 | *.tar.gz 2 | .vscode 3 | .DS_Store 4 | -------------------------------------------------------------------------------- /.sops.yaml: -------------------------------------------------------------------------------- 1 | keys: 2 | - &roelc age1k2kr92m8nad59shnvv07t4v54zpu9lrxmnj8a4vm36vgvhn36c6sqp50kc 3 | - &host_legion age1j4a6glrt7yrg0yqepqr0yf5448tzqgdandkx44zrac8084u4t95qgslcx0 4 | - &host_chad age1t0f9fte5lnyjqpy0x05mg4wzg5nk7gpudtnc5369k6fzuzk0dcyqkr8j80 5 | creation_rules: 6 | - path_regex: secrets/secrets.yaml$ 7 | key_groups: 8 | - age: 9 | - *roelc 10 | - *host_legion 11 | - *host_chad 12 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | This is free and unencumbered software released into the public domain. 2 | 3 | Anyone is free to copy, modify, publish, use, compile, sell, or 4 | distribute this software, either in source code form or as a compiled 5 | binary, for any purpose, commercial or non-commercial, and by any 6 | means. 7 | 8 | In jurisdictions that recognize copyright laws, the author or authors 9 | of this software dedicate any and all copyright interest in the 10 | software to the public domain. We make this dedication for the benefit 11 | of the public at large and to the detriment of our heirs and 12 | successors. We intend this dedication to be an overt act of 13 | relinquishment in perpetuity of all present and future rights to this 14 | software under copyright law. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 17 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 18 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 19 | IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR 20 | OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 21 | ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 22 | OTHER DEALINGS IN THE SOFTWARE. 23 | 24 | For more information, please refer to 25 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

Welcome to my NixOS Configuration Repository

2 | 3 |

4 | Version Deez-Nutzzzz 5 | Version Yo Mama 6 |

7 | 8 |

9 | This is my NixOS configuration, the goal is to create fully reproducable operating systems based on the Nix package manager, home-manager and flakes. 10 | My main use case is cloud automation and development, with this configuration I want to create a fully streamlined workflow fully catered to my needs in a declarative fasion. 11 | 12 |

13 | 14 | #### NixOS 15 | 16 | ![desktop](./docs/images/desktop.png) 17 | 18 | #### MacOS 19 | 20 | ![macbook](./docs/images/macbook.png) 21 | 22 | ## Highlights 23 | 24 | - ZFS with impermanence (blank snapshot at boot) 25 | - SOPS Nix for secret management 26 | - Custom [NixVim](https://github.com/dc-tec/nixvim) flake 27 | - Hyprland as tiling window manager 28 | - Catppuccin themed 29 | - WSL Config 30 | - Darwin Config 31 | 32 | ## Configuration 33 | 34 | The repository is setup in a modular fasion. The configuration can be split into the following main components: 35 | 36 | - Machines 37 | - Contains the per device hardware configuration and host settings. 38 | - Core 39 | - The core module contains applications and configuration settings that will be applied on all systems. 40 | - Darwin 41 | - The Nix Darwin module to configure MacOS. 42 | - Development 43 | - The development module contains the different development tools I need on a day to day basis. The submodules all contain options to either enable or disable certain tools. By default they are all enabled 44 | - Graphical 45 | - The graphical module contains different submodules related to my desktop enviroment based on Hyprland and other required applications and configurations that are needed for a smooth experience. 46 | - WSL 47 | - Windows Subsystem for Linux module. 48 | - Overlays 49 | - If needed we can apply an overlay over certain packages. These overlays are defined here. 50 | - Pkgs 51 | - The pkgs directory contains custom packages. 52 | - Secrets 53 | - Encrypted secrets using Nix SOPS. 54 | 55 | ### ZFS 56 | 57 | ZFS is used on the storage layer. I'm making use of impermanence where the filesystem is reset to a blank state on each reboot. For first time use, see the README's in the machines direc 58 | 59 | ### SOPS 60 | 61 | For secret management in a pure Nix way Nix SOPS is used. See [add new host](docs/add-new-host.md) 62 | 63 | ### Darwin 64 | 65 | Currently using a Macbook Pro M3, that is configured using Home-Manager and Nix Darwin. This is a stand-alone module, in the future I should figure out how to make use of the shared modules in this repository. For now I'm using a configuration that is seperated from my NixOS config. 66 | 67 | ### WSL 68 | 69 | I want to be able to use my configuration when working on a Windows machine. I make use of [NixOS-WSL](https://github.com/nix-community/NixOS-WSL). Because the main configuration uses impermanence and ZFS and this is ofcourse not supported in WSL I created options throughout the config to enable / disable impermanence. Also the graphical module is not loaded. See the [flake](flake.nix). 70 | 71 | ### References 72 | 73 | - [Erase Your Darlings](https://grahamc.com/blog/erase-your-darlings/) 74 | - [Anton Hakansson](https://github.com/AntonHakansson/nixos-config/) 75 | 76 | #### Wallpapers 77 | 78 | - [Orxngc](https://github.com/orxngc/walls-catppuccin-mocha) 79 | 80 | #### Disclaimer 81 | 82 | Feel free to use this repository as a reference for your own configuration. However do not expect to be able to run this configuration on your own system as-is. If you have a question feel free to create an issue. 83 | -------------------------------------------------------------------------------- /docs/add-new-host.md: -------------------------------------------------------------------------------- 1 | #Placeholder 2 | -------------------------------------------------------------------------------- /docs/images/desktop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dc-tec/nixos-config/8e068a43cc0efc43dbb3dcde26ee7797e83582ab/docs/images/desktop.png -------------------------------------------------------------------------------- /docs/images/macbook.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dc-tec/nixos-config/8e068a43cc0efc43dbb3dcde26ee7797e83582ab/docs/images/macbook.png -------------------------------------------------------------------------------- /docs/maintenance.md: -------------------------------------------------------------------------------- 1 | In order to keep our system nice and tidy we can perform the following maintenance tasks: 2 | 3 | ```bash 4 | nix-env --list-generations 5 | 6 | nix-collect-garbage --delete-old 7 | 8 | nix-collect-garbage --delete-generations 1 2 3 9 | 10 | # recomeneded to sometimes run as sudo or doas to collect additional garbage 11 | doas nix-collect-garbage -d 12 | 13 | # As a separation of concerns - you will need to run this command to clean out boot 14 | doas /run/current-system/bin/switch-to-configuration boot 15 | ``` 16 | -------------------------------------------------------------------------------- /flake.nix: -------------------------------------------------------------------------------- 1 | { 2 | description = "deCort.tech NixOS Configuration"; 3 | 4 | inputs = { 5 | nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; 6 | nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-23.11"; 7 | nur.url = "github:nix-community/NUR"; 8 | 9 | # Flakes 10 | home-manager.url = "github:nix-community/home-manager"; 11 | impermanence.url = "github:nix-community/impermanence"; 12 | sops-nix.url = "github:Mic92/sops-nix"; 13 | 14 | # Hyperland / Wayland related flakes 15 | hyprland.url = "git+https://github.com/hyprwm/Hyprland?submodules=1"; 16 | hyprpaper.url = "github:hyprwm/hyprpaper"; 17 | hyprlock.url = "github:hyprwm/hyprlock"; 18 | 19 | # Catppuccin theming 20 | nix-colors.url = "github:misterio77/nix-colors"; 21 | catppuccin.url = "github:catppuccin/nix"; 22 | 23 | # WSL2 flake 24 | nixos-wsl.url = "github:nix-community/NixOS-WSL"; 25 | 26 | # MacOS flakes 27 | darwin = { 28 | url = "github:lnl7/nix-darwin"; 29 | inputs.nixpkgs.follows = "nixpkgs"; 30 | }; 31 | 32 | nix-homebrew.url = "github:zhaofengli-wip/nix-homebrew"; 33 | 34 | homebrew-core = { 35 | url = "github:homebrew/homebrew-core"; 36 | flake = false; 37 | }; 38 | homebrew-cask = { 39 | url = "github:homebrew/homebrew-cask"; 40 | flake = false; 41 | }; 42 | 43 | # Custom Flakes 44 | nixvim.url = "github:dc-tec/nixvim"; 45 | niks-cli.url = "github:dc-tec/niks-cli"; 46 | }; 47 | 48 | outputs = 49 | { 50 | self, 51 | nixpkgs, 52 | home-manager, 53 | impermanence, 54 | hyprland, 55 | hyprpaper, 56 | hyprlock, 57 | nixvim, 58 | nur, 59 | niks-cli, 60 | nix-colors, 61 | catppuccin, 62 | sops-nix, 63 | nixos-wsl, 64 | darwin, 65 | ... 66 | }@inputs: 67 | let 68 | inherit (self) outputs; 69 | forAllSystems = nixpkgs.lib.genAttrs [ 70 | "x86_64-linux" 71 | "aarch64-darwin" 72 | ]; 73 | 74 | wslModules = [ 75 | home-manager.nixosModule 76 | catppuccin.nixosModules.catppuccin 77 | impermanence.nixosModule # Needed to disable certain options 78 | nixos-wsl.nixosModules.default 79 | 80 | ./modules/wsl 81 | ./modules/core/home-manager 82 | ./modules/core/nix 83 | ./modules/core/utils 84 | ./modules/core/shells 85 | ./modules/core/system 86 | ./modules/core/storage # Needed to disable certain options 87 | ./modules/development 88 | ]; 89 | 90 | darwinModules = [ 91 | home-manager.darwinModules.home-manager 92 | 93 | ./modules/darwin 94 | ]; 95 | 96 | sharedModules = [ 97 | ( 98 | { 99 | inputs, 100 | outputs, 101 | lib, 102 | config, 103 | pkgs, 104 | ... 105 | }: 106 | { 107 | nixpkgs = { 108 | overlays = [ 109 | nur.overlay 110 | (import ./overlays { inherit inputs; }).stable-packages 111 | ]; 112 | }; 113 | } 114 | ) 115 | 116 | sops-nix.nixosModules.sops 117 | impermanence.nixosModule 118 | home-manager.nixosModule 119 | catppuccin.nixosModules.catppuccin 120 | nixos-wsl.nixosModules.default 121 | nur.nixosModules.nur 122 | 123 | ./modules 124 | ]; 125 | in 126 | { 127 | packages = forAllSystems ( 128 | system: 129 | let 130 | pkgs = nixpkgs.legacyPackages.${system}; 131 | in 132 | import ./pkgs { inherit pkgs; } 133 | ); 134 | 135 | devShells = forAllSystems ( 136 | system: 137 | let 138 | pkgs = nixpkgs.legacyPackages.${system}; 139 | in 140 | { 141 | default = pkgs.mkShell { 142 | NIX_CONFIG = "experimental-features = nix-command flakes"; 143 | nativeBuildInputs = [ 144 | pkgs.nix 145 | pkgs.home-manager 146 | pkgs.git 147 | pkgs.age 148 | pkgs.age-to-ssh 149 | pkgs.sops 150 | ]; 151 | }; 152 | } 153 | ); 154 | 155 | formatter = forAllSystems ( 156 | system: 157 | let 158 | pkgs = nixpkgs.legacyPackages.${system}; 159 | in 160 | pkgs.nixpkgs-fmt 161 | ); 162 | 163 | overlays = import ./overlays { inherit inputs; }; 164 | 165 | darwinConfigurations = { 166 | darwin = darwin.lib.darwinSystem { 167 | specialArgs = { 168 | inherit inputs outputs; 169 | }; 170 | modules = darwinModules ++ [ ./machines/darwin/default.nix ]; 171 | }; 172 | }; 173 | 174 | nixosConfigurations = { 175 | legion = nixpkgs.lib.nixosSystem { 176 | specialArgs = { 177 | inherit inputs outputs; 178 | }; 179 | modules = sharedModules ++ [ ./machines/legion/default.nix ]; 180 | }; 181 | chad = nixpkgs.lib.nixosSystem { 182 | specialArgs = { 183 | inherit inputs outputs; 184 | }; 185 | modules = sharedModules ++ [ ./machines/chad/default.nix ]; 186 | }; 187 | ghost = nixpkgs.lib.nixosSystem { 188 | specialArgs = { 189 | inherit inputs outputs; 190 | }; 191 | modules = wslModules ++ [ ./machines/ghost/default.nix ]; 192 | }; 193 | }; 194 | }; 195 | } 196 | -------------------------------------------------------------------------------- /machines/chad/README.md: -------------------------------------------------------------------------------- 1 | # Preparing disk for installation 2 | 3 | ```shell 4 | diska=/dev/sda 5 | sudo parted "$diska" -- mklabel gpt 6 | sudo parted "$diska" -- mkpart primary 512MiB -8GiB # zfs 7 | sudo parted "$diska" -- mkpart primary linux-swap -8GiB 100% # swap 8 | sudo parted "$diska" -- mkpart ESP fat32 1MiB 512MiB # boot 9 | sudo parted "$diska" -- set 3 esp on 10 | 11 | sudo mkswap -L swap "${diska}2" 12 | sudo mkfs.fat -F 32 -n EFI "${diska}3" 13 | 14 | diskb=/dev/sdb 15 | sudo parted "$diskb" -- mklabel gpt 16 | sudo parted "$diskb" -- mkpart primary 1MiB -8GiB # zfs 17 | 18 | diskc=/dev/sdc 19 | sudo parted "$diskc" -- mklabel gpt 20 | sudo parted "$diskc" -- mkpart primary 1MiB -8GiB # zfs 21 | 22 | zpool create -O mountpoint=none -O encryption=aes-256-gcm -O keyformat=passphrase rpool "${diska}1" "${diskb}1" "${diskc}1" 23 | 24 | zfs create -p -o mountpoint=legacy rpool/local 25 | zfs create -p -o mountpoint=legacy rpool/safe 26 | zfs create -p -o mountpoint=legacy rpool/local/root 27 | 28 | zfs snapshot rpool/local/root@blank 29 | zfs create -p -o mountpoint=legacy rpool/local/nix 30 | zfs set compression=lz4 rpool/local/nix 31 | zfs create -p -o mountpoint=legacy rpool/local/nix-store 32 | zfs set compression=lz4 rpool/local/nix-store 33 | zfs create -p -o mountpoint=legacy rpool/local/cache 34 | zfs set compression=lz4 rpool/local/cache 35 | zfs create -p -o mountpoint=legacy rpool/safe/data 36 | zfs set compression=lz4 rpool/safe/data 37 | 38 | mount -t zfs rpool/local/root /mnt 39 | 40 | mkdir -p /mnt/boot 41 | mount "${diska}3" /mnt/boot 42 | 43 | mkdir -p /mnt/nix/ 44 | mount -t zfs rpool/local/nix /mnt/nix 45 | 46 | mkdir -p /mnt/nix/store 47 | mount -t zfs rpool/local/nix-store /mnt/nix/store 48 | 49 | mkdir -p /mnt/cache 50 | mount -t zfs rpool/local/cache /mnt/cache 51 | 52 | mkdir -p /mnt/data 53 | mount -t zfs rpool/safe/data /mnt/data 54 | ``` 55 | -------------------------------------------------------------------------------- /machines/chad/default.nix: -------------------------------------------------------------------------------- 1 | {...}: { 2 | imports = [./hardware.nix]; 3 | 4 | networking = { 5 | hostName = "chad"; 6 | hostId = "a51b205b"; 7 | nameservers = ["1.1.1.1" "1.0.0.1"]; 8 | useDHCP = false; 9 | interfaces = { 10 | br0 = { 11 | useDHCP = true; 12 | #ipv4.addresses = [ 13 | # { 14 | # address = "10.0.1.125"; 15 | # prefixLength = 24; 16 | # } 17 | #]; 18 | }; 19 | enp27s0 = { 20 | useDHCP = true; 21 | }; 22 | }; 23 | defaultGateway = "10.0.10.1"; 24 | bridges = { 25 | "br0" = { 26 | interfaces = ["enp27s0"]; 27 | }; 28 | }; 29 | extraHosts = '' 30 | 10.0.10.151 argocd.decort.tech 31 | 10.0.10.152 longhorn.decort.tech 32 | 10.0.10.153 vault.decort.tech 33 | ''; 34 | }; 35 | 36 | dc-tec = { 37 | stateVersion = "24.05"; 38 | core = { 39 | persistence = { 40 | enable = true; 41 | }; 42 | zfs = { 43 | enable = true; 44 | encrypted = true; 45 | rootDataset = "rpool/local/root"; 46 | }; 47 | wireless = { 48 | enable = false; 49 | }; 50 | cloudflared = { 51 | enable = false; 52 | }; 53 | }; 54 | development = { 55 | vscode-server.enable = true; 56 | virtualisation = { 57 | docker.enable = true; 58 | k8s.enable = true; 59 | hypervisor.enable = true; 60 | }; 61 | }; 62 | graphical = { 63 | enable = true; 64 | laptop = false; 65 | hyprland = { 66 | enable = true; 67 | }; 68 | xdg = { 69 | enable = true; 70 | }; 71 | }; 72 | }; 73 | } 74 | -------------------------------------------------------------------------------- /machines/chad/hardware.nix: -------------------------------------------------------------------------------- 1 | { 2 | config, 3 | lib, 4 | modulesPath, 5 | ... 6 | }: { 7 | imports = [(modulesPath + "/installer/scan/not-detected.nix")]; 8 | 9 | boot = { 10 | loader = { 11 | systemd-boot.enable = true; 12 | efi.canTouchEfiVariables = true; 13 | }; 14 | initrd = { 15 | availableKernelModules = ["xhci_pci" "ahci" "usb_storage" "usbhid" "sd_mod"]; 16 | kernelModules = ["virtio"]; 17 | }; 18 | kernelParams = ["mitigations=off"]; 19 | kernelModules = [ 20 | "kvm-amd" 21 | "xt_socket" 22 | "vhost-net" 23 | "bridge" 24 | "br_netfilter" 25 | ]; 26 | extraModulePackages = []; 27 | kernelPackages = config.boot.zfs.package.latestCompatibleLinuxPackages; 28 | kernel = { 29 | sysctl."net.ipv4.ip_forward" = 1; 30 | }; 31 | }; 32 | 33 | fileSystems = { 34 | "/" = { 35 | device = "rpool/local/root"; 36 | fsType = "zfs"; 37 | neededForBoot = true; 38 | }; 39 | "/boot" = { 40 | device = "/dev/disk/by-label/EFI"; 41 | fsType = "vfat"; 42 | }; 43 | "/nix" = { 44 | device = "rpool/local/nix"; 45 | fsType = "zfs"; 46 | neededForBoot = true; 47 | }; 48 | "/nix/store" = { 49 | device = "rpool/local/nix-store"; 50 | fsType = "zfs"; 51 | neededForBoot = true; 52 | }; 53 | "/cache" = { 54 | device = "rpool/local/cache"; 55 | fsType = "zfs"; 56 | neededForBoot = true; 57 | }; 58 | "/data" = { 59 | device = "rpool/safe/data"; 60 | fsType = "zfs"; 61 | neededForBoot = true; 62 | }; 63 | }; 64 | 65 | swapDevices = [{device = "/dev/disk/by-label/swap";}]; 66 | 67 | nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; 68 | 69 | hardware = { 70 | cpu.amd.updateMicrocode = true; 71 | enableRedistributableFirmware = true; 72 | graphics.enable = true; 73 | nvidia = { 74 | package = config.boot.kernelPackages.nvidiaPackages.latest; 75 | powerManagement.enable = true; 76 | open = false; 77 | modesetting = { 78 | enable = true; 79 | }; 80 | }; 81 | }; 82 | services = { 83 | fstrim.enable = true; 84 | blueman.enable = true; 85 | }; 86 | 87 | nixpkgs.config.allowUnfreePredicate = pkg: 88 | builtins.elem (lib.getName pkg) [ 89 | "nvidia-x11" 90 | "nvidia" 91 | "nvidia-settings" 92 | ]; 93 | } 94 | -------------------------------------------------------------------------------- /machines/darwin/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | inputs, 3 | lib, 4 | ... 5 | }: { 6 | imports = [ 7 | ]; 8 | 9 | nixpkgs.hostPlatform = lib.mkDefault "aarch64-darwin"; 10 | 11 | networking = { 12 | hostName = "darwin"; 13 | computerName = "darwin"; 14 | }; 15 | } -------------------------------------------------------------------------------- /machines/ghost/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | inputs, 3 | lib, 4 | ... 5 | }: { 6 | imports = [ 7 | inputs.nixos-wsl.nixosModules.default 8 | ]; 9 | 10 | wsl = { 11 | enable = true; 12 | 13 | defaultUser = "roelc"; 14 | }; 15 | 16 | networking = { 17 | hostName = "ghost"; 18 | hostId = "3c4e8b4f"; 19 | }; 20 | 21 | nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; 22 | 23 | dc-tec = { 24 | stateVersion = "24.05"; 25 | core = { 26 | persistence = { 27 | enable = false; 28 | }; 29 | zfs = { 30 | enable = false; 31 | }; 32 | }; 33 | development = { 34 | virtualisation = { 35 | hypervisor = { 36 | enable = false; 37 | }; 38 | docker = { 39 | enable = false; 40 | }; 41 | }; 42 | }; 43 | }; 44 | } 45 | -------------------------------------------------------------------------------- /machines/legion/README.md: -------------------------------------------------------------------------------- 1 | # Preparing disk for installation 2 | ```shell 3 | diska=/dev/nvme0n1 4 | sudo parted "$diska" -- mklabel gpt 5 | sudo parted "$diska" -- mkpart primary 512MiB -8GiB # zfs 6 | sudo parted "$diska" -- mkpart primary linux-swap -8GiB 100% # swap 7 | sudo parted "$diska" -- mkpart ESP fat32 1MiB 512MiB # boot 8 | sudo parted "$diska" -- set 3 esp on 9 | 10 | sudo mkswap -L swap "${diska}p2" 11 | sudo mkfs.fat -F 32 -n EFI "${diska}p3" 12 | 13 | diskb=/dev/sda 14 | sudo parted "$diskb" -- mklabel gpt 15 | sudo parted "$diskb" -- mkpart primary 1MiB -8GiB # zfs 16 | 17 | zpool create -O mountpoint=none -O encryption=aes-256-gcm -O keyformat=passphrase rpool "${diska}p1" "${diskb}" 18 | 19 | zfs create -p -o mountpoint=legacy rpool/local 20 | zfs create -p -o mountpoint=legacy rpool/safe 21 | zfs create -p -o mountpoint=legacy rpool/local/root 22 | 23 | zfs snapshot rpool/local/root@blank 24 | zfs create -p -o mountpoint=legacy rpool/local/nix 25 | zfs set compression=lz4 rpool/local/nix 26 | zfs create -p -o mountpoint=legacy rpool/local/nix-store 27 | zfs set compression=lz4 rpool/local/nix-store 28 | zfs create -p -o mountpoint=legacy rpool/local/cache 29 | zfs set compression=lz4 rpool/local/cache 30 | zfs create -p -o mountpoint=legacy rpool/safe/data 31 | zfs set compression=lz4 rpool/safe/data 32 | 33 | mount -t zfs rpool/local/root /mnt 34 | 35 | mkdir -p /mnt/boot 36 | mount "${diska}p3" /mnt/boot 37 | 38 | mkdir -p /mnt/nix/ 39 | mount -t zfs rpool/local/nix /mnt/nix 40 | 41 | mkdir -p /mnt/nix/store 42 | mount -t zfs rpool/local/nix-store /mnt/nix/store 43 | 44 | mkdir -p /mnt/cache 45 | mount -t zfs rpool/local/cache /mnt/cache 46 | 47 | mkdir -p /mnt/data 48 | mount -t zfs rpool/safe/data /mnt/data 49 | ``` 50 | 51 | -------------------------------------------------------------------------------- /machines/legion/default.nix: -------------------------------------------------------------------------------- 1 | {...}: { 2 | imports = [./hardware.nix]; 3 | 4 | networking = { 5 | hostName = "legion"; 6 | hostId = "6eea4e84"; 7 | nameservers = ["1.1.1.1" "1.0.0.1"]; 8 | }; 9 | 10 | dc-tec = { 11 | stateVersion = "24.05"; 12 | core = { 13 | zfs = { 14 | enable = true; 15 | encrypted = true; 16 | rootDataset = "rpool/local/root"; 17 | }; 18 | wireless = { 19 | enable = true; 20 | }; 21 | routing = { 22 | enable = false; 23 | }; 24 | }; 25 | graphical = { 26 | enable = true; 27 | laptop = true; 28 | hyprland = { 29 | enable = true; 30 | }; 31 | xdg = { 32 | enable = true; 33 | }; 34 | }; 35 | }; 36 | } 37 | -------------------------------------------------------------------------------- /machines/legion/hardware.nix: -------------------------------------------------------------------------------- 1 | { 2 | config, 3 | lib, 4 | modulesPath, 5 | ... 6 | }: { 7 | imports = [(modulesPath + "/installer/scan/not-detected.nix")]; 8 | 9 | boot = { 10 | loader = { 11 | systemd-boot.enable = true; 12 | efi.canTouchEfiVariables = true; 13 | }; 14 | initrd = { 15 | availableKernelModules = ["xhci_pci" "ahci" "nvme" "usb_storage" "sd_mod"]; 16 | kernelModules = []; 17 | }; 18 | kernelParams = ["mitigations=off"]; 19 | kernelModules = ["kvm-intel"]; 20 | extraModulePackages = []; 21 | kernelPackages = config.boot.zfs.package.latestCompatibleLinuxPackages; 22 | }; 23 | 24 | fileSystems = { 25 | "/" = { 26 | device = "rpool/local/root"; 27 | fsType = "zfs"; 28 | neededForBoot = true; 29 | }; 30 | "/boot" = { 31 | device = "/dev/disk/by-label/EFI"; 32 | fsType = "vfat"; 33 | }; 34 | "/nix" = { 35 | device = "rpool/local/nix"; 36 | fsType = "zfs"; 37 | neededForBoot = true; 38 | }; 39 | "/nix/store" = { 40 | device = "rpool/local/nix-store"; 41 | fsType = "zfs"; 42 | neededForBoot = true; 43 | }; 44 | "/cache" = { 45 | device = "rpool/local/cache"; 46 | fsType = "zfs"; 47 | neededForBoot = true; 48 | }; 49 | "/data" = { 50 | device = "rpool/safe/data"; 51 | fsType = "zfs"; 52 | neededForBoot = true; 53 | }; 54 | }; 55 | 56 | swapDevices = [{device = "/dev/disk/by-label/swap";}]; 57 | 58 | nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; 59 | 60 | networking.useDHCP = lib.mkDefault true; 61 | 62 | hardware = { 63 | cpu.intel.updateMicrocode = true; 64 | enableRedistributableFirmware = true; 65 | opengl.enable = true; 66 | nvidia = { 67 | package = config.boot.kernelPackages.nvidiaPackages.latest; 68 | powerManagement.enable = true; 69 | open = true; 70 | modesetting = { 71 | enable = true; 72 | }; 73 | }; 74 | }; 75 | services.fstrim.enable = true; 76 | 77 | nixpkgs.config.allowUnfreePredicate = pkg: 78 | builtins.elem (lib.getName pkg) [ 79 | "nvidia-x11" 80 | "nvidia" 81 | "nvidia-settings" 82 | ]; 83 | } 84 | -------------------------------------------------------------------------------- /modules/core/connectivity/cloudflared.nix: -------------------------------------------------------------------------------- 1 | { 2 | config, 3 | lib, 4 | ... 5 | }: { 6 | options.dc-tec.core.cloudflared.enable = lib.mkEnableOption "cloudflared"; 7 | 8 | config = lib.mkIf config.dc-tec.core.cloudflared.enable { 9 | systemd.services."enable-cloudflare" = { 10 | description = "Enable Cloudflared Tunnel"; 11 | wantedBy = ["multi-user.target"]; 12 | serviceConfig = { 13 | ExecStart = "/etc/profiles/per-user/roelc/bin/cloudflared tunnel --config /home/roelc/.cloudflared/config.yml run"; 14 | Type = "simple"; 15 | }; 16 | }; 17 | }; 18 | } 19 | -------------------------------------------------------------------------------- /modules/core/connectivity/default.nix: -------------------------------------------------------------------------------- 1 | {...}: { 2 | imports = [ 3 | ./systemd.nix 4 | ./wireless.nix 5 | ./cloudflared.nix 6 | ]; 7 | } 8 | -------------------------------------------------------------------------------- /modules/core/connectivity/systemd.nix: -------------------------------------------------------------------------------- 1 | _: { 2 | systemd.services."enable-wifi-on-boot" = { 3 | description = "Enable Wifi during boot"; 4 | wantedBy = ["multi-user.target"]; 5 | serviceConfig = { 6 | ExecStart = "/run/current-system/sw/bin/rfkill unblock all"; 7 | Type = "oneshot"; 8 | }; 9 | }; 10 | } 11 | -------------------------------------------------------------------------------- /modules/core/connectivity/wireless.nix: -------------------------------------------------------------------------------- 1 | { 2 | config, 3 | lib, 4 | ... 5 | }: { 6 | options.dc-tec.core.wireless.enable = lib.mkEnableOption "wireless"; 7 | 8 | config = lib.mkIf config.dc-tec.core.wireless.enable { 9 | networking.wireless = { 10 | enable = true; 11 | environmentFile = config.sops.secrets.wireless.path; 12 | networks = { 13 | "@home_uuid@" = {psk = "@home_psk@";}; 14 | }; 15 | }; 16 | }; 17 | } 18 | -------------------------------------------------------------------------------- /modules/core/default.nix: -------------------------------------------------------------------------------- 1 | {...}: { 2 | imports = [ 3 | ./nix 4 | ./connectivity 5 | ./shells 6 | ./storage 7 | ./utils 8 | ./sops 9 | ./home-manager 10 | ./system 11 | ./users 12 | ]; 13 | } 14 | -------------------------------------------------------------------------------- /modules/core/home-manager/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | config, 3 | inputs, 4 | lib, 5 | pkgs, 6 | ... 7 | }: 8 | { 9 | imports = [ 10 | inputs.nix-colors.homeManagerModules.default 11 | ]; 12 | 13 | dc-tec.core.zfs = lib.mkMerge [ 14 | (lib.mkIf config.dc-tec.core.persistence.enable { 15 | homeCacheLinks = [ 16 | ".config" 17 | ".cache" 18 | ".local" 19 | ".cloudflared" 20 | ]; 21 | }) 22 | (lib.mkIf (!config.dc-tec.core.persistence.enable) { }) 23 | ]; 24 | 25 | colorScheme = inputs.nix-colors.colorSchemes.catppuccin-macchiato; 26 | catppuccin = { 27 | flavor = "macchiato"; 28 | }; 29 | 30 | home-manager = { 31 | useGlobalPkgs = true; 32 | useUserPackages = true; 33 | 34 | users = { 35 | roelc = 36 | { ... }: 37 | { 38 | imports = [ 39 | inputs.catppuccin.homeModules.catppuccin 40 | ]; 41 | home = { 42 | stateVersion = config.dc-tec.stateVersion; 43 | packages = [ 44 | inputs.nixvim.packages.x86_64-linux.default 45 | pkgs.cloudflared 46 | pkgs.just 47 | ]; 48 | }; 49 | systemd.user.sessionVariables = config.home-manager.users.roelc.home.sessionVariables; 50 | catppuccin = { 51 | flavor = "macchiato"; 52 | accent = "peach"; 53 | }; 54 | }; 55 | root = _: { home.stateVersion = config.dc-tec.stateVersion; }; 56 | }; 57 | }; 58 | } 59 | -------------------------------------------------------------------------------- /modules/core/nix/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | config, 3 | lib, 4 | ... 5 | }: { 6 | options = { 7 | dc-tec.core.nix = { 8 | enableDirenv = lib.mkOption {default = true;}; 9 | unfreePackages = lib.mkOption { 10 | default = []; 11 | }; 12 | }; 13 | }; 14 | 15 | config = { 16 | dc-tec.core.zfs = lib.mkMerge [ 17 | (lib.mkIf config.dc-tec.core.persistence.enable { 18 | homeCacheLinks = ["local/share/direnv"]; 19 | systemCacheLinks = ["/root/.local/share/direnv"]; 20 | systemDataLinks = ["/var/lib/nixos"]; 21 | }) 22 | (lib.mkIf (!config.dc-tec.core.persistence.enable) {}) 23 | ]; 24 | 25 | programs.nh = { 26 | enable = true; 27 | clean.enable = false; 28 | flake = "/home/roelc/repos/nixos-config"; 29 | }; 30 | 31 | nixpkgs.config = { 32 | allowUnfree = true; 33 | }; 34 | 35 | nix = { 36 | settings = { 37 | trusted-users = [ 38 | "roelc" 39 | ]; 40 | experimental-features = ["nix-command" "flakes"]; 41 | warn-dirty = false; 42 | }; 43 | 44 | gc = { 45 | automatic = true; 46 | dates = "daily"; 47 | options = "--delete-older-than 7d"; 48 | }; 49 | }; 50 | }; 51 | } -------------------------------------------------------------------------------- /modules/core/shells/default.nix: -------------------------------------------------------------------------------- 1 | {pkgs, ...}: { 2 | imports = [ 3 | ./starship 4 | ./zsh 5 | ]; 6 | 7 | users = { 8 | defaultUserShell = pkgs.zsh; 9 | }; 10 | } 11 | -------------------------------------------------------------------------------- /modules/core/shells/starship/default.nix: -------------------------------------------------------------------------------- 1 | { lib, ... }: 2 | { 3 | config = { 4 | home-manager.users.roelc = { 5 | programs.starship = { 6 | enable = true; 7 | catppuccin.enable = true; 8 | enableZshIntegration = true; 9 | settings = { 10 | add_newline = false; 11 | command_timeout = 1000; 12 | character = { 13 | success_symbol = "[󱄅 ❯](bold green)"; 14 | error_symbol = "[󱄅 ❯](bold red)"; 15 | }; 16 | 17 | format = lib.concatStrings [ 18 | "$directory" 19 | "$git_branch" 20 | "$git_status" 21 | "$direnv" 22 | "$terraform" 23 | "$kubernetes" 24 | "$cmd_duration" 25 | "\n󱞪(2) $character" 26 | ]; 27 | 28 | right_format = lib.concatStrings [ 29 | "$hostname" 30 | ]; 31 | 32 | git_status = { 33 | conflicted = " \${count}x "; 34 | ahead = " \${count}x "; 35 | behind = " \${count}x "; 36 | diverged = "󱐎 \${count}x "; 37 | untracked = "\${count}x "; 38 | stashed = "󰆔 \${count}x "; 39 | modified = "󰴓\${count}x "; 40 | staged = "󰅕\${count}x "; 41 | renamed = "󰑕\${count}x "; 42 | deleted = " \${count}x "; 43 | }; 44 | 45 | directory = { 46 | home_symbol = " "; 47 | read_only = " "; 48 | }; 49 | 50 | terraform = { 51 | disabled = false; 52 | symbol = "󱁢 "; 53 | detect_folders = [ 54 | ".terraform" 55 | "src/.terraform" 56 | "clusters/.terraform" 57 | 58 | ]; 59 | detect_files = [ 60 | "environment" 61 | ]; 62 | format = "on workspace [$symbol$workspace]($style) "; 63 | }; 64 | 65 | kubernetes = { 66 | disabled = false; 67 | symbol = "󱃾 "; 68 | format = "using context [$symbol$context]($style) "; 69 | }; 70 | 71 | direnv = { 72 | disabled = false; 73 | symbol = "󱃼 "; 74 | format = "[$symbol]($style) "; 75 | style = "12"; 76 | }; 77 | 78 | hostname = { 79 | ssh_symbol = " "; 80 | format = "connected to [$ssh_symbol$hostname]($style) "; 81 | }; 82 | 83 | line_break = { 84 | disabled = true; 85 | }; 86 | }; 87 | }; 88 | }; 89 | }; 90 | } 91 | -------------------------------------------------------------------------------- /modules/core/shells/zsh/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | config, 3 | pkgs, 4 | lib, 5 | ... 6 | }: { 7 | config = { 8 | dc-tec.core.zfs = lib.mkMerge [ 9 | (lib.mkIf config.dc-tec.core.persistence.enable { 10 | systemCacheLinks = ["/root/.local/share/autojump"]; 11 | homeCacheLinks = [".local/share/autojump"]; 12 | }) 13 | (lib.mkIf (!config.dc-tec.core.persistence.enable) {}) 14 | ]; 15 | programs.zsh.enable = true; 16 | 17 | home-manager.users.roelc = { 18 | home.packages = [ 19 | pkgs.autojump # jump to recent directory. ex "j nix" 20 | pkgs.comma # nix run shortcut. ex ", cowsay neato" 21 | ]; 22 | 23 | programs.zsh = { 24 | enable = true; 25 | autosuggestion = { 26 | enable = true; 27 | }; 28 | 29 | # https://github.com/catppuccin/zsh-syntax-highlighting/blob/main/themes/catppuccin_macchiato-zsh-syntax-highlighting.zsh 30 | 31 | syntaxHighlighting = { 32 | enable = true; 33 | highlighters = ["main" "cursor"]; 34 | styles = { 35 | comment = "fg=#5b6078"; 36 | alias = "fg=#a6da95"; 37 | suffix-alias = "fg=#a6da95"; 38 | global-alias = "fg=#a6da95"; 39 | function = "fg=#a6da95"; 40 | command = "fg=#a6da95"; 41 | precommand = "fg=#a6da95,italic"; 42 | autodirectory = "fg=#f5a97f,italic"; 43 | single-hyphen-option = "fg=#f5a97f"; 44 | double-hyphen-option = "fg=#f5a97f"; 45 | back-quoted-argument = "fg=#c6a0f6"; 46 | builtin = "fg=#a6da95"; 47 | reserved-word = "fg=#a6da95"; 48 | hashed-command = "fg=#a6da95"; 49 | commandseparator = "fg=#ed8796"; 50 | command-substitution-delimiter = "fg=#cad3f5"; 51 | command-substitution-delimiter-unquoted = "fg=#cad3f5"; 52 | process-substitution-delimiter = "fg=#cad3f5"; 53 | back-quoted-argument-delimiter = "fg=#ed8796"; 54 | back-double-quoted-argument = "fg=#ed8796"; 55 | back-dollar-quoted-argument = "fg=#ed8796"; 56 | command-substitution-quoted = "fg=#eed49f"; 57 | command-substitution-delimiter-quoted = "fg=#eed49f"; 58 | single-quoted-argument = "fg=#eed49f"; 59 | single-quoted-argument-unclosed = "fg=#ee99a0"; 60 | double-quoted-argument = "fg=#eed49f"; 61 | double-quoted-argument-unclosed = "fg=#ee99a0"; 62 | rc-quote = "fg=#eed49f"; 63 | dollar-quoted-argument = "fg=#cad3f5"; 64 | dollar-quoted-argument-unclosed = "fg=#ee99a0"; 65 | dollar-double-quoted-argument = "fg=#cad3f5"; 66 | assign = "fg=#cad3f5"; 67 | named-fd = "fg=#cad3f5"; 68 | numeric-fd = "fg=#cad3f5"; 69 | unknown-token = "fg=#ee99a0"; 70 | path = "fg=#cad3f5,underline"; 71 | path_pathseparator = "fg=#ed8796,underline"; 72 | path_prefix = "fg=#cad3f5,underline"; 73 | path_prefix_pathseparator = "fg=#ed8796,underline"; 74 | globbing = "fg=#cad3f5"; 75 | history-expansion = "fg=#c6a0f6"; 76 | back-quoted-argument-unclosed = "fg=#ee99a0"; 77 | redirection = "fg=#cad3f5"; 78 | arg0 = "fg=#cad3f5"; 79 | default = "fg=#cad3f5"; 80 | cursor = "fg=#cad3f5"; 81 | }; 82 | }; 83 | 84 | autocd = true; 85 | history = { 86 | expireDuplicatesFirst = true; 87 | path = 88 | if config.dc-tec.core.persistence.enable 89 | then "/data/home/roelc/.local/share/zsh/zsh_history" 90 | else "/home/roelc/.local/share/zsh/zsh_history"; 91 | }; 92 | 93 | oh-my-zsh = { 94 | enable = true; 95 | theme = "robbyrussell"; 96 | plugins = [ 97 | "autojump" 98 | "git" 99 | "golang" 100 | "kubectl" 101 | "colored-man-pages" 102 | "zsh-interactive-cd" 103 | "history" 104 | "history-substring-search" 105 | "helm" 106 | "ansible" 107 | "docker" 108 | "aws" 109 | "terraform" 110 | ]; 111 | }; 112 | sessionVariables = { 113 | DEFAULT_USER = "roelc"; 114 | }; 115 | shellAliases = { 116 | home = "cd ~/"; 117 | config = "cd ~/projects/personal/github/nixos-config"; 118 | work = "cd ~/projects/work"; 119 | personal = "cd ~/projects/personal"; 120 | github = "cd ~/projects/personal/github"; 121 | gitlab = "cd ~/projects/personal/gitlab"; 122 | gcl = "git clone"; 123 | cat = "bat --paging=never"; 124 | ls = "eza --icons --group-directories-first"; 125 | man = "tldr"; 126 | ll = "eza --icons --group-directories-first -lah"; 127 | grep = "rg"; 128 | top = "btm"; 129 | cls = "clear"; 130 | myip = "dig +short myip.opendns.com @208.67.222.222 2>&1"; 131 | lg = "lazygit"; 132 | find = "fd"; 133 | 134 | # Directory traversal 135 | ".." = "cd .."; 136 | "..." = "cd ../.."; 137 | "...." = "cd ../../.."; 138 | "....." = "cd ../../../.."; 139 | "......" = "cd ../../../../.."; 140 | 141 | ## Neovim aliases 142 | vim = "nvim"; 143 | vi = "nvim"; 144 | v = "nvim"; 145 | 146 | # Kubernetes aliases 147 | k = "kubectl"; 148 | ka = "kubectl apply -f"; 149 | kak = "kubectl apply -k"; 150 | kg = "kubectl get"; 151 | kd = "kubectl describe"; 152 | kdel = "kubectl delete"; 153 | kl = "kubectl logs"; 154 | kgp = "kubectl get pods"; 155 | kgd = "kubectl get deployments"; 156 | ke = "kubectl exec -it"; 157 | kcsns = "kubectl config set-context --current --namespace"; 158 | 159 | # Terraform aliases 160 | t = "terraform"; 161 | ta = "terraform apply"; 162 | tp = "terraform plan"; 163 | td = "terraform destroy"; 164 | tinit = "terraform init"; 165 | tup = "terraform init -upgrade"; 166 | 167 | # Ansible aliases 168 | a = "ansible"; 169 | ap = "ansible-playbook"; 170 | 171 | # Docker aliases 172 | d = "docker"; 173 | dps = "docker ps"; 174 | dpsa = "docker ps -a"; 175 | di = "docker images"; 176 | ds = "docker stop"; 177 | drm = "docker rm"; 178 | 179 | # Helm aliases 180 | h = "helm"; 181 | hi = "helm install"; 182 | hu = "helm upgrade"; 183 | }; 184 | }; 185 | }; 186 | }; 187 | } 188 | -------------------------------------------------------------------------------- /modules/core/sops/default.nix: -------------------------------------------------------------------------------- 1 | _: { 2 | sops = { 3 | defaultSopsFile = ../../../secrets/secrets.yaml; 4 | defaultSopsFormat = "yaml"; 5 | 6 | age = { 7 | keyFile = "/home/roelc/.config/sops/age/keys.txt"; 8 | sshKeyPaths = [ 9 | "/data/etc/ssh/ssh_host_ed25519_key" 10 | ]; 11 | generateKey = true; 12 | }; 13 | 14 | secrets = { 15 | "users/roelc" = { 16 | neededForUsers = true; 17 | }; 18 | 19 | "users/root" = { 20 | neededForUsers = true; 21 | }; 22 | 23 | wireless = {}; 24 | 25 | "authorized_keys/root" = { 26 | path = "/root/.ssh/authorized_keys"; 27 | }; 28 | 29 | "authorized_keys/roelc" = { 30 | path = "/home/roelc/.ssh/authorized_keys"; 31 | owner = "roelc"; 32 | }; 33 | }; 34 | }; 35 | } 36 | -------------------------------------------------------------------------------- /modules/core/storage/default.nix: -------------------------------------------------------------------------------- 1 | { ... }: { 2 | 3 | imports = [ 4 | ./zfs 5 | ]; 6 | } 7 | -------------------------------------------------------------------------------- /modules/core/storage/zfs/README.md: -------------------------------------------------------------------------------- 1 | # ZFS Setup 2 | 3 | This setup utilizes the ZFS file system along with various configurations to manage system and user data effectively. 4 | 5 | ## Configuration Options 6 | 7 | ### ZFS Options 8 | 9 | - **Encrypted**: This option enables requesting credentials for ZFS encryption. 10 | - **Symbolic Links**: 11 | - **System Cache Links**: Clears symbolic links for system cache directories. 12 | - **System Data Links**: Clears symbolic links for system data directories. 13 | - **Home Cache Links**: Clears symbolic links for home cache directories. 14 | - **Home Data Links**: Clears symbolic links for home data directories. 15 | - **Ensure System Exists**: Ensures the existence of specified system directories. Example: `/data/etc/ssh`. 16 | - **Ensure Home Exists**: Ensures the existence of specified home directories. Example: `~/.ssh`. 17 | - **Root Dataset**: Specifies the root dataset for ZFS. Example: `rpool/local/root`. 18 | 19 | ## Configuration Settings 20 | 21 | ### Environment 22 | 23 | - **Data Prefix**: Prefix for the data directory. Default: `/data`. 24 | - **Cache Prefix**: Prefix for the cache directory. Default: `/cache`. 25 | - **Persistence**: Configures persistence settings for the cache directory. 26 | - **Hide Mounts**: Hides mounts for persistence. 27 | - **Directories**: Specifies directories for persistence. 28 | - **User Directories**: Specifies user directories for persistence. 29 | 30 | ### Boot 31 | 32 | - **Supported Filesystems**: Lists supported filesystems. Here, only ZFS is supported. 33 | - **ZFS**: 34 | - **Dev Nodes**: Specifies device nodes for ZFS. 35 | - **Request Encryption Credentials**: Requests encryption credentials for ZFS. 36 | - **Initrd Post Device Commands**: Executes commands after device initialization. 37 | 38 | ### Services 39 | 40 | - **ZFS**: Configures services related to ZFS. 41 | - **Auto Scrub**: Enables automatic scrubbing. 42 | - **Trim**: Enables TRIM support. 43 | 44 | ## System Packages 45 | 46 | - **ZFS Diff**: A script that performs a ZFS diff operation and filters the output to show only the added files or directories relevant to `/home/roelc/`. 47 | 48 | ## Activation Scripts 49 | 50 | - **Ensure System Paths Exist**: A script to ensure the existence of specified system paths. 51 | - **Ensure Home Paths Exist**: A script to ensure the existence of specified home paths and set ownership. 52 | 53 | -------------------------------------------------------------------------------- /modules/core/storage/zfs/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | config, 3 | lib, 4 | pkgs, 5 | ... 6 | }: { 7 | options.dc-tec.core = { 8 | persistence = { 9 | enable = lib.mkEnableOption "Enable persistence"; 10 | }; 11 | 12 | zfs = { 13 | # Enable ZFS 14 | enable = lib.mkEnableOption "zfs"; 15 | # Ask for credentials 16 | encrypted = lib.mkEnableOption "zfs request credentials"; 17 | 18 | # Clear our symbolic links 19 | systemCacheLinks = lib.mkOption {default = [];}; 20 | systemDataLinks = lib.mkOption {default = [];}; 21 | homeCacheLinks = lib.mkOption {default = [];}; 22 | homeDataLinks = lib.mkOption {default = [];}; 23 | 24 | ensureSystemExists = lib.mkOption { 25 | default = []; 26 | example = ["/data/etc/ssh"]; 27 | }; 28 | ensureHomeExists = lib.mkOption { 29 | default = []; 30 | example = [".ssh"]; 31 | }; 32 | rootDataset = lib.mkOption { 33 | default = ""; 34 | example = "rpool/local/root"; 35 | }; 36 | }; 37 | }; 38 | 39 | config = { 40 | dc-tec = { 41 | core = { 42 | persistence = { 43 | enable = lib.mkDefault true; 44 | }; 45 | zfs = { 46 | enable = lib.mkDefault true; 47 | }; 48 | }; 49 | 50 | dataPrefix = lib.mkDefault "/data"; 51 | cachePrefix = lib.mkDefault "/cache"; 52 | }; 53 | 54 | environment.persistence."${config.dc-tec.cachePrefix}" = { 55 | hideMounts = true; 56 | directories = config.dc-tec.core.zfs.systemCacheLinks; 57 | users.roelc.directories = config.dc-tec.core.zfs.homeCacheLinks; 58 | }; 59 | 60 | environment.persistence."${config.dc-tec.dataPrefix}" = { 61 | hideMounts = true; 62 | directories = config.dc-tec.core.zfs.systemDataLinks; 63 | users.roelc.directories = config.dc-tec.core.zfs.homeDataLinks; 64 | }; 65 | 66 | boot = { 67 | supportedFilesystems = ["zfs"]; 68 | zfs = { 69 | devNodes = "/dev/"; 70 | requestEncryptionCredentials = config.dc-tec.core.zfs.encrypted; 71 | }; 72 | initrd.postDeviceCommands = lib.mkAfter '' 73 | zfs rollback -r ${config.dc-tec.core.zfs.rootDataset}@blank 74 | ''; 75 | }; 76 | 77 | services = { 78 | zfs = { 79 | autoScrub.enable = true; 80 | trim.enable = true; 81 | }; 82 | }; 83 | 84 | environment.systemPackages = [ 85 | (pkgs.writeScriptBin "zfsdiff" '' 86 | doas zfs diff ${config.dc-tec.core.zfs.rootDataset}@blank -F | ${pkgs.ripgrep}/bin/rg -e "\+\s+/\s+" | cut -f3- | ${pkgs.skim}/bin/sk --query "/home/roelc/" 87 | '') 88 | ]; 89 | 90 | system.activationScripts = let 91 | ensureSystemExistsScript = 92 | lib.concatStringsSep "\n" 93 | (map (path: ''mkdir -p "${path}"'') 94 | config.dc-tec.core.zfs.ensureSystemExists); 95 | ensureHomeExistsScript = lib.concatStringsSep "\n" (map 96 | (path: '' 97 | mkdir -p "/home/roelc/${path}"; chown roelc:users /home/roelc/${path} 98 | '') 99 | config.dc-tec.core.zfs.ensureHomeExists); 100 | in { 101 | ensureSystemPathsExist = { 102 | text = ensureSystemExistsScript; 103 | deps = []; 104 | }; 105 | ensureHomePathsExist = { 106 | text = '' 107 | mkdir -p /home/roelc/ 108 | ${ensureHomeExistsScript} 109 | ''; 110 | deps = ["users" "groups"]; 111 | }; 112 | }; 113 | }; 114 | } 115 | -------------------------------------------------------------------------------- /modules/core/system/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | config, 3 | lib, 4 | pkgs, 5 | ... 6 | }: { 7 | options.dc-tec = { 8 | stateVersion = lib.mkOption { 9 | example = "23.11"; 10 | }; 11 | 12 | dataPrefix = lib.mkOption { 13 | example = "/data"; 14 | }; 15 | 16 | cachePrefix = lib.mkOption { 17 | example = "/cache"; 18 | }; 19 | }; 20 | 21 | config = { 22 | system = { 23 | stateVersion = config.dc-tec.stateVersion; 24 | autoUpgrade = { 25 | enable = lib.mkDefault true; 26 | flake = "github:dc-tec/nixos-config"; 27 | dates = "01/04:00"; 28 | randomizedDelaySec = "15min"; 29 | }; 30 | }; 31 | environment = { 32 | systemPackages = with pkgs; [ 33 | wget 34 | curl 35 | coreutils 36 | direnv 37 | dnsutils 38 | lshw 39 | moreutils 40 | usbutils 41 | nmap 42 | util-linux 43 | whois 44 | unzip 45 | git 46 | age 47 | sops 48 | ssh-to-age 49 | fastfetch 50 | tlrc 51 | jq 52 | yq 53 | fd 54 | openssl 55 | tcpdump 56 | bridge-utils 57 | (pkgs.callPackage ../../../pkgs/niks {}) 58 | ]; 59 | }; 60 | 61 | security = { 62 | sudo = { 63 | enable = false; 64 | }; 65 | 66 | doas = { 67 | enable = true; 68 | extraRules = [ 69 | { 70 | users = ["roelc"]; 71 | noPass = true; 72 | } 73 | ]; 74 | }; 75 | 76 | polkit = { 77 | enable = true; 78 | }; 79 | }; 80 | 81 | services = { 82 | fwupd = { 83 | enable = true; 84 | }; 85 | }; 86 | 87 | time = { 88 | timeZone = lib.mkDefault "Europe/Amsterdam"; 89 | }; 90 | 91 | i18n = { 92 | defaultLocale = "en_IE.UTF-8"; 93 | extraLocaleSettings = { 94 | LC_ALL = "en_IE.UTF-8"; 95 | LANGUAGE = "en_US.UTF-8"; 96 | LC_TIME = "en_GB.UTF-8"; 97 | }; 98 | supportedLocales = [ 99 | "en_GB.UTF-8/UTF-8" 100 | "en_IE.UTF-8/UTF-8" 101 | "en_US.UTF-8/UTF-8" 102 | ]; 103 | }; 104 | }; 105 | } 106 | -------------------------------------------------------------------------------- /modules/core/users/default.nix: -------------------------------------------------------------------------------- 1 | {config, ...}: { 2 | config = { 3 | users = { 4 | mutableUsers = false; 5 | users = { 6 | roelc = { 7 | isNormalUser = true; 8 | home = "/home/roelc"; 9 | extraGroups = ["systemd-journal"]; 10 | hashedPasswordFile = config.sops.secrets."users/roelc".path; 11 | }; 12 | root.hashedPasswordFile = config.sops.secrets."users/root".path; 13 | }; 14 | }; 15 | }; 16 | } 17 | -------------------------------------------------------------------------------- /modules/core/utils/bat/default.nix: -------------------------------------------------------------------------------- 1 | _: { 2 | config = { 3 | home-manager.users.roelc = { 4 | programs.bat = { 5 | enable = true; 6 | catppuccin = { 7 | enable = true; 8 | }; 9 | }; 10 | }; 11 | }; 12 | } 13 | -------------------------------------------------------------------------------- /modules/core/utils/bottom/default.nix: -------------------------------------------------------------------------------- 1 | _: { 2 | config = { 3 | home-manager.users.roelc = { 4 | programs.bottom = { 5 | enable = true; 6 | catppuccin = { 7 | enable = true; 8 | }; 9 | }; 10 | }; 11 | }; 12 | } 13 | -------------------------------------------------------------------------------- /modules/core/utils/default.nix: -------------------------------------------------------------------------------- 1 | { ... }: 2 | { 3 | imports = [ 4 | ./fzf 5 | ./eza 6 | ./bat 7 | ./yazi 8 | ./bottom 9 | ./zoxide 10 | ./ripgrep 11 | ./gpg 12 | ./ssh 13 | ./sshd 14 | ./direnv 15 | ]; 16 | } 17 | -------------------------------------------------------------------------------- /modules/core/utils/direnv/default.nix: -------------------------------------------------------------------------------- 1 | _: { 2 | config = { 3 | home-manager.users.roelc = { 4 | programs.direnv = { 5 | enable = true; 6 | enableZshIntegration = true; 7 | nix-direnv.enable = true; 8 | }; 9 | }; 10 | }; 11 | } 12 | -------------------------------------------------------------------------------- /modules/core/utils/eza/default.nix: -------------------------------------------------------------------------------- 1 | _: { 2 | config = { 3 | home-manager.users.roelc = { 4 | programs.eza = { 5 | enable = true; 6 | enableZshIntegration = true; 7 | icons = "auto"; 8 | git = true; 9 | }; 10 | }; 11 | }; 12 | } 13 | -------------------------------------------------------------------------------- /modules/core/utils/fzf/default.nix: -------------------------------------------------------------------------------- 1 | _: { 2 | config = { 3 | home-manager.users.roelc = { 4 | programs.fzf = { 5 | enable = true; 6 | catppuccin.enable = true; 7 | enableZshIntegration = true; 8 | }; 9 | }; 10 | }; 11 | } 12 | -------------------------------------------------------------------------------- /modules/core/utils/gpg/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | config, 3 | lib, 4 | pkgs, 5 | ... 6 | }: { 7 | config = { 8 | dc-tec.core.zfs = lib.mkMerge [ 9 | (lib.mkIf config.dc-tec.core.persistence.enable { 10 | homeDataLinks = [ 11 | { 12 | directory = ".gnupg"; 13 | mode = "0700"; 14 | } 15 | ]; 16 | }) 17 | (lib.mkIf (!config.dc-tec.core.persistence.enable) {}) 18 | ]; 19 | 20 | environment = { 21 | systemPackages = with pkgs; [ 22 | gnupg 23 | pinentry-gtk2 24 | ]; 25 | }; 26 | 27 | home-manager.users.roelc = { 28 | services.gpg-agent = { 29 | enable = true; 30 | enableZshIntegration = true; 31 | enableSshSupport = true; 32 | pinentryPackage = pkgs.pinentry-gtk2; 33 | defaultCacheTtl = 46000; 34 | extraConfig = '' 35 | allow-preset-passphrase 36 | ''; 37 | }; 38 | }; 39 | }; 40 | } 41 | -------------------------------------------------------------------------------- /modules/core/utils/ripgrep/default.nix: -------------------------------------------------------------------------------- 1 | _: { 2 | config = { 3 | home-manager.users.roelc = { 4 | programs.ripgrep = { 5 | enable = true; 6 | }; 7 | }; 8 | }; 9 | } 10 | -------------------------------------------------------------------------------- /modules/core/utils/ssh/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | config, 3 | lib, 4 | ... 5 | }: { 6 | config = { 7 | dc-tec.core.zfs = lib.mkMerge [ 8 | (lib.mkIf config.dc-tec.core.persistence.enable { 9 | homeDataLinks = [ 10 | { 11 | directory = ".ssh"; 12 | mode = "0700"; 13 | } 14 | ]; 15 | systemDataLinks = [ 16 | { 17 | directory = "/root/.ssh/"; 18 | mode = "0700"; 19 | } 20 | ]; 21 | }) 22 | (lib.mkIf (!config.dc-tec.core.persistence.enable) {}) 23 | ]; 24 | 25 | # TODO: Configure SSH Agent 26 | home-manager.users.roelc = _: { 27 | programs.ssh = { 28 | enable = true; 29 | hashKnownHosts = true; 30 | userKnownHostsFile = 31 | if config.dc-tec.core.persistence.enable 32 | then "${config.dc-tec.dataPrefix}/home/roelc/.ssh/known_hosts" 33 | else "/home/roelc/.ssh/known_hosts"; 34 | extraOptionOverrides = { 35 | AddKeysToAgent = "yes"; 36 | IdentityFile = 37 | if config.dc-tec.core.persistence.enable 38 | then "${config.dc-tec.dataPrefix}/home/roelc/.ssh/id_ed25519" 39 | else "/home/roelc/.ssh/id_ed25519"; 40 | }; 41 | }; 42 | 43 | services = { 44 | ssh-agent = { 45 | enable = true; 46 | }; 47 | }; 48 | }; 49 | }; 50 | } 51 | -------------------------------------------------------------------------------- /modules/core/utils/sshd/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | config, 3 | lib, 4 | ... 5 | }: { 6 | config = { 7 | dc-tec.core.zfs = lib.mkMerge [ 8 | (lib.mkIf config.dc-tec.core.persistence.enable { 9 | ensureSystemExists = ["${config.dc-tec.dataPrefix}/etc/ssh"]; 10 | }) 11 | (lib.mkIf (!config.dc-tec.core.persistence.enable) {}) 12 | ]; 13 | 14 | services.openssh = { 15 | enable = true; 16 | settings = { 17 | PasswordAuthentication = false; 18 | PermitRootLogin = "prohibit-password"; 19 | 20 | # Remove stale sockets 21 | StreamLocalBindUnlink = "yes"; 22 | }; 23 | 24 | hostKeys = [ 25 | { 26 | bits = 4096; 27 | path = 28 | if config.dc-tec.core.persistence.enable 29 | then "${config.dc-tec.dataPrefix}/etc/ssh/ssh_host_rsa_key" 30 | else "/etc/ssh/ssh_host_rsa_key"; 31 | type = "rsa"; 32 | } 33 | { 34 | bits = 4096; 35 | path = 36 | if config.dc-tec.core.persistence.enable 37 | then "${config.dc-tec.dataPrefix}/etc/ssh/ssh_host_ed25519_key" 38 | else "/etc/ssh/ssh_host_ed25519"; 39 | type = "ed25519"; 40 | } 41 | ]; 42 | }; 43 | }; 44 | } 45 | -------------------------------------------------------------------------------- /modules/core/utils/tmux/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | config, 3 | pkgs, 4 | lib, 5 | ... 6 | }: { 7 | config = { 8 | programs.tmux = { 9 | enable = true; 10 | keymode = "vi"; 11 | baseIndex = 1; 12 | clock24 = true; 13 | historyLimit = 100000; 14 | prefix = "C-a"; 15 | extraConfig = '' 16 | ''; 17 | 18 | plugins = with pkgs; [ 19 | { 20 | plugin = tmuxPlugins.catppuccin; 21 | extraConfig = '' 22 | 23 | ''; 24 | } 25 | ]; 26 | }; 27 | }; 28 | } 29 | -------------------------------------------------------------------------------- /modules/core/utils/yazi/default.nix: -------------------------------------------------------------------------------- 1 | _: { 2 | config = { 3 | home-manager.users.roelc = { 4 | programs.yazi = { 5 | enable = true; 6 | catppuccin.enable = true; 7 | enableZshIntegration = true; 8 | settings = { 9 | log = { 10 | enabled = false; 11 | }; 12 | }; 13 | }; 14 | }; 15 | }; 16 | } 17 | -------------------------------------------------------------------------------- /modules/core/utils/zoxide/default.nix: -------------------------------------------------------------------------------- 1 | _: { 2 | config = { 3 | home-manager.users.roelc = { 4 | programs.zoxide = { 5 | enable = true; 6 | enableZshIntegration = true; 7 | }; 8 | }; 9 | }; 10 | } 11 | -------------------------------------------------------------------------------- /modules/darwin/default.nix: -------------------------------------------------------------------------------- 1 | {...}: { 2 | imports = [ 3 | ./home 4 | ./nix 5 | ./homebrew 6 | ./system 7 | ./development 8 | ]; 9 | } 10 | 11 | -------------------------------------------------------------------------------- /modules/darwin/development/.gitconfig: -------------------------------------------------------------------------------- 1 | [commit] 2 | gpgSign = true 3 | 4 | [user] 5 | name = Roel de Cort 6 | email = roel@decort.tech 7 | signingKey = F95CABF0B7D54D8087FF9B3E321EAD1FC3C51961 8 | 9 | [core] 10 | sshCommand = "ssh -i ~/.ssh/roelc_gh" 11 | 12 | [gpg] 13 | program = "/opt/homebrew/bin/gpg" -------------------------------------------------------------------------------- /modules/darwin/development/.gitconfig-secretz: -------------------------------------------------------------------------------- 1 | [commit] 2 | gpgSign = true 3 | 4 | [user] 5 | name = Roel de Cort 6 | email = roel.decort@secretz.io 7 | signingKey = F95CABF0B7D54D8087FF9B3E321EAD1FC3C51961 8 | 9 | [core] 10 | sshCommand = "ssh -i ~/.ssh/roelc_gh" 11 | 12 | [gpg] 13 | program = "/opt/homebrew/bin/gpg" 14 | -------------------------------------------------------------------------------- /modules/darwin/development/default.nix: -------------------------------------------------------------------------------- 1 | { pkgs, ... }: 2 | { 3 | imports = [ 4 | ./git.nix 5 | ]; 6 | 7 | home-manager.users.roelc = { 8 | home = { 9 | packages = with pkgs; [ 10 | awscli2 11 | go 12 | tenv 13 | terraform-docs 14 | powershell 15 | yaml-language-server 16 | talosctl 17 | kubectl 18 | kubernetes-helm 19 | kustomize 20 | argocd 21 | cilium-cli 22 | kubeseal 23 | kubescape 24 | rakkess 25 | kubectl-cnpg 26 | kube-linter 27 | bats 28 | helm-docs 29 | uv 30 | devenv 31 | ]; 32 | }; 33 | }; 34 | } 35 | -------------------------------------------------------------------------------- /modules/darwin/development/git.nix: -------------------------------------------------------------------------------- 1 | { ... }: 2 | { 3 | home-manager.users.roelc = { 4 | programs.git = { 5 | enable = true; 6 | 7 | userEmail = "roel.decort@adfinis.com"; 8 | userName = "Roel de Cort"; 9 | 10 | includes = [ 11 | { 12 | path = "~/projects/personal/.gitconfig"; 13 | condition = "gitdir:~/projects/personal/"; 14 | } 15 | { 16 | path = "~/projects/secretz/.gitconfig"; 17 | condition = "gitdir:~/projects/secretz/"; 18 | } 19 | ]; 20 | 21 | extraConfig = { 22 | init.defaultBranch = "main"; 23 | push.autoSetupRemote = true; 24 | pull.rebase = true; 25 | core.sshCommand = "ssh -i ~/.ssh/id_ed25519"; 26 | }; 27 | }; 28 | 29 | ## Personal gitconfig 30 | home.file."./projects/personal/.gitconfig" = { 31 | source = ./.gitconfig; 32 | recursive = true; 33 | }; 34 | 35 | ## Secretz gitconfig 36 | home.file."./projects/secretz/.gitconfig" = { 37 | source = ./.gitconfig-secretz; 38 | recursive = true; 39 | }; 40 | 41 | catppuccin.lazygit.enable = true; 42 | programs.lazygit = { 43 | enable = true; 44 | settings = { 45 | git = { 46 | commit = { 47 | signOff = true; 48 | }; 49 | }; 50 | }; 51 | }; 52 | }; 53 | } 54 | -------------------------------------------------------------------------------- /modules/darwin/home/bat.nix: -------------------------------------------------------------------------------- 1 | {...}: { 2 | home-manager.users.roelc = { 3 | programs.bat = { 4 | enable = true; 5 | }; 6 | }; 7 | } 8 | 9 | -------------------------------------------------------------------------------- /modules/darwin/home/core.nix: -------------------------------------------------------------------------------- 1 | {pkgs, ...}: { 2 | home-manager.users.roelc = { 3 | home = { 4 | packages = with pkgs; [ 5 | tlrc 6 | fd 7 | openssl 8 | wget 9 | curl 10 | coreutils 11 | direnv 12 | dnsutils 13 | atac 14 | ]; 15 | }; 16 | }; 17 | } 18 | -------------------------------------------------------------------------------- /modules/darwin/home/default.nix: -------------------------------------------------------------------------------- 1 | { inputs, ... }: 2 | { 3 | imports = [ 4 | ./shell.nix 5 | ./core.nix 6 | ./direnv.nix 7 | ./starship.nix 8 | ./eza.nix 9 | ./fzf.nix 10 | ./bat.nix 11 | ./ssh.nix 12 | ./zoxide.nix 13 | ./ripgrep.nix 14 | ./kitty.nix 15 | ./yazi.nix 16 | ./sketchybar 17 | ./jankyborders 18 | ./gpg 19 | inputs.nix-colors.homeManagerModules.default 20 | ]; 21 | 22 | colorScheme = inputs.nix-colors.colorSchemes.catppuccin-macchiato; 23 | 24 | # Home Manager needs a bit of information about you and the 25 | # paths it should manage. 26 | home-manager = { 27 | useGlobalPkgs = true; 28 | useUserPackages = true; 29 | 30 | users = { 31 | roelc = 32 | { ... }: 33 | { 34 | imports = [ 35 | inputs.catppuccin.homeModules.catppuccin 36 | ]; 37 | 38 | home = { 39 | username = "roelc"; 40 | homeDirectory = "/Users/roelc"; 41 | 42 | stateVersion = "24.05"; 43 | packages = [ inputs.nixvim.packages.aarch64-darwin.default ]; 44 | }; 45 | 46 | catppuccin = { 47 | flavor = "macchiato"; 48 | accent = "peach"; 49 | }; 50 | 51 | # Let Home Manager install and manage itself. 52 | programs.home-manager.enable = true; 53 | }; 54 | }; 55 | }; 56 | } 57 | -------------------------------------------------------------------------------- /modules/darwin/home/direnv.nix: -------------------------------------------------------------------------------- 1 | {...}: { 2 | home-manager.users.roelc = { 3 | programs.direnv = { 4 | enable = true; 5 | enableZshIntegration = true; 6 | nix-direnv.enable = true; 7 | }; 8 | }; 9 | } 10 | -------------------------------------------------------------------------------- /modules/darwin/home/eza.nix: -------------------------------------------------------------------------------- 1 | {...}: { 2 | home-manager.users.roelc = { 3 | programs.eza = { 4 | enable = true; 5 | enableZshIntegration = true; 6 | icons = "auto"; 7 | git = true; 8 | }; 9 | }; 10 | } 11 | -------------------------------------------------------------------------------- /modules/darwin/home/files/adfinis_logo.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dc-tec/nixos-config/8e068a43cc0efc43dbb3dcde26ee7797e83582ab/modules/darwin/home/files/adfinis_logo.ttf -------------------------------------------------------------------------------- /modules/darwin/home/files/wallpapers/3d-model.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dc-tec/nixos-config/8e068a43cc0efc43dbb3dcde26ee7797e83582ab/modules/darwin/home/files/wallpapers/3d-model.jpg -------------------------------------------------------------------------------- /modules/darwin/home/files/wallpapers/beach.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dc-tec/nixos-config/8e068a43cc0efc43dbb3dcde26ee7797e83582ab/modules/darwin/home/files/wallpapers/beach.jpg -------------------------------------------------------------------------------- /modules/darwin/home/files/wallpapers/black-hole.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dc-tec/nixos-config/8e068a43cc0efc43dbb3dcde26ee7797e83582ab/modules/darwin/home/files/wallpapers/black-hole.png -------------------------------------------------------------------------------- /modules/darwin/home/files/wallpapers/cabin-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dc-tec/nixos-config/8e068a43cc0efc43dbb3dcde26ee7797e83582ab/modules/darwin/home/files/wallpapers/cabin-2.jpg -------------------------------------------------------------------------------- /modules/darwin/home/files/wallpapers/chess-gate.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dc-tec/nixos-config/8e068a43cc0efc43dbb3dcde26ee7797e83582ab/modules/darwin/home/files/wallpapers/chess-gate.jpeg -------------------------------------------------------------------------------- /modules/darwin/home/files/wallpapers/city.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dc-tec/nixos-config/8e068a43cc0efc43dbb3dcde26ee7797e83582ab/modules/darwin/home/files/wallpapers/city.png -------------------------------------------------------------------------------- /modules/darwin/home/files/wallpapers/clouds-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dc-tec/nixos-config/8e068a43cc0efc43dbb3dcde26ee7797e83582ab/modules/darwin/home/files/wallpapers/clouds-3.png -------------------------------------------------------------------------------- /modules/darwin/home/files/wallpapers/cool.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dc-tec/nixos-config/8e068a43cc0efc43dbb3dcde26ee7797e83582ab/modules/darwin/home/files/wallpapers/cool.jpg -------------------------------------------------------------------------------- /modules/darwin/home/files/wallpapers/corals-fish-underwater.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dc-tec/nixos-config/8e068a43cc0efc43dbb3dcde26ee7797e83582ab/modules/darwin/home/files/wallpapers/corals-fish-underwater.jpg -------------------------------------------------------------------------------- /modules/darwin/home/files/wallpapers/cottages-river.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dc-tec/nixos-config/8e068a43cc0efc43dbb3dcde26ee7797e83582ab/modules/darwin/home/files/wallpapers/cottages-river.png -------------------------------------------------------------------------------- /modules/darwin/home/files/wallpapers/crane.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dc-tec/nixos-config/8e068a43cc0efc43dbb3dcde26ee7797e83582ab/modules/darwin/home/files/wallpapers/crane.png -------------------------------------------------------------------------------- /modules/darwin/home/files/wallpapers/dark-forest.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dc-tec/nixos-config/8e068a43cc0efc43dbb3dcde26ee7797e83582ab/modules/darwin/home/files/wallpapers/dark-forest.jpg -------------------------------------------------------------------------------- /modules/darwin/home/files/wallpapers/dark-waves.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dc-tec/nixos-config/8e068a43cc0efc43dbb3dcde26ee7797e83582ab/modules/darwin/home/files/wallpapers/dark-waves.jpg -------------------------------------------------------------------------------- /modules/darwin/home/files/wallpapers/diner-lonely-road.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dc-tec/nixos-config/8e068a43cc0efc43dbb3dcde26ee7797e83582ab/modules/darwin/home/files/wallpapers/diner-lonely-road.jpg -------------------------------------------------------------------------------- /modules/darwin/home/files/wallpapers/dino.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dc-tec/nixos-config/8e068a43cc0efc43dbb3dcde26ee7797e83582ab/modules/darwin/home/files/wallpapers/dino.jpg -------------------------------------------------------------------------------- /modules/darwin/home/files/wallpapers/dominik-mayer-10.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dc-tec/nixos-config/8e068a43cc0efc43dbb3dcde26ee7797e83582ab/modules/darwin/home/files/wallpapers/dominik-mayer-10.jpg -------------------------------------------------------------------------------- /modules/darwin/home/files/wallpapers/dominik-mayer-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dc-tec/nixos-config/8e068a43cc0efc43dbb3dcde26ee7797e83582ab/modules/darwin/home/files/wallpapers/dominik-mayer-2.jpg -------------------------------------------------------------------------------- /modules/darwin/home/files/wallpapers/dominik-mayer-21.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dc-tec/nixos-config/8e068a43cc0efc43dbb3dcde26ee7797e83582ab/modules/darwin/home/files/wallpapers/dominik-mayer-21.jpg -------------------------------------------------------------------------------- /modules/darwin/home/files/wallpapers/dominik-mayer-22.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dc-tec/nixos-config/8e068a43cc0efc43dbb3dcde26ee7797e83582ab/modules/darwin/home/files/wallpapers/dominik-mayer-22.jpg -------------------------------------------------------------------------------- /modules/darwin/home/files/wallpapers/dominik-mayer-23.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dc-tec/nixos-config/8e068a43cc0efc43dbb3dcde26ee7797e83582ab/modules/darwin/home/files/wallpapers/dominik-mayer-23.jpg -------------------------------------------------------------------------------- /modules/darwin/home/files/wallpapers/dominik-mayer-4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dc-tec/nixos-config/8e068a43cc0efc43dbb3dcde26ee7797e83582ab/modules/darwin/home/files/wallpapers/dominik-mayer-4.jpg -------------------------------------------------------------------------------- /modules/darwin/home/files/wallpapers/dominik-mayer-7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dc-tec/nixos-config/8e068a43cc0efc43dbb3dcde26ee7797e83582ab/modules/darwin/home/files/wallpapers/dominik-mayer-7.jpg -------------------------------------------------------------------------------- /modules/darwin/home/files/wallpapers/excalibur-lake.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dc-tec/nixos-config/8e068a43cc0efc43dbb3dcde26ee7797e83582ab/modules/darwin/home/files/wallpapers/excalibur-lake.jpg -------------------------------------------------------------------------------- /modules/darwin/home/files/wallpapers/fantasy-city.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dc-tec/nixos-config/8e068a43cc0efc43dbb3dcde26ee7797e83582ab/modules/darwin/home/files/wallpapers/fantasy-city.jpg -------------------------------------------------------------------------------- /modules/darwin/home/files/wallpapers/flower-field.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dc-tec/nixos-config/8e068a43cc0efc43dbb3dcde26ee7797e83582ab/modules/darwin/home/files/wallpapers/flower-field.jpg -------------------------------------------------------------------------------- /modules/darwin/home/files/wallpapers/flying-comets-clouds.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dc-tec/nixos-config/8e068a43cc0efc43dbb3dcde26ee7797e83582ab/modules/darwin/home/files/wallpapers/flying-comets-clouds.jpg -------------------------------------------------------------------------------- /modules/darwin/home/files/wallpapers/fox-clearing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dc-tec/nixos-config/8e068a43cc0efc43dbb3dcde26ee7797e83582ab/modules/darwin/home/files/wallpapers/fox-clearing.png -------------------------------------------------------------------------------- /modules/darwin/home/files/wallpapers/galaxy-waves.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dc-tec/nixos-config/8e068a43cc0efc43dbb3dcde26ee7797e83582ab/modules/darwin/home/files/wallpapers/galaxy-waves.jpg -------------------------------------------------------------------------------- /modules/darwin/home/files/wallpapers/gentlemen-sunset.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dc-tec/nixos-config/8e068a43cc0efc43dbb3dcde26ee7797e83582ab/modules/darwin/home/files/wallpapers/gentlemen-sunset.png -------------------------------------------------------------------------------- /modules/darwin/home/files/wallpapers/gingerbread-house.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dc-tec/nixos-config/8e068a43cc0efc43dbb3dcde26ee7797e83582ab/modules/darwin/home/files/wallpapers/gingerbread-house.jpg -------------------------------------------------------------------------------- /modules/darwin/home/files/wallpapers/grandfather-tree.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dc-tec/nixos-config/8e068a43cc0efc43dbb3dcde26ee7797e83582ab/modules/darwin/home/files/wallpapers/grandfather-tree.jpg -------------------------------------------------------------------------------- /modules/darwin/home/files/wallpapers/guy-majou.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dc-tec/nixos-config/8e068a43cc0efc43dbb3dcde26ee7797e83582ab/modules/darwin/home/files/wallpapers/guy-majou.jpeg -------------------------------------------------------------------------------- /modules/darwin/home/files/wallpapers/haunted-house.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dc-tec/nixos-config/8e068a43cc0efc43dbb3dcde26ee7797e83582ab/modules/darwin/home/files/wallpapers/haunted-house.jpg -------------------------------------------------------------------------------- /modules/darwin/home/files/wallpapers/hollow-knight.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dc-tec/nixos-config/8e068a43cc0efc43dbb3dcde26ee7797e83582ab/modules/darwin/home/files/wallpapers/hollow-knight.jpg -------------------------------------------------------------------------------- /modules/darwin/home/files/wallpapers/horizon-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dc-tec/nixos-config/8e068a43cc0efc43dbb3dcde26ee7797e83582ab/modules/darwin/home/files/wallpapers/horizon-2.jpg -------------------------------------------------------------------------------- /modules/darwin/home/files/wallpapers/i-touch-this.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dc-tec/nixos-config/8e068a43cc0efc43dbb3dcde26ee7797e83582ab/modules/darwin/home/files/wallpapers/i-touch-this.jpg -------------------------------------------------------------------------------- /modules/darwin/home/files/wallpapers/japan-alley.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dc-tec/nixos-config/8e068a43cc0efc43dbb3dcde26ee7797e83582ab/modules/darwin/home/files/wallpapers/japan-alley.png -------------------------------------------------------------------------------- /modules/darwin/home/files/wallpapers/keyboard-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dc-tec/nixos-config/8e068a43cc0efc43dbb3dcde26ee7797e83582ab/modules/darwin/home/files/wallpapers/keyboard-2.png -------------------------------------------------------------------------------- /modules/darwin/home/files/wallpapers/koi.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dc-tec/nixos-config/8e068a43cc0efc43dbb3dcde26ee7797e83582ab/modules/darwin/home/files/wallpapers/koi.jpg -------------------------------------------------------------------------------- /modules/darwin/home/files/wallpapers/lantern-light-room.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dc-tec/nixos-config/8e068a43cc0efc43dbb3dcde26ee7797e83582ab/modules/darwin/home/files/wallpapers/lantern-light-room.png -------------------------------------------------------------------------------- /modules/darwin/home/files/wallpapers/mars.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dc-tec/nixos-config/8e068a43cc0efc43dbb3dcde26ee7797e83582ab/modules/darwin/home/files/wallpapers/mars.jpg -------------------------------------------------------------------------------- /modules/darwin/home/files/wallpapers/minimalist-black-hole.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dc-tec/nixos-config/8e068a43cc0efc43dbb3dcde26ee7797e83582ab/modules/darwin/home/files/wallpapers/minimalist-black-hole.png -------------------------------------------------------------------------------- /modules/darwin/home/files/wallpapers/moon-beach.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dc-tec/nixos-config/8e068a43cc0efc43dbb3dcde26ee7797e83582ab/modules/darwin/home/files/wallpapers/moon-beach.png -------------------------------------------------------------------------------- /modules/darwin/home/files/wallpapers/native-ruins.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dc-tec/nixos-config/8e068a43cc0efc43dbb3dcde26ee7797e83582ab/modules/darwin/home/files/wallpapers/native-ruins.jpg -------------------------------------------------------------------------------- /modules/darwin/home/files/wallpapers/ocean_with_cloud.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dc-tec/nixos-config/8e068a43cc0efc43dbb3dcde26ee7797e83582ab/modules/darwin/home/files/wallpapers/ocean_with_cloud.png -------------------------------------------------------------------------------- /modules/darwin/home/files/wallpapers/old-computer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dc-tec/nixos-config/8e068a43cc0efc43dbb3dcde26ee7797e83582ab/modules/darwin/home/files/wallpapers/old-computer.png -------------------------------------------------------------------------------- /modules/darwin/home/files/wallpapers/oversized-cat.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dc-tec/nixos-config/8e068a43cc0efc43dbb3dcde26ee7797e83582ab/modules/darwin/home/files/wallpapers/oversized-cat.jpg -------------------------------------------------------------------------------- /modules/darwin/home/files/wallpapers/painting.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dc-tec/nixos-config/8e068a43cc0efc43dbb3dcde26ee7797e83582ab/modules/darwin/home/files/wallpapers/painting.jpg -------------------------------------------------------------------------------- /modules/darwin/home/files/wallpapers/pink-clouds.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dc-tec/nixos-config/8e068a43cc0efc43dbb3dcde26ee7797e83582ab/modules/darwin/home/files/wallpapers/pink-clouds.jpg -------------------------------------------------------------------------------- /modules/darwin/home/files/wallpapers/pitstop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dc-tec/nixos-config/8e068a43cc0efc43dbb3dcde26ee7797e83582ab/modules/darwin/home/files/wallpapers/pitstop.png -------------------------------------------------------------------------------- /modules/darwin/home/files/wallpapers/pixel-napping.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dc-tec/nixos-config/8e068a43cc0efc43dbb3dcde26ee7797e83582ab/modules/darwin/home/files/wallpapers/pixel-napping.png -------------------------------------------------------------------------------- /modules/darwin/home/files/wallpapers/pompeii.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dc-tec/nixos-config/8e068a43cc0efc43dbb3dcde26ee7797e83582ab/modules/darwin/home/files/wallpapers/pompeii.png -------------------------------------------------------------------------------- /modules/darwin/home/files/wallpapers/puffy-stars.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dc-tec/nixos-config/8e068a43cc0efc43dbb3dcde26ee7797e83582ab/modules/darwin/home/files/wallpapers/puffy-stars.jpg -------------------------------------------------------------------------------- /modules/darwin/home/files/wallpapers/railroad-horizon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dc-tec/nixos-config/8e068a43cc0efc43dbb3dcde26ee7797e83582ab/modules/darwin/home/files/wallpapers/railroad-horizon.png -------------------------------------------------------------------------------- /modules/darwin/home/files/wallpapers/rainy-window.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dc-tec/nixos-config/8e068a43cc0efc43dbb3dcde26ee7797e83582ab/modules/darwin/home/files/wallpapers/rainy-window.jpeg -------------------------------------------------------------------------------- /modules/darwin/home/files/wallpapers/retro2_live.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dc-tec/nixos-config/8e068a43cc0efc43dbb3dcde26ee7797e83582ab/modules/darwin/home/files/wallpapers/retro2_live.gif -------------------------------------------------------------------------------- /modules/darwin/home/files/wallpapers/river-city.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dc-tec/nixos-config/8e068a43cc0efc43dbb3dcde26ee7797e83582ab/modules/darwin/home/files/wallpapers/river-city.jpg -------------------------------------------------------------------------------- /modules/darwin/home/files/wallpapers/rooftops.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dc-tec/nixos-config/8e068a43cc0efc43dbb3dcde26ee7797e83582ab/modules/darwin/home/files/wallpapers/rooftops.jpg -------------------------------------------------------------------------------- /modules/darwin/home/files/wallpapers/sakura-gate.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dc-tec/nixos-config/8e068a43cc0efc43dbb3dcde26ee7797e83582ab/modules/darwin/home/files/wallpapers/sakura-gate.jpg -------------------------------------------------------------------------------- /modules/darwin/home/files/wallpapers/sakura-trees-over-river.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dc-tec/nixos-config/8e068a43cc0efc43dbb3dcde26ee7797e83582ab/modules/darwin/home/files/wallpapers/sakura-trees-over-river.jpg -------------------------------------------------------------------------------- /modules/darwin/home/files/wallpapers/samurai.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dc-tec/nixos-config/8e068a43cc0efc43dbb3dcde26ee7797e83582ab/modules/darwin/home/files/wallpapers/samurai.jpg -------------------------------------------------------------------------------- /modules/darwin/home/files/wallpapers/satellite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dc-tec/nixos-config/8e068a43cc0efc43dbb3dcde26ee7797e83582ab/modules/darwin/home/files/wallpapers/satellite.png -------------------------------------------------------------------------------- /modules/darwin/home/files/wallpapers/shiba-inu.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dc-tec/nixos-config/8e068a43cc0efc43dbb3dcde26ee7797e83582ab/modules/darwin/home/files/wallpapers/shiba-inu.jpeg -------------------------------------------------------------------------------- /modules/darwin/home/files/wallpapers/ship-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dc-tec/nixos-config/8e068a43cc0efc43dbb3dcde26ee7797e83582ab/modules/darwin/home/files/wallpapers/ship-2.png -------------------------------------------------------------------------------- /modules/darwin/home/files/wallpapers/sky.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dc-tec/nixos-config/8e068a43cc0efc43dbb3dcde26ee7797e83582ab/modules/darwin/home/files/wallpapers/sky.png -------------------------------------------------------------------------------- /modules/darwin/home/files/wallpapers/snowflakes.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dc-tec/nixos-config/8e068a43cc0efc43dbb3dcde26ee7797e83582ab/modules/darwin/home/files/wallpapers/snowflakes.jpg -------------------------------------------------------------------------------- /modules/darwin/home/files/wallpapers/soft-rose.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dc-tec/nixos-config/8e068a43cc0efc43dbb3dcde26ee7797e83582ab/modules/darwin/home/files/wallpapers/soft-rose.jpg -------------------------------------------------------------------------------- /modules/darwin/home/files/wallpapers/space-piano.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dc-tec/nixos-config/8e068a43cc0efc43dbb3dcde26ee7797e83582ab/modules/darwin/home/files/wallpapers/space-piano.png -------------------------------------------------------------------------------- /modules/darwin/home/files/wallpapers/space.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dc-tec/nixos-config/8e068a43cc0efc43dbb3dcde26ee7797e83582ab/modules/darwin/home/files/wallpapers/space.png -------------------------------------------------------------------------------- /modules/darwin/home/files/wallpapers/sushi.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dc-tec/nixos-config/8e068a43cc0efc43dbb3dcde26ee7797e83582ab/modules/darwin/home/files/wallpapers/sushi.jpg -------------------------------------------------------------------------------- /modules/darwin/home/files/wallpapers/swirls.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dc-tec/nixos-config/8e068a43cc0efc43dbb3dcde26ee7797e83582ab/modules/darwin/home/files/wallpapers/swirls.jpg -------------------------------------------------------------------------------- /modules/darwin/home/files/wallpapers/sword.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dc-tec/nixos-config/8e068a43cc0efc43dbb3dcde26ee7797e83582ab/modules/darwin/home/files/wallpapers/sword.jpg -------------------------------------------------------------------------------- /modules/darwin/home/files/wallpapers/temple.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dc-tec/nixos-config/8e068a43cc0efc43dbb3dcde26ee7797e83582ab/modules/darwin/home/files/wallpapers/temple.jpg -------------------------------------------------------------------------------- /modules/darwin/home/files/wallpapers/train-sideview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dc-tec/nixos-config/8e068a43cc0efc43dbb3dcde26ee7797e83582ab/modules/darwin/home/files/wallpapers/train-sideview.png -------------------------------------------------------------------------------- /modules/darwin/home/files/wallpapers/train-station.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dc-tec/nixos-config/8e068a43cc0efc43dbb3dcde26ee7797e83582ab/modules/darwin/home/files/wallpapers/train-station.jpg -------------------------------------------------------------------------------- /modules/darwin/home/files/wallpapers/tree-stump.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dc-tec/nixos-config/8e068a43cc0efc43dbb3dcde26ee7797e83582ab/modules/darwin/home/files/wallpapers/tree-stump.jpg -------------------------------------------------------------------------------- /modules/darwin/home/files/wallpapers/underwater-deep-blue-desktop-wallpaper.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dc-tec/nixos-config/8e068a43cc0efc43dbb3dcde26ee7797e83582ab/modules/darwin/home/files/wallpapers/underwater-deep-blue-desktop-wallpaper.jpg -------------------------------------------------------------------------------- /modules/darwin/home/files/wallpapers/venice-market.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dc-tec/nixos-config/8e068a43cc0efc43dbb3dcde26ee7797e83582ab/modules/darwin/home/files/wallpapers/venice-market.png -------------------------------------------------------------------------------- /modules/darwin/home/files/wallpapers/vibrant-gate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dc-tec/nixos-config/8e068a43cc0efc43dbb3dcde26ee7797e83582ab/modules/darwin/home/files/wallpapers/vibrant-gate.png -------------------------------------------------------------------------------- /modules/darwin/home/files/wallpapers/voxel-houses-monochrome.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dc-tec/nixos-config/8e068a43cc0efc43dbb3dcde26ee7797e83582ab/modules/darwin/home/files/wallpapers/voxel-houses-monochrome.png -------------------------------------------------------------------------------- /modules/darwin/home/files/wallpapers/wallhaven-vqoo1p.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dc-tec/nixos-config/8e068a43cc0efc43dbb3dcde26ee7797e83582ab/modules/darwin/home/files/wallpapers/wallhaven-vqoo1p.jpg -------------------------------------------------------------------------------- /modules/darwin/home/files/wallpapers/windows-xp.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dc-tec/nixos-config/8e068a43cc0efc43dbb3dcde26ee7797e83582ab/modules/darwin/home/files/wallpapers/windows-xp.jpg -------------------------------------------------------------------------------- /modules/darwin/home/files/wallpapers/yohoho.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dc-tec/nixos-config/8e068a43cc0efc43dbb3dcde26ee7797e83582ab/modules/darwin/home/files/wallpapers/yohoho.jpg -------------------------------------------------------------------------------- /modules/darwin/home/fzf.nix: -------------------------------------------------------------------------------- 1 | {...}: { 2 | home-manager.users.roelc = { 3 | catppuccin.fzf.enable = true; 4 | programs.fzf = { 5 | enable = true; 6 | enableZshIntegration = true; 7 | }; 8 | }; 9 | } 10 | 11 | -------------------------------------------------------------------------------- /modules/darwin/home/gpg/default.nix: -------------------------------------------------------------------------------- 1 | {...}: { 2 | home-manager.users.roelc = { 3 | home.file."./.gnupg" = { 4 | source = ./.; 5 | recursive = true; 6 | }; 7 | }; 8 | } 9 | -------------------------------------------------------------------------------- /modules/darwin/home/gpg/gpg-agent.conf: -------------------------------------------------------------------------------- 1 | pinentry-program /opt/homebrew/bin/pinentry-mac 2 | -------------------------------------------------------------------------------- /modules/darwin/home/jankyborders/bordersrc: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | 3 | borders active_color=0xfff5a97f inactive_color=0xffcad3f5 width=3.0 4 | -------------------------------------------------------------------------------- /modules/darwin/home/jankyborders/default.nix: -------------------------------------------------------------------------------- 1 | {...}: { 2 | home-manager.users.roelc = { 3 | home.file."./.config/borders" = { 4 | source = ./.; 5 | recursive = true; 6 | }; 7 | }; 8 | } 9 | -------------------------------------------------------------------------------- /modules/darwin/home/kitty.nix: -------------------------------------------------------------------------------- 1 | {...}: { 2 | home-manager.users.roelc = { 3 | catppuccin.kitty.enable = true; 4 | programs.kitty = { 5 | enable = true; 6 | font = { 7 | name = "0xProto"; 8 | size = 11; 9 | }; 10 | settings = { 11 | enable_audio_bell = false; 12 | remember_window_size = true; 13 | confirm_os_window_close = 0; 14 | disable_ligatures = "always"; 15 | 16 | # Font config 17 | font_family = "0xProto"; 18 | adjust_line_height = 3; 19 | 20 | background_opacity = "0.8"; 21 | background_blur = 20; 22 | 23 | # Window config 24 | window_margin_width = 5; 25 | single_window_margin_width = -1; 26 | }; 27 | #extraConfig = '' 28 | # modify_font cell_height 103% 29 | #''; 30 | }; 31 | }; 32 | } 33 | -------------------------------------------------------------------------------- /modules/darwin/home/ripgrep.nix: -------------------------------------------------------------------------------- 1 | {...}: { 2 | home-manager.users.roelc = { 3 | programs.ripgrep = { 4 | enable = true; 5 | }; 6 | }; 7 | } -------------------------------------------------------------------------------- /modules/darwin/home/shell.nix: -------------------------------------------------------------------------------- 1 | { 2 | pkgs, 3 | lib, 4 | ... 5 | }: 6 | { 7 | programs.zsh.enable = true; 8 | 9 | home-manager.users.roelc = { 10 | home.packages = [ 11 | pkgs.autojump # jump to recent directory. ex "j nix" 12 | pkgs.comma # nix run shortcut. ex ", cowsay neato" 13 | ]; 14 | 15 | programs.zsh = { 16 | enable = true; 17 | autosuggestion = { 18 | enable = true; 19 | }; 20 | 21 | # https://github.com/catppuccin/zsh-syntax-highlighting/blob/main/themes/catppuccin_macchiato-zsh-syntax-highlighting.zsh 22 | 23 | syntaxHighlighting = { 24 | enable = true; 25 | highlighters = [ 26 | "main" 27 | "cursor" 28 | ]; 29 | styles = { 30 | comment = "fg=#5b6078"; 31 | alias = "fg=#a6da95"; 32 | suffix-alias = "fg=#a6da95"; 33 | global-alias = "fg=#a6da95"; 34 | function = "fg=#a6da95"; 35 | command = "fg=#a6da95"; 36 | precommand = "fg=#a6da95,italic"; 37 | autodirectory = "fg=#f5a97f,italic"; 38 | single-hyphen-option = "fg=#f5a97f"; 39 | double-hyphen-option = "fg=#f5a97f"; 40 | back-quoted-argument = "fg=#c6a0f6"; 41 | builtin = "fg=#a6da95"; 42 | reserved-word = "fg=#a6da95"; 43 | hashed-command = "fg=#a6da95"; 44 | commandseparator = "fg=#ed8796"; 45 | command-substitution-delimiter = "fg=#cad3f5"; 46 | command-substitution-delimiter-unquoted = "fg=#cad3f5"; 47 | process-substitution-delimiter = "fg=#cad3f5"; 48 | back-quoted-argument-delimiter = "fg=#ed8796"; 49 | back-double-quoted-argument = "fg=#ed8796"; 50 | back-dollar-quoted-argument = "fg=#ed8796"; 51 | command-substitution-quoted = "fg=#eed49f"; 52 | command-substitution-delimiter-quoted = "fg=#eed49f"; 53 | single-quoted-argument = "fg=#eed49f"; 54 | single-quoted-argument-unclosed = "fg=#ee99a0"; 55 | double-quoted-argument = "fg=#eed49f"; 56 | double-quoted-argument-unclosed = "fg=#ee99a0"; 57 | rc-quote = "fg=#eed49f"; 58 | dollar-quoted-argument = "fg=#cad3f5"; 59 | dollar-quoted-argument-unclosed = "fg=#ee99a0"; 60 | dollar-double-quoted-argument = "fg=#cad3f5"; 61 | assign = "fg=#cad3f5"; 62 | named-fd = "fg=#cad3f5"; 63 | numeric-fd = "fg=#cad3f5"; 64 | unknown-token = "fg=#ee99a0"; 65 | path = "fg=#cad3f5,underline"; 66 | path_pathseparator = "fg=#ed8796,underline"; 67 | path_prefix = "fg=#cad3f5,underline"; 68 | path_prefix_pathseparator = "fg=#ed8796,underline"; 69 | globbing = "fg=#cad3f5"; 70 | history-expansion = "fg=#c6a0f6"; 71 | back-quoted-argument-unclosed = "fg=#ee99a0"; 72 | redirection = "fg=#cad3f5"; 73 | arg0 = "fg=#cad3f5"; 74 | default = "fg=#cad3f5"; 75 | cursor = "fg=#cad3f5"; 76 | }; 77 | }; 78 | 79 | autocd = true; 80 | history = { 81 | expireDuplicatesFirst = true; 82 | }; 83 | 84 | oh-my-zsh = { 85 | enable = true; 86 | theme = "robbyrussell"; 87 | plugins = [ 88 | "autojump" 89 | "git" 90 | "golang" 91 | "kubectl" 92 | "colored-man-pages" 93 | "zsh-interactive-cd" 94 | "history" 95 | "history-substring-search" 96 | "helm" 97 | "ansible" 98 | "docker" 99 | "aws" 100 | "terraform" 101 | ]; 102 | }; 103 | sessionVariables = { 104 | DEFAULT_USER = "roelc"; 105 | PATH = "/opt/homebrew/bin:/Users/roelc/Library/Python/3.9/bin:$PATH"; 106 | GPG_TTY = ''$(tty)''; 107 | }; 108 | shellAliases = { 109 | home = "cd ~/"; 110 | config = "cd ~/projects/personal/nixos-config"; 111 | work = "cd ~/projects/work"; 112 | personal = "cd ~/projects/personal"; 113 | secretz = "cd ~/projects/secretz"; 114 | gcl = "git clone"; 115 | cat = "bat --paging=never"; 116 | ls = "eza --icons --group-directories-first"; 117 | man = "tlrc"; 118 | ll = "eza --icons --group-directories-first -lah"; 119 | grep = "rg"; 120 | top = "btm"; 121 | cls = "clear"; 122 | myip = "dig +short myip.opendns.com @208.67.222.222 2>&1"; 123 | lg = "lazygit"; 124 | find = "fd"; 125 | 126 | # Directory traversal 127 | ".." = "cd .."; 128 | "..." = "cd ../.."; 129 | "...." = "cd ../../.."; 130 | "....." = "cd ../../../.."; 131 | "......" = "cd ../../../../.."; 132 | 133 | ## Neovim aliases 134 | vim = "nvim"; 135 | vi = "nvim"; 136 | v = "nvim"; 137 | 138 | # Kubernetes aliases 139 | k = "kubectl"; 140 | ka = "kubectl apply -f"; 141 | kak = "kubectl apply -k"; 142 | kg = "kubectl get"; 143 | kd = "kubectl describe"; 144 | kdel = "kubectl delete"; 145 | kl = "kubectl logs"; 146 | kgp = "kubectl get pods"; 147 | kgd = "kubectl get deployments"; 148 | ke = "kubectl exec -it"; 149 | kcsns = "kubectl config set-context --current --namespace"; 150 | 151 | # Terraform aliases 152 | t = "terraform"; 153 | ta = "terraform apply"; 154 | tp = "terraform plan"; 155 | td = "terraform destroy"; 156 | tinit = "terraform init"; 157 | tup = "terraform init -upgrade"; 158 | 159 | # Ansible aliases 160 | a = "ansible"; 161 | ap = "ansible-playbook"; 162 | 163 | # Docker aliases 164 | d = "docker"; 165 | dps = "docker ps"; 166 | dpsa = "docker ps -a"; 167 | di = "docker images"; 168 | ds = "docker stop"; 169 | drm = "docker rm"; 170 | 171 | # Helm aliases 172 | h = "helm"; 173 | hi = "helm install"; 174 | hu = "helm upgrade"; 175 | }; 176 | }; 177 | }; 178 | } 179 | -------------------------------------------------------------------------------- /modules/darwin/home/sketchybar/colors.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | 3 | # Color Palette 4 | export BLACK=0xff181926 5 | export WHITE=0xffcad3f5 6 | export RED=0xffed8796 7 | export GREEN=0xffa6da95 8 | export BLUE=0xff8aadf4 9 | export YELLOW=0xffeed49f 10 | export ORANGE=0xfff5a97f 11 | export MAGENTA=0xffc6a0f6 12 | export GREY=0xff939ab7 13 | export TRANSPARENT=0x00000000 14 | 15 | # General bar colors 16 | # export BAR_COLOR=0xcc24273a 17 | export BAR_COLOR=0x6624273a 18 | export ICON_COLOR=$WHITE # Color of all icons 19 | export LABEL_COLOR=$WHITE # Color of all labels 20 | export BACKGROUND_1=0xff3c3e4f 21 | export BACKGROUND_2=0xff494d64 22 | 23 | export POPUP_BACKGROUND_COLOR=$BLACK 24 | export POPUP_BORDER_COLOR=$WHITE 25 | 26 | export SHADOW_COLOR=$BLACK 27 | -------------------------------------------------------------------------------- /modules/darwin/home/sketchybar/default.nix: -------------------------------------------------------------------------------- 1 | {...}: { 2 | home-manager.users.roelc = { 3 | home.file."./.config/sketchybar" = { 4 | source = ./.; 5 | recursive = true; 6 | }; 7 | }; 8 | } 9 | -------------------------------------------------------------------------------- /modules/darwin/home/sketchybar/icon_map.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # This script maps application names to their corresponding icons 4 | # It serves as a bridge between yabai.sh and app_icons.sh 5 | 6 | "$CONFIG_DIR/plugins/app_icons.sh" "$1" -------------------------------------------------------------------------------- /modules/darwin/home/sketchybar/icons.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # General Icons 4 | LOADING=􀖇 5 | APPLE=􀣺 6 | PREFERENCES=􀺽 7 | ACTIVITY=􀒓 8 | LOCK=􀒳 9 | BELL=􀋚 10 | BELL_DOT=􀝗 11 | 12 | # Git Icons 13 | GIT_ISSUE=􀍷 14 | GIT_DISCUSSION=􀒤 15 | GIT_PULL_REQUEST=􀙡 16 | GIT_COMMIT=􀡚 17 | GIT_INDICATOR=􀂓 18 | 19 | # Spotify Icons 20 | SPOTIFY_BACK=􀊎 21 | SPOTIFY_PLAY_PAUSE=􀊈 22 | SPOTIFY_NEXT=􀊐 23 | SPOTIFY_SHUFFLE=􀊝 24 | SPOTIFY_REPEAT=􀊞 25 | 26 | # Yabai Icons 27 | YABAI_STACK=􀏭 28 | YABAI_FULLSCREEN_ZOOM=􀏜 29 | YABAI_PARENT_ZOOM=􀥃 30 | YABAI_FLOAT=􀢌 31 | YABAI_GRID=􀤳 32 | 33 | # Volume icons 34 | VOLUME_100=􀊩 35 | VOLUME_66=􀊧 36 | VOLUME_33=􀊥 37 | VOLUME_10=􀊡 38 | VOLUME_0=􀊣 39 | 40 | # Battery Icons 41 | BATTERY_100=􀛨 42 | BATTERY_75=􀺸 43 | BATTERY_50=􀺶 44 | BATTERY_25=􀛩 45 | BATTERY_0=􀛪 46 | BATTERY_CHARGING=􀢋 47 | 48 | # WiFi Icons 49 | WIFI_CONNECTED=􀙇 50 | WIFI_DISCONNECTED=􀙈 51 | 52 | # Material Design Icons 53 | 54 | export ICON_CMD=󰘳 55 | export ICON_COG=󰒓 # system settings, system information, tinkertool 56 | export ICON_CHART=󱕍 # activity monitor, btop 57 | export ICON_LOCK=󰌾 58 | 59 | export ICON_APP=󰣆 # fallback app 60 | export ICON_TERM=󰆍 # fallback terminal app, terminal, warp, iterm2 61 | export ICON_PACKAGE=󰏓 # brew 62 | export ICON_DEV=󰅨 # nvim, xcode, vscode 63 | export ICON_FILE=󰉋 # ranger, finder 64 | export ICON_GIT=󰊢 # lazygit 65 | export ICON_LIST=󱃔 # taskwarrior, taskwarrior-tui, reminders, onenote 66 | export ICON_SCREENSAVOR=󱄄 # unimatrix, pipe.sh 67 | 68 | export ICON_WEATHER=󰖕 # weather 69 | export ICON_MAIL=󰇮 # mail, outlook 70 | export ICON_CALC=󰪚 # calculator, numi 71 | export ICON_MAP=󰆋 # maps, find my 72 | export ICON_MICROPHONE=󰍬 # voice memos 73 | export ICON_CHAT=󰍩 # messages, slack, teams, discord, telegram 74 | export ICON_VIDEOCHAT=󰍫 # facetime, zoom, webex 75 | export ICON_NOTE=󱞎 # notes, textedit, stickies, word, bat 76 | export ICON_CAMERA=󰄀 # photo booth 77 | export ICON_WEB=󰇧 # safari, beam, duckduckgo, arc, edge, chrome, firefox 78 | export ICON_HOMEAUTOMATION=󱉑 # home 79 | export ICON_MUSIC=󰎄 # music, spotify 80 | export ICON_PODCAST=󰦔 # podcasts 81 | export ICON_PLAY=󱉺 # tv, quicktime, vlc 82 | export ICON_BOOK=󰂿 # books 83 | export ICON_BOOKINFO=󱁯 # font book, dictionary 84 | export ICON_PREVIEW=󰋲 # screenshot, preview 85 | export ICON_PASSKEY=󰷡 # 1password 86 | export ICON_DOWNLOAD=󱑢 # progressive downloader, transmission 87 | export ICON_CAST=󱒃 # airflow 88 | export ICON_TABLE=󰓫 # excel 89 | export ICON_PRESENT=󰈩 # powerpoint 90 | export ICON_CLOUD=󰅧 # onedrive 91 | export ICON_PEN=󰏬 # curve 92 | export ICON_REMOTEDESKTOP=󰢹 # vmware, utm 93 | 94 | export ICON_CLOCK=󰥔 # clock, timewarrior, tty-clock 95 | export ICON_CALENDAR=󰃭 # calendar 96 | 97 | export ICON_WIFI=󰖩 98 | export ICON_WIFI_OFF=󰖪 99 | export ICON_VPN=󰦝 # vpn, nordvpn 100 | 101 | export ICONS_VOLUME=(󰸈 󰕿 󰖀 󰕾) 102 | 103 | export ICONS_BATTERY=(󰂎 󰁺 󰁻 󰁼 󰁽 󰁾 󰁿 󰂀 󰂁 󰂂 󰁹) 104 | export ICONS_BATTERY_CHARGING=(󰢟 󰢜 󰂆 󰂇 󰂈 󰢝 󰂉 󰢞 󰂊 󰂋 󰂅) 105 | 106 | export ICON_SWAP=󰁯 107 | export ICON_RAM=󰓅 108 | export ICON_DISK=󰋊 # disk utility 109 | export ICON_CPU=󰘚 110 | -------------------------------------------------------------------------------- /modules/darwin/home/sketchybar/items/apple.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | 3 | POPUP_OFF="sketchybar --set apple.logo popup.drawing=off" 4 | POPUP_CLICK_SCRIPT="sketchybar --set \$NAME popup.drawing=toggle" 5 | 6 | sketchybar --add item apple.logo left \ 7 | \ 8 | --set apple.logo icon=$APPLE \ 9 | icon.font="$FONT:Black:16.0" \ 10 | icon.color=$GREEN \ 11 | background.padding_right=25 \ 12 | label.drawing=off \ 13 | click_script="$POPUP_CLICK_SCRIPT" \ 14 | \ 15 | --add item apple.prefs popup.apple.logo \ 16 | --set apple.prefs icon=$PREFERENCES \ 17 | label="Preferences" \ 18 | click_script="open -a 'System Preferences'; 19 | $POPUP_OFF" \ 20 | \ 21 | --add item apple.activity popup.apple.logo \ 22 | --set apple.activity icon=$ACTIVITY \ 23 | label="Activity" \ 24 | click_script="open -a 'Activity Monitor'; 25 | $POPUP_OFF"\ 26 | \ 27 | --add item apple.lock popup.apple.logo \ 28 | --set apple.lock icon=$LOCK \ 29 | label="Lock Screen" \ 30 | click_script="pmset displaysleepnow; 31 | $POPUP_OFF" 32 | -------------------------------------------------------------------------------- /modules/darwin/home/sketchybar/items/battery.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | 3 | sketchybar --add item battery right \ 4 | --set battery script="$PLUGIN_DIR/battery.sh" \ 5 | icon.font="$FONT:Regular:19.0" \ 6 | padding_right=15 \ 7 | padding_left=0 \ 8 | label.drawing=off \ 9 | update_freq=120 \ 10 | updates=on \ 11 | --subscribe battery power_source_change system_woke 12 | -------------------------------------------------------------------------------- /modules/darwin/home/sketchybar/items/brew.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | 3 | # Trigger the brew_udpate event when brew update or upgrade is run from cmdline 4 | # e.g. via function in .zshrc 5 | 6 | sketchybar --add event brew_update \ 7 | --add item brew right \ 8 | --set brew script="$PLUGIN_DIR/brew.sh" \ 9 | icon=􀐛 \ 10 | label=? \ 11 | background.padding_right=15 \ 12 | --subscribe brew brew_update 13 | -------------------------------------------------------------------------------- /modules/darwin/home/sketchybar/items/calendar.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | 3 | sketchybar --add item calendar right \ 4 | --set calendar icon=cal \ 5 | icon.font="$FONT:Black:12.0" \ 6 | icon.padding_right=0 \ 7 | label.width=50 \ 8 | label.align=right \ 9 | background.padding_left=15 \ 10 | update_freq=30 \ 11 | script="$PLUGIN_DIR/calendar.sh" \ 12 | -------------------------------------------------------------------------------- /modules/darwin/home/sketchybar/items/control_center.sh: -------------------------------------------------------------------------------- 1 | control_center=( 2 | icon="􀦍 " 3 | label.drawing=off 4 | y_offset=1 5 | click_script="osascript -e 'tell application \"System Events\" to tell process \"Control Center\" to perform action \"AXPress\" of menu bar item 2 of menu bar 1'" 6 | ) 7 | 8 | sketchybar --add item control_center right \ 9 | --set control_center "${control_center[@]}" 10 | -------------------------------------------------------------------------------- /modules/darwin/home/sketchybar/items/divider_notifications.sh: -------------------------------------------------------------------------------- 1 | sketchybar --add bracket status brew mattermost mail \ 2 | --set status background.color=$BACKGROUND_1 \ 3 | 4 | sketchybar --add item divider_notifications right \ 5 | --set divider_notifications label.drawing=off \ 6 | icon= \ 7 | icon.font="adfinis_logo:Regular:28.0" \ 8 | icon.color=$WHITE \ 9 | background.padding_left=15 \ 10 | background.padding_right=20 11 | -------------------------------------------------------------------------------- /modules/darwin/home/sketchybar/items/divider_system.sh: -------------------------------------------------------------------------------- 1 | sketchybar --add bracket system battery wifi volume volume_icon \ 2 | --set system background.color=$BACKGROUND_1 3 | 4 | sketchybar --add item divider_system right \ 5 | --set divider_system label.drawing=off \ 6 | background.padding_left=7 \ 7 | background.padding_right=7 8 | -------------------------------------------------------------------------------- /modules/darwin/home/sketchybar/items/front_app.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | source "$CONFIG_DIR/icons.sh" 3 | FRONT_APP_SCRIPT='sketchybar --set $NAME label="$INFO"' 4 | 5 | sketchybar --add event window_focus \ 6 | --add event windows_on_spaces \ 7 | --add item system.yabai left \ 8 | --set system.yabai script="$PLUGIN_DIR/yabai.sh" \ 9 | icon.font="$FONT:Bold:16.0" \ 10 | label.drawing=off \ 11 | icon.width=30 \ 12 | icon=$YABAI_GRID \ 13 | icon.color=$ORANGE \ 14 | updates=on \ 15 | associated_display=active \ 16 | --subscribe system.yabai window_focus \ 17 | windows_on_spaces \ 18 | mouse.clicked \ 19 | \ 20 | --add item front_app left \ 21 | --set front_app script="$FRONT_APP_SCRIPT" \ 22 | icon.drawing=off \ 23 | background.padding_left=0 \ 24 | background.padding_right=10 \ 25 | label.color=$WHITE \ 26 | label.font="$FONT:Black:12.0" \ 27 | associated_display=active \ 28 | --subscribe front_app front_app_switched 29 | -------------------------------------------------------------------------------- /modules/darwin/home/sketchybar/items/mail.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | source "$CONFIG_DIR/icons.sh" 3 | 4 | OPEN_MAIL="open -a Mail" 5 | 6 | sketchybar --add item mail right \ 7 | --set mail \ 8 | update_freq=60 \ 9 | script="$PLUGIN_DIR/mail.sh" \ 10 | padding_left=15 \ 11 | icon=􀣫 \ 12 | icon.font.size=16 \ 13 | click_script="$OPEN_MAIL" \ 14 | --subscribe mail system_woke 15 | -------------------------------------------------------------------------------- /modules/darwin/home/sketchybar/items/mattermost.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | source "$CONFIG_DIR/icons.sh" 3 | 4 | OPEN_MATTERMOST="open -a Mattermost" 5 | 6 | sketchybar --add item mattermost right \ 7 | --set mattermost \ 8 | update_freq=60 \ 9 | script="$PLUGIN_DIR/mattermost.sh" \ 10 | icon=􀌥 \ 11 | icon.font.size=16 \ 12 | click_script="$OPEN_MATTERMOST" \ 13 | --subscribe mattermost system_woke 14 | -------------------------------------------------------------------------------- /modules/darwin/home/sketchybar/items/spaces.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | 3 | SPACE_ICONS=("1" "2" "3" "4" "5" "6" "7" "8" "9" "10" "11" "12" "13" "14" "15") 4 | 5 | # Destroy space on right click, focus space on left click. 6 | # New space by left clicking separator (>) 7 | SPACE_CLICK_SCRIPT='[ "$BUTTON" = "right" ] && (/run/current-system/sw/bin/yabai -m space --destroy $SID; sketchybar --trigger space_change) || /run/current-system/sw/bin/yabai -m space --focus $SID 2>/dev/null' 8 | 9 | sid=0 10 | for i in "${!SPACE_ICONS[@]}" 11 | do 12 | sid=$(($i+1)) 13 | sketchybar --add space space.$sid left \ 14 | --set space.$sid associated_space=$sid \ 15 | icon=${SPACE_ICONS[i]} \ 16 | icon.padding_left=22 \ 17 | icon.padding_right=22 \ 18 | label.padding_right=33 \ 19 | icon.highlight_color=$ORANGE \ 20 | background.padding_left=-9 \ 21 | background.padding_right=-9 \ 22 | background.color=$BACKGROUND_1 \ 23 | background.drawing=on \ 24 | label.font="$FONT:Regular:16.0" \ 25 | label.background.height=26 \ 26 | label.background.drawing=on \ 27 | label.background.color=$BACKGROUND_2 \ 28 | label.background.corner_radius=9 \ 29 | label.drawing=off \ 30 | script="$PLUGIN_DIR/space.sh" \ 31 | click_script="$SPACE_CLICK_SCRIPT" 32 | done 33 | 34 | sketchybar --add item separator left \ 35 | --set separator icon=􀆊 \ 36 | icon.font="$FONT:Bold:16.0" \ 37 | background.padding_left=26 \ 38 | background.padding_right=15 \ 39 | label.drawing=off \ 40 | associated_display=active \ 41 | click_script='/run/current-system/sw/bin/yabai -m space --create 42 | sketchybar --trigger space_change'\ 43 | icon.color=$WHITE 44 | -------------------------------------------------------------------------------- /modules/darwin/home/sketchybar/items/volume.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | source "$CONFIG_DIR/icons.sh" 3 | source "$CONFIG_DIR/colors.sh" 4 | 5 | volume_slider=( 6 | script="$PLUGIN_DIR/volume.sh" 7 | updates=on 8 | label.drawing=off 9 | icon.drawing=off 10 | slider.highlight_color=$BLUE 11 | slider.background.height=5 12 | slider.background.corner_radius=3 13 | slider.background.color=$BACKGROUND_2 14 | slider.knob=􀀁 15 | slider.knob.drawing=on 16 | ) 17 | 18 | volume_icon=( 19 | click_script="$PLUGIN_DIR/volume_click.sh" 20 | padding_left=10 21 | icon=$VOLUME_100 22 | icon.width=0 23 | icon.align=left 24 | icon.font="$FONT:Regular:14.0" 25 | label.width=25 26 | label.align=left 27 | label.font="$FONT:Regular:14.0" 28 | ) 29 | 30 | status_bracket=( 31 | background.color=$BACKGROUND_1 32 | background.border_color=$BACKGROUND_2 33 | ) 34 | 35 | sketchybar --add slider volume right \ 36 | --set volume "${volume_slider[@]}" \ 37 | --subscribe volume volume_change \ 38 | mouse.clicked \ 39 | \ 40 | --add item volume_icon right \ 41 | --set volume_icon "${volume_icon[@]}" 42 | -------------------------------------------------------------------------------- /modules/darwin/home/sketchybar/items/wifi.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | 3 | source "$CONFIG_DIR/icons.sh" 4 | 5 | wifi=( 6 | padding_right=7 7 | label.width=0 8 | icon="$WIFI_DISCONNECTED" 9 | script="$PLUGIN_DIR/wifi.sh" 10 | ) 11 | 12 | sketchybar --add item wifi right \ 13 | --set wifi "${wifi[@]}" \ 14 | --subscribe wifi wifi_change mouse.clicked 15 | -------------------------------------------------------------------------------- /modules/darwin/home/sketchybar/plugins/app_icons.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | source "$CONFIG_DIR/icons.sh" 4 | 5 | case "$1" in 6 | "Terminal" | "Warp" | "iTerm2") 7 | RESULT=$ICON_TERM 8 | if grep -q "btop" <<< $2; 9 | then 10 | RESULT=$ICON_CHART 11 | fi 12 | if grep -q "brew" <<< $2; 13 | then 14 | RESULT=$ICON_PACKAGE 15 | fi 16 | if grep -q "nvim" <<< $2; 17 | then 18 | RESULT=$ICON_DEV 19 | fi 20 | if grep -q "ranger" <<< $2; 21 | then 22 | RESULT=$ICON_FILE 23 | fi 24 | if grep -q "lazygit" <<< $2; 25 | then 26 | RESULT=$ICON_GIT 27 | fi 28 | if grep -q "taskwarrior-tui" <<< $2; 29 | then 30 | RESULT=$ICON_LIST 31 | fi 32 | if grep -q "unimatrix\|pipes.sh" <<< $2; 33 | then 34 | RESULT=$ICON_SCREENSAVOR 35 | fi 36 | if grep -q "bat" <<< $2; 37 | then 38 | RESULT=$ICON_NOTE 39 | fi 40 | if grep -q "tty-clock" <<< $2; 41 | then 42 | RESULT=$ICON_CLOCK 43 | fi 44 | ;; 45 | "Finder") 46 | RESULT=$ICON_FINDER 47 | ;; 48 | "Weather") 49 | RESULT=$ICON_WEATHER 50 | ;; 51 | "Clock") 52 | RESULT=$ICON_CLOCK 53 | ;; 54 | "Mail" | "Microsoft Outlook") 55 | RESULT=$ICON_MAIL 56 | ;; 57 | "Calendar") 58 | RESULT=$ICON_CALENDAR 59 | ;; 60 | "Calculator" | "Numi") 61 | RESULT=$ICON_CALC 62 | ;; 63 | "Maps" | "Find My") 64 | RESULT=$ICON_MAP 65 | ;; 66 | "Voice Memos") 67 | RESULT=$ICON_MICROPHONE 68 | ;; 69 | "Messages" | "Slack" | "Microsoft Teams" | "Telegram" | "WhatsApp") 70 | RESULT=$ICON_CHAT 71 | ;; 72 | "Discord") 73 | RESULT=$ICON_DISCORD 74 | ;; 75 | "FaceTime" | "zoom.us" | "Webex") 76 | RESULT=$ICON_VIDEOCHAT 77 | ;; 78 | "Notes" | "TextEdit" | "Stickies" | "Microsoft Word") 79 | RESULT=$ICON_NOTE 80 | ;; 81 | "Reminders" | "Microsoft OneNote") 82 | RESULT=$ICON_LIST 83 | ;; 84 | "Things") 85 | RESULT=$ICON_THINGS 86 | ;; 87 | "Photo Booth") 88 | RESULT=$ICON_CAMERA 89 | ;; 90 | "Safari" | "Beam" | "DuckDuckGo" | "Arc" | "Microsoft Edge" | "Google Chrome") 91 | RESULT=$ICON_WEB 92 | ;; 93 | "Firefox") 94 | RESULT=$ICON_FIREFOX 95 | ;; 96 | "System Settings" | "System Information" | "TinkerTool") 97 | RESULT=$ICON_COG 98 | ;; 99 | "HOME") 100 | RESULT=$ICON_HOMEAUTOMATION 101 | ;; 102 | "Music" | "Spotify") 103 | RESULT=$ICON_MUSIC 104 | ;; 105 | "Podcasts") 106 | RESULT=$ICON_PODCAST 107 | ;; 108 | "TV" | "QuickTime Player" | "VLC") 109 | RESULT=$ICON_PLAY 110 | ;; 111 | "Books") 112 | RESULT=$ICON_BOOK 113 | ;; 114 | "Xcode" | "Code" | "Neovide") 115 | RESULT=$ICON_DEV 116 | ;; 117 | "VSCodium") 118 | RESULT=$ICON_VSCODIUM 119 | ;; 120 | "Dictionary") 121 | RESULT=$ICON_BOOKINFO 122 | ;; 123 | "Font Book") 124 | RESULT=$ICON_FONTBOOK 125 | ;; 126 | "Activity Monitor") 127 | RESULT=$ICON_CHART 128 | ;; 129 | "Disk Utility") 130 | RESULT=$ICON_DISK 131 | ;; 132 | "Screenshot" | "Preview") 133 | RESULT=$ICON_PREVIEW 134 | ;; 135 | "1Password") 136 | RESULT=$ICON_PASSKEY 137 | ;; 138 | "NordVPN") 139 | RESULT=$ICON_VPN 140 | ;; 141 | "Progressive Downloaded" | "Transmission") 142 | RESULT=$ICON_DOWNLOAD 143 | ;; 144 | "Airflow") 145 | RESULT=$ICON_CAST 146 | ;; 147 | "Microsoft Excel" | "Numbers") 148 | RESULT=$ICON_TABLE 149 | ;; 150 | "Microsoft PowerPoint" | "Keynote" | "Google Slides") 151 | RESULT=$ICON_PRESENT 152 | ;; 153 | "OneDrive") 154 | RESULT=$ICON_CLOUD 155 | ;; 156 | "Curve") 157 | RESULT=$ICON_PEN 158 | ;; 159 | "VMware Fusion" | "UTM") 160 | RESULT=$ICON_REMOTEDESKTOP 161 | ;; 162 | "Adobe Photoshop 2024") 163 | RESULT=$ICON_PHOTOSHOP 164 | ;; 165 | "Adobe After Effects") 166 | RESULT=$ICON_AFTEREFFECTS 167 | ;; 168 | "Photos" | "Lightroom Classic") 169 | RESULT=$ICON_PHOTOS 170 | ;; 171 | "Figma") 172 | RESULT=$ICON_FIGMA 173 | ;; 174 | "KiCad") 175 | RESULT=$ICON_KICAD 176 | ;; 177 | "JDownloader2") 178 | RESULT=$ICON_DOWNLOAD 179 | ;; 180 | "SF Symbols") 181 | RESULT=$ICON_ICON 182 | ;; 183 | "Steam" | "Steam Helper") 184 | RESULT=$ICON_STEAM 185 | ;; 186 | "HandBrake") 187 | RESULT=$ICON_HANDBRAKE 188 | ;; 189 | "GLMv4" | "GLMv5") 190 | RESULT=$ICON_GLM 191 | ;; 192 | "Popcorn-Time") 193 | RESULT=$ICON_POPCORN 194 | ;; 195 | "InDesign") 196 | RESULT=$ICON_INDESIGN 197 | ;; 198 | "Adobe Illustrator 2024") 199 | RESULT=$ICON_ILLUSTRATOR 200 | ;; 201 | "DaisyDisk") 202 | RESULT=$ICON_DAISYDISK 203 | ;; 204 | *) 205 | RESULT=$ICON_APP 206 | ;; 207 | esac 208 | 209 | echo $RESULT 210 | -------------------------------------------------------------------------------- /modules/darwin/home/sketchybar/plugins/battery.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | source "$CONFIG_DIR/icons.sh" 3 | source "$CONFIG_DIR/colors.sh" 4 | 5 | BATTERY_INFO="$(pmset -g batt)" 6 | PERCENTAGE=$(echo "$BATTERY_INFO" | grep -Eo "\d+%" | cut -d% -f1) 7 | CHARGING=$(echo "$BATTERY_INFO" | grep 'AC Power') 8 | 9 | if [ $PERCENTAGE = "" ]; then 10 | exit 0 11 | fi 12 | 13 | DRAWING=on 14 | COLOR=$WHITE 15 | case ${PERCENTAGE} in 16 | 9[0-9]|100) ICON=$BATTERY_100; COLOR=$GREEN 17 | ;; 18 | [6-8][0-9]) ICON=$BATTERY_75; COLOR=$GREEN 19 | ;; 20 | [3-5][0-9]) ICON=$BATTERY_50; COLOR=$YELLOW 21 | ;; 22 | [1-2][0-9]) ICON=$BATTERY_25; COLOR=$ORANGE 23 | ;; 24 | *) ICON=$BATTERY_0; COLOR=$RED 25 | esac 26 | 27 | if [[ $CHARGING != "" ]]; then 28 | ICON=$BATTERY_CHARGING 29 | COLOR=$GREEN 30 | fi 31 | 32 | sketchybar --set $NAME drawing=$DRAWING icon="$ICON" icon.color=$COLOR 33 | -------------------------------------------------------------------------------- /modules/darwin/home/sketchybar/plugins/brew.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | 3 | source "$CONFIG_DIR/colors.sh" 4 | 5 | COUNT=$(brew outdated | wc -l | tr -d ' ') 6 | 7 | COLOR=$RED 8 | 9 | case "$COUNT" in 10 | [3-5][0-9]) COLOR=$RED 11 | ;; 12 | [1-2][0-9]) COLOR=$ORANGE 13 | ;; 14 | [1-9]) COLOR=$YELLOW 15 | ;; 16 | 0) COLOR=$GREEN 17 | COUNT=􀆅 18 | ;; 19 | esac 20 | 21 | sketchybar --set $NAME label=$COUNT icon.color=$COLOR 22 | -------------------------------------------------------------------------------- /modules/darwin/home/sketchybar/plugins/calendar.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | 3 | sketchybar --set $NAME icon="$(date '+%a %d. %b')" label="$(date '+%H:%M')" 4 | -------------------------------------------------------------------------------- /modules/darwin/home/sketchybar/plugins/mail.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | source "$CONFIG_DIR/colors.sh" 3 | 4 | STATUS_LABEL=$(lsappinfo info -only StatusLabel "Mail") 5 | if [[ $STATUS_LABEL =~ \"label\"=\"([^\"]*)\" ]]; then 6 | LABEL="${BASH_REMATCH[1]}" 7 | 8 | if [[ $LABEL == "" ]]; then 9 | ICON_COLOR=$WHITE 10 | elif [[ $LABEL =~ ^[0-9]+$ ]]; then 11 | if (( LABEL >= 1 && LABEL <= 5 )); then 12 | ICON_COLOR=$GREEN 13 | elif (( LABEL > 5 )); then 14 | ICON_COLOR=$RED 15 | fi 16 | else 17 | exit 0 18 | fi 19 | else 20 | exit 0 21 | fi 22 | 23 | sketchybar --set $NAME label="${LABEL}" icon.color=${ICON_COLOR} 24 | 25 | -------------------------------------------------------------------------------- /modules/darwin/home/sketchybar/plugins/mattermost.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | source "$CONFIG_DIR/colors.sh" 3 | 4 | STATUS_LABEL=$(lsappinfo info -only StatusLabel "Mattermost") 5 | if [[ $STATUS_LABEL =~ \"label\"=\"([^\"]*)\" ]]; then 6 | LABEL="${BASH_REMATCH[1]}" 7 | 8 | if [[ $LABEL == "" ]]; then 9 | ICON_COLOR=$WHITE 10 | elif [[ $LABEL == "•" ]]; then 11 | ICON_COLOR=$GREEN 12 | elif [[ $LABEL =~ ^[0-9]+$ ]]; then 13 | ICON_COLOR=$RED 14 | else 15 | exit 0 16 | fi 17 | else 18 | exit 0 19 | fi 20 | 21 | sketchybar --set $NAME label="${LABEL}" icon.color=${ICON_COLOR} 22 | -------------------------------------------------------------------------------- /modules/darwin/home/sketchybar/plugins/space.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | 3 | WIDTH="dynamic" 4 | if [ "$SELECTED" = "true" ]; then 5 | WIDTH="0" 6 | fi 7 | 8 | sketchybar --animate tanh 20 --set $NAME icon.highlight=$SELECTED label.width=$WIDTH 9 | -------------------------------------------------------------------------------- /modules/darwin/home/sketchybar/plugins/volume.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | 3 | WIDTH=100 4 | 5 | volume_change() { 6 | source "$CONFIG_DIR/icons.sh" 7 | source "$CONFIG_DIR/colors.sh" 8 | 9 | case $INFO in 10 | [6-9][0-9]|100) ICON=$VOLUME_100; COLOR=$RED 11 | ;; 12 | [3-5][0-9]) ICON=$VOLUME_66; COLOR=$ORANGE 13 | ;; 14 | [1-2][0-9]) ICON=$VOLUME_33; COLOR=$YELLOW 15 | ;; 16 | [1-9]) ICON=$VOLUME_10; COLOR=$GREEN 17 | ;; 18 | 0) ICON=$VOLUME_0; COLOR=$WHITE 19 | ;; 20 | *) ICON=$VOLUME_100; COLOR=$MAGENTA 21 | esac 22 | 23 | sketchybar --set volume_icon label=$ICON \ 24 | --set volume_icon label.color=$COLOR \ 25 | --set $NAME slider.percentage=$INFO 26 | 27 | INITIAL_WIDTH="$(sketchybar --query $NAME | jq -r ".slider.width")" 28 | if [ "$INITIAL_WIDTH" -eq "0" ]; then 29 | sketchybar --animate tanh 30 --set $NAME slider.width=$WIDTH 30 | fi 31 | 32 | sleep 2 33 | 34 | # Check wether the volume was changed another time while sleeping 35 | FINAL_PERCENTAGE="$(sketchybar --query $NAME | jq -r ".slider.percentage")" 36 | if [ "$FINAL_PERCENTAGE" -eq "$INFO" ]; then 37 | sketchybar --animate tanh 30 --set $NAME slider.width=0 38 | fi 39 | } 40 | 41 | mouse_clicked() { 42 | osascript -e "set volume output volume $PERCENTAGE" 43 | } 44 | 45 | case "$SENDER" in 46 | "volume_change") volume_change 47 | ;; 48 | "mouse.clicked") mouse_clicked 49 | ;; 50 | esac 51 | -------------------------------------------------------------------------------- /modules/darwin/home/sketchybar/plugins/volume_click.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | 3 | toggle_mute() { 4 | sketchybar --set "$NAME" popup.drawing=off 5 | 6 | MUTED=$(osascript -e 'output muted of (get volume settings)') 7 | 8 | if [ "$MUTED" = "false" ]; then 9 | osascript -e 'set volume output muted true' 10 | else 11 | osascript -e 'set volume output muted false' 12 | fi 13 | exit 0 14 | } 15 | 16 | toggle_devices() { 17 | which SwitchAudioSource >/dev/null || exit 0 18 | source "$CONFIG_DIR/colors.sh" 19 | 20 | args=(--remove '/volume.device\.*/' --set "$NAME" popup.drawing=toggle) 21 | COUNTER=0 22 | CURRENT="$(SwitchAudioSource -t output -c)" 23 | while IFS= read -r device; do 24 | COLOR=$GREY 25 | if [ "${device}" = "$CURRENT" ]; then 26 | COLOR=$WHITE 27 | fi 28 | args+=(--add item volume.device.$COUNTER popup."$NAME" \ 29 | --set volume.device.$COUNTER label="${device}" \ 30 | label.color="$COLOR" \ 31 | click_script="SwitchAudioSource -s \"${device}\" && sketchybar --set /volume.device\.*/ label.color=$GREY --set \$NAME label.color=$WHITE") 32 | COUNTER=$((COUNTER+1)) 33 | done <<< "$(SwitchAudioSource -a -t output)" 34 | 35 | sketchybar -m "${args[@]}" > /dev/null 36 | } 37 | 38 | if [ "$BUTTON" = "right" ] || [ "$MODIFIER" = "shift" ]; then 39 | toggle_devices 40 | else 41 | toggle_mute 42 | fi 43 | -------------------------------------------------------------------------------- /modules/darwin/home/sketchybar/plugins/wifi.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | update() { 4 | source "$CONFIG_DIR/icons.sh" 5 | SSID="$(/System/Library/PrivateFrameworks/Apple80211.framework/Resources/airport -I | awk -F ' SSID: ' '/ SSID: / {print $2}')" 6 | IP="$(ipconfig getifaddr en0)" 7 | 8 | ICON="$([ -n "$IP" ] && echo "$WIFI_CONNECTED" || echo "$WIFI_DISCONNECTED")" 9 | LABEL="$([ -n "$IP" ] && echo "$SSID ($IP)" || echo "Disconnected")" 10 | 11 | sketchybar --set $NAME icon="$ICON" label="$LABEL" 12 | } 13 | 14 | click() { 15 | CURRENT_WIDTH="$(sketchybar --query $NAME | jq -r .label.width)" 16 | 17 | WIDTH=0 18 | if [ "$CURRENT_WIDTH" -eq "0" ]; then 19 | WIDTH=dynamic 20 | fi 21 | 22 | sketchybar --animate sin 20 --set $NAME label.width="$WIDTH" 23 | } 24 | 25 | case "$SENDER" in 26 | "wifi_change") update 27 | ;; 28 | "mouse.clicked") click 29 | ;; 30 | esac 31 | -------------------------------------------------------------------------------- /modules/darwin/home/sketchybar/plugins/yabai.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | window_state() { 4 | source "$CONFIG_DIR/colors.sh" 5 | source "$CONFIG_DIR/icons.sh" 6 | 7 | WINDOW=$(/run/current-system/sw/bin/yabai -m query --windows --window) 8 | CURRENT=$(echo "$WINDOW" | jq '.["stack-index"]') 9 | 10 | args=() 11 | if [[ $CURRENT -gt 0 ]]; then 12 | LAST=$(/run/current-system/sw/bin/yabai -m query --windows --window stack.last | jq '.["stack-index"]') 13 | args+=(--set $NAME icon=$YABAI_STACK icon.color=$RED label.drawing=on label=$(printf "[%s/%s]" "$CURRENT" "$LAST")) 14 | /run/current-system/sw/bin/yabai -m config active_window_border_color $RED > /dev/null 2>&1 & 15 | 16 | else 17 | args+=(--set $NAME label.drawing=off) 18 | case "$(echo "$WINDOW" | jq '.["is-floating"]')" in 19 | "false") 20 | if [ "$(echo "$WINDOW" | jq '.["has-fullscreen-zoom"]')" = "true" ]; then 21 | args+=(--set $NAME icon=$YABAI_FULLSCREEN_ZOOM icon.color=$GREEN) 22 | /run/current-system/sw/bin/yabai -m config active_window_border_color $GREEN > /dev/null 2>&1 & 23 | elif [ "$(echo "$WINDOW" | jq '.["has-parent-zoom"]')" = "true" ]; then 24 | args+=(--set $NAME icon=$YABAI_PARENT_ZOOM icon.color=$BLUE) 25 | /run/current-system/sw/bin/yabai -m config active_window_border_color $BLUE > /dev/null 2>&1 & 26 | else 27 | args+=(--set $NAME icon=$YABAI_GRID icon.color=$ORANGE) 28 | /run/current-system/sw/bin/yabai -m config active_window_border_color $WHITE > /dev/null 2>&1 & 29 | fi 30 | ;; 31 | "true") 32 | args+=(--set $NAME icon=$YABAI_FLOAT icon.color=$MAGENTA) 33 | /run/current-system/sw/bin/yabai -m config active_window_border_color $MAGENTA > /dev/null 2>&1 & 34 | ;; 35 | esac 36 | fi 37 | 38 | sketchybar -m "${args[@]}" 39 | } 40 | 41 | windows_on_spaces () { 42 | CURRENT_SPACES="$(/run/current-system/sw/bin/yabai -m query --displays | jq -r '.[].spaces | @sh')" 43 | 44 | args=() 45 | while read -r line 46 | do 47 | for space in $line 48 | do 49 | icon_strip=" " 50 | apps=$(/run/current-system/sw/bin/yabai -m query --windows --space $space | jq -r ".[].app") 51 | if [ "$apps" != "" ]; then 52 | while IFS= read -r app; do 53 | icon_strip+=$($CONFIG_DIR/icon_map.sh "$app") 54 | done <<< "$apps" 55 | fi 56 | args+=(--set space.$space label="$icon_strip" label.drawing=on) 57 | done 58 | done <<< "$CURRENT_SPACES" 59 | 60 | sketchybar -m "${args[@]}" 61 | } 62 | 63 | mouse_clicked() { 64 | /run/current-system/sw/bin/yabai -m window --toggle float 65 | window_state 66 | } 67 | 68 | case "$SENDER" in 69 | "mouse.clicked") mouse_clicked 70 | ;; 71 | "forced") exit 0 72 | ;; 73 | "window_focus") window_state 74 | ;; 75 | "windows_on_spaces") windows_on_spaces 76 | ;; 77 | esac 78 | -------------------------------------------------------------------------------- /modules/darwin/home/sketchybar/sketchybarrc: -------------------------------------------------------------------------------- 1 | PLUGIN_DIR="$CONFIG_DIR/plugins" 2 | ITEM_DIR="$CONFIG_DIR/items" 3 | 4 | source "$CONFIG_DIR/colors.sh" # Loads all defined colors 5 | source "$CONFIG_DIR/icons.sh" # Loads all defined icons 6 | 7 | FONT="SF Pro" # Needs to have Regular, Bold, Semibold, Heavy and Black variants 8 | PADDINGS=3 # All paddings use this value (icon, label, background) 9 | 10 | # Unload the macOS on screen indicator overlay for volume change 11 | launchctl unload -F /System/Library/LaunchAgents/com.apple.OSDUIHelper.plist > /dev/null 2>&1 & 12 | 13 | # Setting up the general bar appearance and default values 14 | sketchybar --bar height=31 \ 15 | color=$BAR_COLOR \ 16 | shadow=on \ 17 | position=top \ 18 | sticky=on \ 19 | padding_right=6 \ 20 | padding_left=6 \ 21 | corner_radius=9 \ 22 | y_offset=6 \ 23 | margin=10 \ 24 | blur_radius=20 \ 25 | notch_width=0 \ 26 | \ 27 | --default updates=when_shown \ 28 | icon.font="$FONT:Bold:14.0" \ 29 | icon.color=$ICON_COLOR \ 30 | icon.padding_left=$PADDINGS \ 31 | icon.padding_right=$PADDINGS \ 32 | label.font="$FONT:Semibold:13.0" \ 33 | label.color=$LABEL_COLOR \ 34 | label.padding_left=$PADDINGS \ 35 | label.padding_right=$PADDINGS \ 36 | background.padding_right=$PADDINGS \ 37 | background.padding_left=$PADDINGS \ 38 | background.height=26 \ 39 | background.corner_radius=9 \ 40 | popup.background.border_width=2 \ 41 | popup.background.corner_radius=11 \ 42 | popup.background.border_color=$POPUP_BORDER_COLOR \ 43 | popup.background.color=$POPUP_BACKGROUND_COLOR \ 44 | popup.background.shadow.drawing=on 45 | 46 | # Left 47 | source "$ITEM_DIR/apple.sh" 48 | source "$ITEM_DIR/spaces.sh" 49 | source "$ITEM_DIR/front_app.sh" 50 | 51 | # Right 52 | source "$ITEM_DIR/control_center.sh" 53 | source "$ITEM_DIR/calendar.sh" 54 | source "$ITEM_DIR/battery.sh" 55 | source "$ITEM_DIR/wifi.sh" 56 | source "$ITEM_DIR/volume.sh" 57 | source "$ITEM_DIR/divider_system.sh" 58 | source "$ITEM_DIR/brew.sh" 59 | source "$ITEM_DIR/mattermost.sh" 60 | source "$ITEM_DIR/mail.sh" 61 | source "$ITEM_DIR/divider_notifications.sh" 62 | 63 | # Forcing all item scripts to run (never do this outside of sketchybarrc) 64 | sketchybar --update 65 | -------------------------------------------------------------------------------- /modules/darwin/home/ssh.nix: -------------------------------------------------------------------------------- 1 | { ... }: 2 | { 3 | home-manager.users.roelc = _: { 4 | programs.ssh = { 5 | enable = true; 6 | hashKnownHosts = true; 7 | userKnownHostsFile = "~/.ssh/known_hosts"; 8 | addKeysToAgent = "yes"; 9 | extraConfig = '' 10 | UseKeychain yes 11 | IdentityFile ~/.ssh/id_ed25519 12 | IdentityFile ~/.ssh/roelc_gh 13 | ''; 14 | 15 | matchBlocks = { 16 | "adfinis-gitlab" = { 17 | hostname = "git.adfinis.com"; 18 | user = "git"; 19 | forwardAgent = true; 20 | identitiesOnly = true; 21 | identityFile = "~/.ssh/id_ed25519"; 22 | }; 23 | "github" = { 24 | hostname = "github.com"; 25 | user = "git"; 26 | forwardAgent = true; 27 | identitiesOnly = true; 28 | identityFile = "~/.ssh/roelc_gh"; 29 | }; 30 | "gitlab" = { 31 | hostname = "gitlab.com"; 32 | forwardAgent = true; 33 | identitiesOnly = true; 34 | user = "git"; 35 | identityFile = "~/.ssh/roelc_gh"; 36 | }; 37 | "chad" = { 38 | hostname = "10.0.10.183"; 39 | user = "roelc"; 40 | forwardAgent = true; 41 | identityFile = "~/.ssh/roelc_gh"; 42 | }; 43 | "ssh.decort.tech" = { 44 | hostname = "ssh.decort.tech"; 45 | user = "roelc"; 46 | identityFile = "~/.ssh/roelc_gh"; 47 | proxyCommand = "/opt/homebrew/bin/cloudflared access ssh --hostname %h"; 48 | }; 49 | "adfinis-openwebui" = { 50 | hostname = "91.99.78.1"; 51 | user = "root"; 52 | identityFile = "~/.ssh/id_ed25519"; 53 | }; 54 | }; 55 | }; 56 | }; 57 | } 58 | -------------------------------------------------------------------------------- /modules/darwin/home/starship.nix: -------------------------------------------------------------------------------- 1 | {lib, ...}: { 2 | config = { 3 | home-manager.users.roelc = { 4 | catppuccin.starship.enable = true; 5 | programs.starship = { 6 | enable = true; 7 | enableZshIntegration = true; 8 | settings = { 9 | add_newline = false; 10 | command_timeout = 1000; 11 | character = { 12 | success_symbol = "[ ❯](bold green)"; 13 | error_symbol = "[ ❯](bold red)"; 14 | }; 15 | 16 | format = lib.concatStrings [ 17 | "$directory" 18 | "$git_branch" 19 | "$git_status" 20 | "$direnv" 21 | "$cmd_duration" 22 | "\n󱞪(2) $character" 23 | ]; 24 | 25 | right_format = lib.concatStrings [ 26 | "$hostname" 27 | ]; 28 | 29 | git_status = { 30 | conflicted = " \${count}x "; 31 | ahead = " \${count}x "; 32 | behind = " \${count}x "; 33 | diverged = "󱐎 \${count}x "; 34 | untracked = "\${count}x "; 35 | stashed = "󰆔 \${count}x "; 36 | modified = "󰴓\${count}x "; 37 | staged = "󰅕\${count}x "; 38 | renamed = "󰑕\${count}x "; 39 | deleted = " \${count}x "; 40 | }; 41 | 42 | directory = { 43 | home_symbol = " "; 44 | read_only = " "; 45 | }; 46 | 47 | direnv = { 48 | disabled = false; 49 | symbol = "󱃼 "; 50 | format = "[$symbol]($style) "; 51 | style = "12"; 52 | }; 53 | 54 | hostname = { 55 | ssh_symbol = " "; 56 | format = "connected to [$ssh_symbol$hostname]($style) "; 57 | }; 58 | 59 | line_break = { 60 | disabled = true; 61 | }; 62 | }; 63 | }; 64 | }; 65 | }; 66 | } 67 | -------------------------------------------------------------------------------- /modules/darwin/home/yazi.nix: -------------------------------------------------------------------------------- 1 | _: { 2 | home-manager.users.roelc = { 3 | catppuccin.yazi.enable = true; 4 | programs.yazi = { 5 | enable = true; 6 | enableZshIntegration = true; 7 | settings = { 8 | log = { 9 | enabled = false; 10 | }; 11 | }; 12 | }; 13 | }; 14 | } 15 | -------------------------------------------------------------------------------- /modules/darwin/home/zoxide.nix: -------------------------------------------------------------------------------- 1 | {...}: { 2 | home-manager.users.roelc = { 3 | programs.zoxide = { 4 | enable = true; 5 | enableZshIntegration = true; 6 | }; 7 | }; 8 | } -------------------------------------------------------------------------------- /modules/darwin/homebrew/default.nix: -------------------------------------------------------------------------------- 1 | _: { 2 | homebrew = { 3 | enable = true; 4 | 5 | onActivation = { 6 | upgrade = true; 7 | autoUpdate = true; 8 | cleanup = "zap"; 9 | }; 10 | 11 | global = { 12 | autoUpdate = true; 13 | brewfile = true; 14 | lockfiles = true; 15 | }; 16 | 17 | taps = [ 18 | "homebrew/services" 19 | "FelixKratz/formulae" 20 | "hashicorp/tap" 21 | "jeffreywildman/homebrew-virt-manager" 22 | ]; 23 | 24 | brews = [ 25 | "curl" 26 | "unzip" 27 | "fontconfig" 28 | "ical-buddy" 29 | { 30 | name = "sketchybar"; 31 | start_service = true; 32 | } 33 | { 34 | name = "borders"; 35 | start_service = true; 36 | } 37 | "ifstat" 38 | "jq" 39 | "yq" 40 | "hashicorp/tap/vault" 41 | "hashicorp/tap/boundary" 42 | "hashicorp/tap/consul" 43 | "hashicorp/tap/nomad" 44 | "hashicorp/tap/packer" 45 | "cloudflared" 46 | "gpg" 47 | "pinentry-mac" 48 | "pre-commit" 49 | "just" 50 | "netcat" 51 | "gh" 52 | "tflint" 53 | "terraform-ls" 54 | "container-structure-test" 55 | "virt-manager" 56 | "virt-viewer" 57 | "azure-cli" 58 | "opentofu" 59 | "openbao" 60 | "k3d" 61 | "hcloud" 62 | "coreutils" 63 | "kwctl" 64 | "kind" 65 | "goreleaser" 66 | "gosec" 67 | "httpie" 68 | "npm" 69 | ]; 70 | 71 | casks = [ 72 | "firefox" 73 | "arc" 74 | "thunderbird" 75 | "microsoft-edge" 76 | "whatsapp" 77 | "mattermost" 78 | "obsidian" 79 | "chatgpt" 80 | "visual-studio-code" 81 | "raycast" 82 | "font-0xproto" 83 | "font-0xproto-nerd-font" 84 | "mac-mouse-fix" 85 | "docker" 86 | "font-sf-mono" 87 | "sf-symbols" 88 | "font-material-symbols" 89 | "font-material-icons" 90 | "betterdisplay" 91 | "spotify" 92 | "cursor" 93 | "notion" 94 | "shottr" 95 | "powershell" 96 | "slack" 97 | "citrix-workspace" 98 | "openvpn-connect" 99 | "zoom" 100 | "lm-studio" 101 | ]; 102 | }; 103 | } 104 | -------------------------------------------------------------------------------- /modules/darwin/nix/default.nix: -------------------------------------------------------------------------------- 1 | { pkgs, lib, ... }: 2 | 3 | { 4 | # enable flakes globally 5 | nix.settings.experimental-features = [ 6 | "nix-command" 7 | "flakes" 8 | ]; 9 | 10 | # Allow unfree packages 11 | nixpkgs.config.allowUnfree = true; 12 | 13 | # Auto upgrade nix package and the daemon service. 14 | nix.enable = true; 15 | # Use this instead of services.nix-daemon.enable if you 16 | # don't wan't the daemon service to be managed for you. 17 | # nix.useDaemon = true; 18 | 19 | nix.package = pkgs.nix; 20 | 21 | # do garbage collection weekly to keep disk usage low 22 | nix.gc = { 23 | automatic = lib.mkDefault true; 24 | options = lib.mkDefault "--delete-older-than 7d"; 25 | }; 26 | 27 | # Disable auto-optimise-store because of this issue: 28 | # https://github.com/NixOS/nix/issues/7273 29 | # "error: cannot link '/nix/store/.tmp-link-xxxxx-xxxxx' to '/nix/store/.links/xxxx': File exists" 30 | nix.settings = { 31 | auto-optimise-store = false; 32 | trusted-users = [ "roelc" ]; 33 | }; 34 | } 35 | 36 | -------------------------------------------------------------------------------- /modules/darwin/system/default.nix: -------------------------------------------------------------------------------- 1 | #https://github.com/ryan4yin/nix-darwin-kickstarter/blob/main/rich-demo/modules/system.nix 2 | { pkgs, ... }: 3 | { 4 | imports = [ 5 | ./yabai.nix 6 | ./skhd.nix 7 | ]; 8 | 9 | users.users.roelc = { 10 | home = "/Users/roelc"; 11 | }; 12 | 13 | programs.zsh.enable = true; 14 | environment.shells = [ 15 | pkgs.zsh 16 | ]; 17 | environment.variables.EDITOR = "nvim"; 18 | 19 | security.pam.services.sudo_local.touchIdAuth = true; 20 | 21 | ids.gids.nixbld = 350; 22 | 23 | time.timeZone = "Europe/Amsterdam"; 24 | 25 | fonts = { 26 | packages = with pkgs; [ 27 | material-design-icons 28 | font-awesome 29 | nerd-fonts.symbols-only 30 | nerd-fonts._0xproto 31 | ]; 32 | }; 33 | 34 | system = { 35 | stateVersion = 6; 36 | activationScripts.postActivation.text = '' 37 | # Following line should allow us to avoid a logout/login cycle 38 | /System/Library/PrivateFrameworks/SystemAdministration.framework/Resources/activateSettings -u 39 | ''; 40 | primaryUser = "roelc"; 41 | 42 | defaults = { 43 | dock = { 44 | autohide = true; 45 | show-recents = false; 46 | orientation = "left"; 47 | }; 48 | 49 | finder = { 50 | _FXShowPosixPathInTitle = true; 51 | AppleShowAllExtensions = true; 52 | FXEnableExtensionChangeWarning = false; 53 | AppleShowAllFiles = true; 54 | QuitMenuItem = true; 55 | ShowPathbar = true; 56 | ShowStatusBar = true; 57 | }; 58 | 59 | trackpad = { 60 | Clicking = true; 61 | TrackpadRightClick = true; 62 | TrackpadThreeFingerDrag = false; 63 | }; 64 | 65 | NSGlobalDomain = { 66 | "com.apple.swipescrolldirection" = false; 67 | "com.apple.sound.beep.feedback" = 0; 68 | AppleInterfaceStyle = "Dark"; 69 | AppleKeyboardUIMode = 3; 70 | ApplePressAndHoldEnabled = true; 71 | 72 | InitialKeyRepeat = 15; 73 | KeyRepeat = 3; 74 | 75 | NSAutomaticCapitalizationEnabled = false; 76 | NSAutomaticDashSubstitutionEnabled = false; 77 | NSAutomaticPeriodSubstitutionEnabled = false; 78 | NSAutomaticQuoteSubstitutionEnabled = false; 79 | NSAutomaticSpellingCorrectionEnabled = false; 80 | NSNavPanelExpandedStateForSaveMode = true; 81 | NSNavPanelExpandedStateForSaveMode2 = true; 82 | _HIHideMenuBar = true; 83 | }; 84 | 85 | screencapture.location = "~/Pictures/Screenshots"; 86 | }; 87 | }; 88 | } 89 | -------------------------------------------------------------------------------- /modules/darwin/system/skhd.nix: -------------------------------------------------------------------------------- 1 | {...}: { 2 | services.skhd = { 3 | enable = true; 4 | skhdConfig = '' 5 | # open terminal 6 | cmd - return : open -na kitty 7 | 8 | # open finder 9 | cmd + shift - return : open -na kitty --hold --title "Yazi" -e "yazi" 10 | 11 | # Open programs 12 | ctrl + alt - c : open -a "/Applications/Mattermost.app" 13 | ctrl + alt - e : open -a "/Applications/Microsoft Edge.app" 14 | ctrl + alt - f : open -a "/Applications/Firefox.app" 15 | ctrl + alt - w : open -a "/Applications/WhatsApp.app" 16 | ctrl + alt - o : open -a "/Applications/Obsidian.app" 17 | ctrl + alt - m : open -a "Mail" 18 | ctrl + alt - d : open -a docker 19 | 20 | # focus window 21 | alt - h : yabai -m window --focus west 22 | alt - j : yabai -m window --focus south 23 | alt - k : yabai -m window --focus north 24 | alt - l : yabai -m window --focus east 25 | 26 | # swap window 27 | shift + alt - h : yabai -m window --swap west 28 | shift + alt - j : yabai -m window --swap south 29 | shift + alt - k : yabai -m window --swap north 30 | shift + alt - l : yabai -m window --swap east 31 | 32 | # move window 33 | shift + cmd - h : yabai -m window --warp west 34 | shift + cmd - j : yabai -m window --warp south 35 | shift + cmd - k : yabai -m window --warp north 36 | shift + cmd - l : yabai -m window --warp east 37 | 38 | # balance size of windows 39 | shift + alt - 0 : yabai -m space --balance 40 | 41 | # make floating window fill screen 42 | shift + alt - up : yabai -m window --grid 1:1:0:0:1:1 43 | 44 | # make floating window fill left-half of screen 45 | shift + alt - left : yabai -m window --grid 1:2:0:0:1:1 46 | 47 | # make floating window fill right-half of screen 48 | shift + alt - right : yabai -m window --grid 1:2:1:0:1:1 49 | 50 | # destroy desktop 51 | cmd + alt - w : yabai -m space --destroy 52 | 53 | # fast focus desktop 54 | cmd + alt - x : yabai -m space --focus recent 55 | cmd + alt - z : yabai -m space --focus prev 56 | cmd + alt - c : yabai -m space --focus next 57 | cmd + alt - 1 : yabai -m space --focus 1 58 | cmd + alt - 2 : yabai -m space --focus 2 59 | cmd + alt - 3 : yabai -m space --focus 3 60 | cmd + alt - 4 : yabai -m space --focus 4 61 | cmd + alt - 5 : yabai -m space --focus 5 62 | cmd + alt - 6 : yabai -m space --focus 6 63 | cmd + alt - 7 : yabai -m space --focus 7 64 | cmd + alt - 8 : yabai -m space --focus 8 65 | cmd + alt - 9 : yabai -m space --focus 9 66 | cmd + alt - 0 : yabai -m space --focus 10 67 | 68 | # send window to desktop 69 | shift + alt - x : yabai -m window --space recent 70 | shift + alt - z : yabai -m window --space prev 71 | shift + alt - c : yabai -m window --space next 72 | shift + alt - 1 : yabai -m window --space 1 73 | shift + alt - 2 : yabai -m window --space 2 74 | shift + alt - 3 : yabai -m window --space 3 75 | shift + alt - 4 : yabai -m window --space 4 76 | shift + alt - 5 : yabai -m window --space 5 77 | shift + alt - 6 : yabai -m window --space 6 78 | shift + alt - 7 : yabai -m window --space 7 79 | shift + alt - 8 : yabai -m window --space 8 80 | shift + alt - 9 : yabai -m window --space 9 81 | shift + alt - 0 : yabai -m window --space 10 82 | 83 | # send window to desktop and follow focus 84 | shift + cmd - x : yabai -m window --space recent; yabai -m space --focus recent 85 | shift + cmd - z : yabai -m window --space prev; yabai -m space --focus prev 86 | shift + cmd - c : yabai -m window --space next; yabai -m space --focus next 87 | shift + cmd - 1 : yabai -m window --space 1; yabai -m space --focus 1 88 | shift + cmd - 2 : yabai -m window --space 2; yabai -m space --focus 2 89 | shift + cmd - 3 : yabai -m window --space 3; yabai -m space --focus 3 90 | shift + cmd - 4 : yabai -m window --space 4; yabai -m space --focus 4 91 | shift + cmd - 5 : yabai -m window --space 5; yabai -m space --focus 5 92 | shift + cmd - 6 : yabai -m window --space 6; yabai -m space --focus 6 93 | shift + cmd - 7 : yabai -m window --space 7; yabai -m space --focus 7 94 | shift + cmd - 8 : yabai -m window --space 8; yabai -m space --focus 8 95 | shift + cmd - 9 : yabai -m window --space 9; yabai -m space --focus 9 96 | shift + cmd - 0 : yabai -m window --space 10; yabai -m space --focus 10 97 | 98 | # focus monitor 99 | ctrl + alt - x : yabai -m display --focus recent 100 | ctrl + alt - z : yabai -m display --focus prev 101 | ctrl + alt - c : yabai -m display --focus next 102 | ctrl + alt - 1 : yabai -m display --focus 1 103 | ctrl + alt - 2 : yabai -m display --focus 2 104 | ctrl + alt - 3 : yabai -m display --focus 3 105 | 106 | # send window to monitor and follow focus 107 | ctrl + cmd - x : yabai -m window --display recent; yabai -m display --focus recent 108 | ctrl + cmd - z : yabai -m window --display prev; yabai -m display --focus prev 109 | ctrl + cmd - c : yabai -m window --display next; yabai -m display --focus next 110 | ctrl + cmd - 1 : yabai -m window --display 1; yabai -m display --focus 1 111 | ctrl + cmd - 2 : yabai -m window --display 2; yabai -m display --focus 2 112 | ctrl + cmd - 3 : yabai -m window --display 3; yabai -m display --focus 3 113 | 114 | # increase window size 115 | shift + alt - a : yabai -m window --resize left:-20:0 116 | shift + alt - s : yabai -m window --resize bottom:0:20 117 | shift + alt - w : yabai -m window --resize top:0:-20 118 | shift + alt - d : yabai -m window --resize right:20:0 119 | 120 | # decrease window size 121 | shift + cmd - a : yabai -m window --resize left:20:0 122 | shift + cmd - s : yabai -m window --resize bottom:0:-20 123 | shift + cmd - w : yabai -m window --resize top:0:20 124 | shift + cmd - d : yabai -m window --resize right:-20:0 125 | 126 | # set insertion point in focused container 127 | ctrl + alt - h : yabai -m window --insert west 128 | ctrl + alt - j : yabai -m window --insert south 129 | ctrl + alt - k : yabai -m window --insert north 130 | ctrl + alt - l : yabai -m window --insert east 131 | 132 | # rotate tree 133 | alt - r : yabai -m space --rotate 90 134 | 135 | # mirror tree y-axis 136 | alt - y : yabai -m space --mirror y-axis 137 | 138 | # mirror tree x-axis 139 | alt - x : yabai -m space --mirror x-axis 140 | 141 | # toggle desktop offset 142 | alt - a : yabai -m space --toggle padding; yabai -m space --toggle gap 143 | 144 | # toggle window parent zoom 145 | alt - d : yabai -m window --toggle zoom-parent 146 | 147 | # toggle window fullscreen 148 | alt - f : yabai -m window --toggle zoom-fullscreen 149 | 150 | # toggle window native fullscreen 151 | shift + alt - f : yabai -m window --toggle native-fullscreen 152 | 153 | # toggle window border 154 | shift + alt - b : yabai -m window --toggle border 155 | 156 | # toggle window split type 157 | alt - e : yabai -m window --toggle split 158 | 159 | # float / unfloat window and center on screen 160 | alt - t : yabai -m window --toggle float;\ 161 | yabai -m window --grid 4:4:1:1:2:2 162 | 163 | # toggle sticky 164 | alt - s : yabai -m window --toggle sticky 165 | 166 | # toggle topmost (keep above other windows) 167 | alt - o : yabai -m window --toggle topmost 168 | 169 | # toggle sticky(+float), topmost, border and picture-in-picture 170 | alt - p : yabai -m window --toggle sticky;\ 171 | yabai -m window --toggle topmost;\ 172 | yabai -m window --toggle border;\ 173 | yabai -m window --toggle pip 174 | 175 | # change layout of desktop 176 | ctrl + shift - b : yabai -m space --layout bsp 177 | ctrl + shift - f : yabai -m space --layout float 178 | 179 | ''; 180 | }; 181 | } 182 | -------------------------------------------------------------------------------- /modules/darwin/system/yabai.nix: -------------------------------------------------------------------------------- 1 | { ... }: 2 | { 3 | services.yabai = { 4 | enable = true; 5 | enableScriptingAddition = true; 6 | 7 | config = { 8 | layout = "bsp"; 9 | window_placement = "second_child"; 10 | window_shadow = "off"; 11 | mouse_follows_focus = "on"; 12 | focus_follows_mouse = "autofocus"; 13 | window_opacity = "off"; 14 | 15 | top_padding = 7; 16 | bottom_padding = 7; 17 | left_padding = 7; 18 | right_padding = 7; 19 | window_gap = 7; 20 | 21 | extraConfig = '' 22 | # external bar 23 | yabai -m config external_bar all:36:0 24 | 25 | # spaces 26 | yabai -m space 1 27 | yabai -m space 2 --label work 28 | yabai -m space 3 --label chat 29 | yabai -m space 4 --label notes 30 | yabai -m space 5 31 | yabai -m space 6 32 | yabai -m space 7 33 | yabai -m space 8 34 | yabai -m space 9 35 | yabai -m space 10 36 | 37 | # rules 38 | yabai -m rule --add app='About This Mac' manage=off 39 | yabai -m rule --add app='System Information' manage=off 40 | yabai -m rule --add app='System Preferences' manage=off 41 | yabai -m rule --add app="^kitty$" border=off 42 | yabai -m rule --add app="^Mail$" space=work 43 | yabai -m rule --add app="^Calendar$" space=work 44 | yabai -m rule --add app="^Mattermost" space=chat 45 | yabai -m rule --add app="^WhatsApp$" space=chat 46 | yabai -m rule --add app="^Notes$" space=notes 47 | yabai -m rule --add app="^Obsidian$" space=notes 48 | 49 | # Load scripting addition 50 | yabai -m signal --add event=dock_did_restart \ 51 | action="sudo yabai --load-sa" 52 | sudo yabai --load-sa 53 | 54 | # Reload sketchybar 55 | yabai -m signal --add event=system_woke action="sh -c 'sleep 1; /opt/homebrew/bin/sketchybar --reload'" 56 | ''; 57 | }; 58 | }; 59 | } 60 | -------------------------------------------------------------------------------- /modules/default.nix: -------------------------------------------------------------------------------- 1 | {...}: { 2 | imports = [ 3 | ./core 4 | ./development 5 | ./graphical 6 | ]; 7 | } 8 | -------------------------------------------------------------------------------- /modules/development/ansible/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | pkgs, 3 | lib, 4 | config, 5 | ... 6 | }: { 7 | options = { 8 | dc-tec.development = { 9 | ansible.enable = lib.mkEnableOption "Ansible"; 10 | }; 11 | }; 12 | 13 | config = lib.mkIf config.dc-tec.development.ansible.enable { 14 | home-manager.users.roelc = { 15 | home.packages = with pkgs; [ 16 | ansible 17 | ansible-builder 18 | ansible-lint 19 | ]; 20 | }; 21 | }; 22 | } 23 | -------------------------------------------------------------------------------- /modules/development/aws-cli/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | pkgs, 3 | lib, 4 | config, 5 | ... 6 | }: { 7 | options = { 8 | dc-tec.development = { 9 | aws-cli.enable = lib.mkEnableOption "AWS CLI"; 10 | }; 11 | }; 12 | 13 | config = lib.mkIf config.dc-tec.development.aws-cli.enable { 14 | home-manager.users.roelc = { 15 | home.packages = with pkgs; [ 16 | awscli2 17 | ]; 18 | }; 19 | }; 20 | } 21 | -------------------------------------------------------------------------------- /modules/development/azure-cli/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | pkgs, 3 | lib, 4 | config, 5 | ... 6 | }: { 7 | options = { 8 | dc-tec.development = { 9 | azure-cli.enable = lib.mkEnableOption "Azure CLI"; 10 | }; 11 | }; 12 | 13 | config = lib.mkIf config.dc-tec.development.azure-cli.enable { 14 | dc-tec.core.zfs = lib.mkMerge [ 15 | (lib.mkIf config.dc-tec.core.persistence.enable { 16 | homeCacheLinks = [".azure"]; 17 | }) 18 | (lib.mkIf (!config.dc-tec.core.persistence.enable) {}) 19 | ]; 20 | 21 | home-manager.users.roelc = { 22 | home.packages = with pkgs.stable; [ 23 | azure-cli 24 | #bicep 25 | ]; 26 | }; 27 | }; 28 | } 29 | -------------------------------------------------------------------------------- /modules/development/default.nix: -------------------------------------------------------------------------------- 1 | {lib, ...}: { 2 | imports = [ 3 | ./git 4 | ./python 5 | ./ansible 6 | ./aws-cli 7 | ./azure-cli 8 | ./go 9 | ./hashicorp 10 | ./powershell 11 | ./yaml 12 | ./virtualisation 13 | ./vscode-server 14 | ]; 15 | 16 | config = { 17 | dc-tec.development = { 18 | git.enable = lib.mkDefault true; 19 | ansible.enable = lib.mkDefault true; 20 | aws-cli.enable = lib.mkDefault true; 21 | azure-cli.enable = lib.mkDefault true; 22 | go.enable = lib.mkDefault true; 23 | hashicorp.enable = lib.mkDefault true; 24 | powershell.enable = lib.mkDefault true; 25 | python312.enable = lib.mkDefault true; 26 | yamlls.enable = lib.mkDefault true; 27 | vscode-server.enable = lib.mkDefault false; 28 | virtualisation = { 29 | docker.enable = lib.mkDefault false; 30 | k8s.enable = lib.mkDefault false; 31 | hypervisor.enable = lib.mkDefault false; 32 | }; 33 | }; 34 | }; 35 | } 36 | -------------------------------------------------------------------------------- /modules/development/git/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | config, 3 | lib, 4 | pkgs, 5 | ... 6 | }: 7 | { 8 | imports = [ 9 | ./lazy_git.nix 10 | ./github.nix 11 | ]; 12 | 13 | options.dc-tec.development.git = { 14 | enable = lib.mkOption { 15 | default = true; 16 | }; 17 | email = lib.mkOption { 18 | default = "roel@decort.tech"; 19 | }; 20 | }; 21 | 22 | config = 23 | let 24 | base = { 25 | programs.git = { 26 | enable = true; 27 | 28 | userEmail = config.dc-tec.development.git.email; 29 | userName = "Roel de Cort"; 30 | 31 | includes = [ 32 | { 33 | path = "/home/roelc/projects/work/.gitconfig"; 34 | condition = "gitdir:/home/roelc/projects/work/"; 35 | } 36 | ]; 37 | 38 | extraConfig = { 39 | init.defaultBranch = "main"; 40 | push.autoSetupRemote = true; 41 | pull.rebase = true; 42 | 43 | user.signingkey = "5C04F622E4FD914D5E2AF671DED0E794E70C0F7F"; 44 | commit.gpgsign = true; 45 | gpg.program = "${pkgs.gnupg}/bin/gpg2"; 46 | 47 | url = { 48 | "ssh://git@github.com/dc-tec" = { 49 | insteadOf = "https://github.com/dc-tec"; 50 | }; 51 | }; 52 | 53 | github.user = "dc-tec"; 54 | safe.directory = "/home/roelc/projects/personal/github/nixos-config"; 55 | }; 56 | }; 57 | }; 58 | in 59 | { 60 | home-manager.users.roelc = { ... }: base; 61 | home-manager.users.root = { ... }: base; 62 | }; 63 | } 64 | -------------------------------------------------------------------------------- /modules/development/git/github.nix: -------------------------------------------------------------------------------- 1 | { 2 | lib, 3 | config, 4 | ... 5 | }: let 6 | base = home: { 7 | programs.gh = { 8 | enable = true; 9 | settings = { 10 | editor = "nvim"; 11 | git_protocol = "ssh"; 12 | }; 13 | }; 14 | }; 15 | in { 16 | dc-tec.core.zfs = lib.mkMerge [ 17 | (lib.mkIf config.dc-tec.core.persistence.enable { 18 | homeCacheLinks = [".gh"]; 19 | }) 20 | (lib.mkIf (!config.dc-tec.core.persistence.enable) {}) 21 | ]; 22 | 23 | home-manager.users.roelc = {...}: (base "/home/roelc"); 24 | } 25 | -------------------------------------------------------------------------------- /modules/development/git/lazy_git.nix: -------------------------------------------------------------------------------- 1 | {...}: let 2 | base = home: { 3 | programs.lazygit = { 4 | enable = true; 5 | catppuccin.enable = true; 6 | settings = { 7 | overrideGpg = true; 8 | }; 9 | }; 10 | }; 11 | in { 12 | home-manager.users.roelc = {...}: (base "/home/roelc"); 13 | } 14 | -------------------------------------------------------------------------------- /modules/development/go/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | pkgs, 3 | lib, 4 | config, 5 | ... 6 | }: { 7 | options = { 8 | dc-tec.development = { 9 | go.enable = lib.mkEnableOption "Go"; 10 | }; 11 | }; 12 | 13 | config = lib.mkIf config.dc-tec.development.go.enable { 14 | home-manager.users.roelc = { 15 | home.packages = with pkgs; [ 16 | go 17 | ]; 18 | }; 19 | }; 20 | } 21 | -------------------------------------------------------------------------------- /modules/development/hashicorp/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | pkgs, 3 | lib, 4 | config, 5 | ... 6 | }: { 7 | options = { 8 | dc-tec.development = { 9 | hashicorp.enable = lib.mkEnableOption "Hashicorp"; 10 | }; 11 | }; 12 | 13 | config = lib.mkIf config.dc-tec.development.hashicorp.enable { 14 | dc-tec.core.zfs.homeCacheLinks = lib.mkIf config.dc-tec.core.persistence.enable [".tenv"]; 15 | 16 | home-manager.users.roelc = { 17 | home.packages = with pkgs; [ 18 | tenv 19 | terraform-docs 20 | vault 21 | consul 22 | packer 23 | ]; 24 | }; 25 | }; 26 | } 27 | -------------------------------------------------------------------------------- /modules/development/packer/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | pkgs, 3 | lib, 4 | config, 5 | ... 6 | }: { 7 | options = { 8 | dc-tec.development = { 9 | packer.enable = lib.mkEnableOption "Packer"; 10 | }; 11 | }; 12 | 13 | config = lib.mkIf config.dc-tec.development.packer.enable { 14 | home-manager.users.roelc = { 15 | home.packages = with pkgs; [ 16 | packer 17 | ]; 18 | }; 19 | }; 20 | } 21 | -------------------------------------------------------------------------------- /modules/development/powershell/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | pkgs, 3 | lib, 4 | config, 5 | ... 6 | }: { 7 | options = { 8 | dc-tec.development = { 9 | powershell.enable = lib.mkEnableOption "Powershell"; 10 | }; 11 | }; 12 | 13 | config = lib.mkIf config.dc-tec.development.powershell.enable { 14 | home-manager.users.roelc = { 15 | home.packages = with pkgs; [ 16 | powershell 17 | ]; 18 | }; 19 | }; 20 | } 21 | -------------------------------------------------------------------------------- /modules/development/python/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | imports = [ 3 | ./python312 4 | ]; 5 | } 6 | -------------------------------------------------------------------------------- /modules/development/python/python312/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | pkgs, 3 | lib, 4 | config, 5 | ... 6 | }: { 7 | options = { 8 | dc-tec.development = { 9 | python312.enable = lib.mkEnableOption "Python 3.12"; 10 | }; 11 | }; 12 | 13 | config = lib.mkIf config.dc-tec.development.python312.enable { 14 | home-manager.users.roelc = { 15 | home.packages = with pkgs; [ 16 | (python312.withPackages 17 | (ps: [ps.requests ps.cryptography ps.docker])) 18 | ]; 19 | }; 20 | }; 21 | } 22 | -------------------------------------------------------------------------------- /modules/development/virtualisation/default.nix: -------------------------------------------------------------------------------- 1 | _: { 2 | imports = [ 3 | ./k8s.nix 4 | ./docker.nix 5 | ./hypervisor.nix 6 | ]; 7 | } 8 | -------------------------------------------------------------------------------- /modules/development/virtualisation/docker.nix: -------------------------------------------------------------------------------- 1 | { 2 | pkgs, 3 | lib, 4 | config, 5 | ... 6 | }: { 7 | options = { 8 | dc-tec = { 9 | development.virtualisation = { 10 | docker.enable = lib.mkEnableOption "docker"; 11 | }; 12 | }; 13 | }; 14 | 15 | config = lib.mkIf config.dc-tec.development.virtualisation.docker.enable { 16 | dc-tec.core.zfs.systemCacheLinks = ["/opt/docker"]; 17 | 18 | virtualisation.docker = { 19 | enable = true; 20 | extraOptions = "--data-root ${config.dc-tec.dataPrefix}/var/lib/docker"; 21 | storageDriver = "zfs"; 22 | }; 23 | 24 | home-manager.users.roelc = { 25 | home.packages = with pkgs; [ 26 | docker-compose 27 | ]; 28 | }; 29 | users.users.roelc.extraGroups = ["docker"]; 30 | }; 31 | } 32 | -------------------------------------------------------------------------------- /modules/development/virtualisation/hypervisor.nix: -------------------------------------------------------------------------------- 1 | { 2 | pkgs, 3 | lib, 4 | config, 5 | ... 6 | }: { 7 | options = { 8 | dc-tec.development.virtualisation = { 9 | hypervisor.enable = lib.mkEnableOption "Libvirt/KVM"; 10 | }; 11 | }; 12 | 13 | config = lib.mkIf config.dc-tec.development.virtualisation.hypervisor.enable { 14 | dc-tec.core.zfs.systemCacheLinks = ["/var/lib/libvirt"]; 15 | 16 | virtualisation.libvirtd = { 17 | enable = true; 18 | qemu = { 19 | package = pkgs.qemu_kvm; 20 | swtpm.enable = true; 21 | verbatimConfig = '' 22 | nvram = [ "/run/libvirt/nix-ovmf/AAVMF_CODE.fd:/run/libvirt/nix-ovmf/AAVMF_VARS.fd", "/run/libvirt/nix-ovmf/OVMF_CODE.fd:/run/libvirt/nix-ovmf/OVMF_VARS.fd" ] 23 | ''; 24 | runAsRoot = false; 25 | }; 26 | 27 | onBoot = "start"; 28 | onShutdown = "shutdown"; 29 | }; 30 | 31 | home-manager.users.roelc = { 32 | home.packages = with pkgs; [ 33 | virt-manager 34 | ]; 35 | }; 36 | 37 | users.users.roelc = { 38 | extraGroups = ["libvirtd"]; 39 | }; 40 | }; 41 | } 42 | -------------------------------------------------------------------------------- /modules/development/virtualisation/k8s.nix: -------------------------------------------------------------------------------- 1 | { 2 | pkgs, 3 | lib, 4 | config, 5 | ... 6 | }: { 7 | options = { 8 | dc-tec.development.virtualisation = { 9 | k8s.enable = lib.mkEnableOption "k8s tooling"; 10 | }; 11 | }; 12 | 13 | config = lib.mkIf config.dc-tec.development.virtualisation.k8s.enable { 14 | home-manager.users.roelc = { 15 | home.packages = with pkgs; [ 16 | talosctl 17 | kubectl 18 | kubernetes-helm 19 | kustomize 20 | argocd 21 | cilium-cli 22 | kubeseal 23 | ]; 24 | 25 | programs.k9s = { 26 | enable = true; 27 | catppuccin = { 28 | enable = true; 29 | flavor = "macchiato"; 30 | }; 31 | }; 32 | }; 33 | }; 34 | } 35 | -------------------------------------------------------------------------------- /modules/development/vscode-server/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | lib, 3 | config, 4 | ... 5 | }: { 6 | options = { 7 | dc-tec.development = { 8 | vscode-server.enable = lib.mkEnableOption "VSCode Server"; 9 | }; 10 | }; 11 | 12 | config = lib.mkIf config.dc-tec.development.vscode-server.enable { 13 | programs.nix-ld.enable = true; 14 | home-manager.users.roelc = { 15 | imports = [ 16 | "${fetchTarball { 17 | url = "https://github.com/msteen/nixos-vscode-server/tarball/master"; 18 | sha256 = "09j4kvsxw1d5dvnhbsgih0icbrxqv90nzf0b589rb5z6gnzwjnqf"; 19 | }}/modules/vscode-server/home.nix" 20 | ]; 21 | 22 | services.vscode-server.enable = true; 23 | }; 24 | }; 25 | } 26 | -------------------------------------------------------------------------------- /modules/development/yaml/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | config, 3 | lib, 4 | pkgs, 5 | ... 6 | }: { 7 | options.dc-tec.development.yamlls.enable = lib.mkEnableOption "yamlls"; 8 | 9 | config = lib.mkIf config.dc-tec.development.yamlls.enable { 10 | home-manager.users.roelc = { 11 | home.packages = with pkgs; [ 12 | yaml-language-server 13 | ]; 14 | }; 15 | }; 16 | } 17 | -------------------------------------------------------------------------------- /modules/graphical/applications/default.nix: -------------------------------------------------------------------------------- 1 | {...}: { 2 | imports = [ 3 | ./firefox 4 | ./obsidian 5 | ]; 6 | } 7 | -------------------------------------------------------------------------------- /modules/graphical/applications/obsidian/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | config, 3 | lib, 4 | pkgs, 5 | ... 6 | }: { 7 | options.dc-tec.graphical.applications.obsidian.enable = lib.mkEnableOption "obsidian"; 8 | 9 | config = lib.mkIf config.dc-tec.graphical.applications.obsidian.enable { 10 | environment.systemPackages = with pkgs; [ 11 | obsidian 12 | ]; 13 | }; 14 | } 15 | -------------------------------------------------------------------------------- /modules/graphical/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | config, 3 | lib, 4 | ... 5 | }: 6 | { 7 | imports = [ 8 | ./desktop 9 | ./xdg 10 | ./terminal 11 | ./theme 12 | ./applications 13 | ./sound 14 | ]; 15 | 16 | options.dc-tec.graphical = { 17 | enable = lib.mkEnableOption "graphical environment"; 18 | laptop = lib.mkEnableOption "laptop configuration"; 19 | }; 20 | 21 | # TODO: Create a nicer options structure 22 | config = lib.mkIf config.dc-tec.graphical.enable { 23 | dc-tec = { 24 | graphical = { 25 | hyprland.enable = lib.mkDefault true; 26 | hyprlock.enable = lib.mkDefault true; 27 | hyprpaper.enable = lib.mkDefault true; 28 | waybar.enable = lib.mkDefault true; 29 | swaync.enable = lib.mkDefault true; 30 | terminal.enable = lib.mkDefault true; 31 | xdg.enable = lib.mkDefault true; 32 | fuzzel.enable = lib.mkDefault true; 33 | key_management.enable = lib.mkDefault true; 34 | theme.enable = lib.mkDefault true; 35 | sound.enable = lib.mkDefault true; 36 | applications = { 37 | firefox.enable = lib.mkDefault true; 38 | obsidian.enable = lib.mkDefault true; 39 | }; 40 | }; 41 | }; 42 | }; 43 | } 44 | -------------------------------------------------------------------------------- /modules/graphical/desktop/_assets/lockscreen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dc-tec/nixos-config/8e068a43cc0efc43dbb3dcde26ee7797e83582ab/modules/graphical/desktop/_assets/lockscreen.png -------------------------------------------------------------------------------- /modules/graphical/desktop/_assets/wallpaper.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dc-tec/nixos-config/8e068a43cc0efc43dbb3dcde26ee7797e83582ab/modules/graphical/desktop/_assets/wallpaper.jpg -------------------------------------------------------------------------------- /modules/graphical/desktop/_assets/wlogout/lock-hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dc-tec/nixos-config/8e068a43cc0efc43dbb3dcde26ee7797e83582ab/modules/graphical/desktop/_assets/wlogout/lock-hover.png -------------------------------------------------------------------------------- /modules/graphical/desktop/_assets/wlogout/lock.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dc-tec/nixos-config/8e068a43cc0efc43dbb3dcde26ee7797e83582ab/modules/graphical/desktop/_assets/wlogout/lock.png -------------------------------------------------------------------------------- /modules/graphical/desktop/_assets/wlogout/logout-hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dc-tec/nixos-config/8e068a43cc0efc43dbb3dcde26ee7797e83582ab/modules/graphical/desktop/_assets/wlogout/logout-hover.png -------------------------------------------------------------------------------- /modules/graphical/desktop/_assets/wlogout/logout.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dc-tec/nixos-config/8e068a43cc0efc43dbb3dcde26ee7797e83582ab/modules/graphical/desktop/_assets/wlogout/logout.png -------------------------------------------------------------------------------- /modules/graphical/desktop/_assets/wlogout/power-hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dc-tec/nixos-config/8e068a43cc0efc43dbb3dcde26ee7797e83582ab/modules/graphical/desktop/_assets/wlogout/power-hover.png -------------------------------------------------------------------------------- /modules/graphical/desktop/_assets/wlogout/power.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dc-tec/nixos-config/8e068a43cc0efc43dbb3dcde26ee7797e83582ab/modules/graphical/desktop/_assets/wlogout/power.png -------------------------------------------------------------------------------- /modules/graphical/desktop/_assets/wlogout/restart-hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dc-tec/nixos-config/8e068a43cc0efc43dbb3dcde26ee7797e83582ab/modules/graphical/desktop/_assets/wlogout/restart-hover.png -------------------------------------------------------------------------------- /modules/graphical/desktop/_assets/wlogout/restart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dc-tec/nixos-config/8e068a43cc0efc43dbb3dcde26ee7797e83582ab/modules/graphical/desktop/_assets/wlogout/restart.png -------------------------------------------------------------------------------- /modules/graphical/desktop/_assets/wlogout/sleep-hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dc-tec/nixos-config/8e068a43cc0efc43dbb3dcde26ee7797e83582ab/modules/graphical/desktop/_assets/wlogout/sleep-hover.png -------------------------------------------------------------------------------- /modules/graphical/desktop/_assets/wlogout/sleep.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dc-tec/nixos-config/8e068a43cc0efc43dbb3dcde26ee7797e83582ab/modules/graphical/desktop/_assets/wlogout/sleep.png -------------------------------------------------------------------------------- /modules/graphical/desktop/default.nix: -------------------------------------------------------------------------------- 1 | { ... }: 2 | { 3 | imports = [ 4 | ./hyprland 5 | ./waybar 6 | ./hyprpaper 7 | ./hyprlock 8 | ./wlogout 9 | ./swaync 10 | ./fuzzel 11 | ./key_management 12 | ]; 13 | } 14 | -------------------------------------------------------------------------------- /modules/graphical/desktop/fuzzel/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | config, 3 | lib, 4 | pkgs, 5 | ... 6 | }: { 7 | options.dc-tec.graphical.fuzzel = { 8 | enable = lib.mkEnableOption "fuzzel"; 9 | }; 10 | 11 | config = lib.mkIf config.dc-tec.graphical.fuzzel.enable { 12 | home-manager.users.roelc = { 13 | home.packages = with pkgs; [ 14 | papirus-icon-theme 15 | ]; 16 | 17 | programs.fuzzel = { 18 | enable = true; 19 | settings = { 20 | main = { 21 | terminal = "${pkgs.kitty}/bin/kitty"; 22 | layer = "overlay"; 23 | icon-theme = "Papirus-Dark"; 24 | prompt = " "; 25 | font = "0xProto Nerd Font"; 26 | }; 27 | colors = { 28 | background = "24273add"; 29 | text = "cad3f5ff"; 30 | selection = "5b6078ff"; 31 | selection-text = "cad3f5ff"; 32 | border = "b7bdf8ff"; 33 | match = "ed8796ff"; 34 | selection-match = "ed8796ff"; 35 | }; 36 | border = { 37 | radius = "10"; 38 | width = "1"; 39 | }; 40 | dmenu = { 41 | exit-immediately-if-empty = "yes"; 42 | }; 43 | }; 44 | }; 45 | }; 46 | }; 47 | } 48 | -------------------------------------------------------------------------------- /modules/graphical/desktop/hyprland/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | config, 3 | lib, 4 | pkgs, 5 | inputs, 6 | ... 7 | }: { 8 | options.dc-tec.graphical.hyprland = { 9 | enable = lib.mkEnableOption "hyprlandwm"; 10 | }; 11 | 12 | config = lib.mkIf config.dc-tec.graphical.hyprland.enable { 13 | environment.systemPackages = [ 14 | pkgs.wl-clipboard 15 | pkgs.slurp 16 | pkgs.grim 17 | ]; 18 | 19 | nix.settings = { 20 | substituters = ["https://hyprland.cachix.org"]; 21 | trusted-public-keys = ["hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc="]; 22 | }; 23 | 24 | services = { 25 | xserver = { 26 | videoDrivers = ["nvidia"]; 27 | }; 28 | displayManager = { 29 | sddm = { 30 | enable = true; 31 | package = pkgs.kdePackages.sddm; 32 | wayland = { 33 | enable = true; 34 | }; 35 | settings = { 36 | Wayland = { 37 | SessionDir = "${inputs.hyprland.packages.${pkgs.system}.hyprland}/share/wayland-sessions"; 38 | }; 39 | }; 40 | catppuccin = { 41 | enable = true; 42 | assertQt6Sddm = true; 43 | flavor = "macchiato"; 44 | font = "0xProto Nerd Font"; 45 | fontSize = "12"; 46 | loginBackground = true; 47 | }; 48 | }; 49 | }; 50 | }; 51 | 52 | home-manager.users.roelc = {pkgs, ...}: { 53 | home.packages = with pkgs; [ 54 | qt5.qtwayland 55 | qt6.qtwayland 56 | ]; 57 | 58 | services = { 59 | cliphist = { 60 | enable = true; 61 | }; 62 | }; 63 | 64 | ## Took some stuff from the end4 dots config @ https://github.com/end-4/dots-hyprland/blob/main/.config/hypr/hyprland/general.conf 65 | wayland.windowManager.hyprland = { 66 | enable = true; 67 | catppuccin.enable = true; 68 | xwayland = { 69 | enable = true; 70 | }; 71 | 72 | package = inputs.hyprland.packages.${pkgs.system}.hyprland; 73 | 74 | settings = { 75 | "$terminal" = "kitty"; 76 | "$mod" = "SUPER"; 77 | 78 | monitor = [ 79 | # "eDP-1, 1920x1080, 0x0, 1" 80 | ",prefered,auto,1" 81 | ]; 82 | 83 | xwayland = { 84 | force_zero_scaling = true; 85 | }; 86 | 87 | general = { 88 | gaps_in = 6; 89 | gaps_out = 6; 90 | border_size = 2; 91 | layout = "dwindle"; 92 | allow_tearing = true; 93 | }; 94 | 95 | input = { 96 | kb_layout = "us"; 97 | follow_mouse = true; 98 | touchpad = { 99 | natural_scroll = true; 100 | }; 101 | accel_profile = "flat"; 102 | sensitivity = 0; 103 | }; 104 | 105 | decoration = { 106 | rounding = 15; 107 | active_opacity = 0.9; 108 | inactive_opacity = 0.8; 109 | fullscreen_opacity = 0.9; 110 | 111 | blur = { 112 | enabled = true; 113 | xray = true; 114 | special = false; 115 | new_optimizations = true; 116 | size = 14; 117 | passes = 4; 118 | brightness = 1; 119 | noise = 0.01; 120 | contrast = 1; 121 | popups = true; 122 | popups_ignorealpha = 0.6; 123 | ignore_opacity = false; 124 | }; 125 | 126 | drop_shadow = true; 127 | shadow_ignore_window = true; 128 | shadow_range = 20; 129 | shadow_offset = "0 2"; 130 | shadow_render_power = 4; 131 | }; 132 | 133 | animations = { 134 | enabled = true; 135 | bezier = [ 136 | "linear, 0, 0, 1, 1" 137 | "md3_standard, 0.2, 0, 0, 1" 138 | "md3_decel, 0.05, 0.7, 0.1, 1" 139 | "md3_accel, 0.3, 0, 0.8, 0.15" 140 | "overshot, 0.05, 0.9, 0.1, 1.1" 141 | "crazyshot, 0.1, 1.5, 0.76, 0.92" 142 | "hyprnostretch, 0.05, 0.9, 0.1, 1.0" 143 | "menu_decel, 0.1, 1, 0, 1" 144 | "menu_accel, 0.38, 0.04, 1, 0.07" 145 | "easeInOutCirc, 0.85, 0, 0.15, 1" 146 | "easeOutCirc, 0, 0.55, 0.45, 1" 147 | "easeOutExpo, 0.16, 1, 0.3, 1" 148 | "softAcDecel, 0.26, 0.26, 0.15, 1" 149 | "md2, 0.4, 0, 0.2, 1" 150 | ]; 151 | animation = [ 152 | "windows, 1, 3, md3_decel, popin 60%" 153 | "windowsIn, 1, 3, md3_decel, popin 60%" 154 | "windowsOut, 1, 3, md3_accel, popin 60%" 155 | "border, 1, 10, default" 156 | "fade, 1, 3, md3_decel" 157 | "layersIn, 1, 3, menu_decel, slide" 158 | "layersOut, 1, 1.6, menu_accel" 159 | "fadeLayersIn, 1, 2, menu_decel" 160 | "fadeLayersOut, 1, 4.5, menu_accel" 161 | "workspaces, 1, 7, menu_decel, slide" 162 | "specialWorkspace, 1, 3, md3_decel, slidevert" 163 | ]; 164 | }; 165 | 166 | cursor = { 167 | enable_hyprcursor = true; 168 | }; 169 | 170 | dwindle = { 171 | pseudotile = true; 172 | preserve_split = true; 173 | no_gaps_when_only = 0; 174 | smart_split = false; 175 | smart_resizing = false; 176 | }; 177 | 178 | misc = { 179 | disable_hyprland_logo = true; 180 | disable_splash_rendering = true; 181 | }; 182 | 183 | bind = [ 184 | # General 185 | "$mod, return, exec, $terminal" 186 | "$mod SHIFT, q, killactive" 187 | "$mod SHIFT, e, exit" 188 | "$mod SHIFT, l, exec, ${pkgs.hyprlock}/bin/hyprlock" 189 | 190 | # Screen focus 191 | "$mod, v, togglefloating" 192 | "$mod, u, focusurgentorlast" 193 | "$mod, tab, focuscurrentorlast" 194 | "$mod, f, fullscreen" 195 | 196 | # Screen resize 197 | "$mod CTRL, h, resizeactive, -20 0" 198 | "$mod CTRL, l, resizeactive, 20 0" 199 | "$mod CTRL, k, resizeactive, 0 -20" 200 | "$mod CTRL, j, resizeactive, 0 20" 201 | 202 | # Workspaces 203 | "$mod, 1, workspace, 1" 204 | "$mod, 2, workspace, 2" 205 | "$mod, 3, workspace, 3" 206 | "$mod, 4, workspace, 4" 207 | "$mod, 5, workspace, 5" 208 | "$mod, 6, workspace, 6" 209 | "$mod, 7, workspace, 7" 210 | "$mod, 8, workspace, 8" 211 | "$mod, 9, workspace, 9" 212 | "$mod, 0, workspace, 10" 213 | 214 | # Move to workspaces 215 | "$mod SHIFT, 1, movetoworkspace,1" 216 | "$mod SHIFT, 2, movetoworkspace,2" 217 | "$mod SHIFT, 3, movetoworkspace,3" 218 | "$mod SHIFT, 4, movetoworkspace,4" 219 | "$mod SHIFT, 5, movetoworkspace,5" 220 | "$mod SHIFT, 6, movetoworkspace,6" 221 | "$mod SHIFT, 7, movetoworkspace,7" 222 | "$mod SHIFT, 8, movetoworkspace,8" 223 | "$mod SHIFT, 9, movetoworkspace,9" 224 | "$mod SHIFT, 0, movetoworkspace,10" 225 | 226 | # Navigation 227 | "$mod, h, movefocus, l" 228 | "$mod, l, movefocus, r" 229 | "$mod, k, movefocus, u" 230 | "$mod, j, movefocus, d" 231 | 232 | # Applications 233 | "$mod ALT, f, exec, ${pkgs.firefox}/bin/firefox" 234 | "$mod ALT, e, exec, $terminal --hold -e ${pkgs.yazi}/bin/yazi" 235 | "$mod ALT, o, exec, ${pkgs.obsidian}/bin/obsidian" 236 | "$mod, r, exec, pkill fuzzel || ${pkgs.fuzzel}/bin/fuzzel" 237 | "$mod ALT, r, exec, pkill anyrun || ${pkgs.anyrun}/bin/anyrun" 238 | "$mod ALT, n, exec, swaync-client -t -sw" 239 | 240 | # Clipboard 241 | "$mod ALT, v, exec, pkill fuzzel || cliphist list | fuzzel --no-fuzzy --dmenu | cliphist decode | wl-copy" 242 | 243 | # Screencapture 244 | "$mod, S, exec, ${pkgs.grim}/bin/grim | wl-copy" 245 | "$mod SHIFT+ALT, S, exec, ${pkgs.grim}/bin/grim -g \"$(slurp)\" - | ${pkgs.swappy}/bin/swappy -f -" 246 | ]; 247 | 248 | bindm = [ 249 | "$mod, mouse:272, movewindow" 250 | "$mod, mouse:273, resizewindow" 251 | ]; 252 | 253 | env = [ 254 | "NIXOS_OZONE_WL,1" 255 | "_JAVA_AWT_WM_NONREPARENTING,1" 256 | "QT_WAYLAND_DISABLE_WINDOWDECORATION,1" 257 | "QT_QPA_PLATFORM,wayland" 258 | "SDL_VIDEODRIVER,wayland" 259 | "GDK_BACKEND,wayland" 260 | "LIBVA_DRIVER_NAME,nvidia" 261 | "XDG_SESSION_TYPE,wayland" 262 | "XDG_SESSION_DESKTOP,Hyprland" 263 | "XDG_CURRENT_DESKTOP,Hyprland" 264 | "GBM_BACKEND,nvidia-drm" 265 | "__GLX_VENDOR_LIBRARY_NAME,nvidia" 266 | ]; 267 | exec-once = [ 268 | "${pkgs.hyprpaper}/bin/hyprpaper" 269 | "${pkgs.wl-clipboard}/bin/wl-paste --type text --watch cliphist store" 270 | "${pkgs.wl-clipboard}/bin/wl-paste --type image --watch cliphist store" 271 | "eval $(gnome-keyring-daemon --start --components=secrets,ssh,gpg,pkcs11)" 272 | "dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP &" 273 | "hash dbus-update-activation-environment 2>/dev/null" 274 | "export SSH_AUTH_SOCK" 275 | "${pkgs.plasma5Packages.polkit-kde-agent}/libexec/polkit-kde-authentication-agent-1" 276 | ]; 277 | }; 278 | systemd = { 279 | enable = true; 280 | }; 281 | }; 282 | }; 283 | }; 284 | } 285 | -------------------------------------------------------------------------------- /modules/graphical/desktop/hyprlock/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | pkgs, 3 | config, 4 | lib, 5 | ... 6 | }: { 7 | options.dc-tec.graphical.hyprlock = { 8 | enable = lib.mkEnableOption "hyprlock"; 9 | }; 10 | 11 | config = lib.mkIf config.dc-tec.graphical.hyprlock.enable { 12 | home-manager.users.roelc = { 13 | home.packages = [pkgs.hyprlock]; 14 | 15 | xdg.configFile."hypr/hyprlock.conf".text = '' 16 | general = { 17 | no_fade_in = false 18 | grace = 0 19 | disable_loading_bar = true 20 | } 21 | 22 | background { 23 | path = ${../_assets/lockscreen.png} 24 | blur_passes = 1; 25 | contrast = 0.8916; 26 | brightness = 0.8172; 27 | vibrancy = 0.1696; 28 | vibrancy_darkness = 0.0; 29 | } 30 | 31 | input-field { 32 | size = 250, 60 33 | outline_thickness = 2 34 | dots_size = 0.2 35 | dots_spacing = 0.2 36 | dots_center = true 37 | outer_color = rgba(0, 0, 0, 0) 38 | inner_color = rgba(0, 0, 0, 0.5) 39 | font_color = rgb(200, 200, 200) 40 | fade_on_empty = false 41 | placeholder_text = Feed me your secret... 42 | hide_input = false 43 | position = 0,0 44 | halign = center 45 | valign = center 46 | } 47 | 48 | lablel { 49 | font_family = 0xProto Nerd Font 50 | text = Yo..., Wassup! 51 | font_size = 25 52 | position = 0,300 53 | halign = center 54 | valign = center 55 | } 56 | ''; 57 | }; 58 | security.pam.services.hyprlock = {}; 59 | }; 60 | } 61 | -------------------------------------------------------------------------------- /modules/graphical/desktop/hyprpaper/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | config, 3 | lib, 4 | ... 5 | }: { 6 | options.dc-tec.graphical.hyprpaper = { 7 | enable = lib.mkEnableOption "hyprpaper"; 8 | }; 9 | 10 | config = lib.mkIf config.dc-tec.graphical.hyprpaper.enable { 11 | home-manager.users.roelc = { 12 | home.file.".config/hypr/hyprpaper.conf".text = '' 13 | preload = ${/. + ../_assets/wallpaper.jpg} 14 | wallpaper = ,${/. + ../_assets/wallpaper.jpg} 15 | splash = false 16 | ''; 17 | }; 18 | }; 19 | } 20 | -------------------------------------------------------------------------------- /modules/graphical/desktop/key_management/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | config, 3 | lib, 4 | pkgs, 5 | ... 6 | }: { 7 | options.dc-tec.graphical.key_management = { 8 | enable = lib.mkEnableOption "key management"; 9 | }; 10 | 11 | config = lib.mkIf config.dc-tec.graphical.key_management.enable { 12 | environment.systemPackages = [ 13 | pkgs.gnome-keyring 14 | ]; 15 | 16 | services = { 17 | gnome = { 18 | gnome-keyring.enable = true; 19 | }; 20 | }; 21 | 22 | programs = { 23 | seahorse.enable = true; 24 | }; 25 | 26 | security.pam.services = { 27 | sddm.enableGnomeKeyring.enable = true; 28 | }; 29 | }; 30 | } 31 | -------------------------------------------------------------------------------- /modules/graphical/desktop/waybar/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | config, 3 | lib, 4 | ... 5 | }: { 6 | options.dc-tec.graphical.waybar = { 7 | enable = lib.mkEnableOption "Waybar Status Bar"; 8 | }; 9 | 10 | config = lib.mkIf config.dc-tec.graphical.waybar.enable { 11 | home-manager.users.roelc = {pkgs, ...}: { 12 | programs.waybar = { 13 | enable = true; 14 | systemd.enable = true; 15 | settings = [ 16 | { 17 | layer = "top"; 18 | position = "top"; 19 | output = [ 20 | "DP-2" 21 | "HDMI-A-1" 22 | ]; 23 | modules-left = ["hyprland/workspaces"]; 24 | modules-center = ["hyprland/window"]; 25 | modules-right = ["custom/notifications" "network" "backlight" "battery" "clock" "tray" "custom/lock" "custom/power"]; 26 | 27 | "hyprland/workspaces" = { 28 | disable-scroll = true; 29 | sort-by-name = false; 30 | all-outputs = true; 31 | persistent-workspaces = { 32 | "Home" = []; 33 | "2" = []; 34 | "3" = []; 35 | "4" = []; 36 | "5" = []; 37 | "6" = []; 38 | "7" = []; 39 | "8" = []; 40 | "9" = []; 41 | "0" = []; 42 | }; 43 | }; 44 | 45 | "tray" = { 46 | icon-size = 21; 47 | spacing = 10; 48 | }; 49 | 50 | "clock" = { 51 | timezone = "Europe/Amsterdam"; 52 | tooltip-format = "{:%Y %B}\n{calendar}"; 53 | format-alt = " {:%d/%m/%Y}"; 54 | format = " {:%H:%M}"; 55 | }; 56 | 57 | "network" = { 58 | format-wifi = "{icon} ({signalStrength}%)  "; 59 | format-ethernet = "{ifname}: {ipaddr}/{cidr} 󰈀 "; 60 | format-linked = "{ifname} (No IP) 󰌘 "; 61 | format-disc = "Disconnected 󰟦 "; 62 | format-alt = "{ifname}: {ipaddr}/{cidr}"; 63 | }; 64 | 65 | "backlight" = { 66 | device = "intel_backlight"; 67 | format = "{icon}"; 68 | format-icons = ["" "" "" "" "" "" "" "" ""]; 69 | }; 70 | 71 | "battery" = { 72 | states = { 73 | warning = 30; 74 | critical = 15; 75 | }; 76 | format = "{icon}"; 77 | format-charging = "󰂄"; 78 | format-plugged = "󱟢"; 79 | format-alt = "{icon}"; 80 | format-icons = ["󰁺" "󰁻" "󰁼" "󰁽" "󰁾" "󰁿" "󰂀" "󰂁" "󰂂" "󰁹"]; 81 | }; 82 | 83 | ## https://github.com/Frost-Phoenix/nixos-config/blob/4d75ca005a820672a43db9db66949bd33f8fbe9c/modules/home/waybar/settings.nix#L116 84 | "custom/notifications" = { 85 | tooltip = false; 86 | format = "{icon} Notifications"; 87 | format-icons = { 88 | notification = "󱥁 "; 89 | none = "󰍥 "; 90 | dnd-notification = "󱙍 "; 91 | dnd-none = "󱙎 "; 92 | inhibited-notification = "󱥁 "; 93 | inhibited-none = "󰍥 "; 94 | dnd-inhibited-notification = "󱙍 "; 95 | dnd-inhibited-none = "󱙎 "; 96 | }; 97 | return-type = "json"; 98 | exec-if = "which swaync-client"; 99 | exec = "swaync-client -swb"; 100 | on-click = "swaync-client -t -sw"; 101 | on-click-right = "swaync-client -d -sw"; 102 | escape = true; 103 | }; 104 | ## 105 | 106 | "custom/lock" = { 107 | tooltip = false; 108 | on-click = "${pkgs.hyprlock}/bin/hyprlock"; 109 | format = " "; 110 | }; 111 | 112 | "custom/power" = { 113 | tooltip = false; 114 | on-click = "${pkgs.wlogout}/bin/wlogout &"; 115 | format = " "; 116 | }; 117 | } 118 | ]; 119 | 120 | style = '' 121 | * { 122 | font-family: '0xProto Nerd Font'; 123 | font-size: 18px; 124 | min-height: 0; 125 | } 126 | 127 | #waybar { 128 | background: transparent; 129 | color: @text; 130 | margin: 5px 5px; 131 | } 132 | 133 | #workspaces { 134 | border-radius: 1rem; 135 | margin: 5px; 136 | background-color: @surface0; 137 | margin-left: 1rem; 138 | } 139 | 140 | #workspaces button { 141 | color: @lavender; 142 | border-radius: 1rem; 143 | padding: 0.4rem; 144 | } 145 | 146 | #workspaces button.active { 147 | color: @peach; 148 | border-radius: 1rem; 149 | } 150 | 151 | #workspaces button:hover { 152 | color: @peach; 153 | border-radius: 1rem; 154 | } 155 | 156 | #custom-music, 157 | #tray, 158 | #backlight, 159 | #network, 160 | #clock, 161 | #battery, 162 | #custom-lock, 163 | #custom-notifications, 164 | #custom-power { 165 | background-color: @surface0; 166 | padding: 0.5rem 1rem; 167 | margin: 5px 0; 168 | } 169 | 170 | #clock { 171 | color: @blue; 172 | border-radius: 0px 1rem 1rem 0px; 173 | margin-right: 1rem; 174 | } 175 | 176 | #battery { 177 | color: @green; 178 | } 179 | 180 | #battery.charging { 181 | color: @green; 182 | } 183 | 184 | #battery.warning:not(.charging) { 185 | color: @red; 186 | } 187 | 188 | #backlight { 189 | color: @yellow; 190 | } 191 | 192 | #custom-notifications { 193 | border-radius: 1rem; 194 | margin-right: 1rem; 195 | color: @peach; 196 | } 197 | 198 | #network { 199 | border-radius: 1rem 0px 0px 1rem; 200 | color: @sky; 201 | } 202 | 203 | #custom-music { 204 | color: @mauve; 205 | border-radius: 1rem; 206 | } 207 | 208 | #custom-lock { 209 | border-radius: 1rem 0px 0px 1rem; 210 | color: @lavender; 211 | } 212 | 213 | #custom-power { 214 | margin-right: 1rem; 215 | border-radius: 0px 1rem 1rem 0px; 216 | color: @red; 217 | } 218 | 219 | #tray { 220 | margin-right: 1rem; 221 | border-radius: 1rem; 222 | } 223 | 224 | @define-color rosewater #f4dbd6; 225 | @define-color flamingo #f0c6c6; 226 | @define-color pink #f5bde6; 227 | @define-color mauve #c6a0f6; 228 | @define-color red #ed8796; 229 | @define-color maroon #ee99a0; 230 | @define-color peach #f5a97f; 231 | @define-color yellow #eed49f; 232 | @define-color green #a6da95; 233 | @define-color teal #8bd5ca; 234 | @define-color sky #91d7e3; 235 | @define-color sapphire #7dc4e4; 236 | @define-color blue #8aadf4; 237 | @define-color lavender #b7bdf8; 238 | @define-color text #cad3f5; 239 | @define-color subtext1 #b8c0e0; 240 | @define-color subtext0 #a5adcb; 241 | @define-color overlay2 #939ab7; 242 | @define-color overlay1 #8087a2; 243 | @define-color overlay0 #6e738d; 244 | @define-color surface2 #5b6078; 245 | @define-color surface1 #494d64; 246 | @define-color surface0 #363a4f; 247 | @define-color base #24273a; 248 | @define-color mantle #1e2030; 249 | @define-color crust #181926; 250 | ''; 251 | }; 252 | }; 253 | }; 254 | } 255 | -------------------------------------------------------------------------------- /modules/graphical/desktop/wlogout/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | config, 3 | lib, 4 | ... 5 | }: { 6 | config = lib.mkIf config.dc-tec.graphical.hyprland.enable { 7 | home-manager.users.roelc = {pkgs, ...}: { 8 | programs.wlogout = { 9 | enable = true; 10 | layout = [ 11 | { 12 | label = "lock"; 13 | action = "${pkgs.hyprlock}/bin/hyprlock"; 14 | text = "Lock"; 15 | keybind = "l"; 16 | } 17 | { 18 | label = "reboot"; 19 | action = "systemctl reboot"; 20 | text = "Reboot"; 21 | keybind = "r"; 22 | } 23 | { 24 | label = "shutdown"; 25 | action = "systemctl poweroff"; 26 | text = "Shutdown"; 27 | keybind = "s"; 28 | } 29 | { 30 | label = "logout"; 31 | action = "hyprctl dispatch exit 0"; 32 | text = "Logout"; 33 | keybind = "e"; 34 | } 35 | { 36 | label = "suspend"; 37 | action = "systemctl suspend"; 38 | text = "Suspend"; 39 | keybind = "u"; 40 | } 41 | ]; 42 | 43 | style = '' 44 | window { 45 | font-family: monospace; 46 | font-size: 14pt; 47 | color: #cdd6f4; /* text */ 48 | background-color: rgba(30, 30, 46, 0.5); 49 | } 50 | 51 | button { 52 | background-repeat: no-repeat; 53 | background-position: center; 54 | background-size: 25%; 55 | border: none; 56 | background-color: rgba(30, 30, 46, 0); 57 | margin: 5px; 58 | transition: box-shadow 0.2s ease-in-out, background-color 0.2s ease-in-out; 59 | } 60 | 61 | button:hover { 62 | background-color: rgba(49, 50, 68, 0.1); 63 | } 64 | 65 | button:focus { 66 | background-color: #f5a97f; 67 | color: #1e1e2e; 68 | } 69 | 70 | #lock { 71 | background-image: url("${/. + ../_assets/wlogout/lock.png}"); 72 | } 73 | #lock:focus { 74 | background-image: url("${/. + ../_assets/wlogout/lock-hover.png}"); 75 | } 76 | 77 | #logout { 78 | background-image: url("${/. + ../_assets/wlogout/logout.png}"); 79 | } 80 | 81 | #logout:focus { 82 | background-image: url("${/. + ../_assets/wlogout/logout-hover.png}"); 83 | } 84 | 85 | #suspend { 86 | background-image: url("${/. + ../_assets/wlogout/sleep.png}"); 87 | } 88 | 89 | #suspend:focus { 90 | background-image: url("${/. + ../_assets/wlogout/sleep-hover.png}"); 91 | } 92 | 93 | #shutdown { 94 | background-image:url("${/. + ../_assets/wlogout/power.png}"); 95 | } 96 | 97 | #shutdown:focus { 98 | background-image: url("${/. + ../_assets/wlogout/power-hover.png}"); 99 | } 100 | 101 | #reboot { 102 | background-image: url("${/. + ../_assets/wlogout/restart.png}"); 103 | } 104 | 105 | #reboot:focus { 106 | background-image: url("${/. + ../_assets/wlogout/restart-hover.png}"); 107 | } 108 | ''; 109 | }; 110 | }; 111 | }; 112 | } 113 | -------------------------------------------------------------------------------- /modules/graphical/sound/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | config, 3 | lib, 4 | ... 5 | }: { 6 | options.dc-tec.graphical.sound = { 7 | enable = lib.mkEnableOption "Sound"; 8 | }; 9 | 10 | config = lib.mkIf config.dc-tec.graphical.sound.enable { 11 | security = { 12 | rtkit.enable = true; 13 | }; 14 | 15 | environment.etc = { 16 | "wireplumber/bluetooth.lua.d/51-bluez-config.lua".text = '' 17 | bluez_monitor.properties = { 18 | ["bluez5.enable-sbc-xq"] = true, 19 | ["bluez5.enable-msbc"] = true, 20 | ["bluez5.enable-hw-volume"] = true, 21 | ["bluez5.headset-roles"] = "[ hsp_hs hsp_ag hfp_hf hfp_ag ]" 22 | } 23 | ''; 24 | }; 25 | 26 | hardware = { 27 | bluetooth = { 28 | enable = true; 29 | settings = { 30 | General = { 31 | Enable = "Control,Gateway,Headset,Media,Sink,Socket,Source"; 32 | MultiProfile = "multiple"; 33 | }; 34 | }; 35 | }; 36 | pulseaudio.enable = false; 37 | }; 38 | 39 | services.pipewire = { 40 | enable = true; 41 | audio.enable = true; 42 | alsa.enable = true; 43 | alsa.support32Bit = true; 44 | pulse.enable = true; 45 | wireplumber.enable = true; 46 | #jack.enable = true; 47 | }; 48 | }; 49 | } 50 | -------------------------------------------------------------------------------- /modules/graphical/terminal/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | config, 3 | lib, 4 | ... 5 | }: { 6 | options.dc-tec.graphical.terminal.enable = lib.mkEnableOption "terminal"; 7 | 8 | config = lib.mkIf config.dc-tec.graphical.terminal.enable { 9 | home-manager.users.roelc = {pkgs, ...}: { 10 | programs.kitty = { 11 | enable = true; 12 | catppuccin.enable = true; 13 | font = { 14 | name = "0xProto Nerd Font"; 15 | size = 10; 16 | }; 17 | settings = { 18 | enable_audio_bell = false; 19 | enable_visual_bell = false; 20 | remember_window_size = false; 21 | confirm_os_window_close = 0; 22 | disable_ligatures = "always"; 23 | 24 | # Font config 25 | font_family = "0xProto Nerd Font"; 26 | adjust_line_height = 3; 27 | 28 | # Window config 29 | window_margin_width = 5; 30 | single_window_margin_width = -1; 31 | }; 32 | #extraConfig = '' 33 | # modify_font cell_height 103% 34 | #''; 35 | }; 36 | }; 37 | }; 38 | } 39 | -------------------------------------------------------------------------------- /modules/graphical/theme/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | config, 3 | lib, 4 | pkgs, 5 | ... 6 | }: 7 | { 8 | options.dc-tec.graphical.theme = { 9 | enable = lib.mkOption { 10 | default = true; 11 | }; 12 | }; 13 | 14 | config = lib.mkIf config.dc-tec.graphical.theme.enable { 15 | fonts = { 16 | enableDefaultPackages = true; 17 | fontDir = { 18 | enable = true; 19 | }; 20 | fontconfig = { 21 | enable = true; 22 | defaultFonts = { 23 | monospace = [ "0xProto Nerd Font" ]; 24 | sansSerif = [ "0xProto Nerd Font" ]; 25 | serif = [ "0xProto Nerd Font" ]; 26 | }; 27 | }; 28 | packages = with pkgs; [ 29 | nerd-fonts._0xProto 30 | ]; 31 | }; 32 | 33 | programs.dconf.enable = true; 34 | 35 | home-manager.users.roelc = 36 | { pkgs, ... }: 37 | { 38 | catppuccin = { 39 | pointerCursor = { 40 | enable = true; 41 | accent = "dark"; 42 | flavor = "macchiato"; 43 | }; 44 | }; 45 | 46 | gtk = { 47 | enable = true; 48 | gtk2.extraConfig = "gtk-application-prefer-dark-theme = true;"; 49 | gtk3.extraConfig.gtk-application-prefer-dark-theme = true; 50 | 51 | font = { 52 | name = "0xProto Nerd Font"; 53 | size = 10; 54 | }; 55 | 56 | catppuccin = { 57 | flavor = "macchiato"; 58 | accent = "peach"; 59 | size = "compact"; 60 | #icon = { 61 | # enable = true; 62 | # flavor = "macchiato"; 63 | # accent = "peach"; 64 | #}; 65 | }; 66 | }; 67 | 68 | qt = { 69 | enable = true; 70 | platformTheme.name = "gtk"; 71 | }; 72 | }; 73 | }; 74 | } 75 | -------------------------------------------------------------------------------- /modules/graphical/xdg/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | config, 3 | lib, 4 | pkgs, 5 | ... 6 | }: { 7 | options.dc-tec.graphical.xdg.enable = lib.mkEnableOption "xdg folders"; 8 | 9 | config = lib.mkIf config.dc-tec.graphical.xdg.enable { 10 | dc-tec.core.zfs.homeDataLinks = ["documents" "music" "pictures" "videos"]; 11 | dc-tec.core.zfs.homeCacheLinks = ["downloads" "projects"]; 12 | 13 | xdg = { 14 | portal = { 15 | enable = true; 16 | wlr.enable = true; 17 | extraPortals = with pkgs; [xdg-desktop-portal-hyprland]; 18 | configPackages = with pkgs; [xdg-desktop-portal-hyprland]; 19 | }; 20 | }; 21 | 22 | home-manager.users.roelc = {pkgs, ...}: { 23 | home.packages = with pkgs; [xdg-user-dirs xdg-utils]; 24 | xdg = { 25 | enable = true; 26 | userDirs = { 27 | enable = true; 28 | desktop = "$HOME/desktop"; 29 | documents = "$HOME/documents"; 30 | download = "$HOME/downloads"; 31 | music = "$HOME/music"; 32 | pictures = "$HOME/pictures"; 33 | publicShare = "$HOME/desktop"; 34 | templates = "$HOME/templates"; 35 | videos = "$HOME/videos"; 36 | }; 37 | }; 38 | }; 39 | }; 40 | } 41 | -------------------------------------------------------------------------------- /modules/wsl/default.nix: -------------------------------------------------------------------------------- 1 | {...}: { 2 | imports = [ 3 | ./services 4 | ./users 5 | ]; 6 | } 7 | -------------------------------------------------------------------------------- /modules/wsl/services/default.nix: -------------------------------------------------------------------------------- 1 | _: { 2 | systemd.services."enable-wsl-vpnkit" = { 3 | description = "Enable wsl vpnkit"; 4 | wantedBy = ["multi-user.target"]; 5 | serviceConfig = { 6 | ExecStart = "/mnt/c/Windows/system32/wsl.exe -d wsl-vpnkit --cd /app wsl-vpnkit"; 7 | Restart = "always"; 8 | KillMode = "mixed"; 9 | }; 10 | }; 11 | } 12 | -------------------------------------------------------------------------------- /modules/wsl/users/default.nix: -------------------------------------------------------------------------------- 1 | _: { 2 | users = { 3 | mutableUsers = true; 4 | users = { 5 | roelc = { 6 | isNormalUser = true; 7 | home = "/home/roelc"; 8 | extraGroups = ["systemd-journal"]; 9 | }; 10 | }; 11 | }; 12 | } 13 | -------------------------------------------------------------------------------- /overlays/default.nix: -------------------------------------------------------------------------------- 1 | {inputs, ...}: { 2 | additions = final: prev: import ../pkgs {pkgs = final;}; 3 | stable-packages = final: prev: { 4 | stable = import inputs.nixpkgs-stable {system = final.system;}; 5 | }; 6 | } 7 | -------------------------------------------------------------------------------- /pkgs/default.nix: -------------------------------------------------------------------------------- 1 | {pkgs, ...}: { 2 | dc-tec = { 3 | niks-cli = pkgs.callPackage ./niks {}; 4 | }; 5 | } 6 | -------------------------------------------------------------------------------- /pkgs/niks/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | fetchFromGitHub, 3 | buildGoModule, 4 | ... 5 | }: 6 | buildGoModule { 7 | pname = "niks"; 8 | version = "0.0.1"; 9 | 10 | src = fetchFromGitHub { 11 | owner = "dc-tec"; 12 | repo = "niks-cli"; 13 | rev = "main"; 14 | sha256 = "sha256-rS99ZYBE6TtznKKRFjfzHI+pNzM8zXlcLvHUqfletz8="; 15 | }; 16 | 17 | vendorHash = null; 18 | } 19 | -------------------------------------------------------------------------------- /secrets/secrets.yaml: -------------------------------------------------------------------------------- 1 | users: 2 | roelc: ENC[AES256_GCM,data:8UiCjZvQR+cov2WEn5Sjf8FzuXWf2DR875pJN7rMbHj674SW7HJ8GF8jyXQO5CaFSTw7lQQaoC7oYwQKopXuWzUmverBJnGmUA==,iv:XJZl2f1CITs2mHjmHN2uq/JVgzIieUtbwdx3Wwhcs9U=,tag:3LFuOdoRh1PfpeeFRX0xaQ==,type:str] 3 | root: ENC[AES256_GCM,data:+cbBbTehEvNsG3wU9wHf4aG7PJ8S/9jNY5noMuEK4RIH0yd1nhP9QdWiteI40PO9U6euUFPeTrx66ZdJd84rqHP38DZCR5/pjQ==,iv:FuvEFXllyKwKusJP+f7h7wOUp4ddmhXvwL2TujV630Q=,tag:6h9C3CVlQnLhUr8JzLhChw==,type:str] 4 | wireless: ENC[AES256_GCM,data:ZhdHrjnTME8I+Sk5qCOMUqUMayrrPgGBEgChl0f28cTpsfDsMlW8YL1xzR/ntA==,iv:HD3kLHaAGzRCKZPe1+Tsqf4c4YVZIhdCMqkrNw7m1qA=,tag:kOagAA4exqNfYc+95Hmt7g==,type:str] 5 | authorized_keys: 6 | root: ENC[AES256_GCM,data:e+ijVQglbpsSGUCyLXgtnPjwkykADXEvDPSQvuHdzcP7ORR0ASPE4fQongNKviBOdZK/Od2VEigCNXP/QAkEjQHGMtpss3GVJx9U46ySCRg=,iv:xAeUqvdpr4W8/N4tEMEzRZJaAJbRRmNfWHl1SusnAyM=,tag:BmAC752q2xE2OyHZ7o7rxA==,type:str] 7 | roelc: ENC[AES256_GCM,data:Sv/fatsspoRmsGytmFL/AHVTIoe7BZOWMl64L0qKBnCYnND3HpJc2iaRDSl/WOZ7AfTpDDvmo/37KIYgoZUrxLmPRpfJoChgZmUxskoQuz0=,iv:QUs5qKiaxZycU3c7upXjFsTikvt7pu4JjDOOm85pFAk=,tag:sHY7T9nsync+ageGZQ6tXA==,type:str] 8 | sops: 9 | kms: [] 10 | gcp_kms: [] 11 | azure_kv: [] 12 | hc_vault: [] 13 | age: 14 | - recipient: age1k2kr92m8nad59shnvv07t4v54zpu9lrxmnj8a4vm36vgvhn36c6sqp50kc 15 | enc: | 16 | -----BEGIN AGE ENCRYPTED FILE----- 17 | YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBNT1c3QTgyQ2Zjei9XbE9K 18 | UGRnR0pzMlpWRjRzN2V6TFRFVU1XL2NIMnpBCkpVOUxiN1Iwb2lsZVlKbXhXeE5R 19 | aWpFbzdrbmVxTEZnOUpYdXFMYW1PNE0KLS0tIExDTUFqd2xLbUlxY0dxSXVtUGtD 20 | cGxWUVhiQ0Jzcm4rZk5hZmxzQWI5Mk0KpxBvKWniZHOn5hfPE6Ifn1rBzVKd25i/ 21 | vjdiMP2grQ5KdlKVOyvFQ9w/Q0Bv0NUWE5ct4nMB6brQUnCLwv8uIw== 22 | -----END AGE ENCRYPTED FILE----- 23 | - recipient: age1j4a6glrt7yrg0yqepqr0yf5448tzqgdandkx44zrac8084u4t95qgslcx0 24 | enc: | 25 | -----BEGIN AGE ENCRYPTED FILE----- 26 | YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBlb3RJQjBEcGw5RXAwN0p5 27 | YVJhMHk2M3hhRUUwRGZMQ1pqaGtWR2pmREg4CmtBQThld0VFdXlUYi9IRnp4SnlH 28 | WWZqRjZ6d1p3S1NYTmRCcEpLazMvVDgKLS0tIHh5Rnd1K2FZd2p2aDVLQ0hQS1p2 29 | ckpZSG4xaFNvMmtTSGlIc25Xb0ZJYzAKRxqFcO9xOEXY2W5hgzx8PQS5hgB5JqNF 30 | b1d/tUOfU9G4OE1SXO8NoXHeREIgn0XkTxpDDUGx3E1SIy9dlm0qqw== 31 | -----END AGE ENCRYPTED FILE----- 32 | - recipient: age1t0f9fte5lnyjqpy0x05mg4wzg5nk7gpudtnc5369k6fzuzk0dcyqkr8j80 33 | enc: | 34 | -----BEGIN AGE ENCRYPTED FILE----- 35 | YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBDeWIwTWZ6WXlndkNrWmtT 36 | LzZMWUtQSFRobUJlOVNqcEtGcXc5cUF3S0JNCjg0QXovZ0ZsMmVxT1AyR25qMWF3 37 | aGtISFNzWEhoWDNRN2FaZm9ZZER4SG8KLS0tIElMemhnYVZXRW9SditTTkhBUFFm 38 | ZlNub3pLRno5Nzh1VG1LT1h0OEgyaWsK1eLFwXzmwiCZrqHDULbi3fneOPNlsTSs 39 | kJZgoXUANP6SXNcBs9vuM1AOML1rm7KpyHlR1qJwCu4V01LeuN9wCA== 40 | -----END AGE ENCRYPTED FILE----- 41 | lastmodified: "2024-05-04T23:01:37Z" 42 | mac: ENC[AES256_GCM,data:Mk2DWj0bwcNlevnR51FnFQznTTJfCdY6w6aG+FcEQUFn23PCJVRJJWVPobveH6C590UGkJoWcMmJcl1dy4ZY75IDbfwAkdM1Q9s8X4YRwvFpmQzoljQ+eTYGCvBNSz5iTDHZk3fhhGR3rksd/eJVc2h0tLYBAOa0v59LUIlCjX4=,iv:BKFmT8A3WbYjhKAGfHzza/9CldQlH69Lf9PP0zSlOIE=,tag:u/71E8s3xTcmM5Y7tPExbg==,type:str] 43 | pgp: [] 44 | unencrypted_suffix: _unencrypted 45 | version: 3.8.1 46 | --------------------------------------------------------------------------------