Nix Flakes configuration for MacOS, NixOS and WSL
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

feat: v2

+765 -1707
+38 -49
README.md
··· 1 1 <div align="center"> 2 - <h1> Asgard </h1> 2 + <h1> dotfiles </h1> 3 3 </div> 4 4 5 5 This configuration is under constant construction so some things may be remove or add accordings to my needs but i want to keep all even if it's not used anymore. 6 6 7 - This repository follow the KISS principle and the suckless idea at this moment, but feel free to propose improvement and to help me understand better how nix work. 7 + This repository follow the KISS principle and the suckless idea at this moment, but feel free to propose improvement. 8 8 9 9 > [!IMPORTANT] 10 - > This configuration is make for our purpose, you can take inspiration and some configuration but do not expect it to work on your side.🙂 10 + > Since this configuration is made for my own needs, you can take inspiration and some configuration but do not expect it to work on your side. 11 11 > 12 - > Any damage caused by this configuration is not our responsibility. Use it at your own risks. 12 + > Any damage caused by this configuration is not my responsibility, so use it at your own risks. 13 13 14 14 ## ✨️ - Features 15 15 ··· 19 19 - [x] Nix Darwin 20 20 - [ ] Nix BSD 21 21 - [ ] WSL 22 - - [ ] Homelab with MicroVM 23 - - [ ] Secrets management with Agenix 24 - - [ ] Secure Boot with lanzaboot 25 - - [ ] Persistant storage with impermanence 26 - - [ ] Disk configuration with disko 22 + - [ ] MicroWM for servers 23 + - [ ] Secrets management 24 + - [ ] Secure Boot 25 + - [ ] Persistant storage 26 + - [ ] Disk configuration 27 27 - [ ] Encrypted disks 28 - - [x] Default on stable channel and have unstable as an overlay (take from [here](https://github.com/AlexNabokikh/nix-config)) 29 - - [x] Home Manager for dotfiles management 28 + - [ ] Home management 30 29 - [ ] Custom live ISO 31 30 - [ ] Auto-updating flakes 32 31 33 32 ## 💻 - Hosts 34 33 35 - | Hostname | Motherboard | CPU | GPU | RAM | OS | Usage | Status | 36 - | :--------: | :-------------------------------: | :------------------: | :---------------: | :--: | :-: | :-------: | :----: | 37 - | `njord` | - | Apple M2 Pro Chip | Apple M2 Pro Chip | 32Go | 🍎️ | ⌨ | 🟢️ | 38 - | `loki` | ASUS ROG STRIX B760-I GAMING WIFI | Intel i5 13600kf | Nvidia 4070ti | 32Go | ❄️ | 🎮️ / 🎭️ | 🟢️ | 39 - | `nyx` | Aorus B450 Elite | AMD Ryzen 3 3300X | Nvidia 1060 | 16GO | ❄️ | 🎮️ / ⌨️ | 🟢️ | 40 - | `beowulf` | HP ProDesk 400 G1 DM | Intel Pentium G3250T | - | 8Go | ❄️ | 💾️ | 🟠 | 41 - | `vali` | WSL | Intel i5-1135G7 | - | 16Go | ❄️ | ⌨️ | 🟠 | 34 + | Hostname | Motherboard | CPU | GPU | RAM | OS | Usage | Status | 35 + | :----------- | :-------------------------------- | :------------------- | :---------------- | :--: | :-: | :------: | :----: | 36 + | `hydrogen` | ASUS ROG STRIX B760-I GAMING WIFI | Intel i5 13600kf | Nvidia 4070ti | 32Go | ❄️ | 🎮️ | 🟢️ | 37 + | `helium` | - | Apple M2 Pro | Apple M2 Pro | 32Go | 🍎️ | ⌨️ | 🟢️ | 38 + | `lithium` | Raspberry Pi4 b+ | - | - | 1Go | ❄️ | 🧨️ | 🟠 | 39 + | `beryllium` | WSL | Intel i5-1135G7 | - | 8Go | ❄️ | ⌨️ | 🔴 | 40 + | `boron` | Aorus B450 Elite | AMD Ryzen 3 3300X | Nvidia 1060 | 16Go | ❄️ | 🎮️ / ⌨️ | 🔴 | 41 + | `carbon` | HP ProDesk 400 G1 DM | Intel Pentium G3250T | - | 8Go | ❄️ | 💾️ | 🔴 | 42 + | `nitrogen` | MSI B450-A Pro Max | AMD Ryzen 5 3600x | Nvidia 1660ti | 16Go | ❄️ | 🎮️ | 🔴 | 42 43 43 44 <details> 44 45 <summary>Legend</summary> ··· 55 56 - 👹️ : FreeBSD with [NixBSD](https://github.com/nixos-bsd/nixbsd) 56 57 </details> 57 58 58 - ## 📦 - Structure 59 + ## 📦 - Folder structure 59 60 60 61 ``` 61 62 . 62 - ├── homes # User home configuration 63 - │ ├── _shared # Shared dotfiles between user configuration 64 - │ │ └── <username> 65 - │ └── <system> 63 + ├── homes # User home configuration 64 + │ ├── <username> 65 + │ │ ├── commons 66 66 │ │ └── <hostname> 67 - │ │ │ └── <username> # User host specific dotfiles 68 - ├── hosts # Host-specific configuration 69 - │ └── <system> 67 + ├── hosts # Host-specific configuration 68 + │ └── <os> # Darwin or NixOS 70 69 │ │ └── <hostname> 71 - ├── lib # Custom functions needed to help configure 72 - ├── modules # macOS and nix-darwin, NixOS, and shared configuration 73 - │ ├── shared # Shared modules across all platforms 74 - │ ├── nixos # Nixos modules 75 - │ ├── darwin # MacOS modules 76 - │ └── bsd # FreeBSD modules 77 - └── overlays # Helping overlays for building wanted packages 70 + ├── lib # Custom functions needed to help configure 71 + ├── modules # macOS and nix-darwin, NixOS, and shared configuration 72 + │ ├── commons 73 + │ ├── nixos 74 + │ ├── darwin 75 + │ └── bsd 76 + ├── overlays 77 + └── templates 78 78 ``` 79 79 80 - ## 💡 - Acknowledgments 80 + ### 📚️ - Acknowledgments 81 81 82 82 These are the things that help me the most to understand Nix ecosystem and help me build my configuration from scratch. 83 83 84 - ### 📚️ - Learning 84 + You can retrieve dotfiles that inspired me inside my [`dotfiles` star list](https://github.com/stars/Cosmeak/lists/useful-dotfiles). 85 85 86 86 - [Flakes book](https://nixos-and-flakes.thiscute.world/) 87 87 - [Nix Language](https://nix.dev/) 88 88 - [Nix Tour](https://nixcloud.io/tour/?id=introduction/nix) 89 - - [Simple Home Manager Explanation](https://github.com/Evertras/simple-homemanager) 90 89 91 - ### ✨️ - Dotfiles 90 + ## 🐛 - Troubleshooting 92 91 93 - You can retrieve more useful dotfiles inside my [dotfile star list](https://github.com/stars/Cosmeak/lists/useful-dotfiles). 94 - 95 - The dotfiles listed below, are the one that really help me to build this are those from wich I took some code. 96 - 97 - - [elythh](https://github.com/elythh/flake) 98 - - [chenglab](https://github.com/eh8/chenglab) 99 - - [AlexNabokikh](https://github.com/AlexNabokikh/nix-config) 100 - 101 - ## Troubleshooting 102 - 103 - - If the rebuild command failed because an experimental feature is disabled use this command 92 + - If the rebuild command failed because an experimental feature is disabled use this command: 104 93 ```sh 105 94 sudo -E NIX_CONFIG="experimental-features = nix-command flakes pipe-operators" nixos-rebuild switch --flake . 106 - ``` 95 + ```
+58 -55
flake.lock
··· 7 7 ] 8 8 }, 9 9 "locked": { 10 - "lastModified": 1737421067, 11 - "narHash": "sha256-/hgw8fDKDpko0XqOw1e9tX8lS2Hqecg7W/JsONun6Qc=", 10 + "lastModified": 1741906019, 11 + "narHash": "sha256-c9L0yCdpBzPVTcExcqTti6vP6GuPVaCaVCDf0M8eu+I=", 12 12 "owner": "LnL7", 13 13 "repo": "nix-darwin", 14 - "rev": "cae8d1c4a3bd37be5887203fe3b0c3a860c53a07", 14 + "rev": "4d8a451649b6de429ea7e169378488305d0d9399", 15 15 "type": "github" 16 16 }, 17 17 "original": { 18 18 "owner": "LnL7", 19 - "ref": "nix-darwin-24.11", 20 19 "repo": "nix-darwin", 21 20 "type": "github" 22 21 } 23 22 }, 24 - "home-manager": { 23 + "hardware": { 24 + "locked": { 25 + "lastModified": 1741792691, 26 + "narHash": "sha256-f0BVt1/cvA0DQ/q3rB+HY4g4tKksd03ZkzI4xehC2Ew=", 27 + "owner": "NixOS", 28 + "repo": "nixos-hardware", 29 + "rev": "e1f12151258b12c567f456d8248e4694e9390613", 30 + "type": "github" 31 + }, 32 + "original": { 33 + "owner": "NixOS", 34 + "ref": "master", 35 + "repo": "nixos-hardware", 36 + "type": "github" 37 + } 38 + }, 39 + "jovian": { 25 40 "inputs": { 41 + "nix-github-actions": "nix-github-actions", 26 42 "nixpkgs": [ 27 43 "nixpkgs" 28 44 ] 29 45 }, 30 46 "locked": { 31 - "lastModified": 1736373539, 32 - "narHash": "sha256-dinzAqCjenWDxuy+MqUQq0I4zUSfaCvN9rzuCmgMZJY=", 33 - "owner": "nix-community", 34 - "repo": "home-manager", 35 - "rev": "bd65bc3cde04c16755955630b344bc9e35272c56", 47 + "lastModified": 1741936035, 48 + "narHash": "sha256-EzHZB9Im6weG2kkprL5w+uDaB+gEDy3zDTdX9WNAPw0=", 49 + "owner": "Jovian-Experiments", 50 + "repo": "Jovian-NixOS", 51 + "rev": "534188d0b0cbddf3f9df3f20cfbc424efb46b36c", 36 52 "type": "github" 37 53 }, 38 54 "original": { 39 - "owner": "nix-community", 40 - "ref": "release-24.11", 41 - "repo": "home-manager", 55 + "owner": "Jovian-Experiments", 56 + "repo": "Jovian-NixOS", 42 57 "type": "github" 43 58 } 44 59 }, 45 - "nixpkgs": { 60 + "nix-github-actions": { 61 + "inputs": { 62 + "nixpkgs": [ 63 + "jovian", 64 + "nixpkgs" 65 + ] 66 + }, 46 67 "locked": { 47 - "lastModified": 1738843498, 48 - "narHash": "sha256-7x+Q4xgFj9UxZZO9aUDCR8h4vyYut4zPUvfj3i+jBHE=", 49 - "owner": "nixos", 50 - "repo": "nixpkgs", 51 - "rev": "f5a32fa27df91dfc4b762671a0e0a859a8a0058f", 68 + "lastModified": 1729697500, 69 + "narHash": "sha256-VFTWrbzDlZyFHHb1AlKRiD/qqCJIripXKiCSFS8fAOY=", 70 + "owner": "zhaofengli", 71 + "repo": "nix-github-actions", 72 + "rev": "e418aeb728b6aa5ca8c5c71974e7159c2df1d8cf", 52 73 "type": "github" 53 74 }, 54 75 "original": { 55 - "owner": "nixos", 56 - "ref": "nixos-24.11", 57 - "repo": "nixpkgs", 76 + "owner": "zhaofengli", 77 + "ref": "matrix-name", 78 + "repo": "nix-github-actions", 58 79 "type": "github" 59 80 } 60 81 }, 61 - "nixpkgs_2": { 82 + "nixpkgs": { 62 83 "locked": { 63 - "lastModified": 1735471104, 64 - "narHash": "sha256-0q9NGQySwDQc7RhAV2ukfnu7Gxa5/ybJ2ANT8DQrQrs=", 84 + "lastModified": 1741851582, 85 + "narHash": "sha256-cPfs8qMccim2RBgtKGF+x9IBCduRvd/N5F4nYpU0TVE=", 65 86 "owner": "nixos", 66 87 "repo": "nixpkgs", 67 - "rev": "88195a94f390381c6afcdaa933c2f6ff93959cb4", 88 + "rev": "6607cf789e541e7873d40d3a8f7815ea92204f32", 68 89 "type": "github" 69 90 }, 70 91 "original": { ··· 74 95 "type": "github" 75 96 } 76 97 }, 77 - "root": { 78 - "inputs": { 79 - "darwin": "darwin", 80 - "home-manager": "home-manager", 81 - "nixpkgs": "nixpkgs", 82 - "unstable": "unstable", 83 - "zen-browser": "zen-browser" 84 - } 85 - }, 86 - "unstable": { 98 + "nixpkgs-stable": { 87 99 "locked": { 88 - "lastModified": 1739019272, 89 - "narHash": "sha256-7Fu7oazPoYCbDzb9k8D/DdbKrC3aU1zlnc39Y8jy/s8=", 100 + "lastModified": 1741862977, 101 + "narHash": "sha256-prZ0M8vE/ghRGGZcflvxCu40ObKaB+ikn74/xQoNrGQ=", 90 102 "owner": "nixos", 91 103 "repo": "nixpkgs", 92 - "rev": "fa35a3c8e17a3de613240fea68f876e5b4896aec", 104 + "rev": "cdd2ef009676ac92b715ff26630164bb88fec4e0", 93 105 "type": "github" 94 106 }, 95 107 "original": { 96 108 "owner": "nixos", 97 - "ref": "nixpkgs-unstable", 109 + "ref": "nixos-24.11", 98 110 "repo": "nixpkgs", 99 111 "type": "github" 100 112 } 101 113 }, 102 - "zen-browser": { 114 + "root": { 103 115 "inputs": { 104 - "nixpkgs": "nixpkgs_2" 105 - }, 106 - "locked": { 107 - "lastModified": 1739071251, 108 - "narHash": "sha256-Kj4grI7YpHk2RIsy73Dwg7ikDn94MI7zKrWN0BXrvJI=", 109 - "owner": "0xc000022070", 110 - "repo": "zen-browser-flake", 111 - "rev": "410d6e9a8ba0edd163d0828a4cda1b1f267f2e1a", 112 - "type": "github" 113 - }, 114 - "original": { 115 - "owner": "0xc000022070", 116 - "repo": "zen-browser-flake", 117 - "type": "github" 116 + "darwin": "darwin", 117 + "hardware": "hardware", 118 + "jovian": "jovian", 119 + "nixpkgs": "nixpkgs", 120 + "nixpkgs-stable": "nixpkgs-stable" 118 121 } 119 122 } 120 123 },
+124 -21
flake.nix
··· 1 1 { 2 - inputs = { 3 - nixpkgs.url = "github:nixos/nixpkgs/nixos-24.11"; 4 - unstable.url = "github:nixos/nixpkgs/nixpkgs-unstable"; 2 + description = '' 3 + This configuration is the second version of all my systems, reworked from scratch with simplicity in mind. 4 + 5 + I take my inspiration from others people configurations, so if you want to know what inspired this, take a look a "Nix things" and "Useful dotfiles" in my stars list. 6 + ''; 7 + 8 + inputs = { 9 + # packages 10 + nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable"; 11 + nixpkgs-stable.url = "github:nixos/nixpkgs?ref=nixos-24.11"; 12 + 13 + # Special hardware 14 + hardware.url = "github:NixOS/nixos-hardware/master"; 15 + 16 + # Macos modules 17 + darwin = { 18 + url = "github:LnL7/nix-darwin"; 19 + inputs.nixpkgs.follows= "nixpkgs"; 20 + }; 5 21 6 - darwin.url = "github:LnL7/nix-darwin/nix-darwin-24.11"; 7 - darwin.inputs.nixpkgs.follows= "nixpkgs"; 22 + # Gaming like a steam machine 23 + jovian = { 24 + url = "github:Jovian-Experiments/Jovian-NixOS"; 25 + inputs.nixpkgs.follows = "nixpkgs"; 26 + }; 27 + }; 8 28 9 - # wsl.url = "github:nix-community/NixOS-WSL"; 10 - # wsl.inputs.nixpkgs.follows= "nixpkgs"; 29 + # Force some nix configurations globally 30 + nixConfig = { 31 + experimental-features = "nix-command flakes pipe-operators"; 32 + }; 33 + 34 + outputs = { self, nixpkgs, ... }@inputs : 35 + let 36 + # Custom modules 37 + nixosModules = [ 38 + ./modules/nixos/hardware/nvidia 39 + ./modules/nixos/hardware/audio 40 + ./modules/nixos/programs/steam 41 + ./modules/nixos/system/auto-update 42 + ./modules/nixos/system/garbage-collector 43 + ]; 11 44 12 - # hardware.url = "github:NixOS/nixos-hardware/master"; 45 + darwinModules = [ 46 + ./modules/darwin/system/garbage-collector 47 + ]; 13 48 14 - # microvm.url = "github:astro/microvm.nix"; 15 - # microvm.inputs.nixpkgs.url = "nixpkgs"; 49 + # Methods 50 + forAllSystems = nixpkgs.lib.genAttrs [ "x86_64-linux" "aarch64-linux" "aarch64-darwin" ]; 51 + in { 52 + # Nixos Configurations 53 + nixosConfigurations = { 54 + # Gaming config (console like) 55 + hydrogen = nixpkgs.lib.nixosSystem { 56 + system = "x86_64-linux"; 57 + specialArgs = { 58 + inherit inputs; 59 + hostname = "hydrogen"; 60 + }; 61 + modules = [ 62 + ./hosts/nixos/hydrogen 63 + inputs.jovian.nixosModules.default 64 + ] ++ nixosModules; 65 + }; 16 66 17 - home-manager.url = "github:nix-community/home-manager/release-24.11"; 18 - home-manager.inputs.nixpkgs.follows = "nixpkgs"; 67 + # Little server for testing things 68 + # beryllium = nixpkgs.lib.nixosSystem { 69 + # system = "x86_64-linux"; 70 + # specialArgs = { 71 + # inherit inputs; 72 + # hostname = "beryllium"; 73 + # }; 74 + # modules = [ ./hosts/nixos/beryllium ] ++ nixosModules; 75 + # }; 19 76 20 - zen-browser.url = "github:0xc000022070/zen-browser-flake"; 77 + # Rapsberry Pi 3b+ 78 + lithium = nixpkgs.lib.nixosSystem { 79 + system = "aarch64-linux"; 80 + specialArgs = { 81 + inherit inputs; 82 + hostname = "lithium"; 83 + }; 84 + modules = [ 85 + ./hosts/nixos/lithium 86 + inputs.hardware.nixosModules.raspberry-pi-4 87 + "${nixpkgs}/nixos/modules/profiles/minimal.nix" 88 + ] ++ nixosModules; 89 + }; 21 90 }; 22 91 23 - nixConfig = { 24 - experimental-features = "nix-command flakes pipe-operators"; 92 + # Macos configurations 93 + darwinConfigurations = { 94 + # Macbook Pro M2 95 + helium = inputs.darwin.lib.darwinSystem { 96 + system = "aarch64-darwin"; 97 + specialArgs = { 98 + inherit inputs; 99 + hostname = "helium"; 100 + }; 101 + modules = [ ./hosts/darwin/helium ] ++ darwinModules; 102 + }; 25 103 }; 26 104 27 - outputs = { self, nixpkgs, darwin, ... }@inputs: 28 - let inherit (self) outputs; lib = import ./lib { inherit self inputs; }; in 29 - { overlays = import ./overlays { inherit inputs outputs; }; } 30 - # // (lib.host.mkHosts); 105 + # Custom images 106 + # images."beryllium" = (self.nixosConfiguration."beryllium".extendModules { 107 + # modules = [ 108 + # "${nixpkgs}/nixos/modules/installer/sd-card/sd-image-aarch64.nix" 109 + # { 110 + # # We don't need this defaults modules 111 + # disableModules = ["profiles/base.nix"]; 31 112 32 - // (lib.host.mkHost { system = "x86_64-linux"; hostname = "loki"; path = ./hosts/x86_64-linux/loki/default.nix; }) 33 - // (lib.host.mkHost { system = "aarch64-darwin"; hostname = "njord"; path = ./hosts/aarch64-darwin/njord/default.nix; }); 113 + # # Copy configuration files to system 114 + # environment.etc."nixos".source = ./.; 115 + 116 + # # Patch build images on x86-64 systems 117 + # nixpkgs.config.allowUnsupportedSystem = true; 118 + # nixpkgs.hostPlatform.system = "armv7l-linux"; 119 + # nixpkgs.buildPlatform.system = "x86_64-linux"; 120 + # } 121 + # ]; 122 + # }).config.system.build.sdImage; 123 + # 124 + 125 + # Development shells 126 + devShells = forAllSystems(system: 127 + let 128 + pkgs = import nixpkgs { inherit system; }; 129 + in 130 + { 131 + default = pkgs.mkShell ({ 132 + buildInputs = with pkgs; [ just nixd ]; 133 + }); 134 + } 135 + ); 136 + }; 34 137 }
-50
homes/_shared/cosmeak/default.nix
··· 1 - { inputs, pkgs, ...}: 2 - { 3 - imports = [ ./neovim ]; 4 - 5 - home.packages = with pkgs; [ 6 - bat 7 - eza 8 - fzf 9 - zoxide 10 - tree 11 - ]; 12 - 13 - programs.git = { 14 - enable = true; 15 - userName = "cosmeak"; 16 - userEmail = "90453342+Cosmeak@users.noreply.github.com"; 17 - lfs.enable = true; 18 - 19 - ignores = [ ".DS_STORE" ]; 20 - 21 - extraConfig = { 22 - core.editor = "codium"; 23 - pull.rebase = true; 24 - }; 25 - }; 26 - 27 - programs.kitty = { 28 - enable = true; 29 - shellIntegration.enableZshIntegration = true; 30 - themeFile = "Monokai_Pro"; 31 - }; 32 - 33 - programs.starship = { 34 - enable = true; 35 - enableZshIntegration = true; 36 - }; 37 - 38 - programs.zsh = { 39 - enable = true; 40 - enableCompletion = true; 41 - shellAliases = { 42 - ls = "eza -la --icons --no-user --no-time --git -s type"; 43 - cat = "bat"; 44 - cd = "z"; 45 - }; 46 - initExtra = '' 47 - eval "$(zoxide init zsh)" 48 - ''; 49 - }; 50 - }
-4
homes/_shared/cosmeak/neovim/config/init.lua
··· 1 - require("config.options") 2 - require("config.keymaps") 3 - require("config.lazy") 4 - require("config.autocmd")
-21
homes/_shared/cosmeak/neovim/config/lazy-lock.json
··· 1 - { 2 - "everforest-nvim": { "branch": "main", "commit": "06a600c4fa49e7a4c44848d14c353ecbaab8eb9f" }, 3 - "gitsigns.nvim": { "branch": "main", "commit": "4aaacbf5e5e2218fd05eb75703fe9e0f85335803" }, 4 - "indent-blankline.nvim": { "branch": "master", "commit": "12e92044d313c54c438bd786d11684c88f6f78cd" }, 5 - "lazy.nvim": { "branch": "main", "commit": "96584866b9c5e998cbae300594d0ccfd0c464627" }, 6 - "lazygit.nvim": { "branch": "main", "commit": "1e08e3f5ac1152339690140e61a4a32b3bdc7de5" }, 7 - "lualine.nvim": { "branch": "master", "commit": "566b7036f717f3d676362742630518a47f132fff" }, 8 - "mason-lspconfig.nvim": { "branch": "main", "commit": "3ba1b92b771f33256b4969d696b82c8ae7075364" }, 9 - "mason.nvim": { "branch": "main", "commit": "e110bc3be1a7309617cecd77bfe4bf86ba1b8134" }, 10 - "neo-tree.nvim": { "branch": "v3.x", "commit": "2f2d08894bbc679d4d181604c16bb7079f646384" }, 11 - "none-ls.nvim": { "branch": "main", "commit": "cf81e765460f722a381e5f3f5e3cbdce88398517" }, 12 - "nui.nvim": { "branch": "main", "commit": "35da9ca1de0fc4dda96c2e214d93d363c145f418" }, 13 - "nvim-autopairs": { "branch": "master", "commit": "9fd41181693dd4106b3e414a822bb6569924de81" }, 14 - "nvim-lspconfig": { "branch": "master", "commit": "7eed8b2150192e5ad05e1886fdf133493ddf2928" }, 15 - "nvim-treesitter": { "branch": "master", "commit": "97ba59c6f532072e456b3d1f2413560e689c132b" }, 16 - "nvim-web-devicons": { "branch": "master", "commit": "140edfcf25093e8b321d13e154cbce89ee868ca0" }, 17 - "plenary.nvim": { "branch": "master", "commit": "55d9fe89e33efd26f532ef20223e5f9430c8b0c0" }, 18 - "presence.nvim": { "branch": "main", "commit": "87c857a56b7703f976d3a5ef15967d80508df6e6" }, 19 - "telescope-ui-select.nvim": { "branch": "master", "commit": "6e51d7da30bd139a6950adf2a47fda6df9fa06d2" }, 20 - "telescope.nvim": { "branch": "master", "commit": "d90956833d7c27e73c621a61f20b29fdb7122709" } 21 - }
-6
homes/_shared/cosmeak/neovim/config/lua/.luarc.json
··· 1 - { 2 - "diagnostics.globals": [ 3 - "vim", 4 - "opts" 5 - ] 6 - }
-9
homes/_shared/cosmeak/neovim/config/lua/archived-plugins/catppuccin.lua
··· 1 - return { 2 - "catppuccin/nvim", 3 - version = false, 4 - lazy = false, 5 - priority = 1000, 6 - config = function () 7 - vim.cmd.colorscheme = "catppuccin" 8 - end 9 - }
-1
homes/_shared/cosmeak/neovim/config/lua/config/autocmd.lua
··· 1 - -- Add additional autocmds here
-2
homes/_shared/cosmeak/neovim/config/lua/config/keymaps.lua
··· 1 - -- change <leader> to <Space> 2 - vim.g.mapleader = " "
-17
homes/_shared/cosmeak/neovim/config/lua/config/lazy.lua
··· 1 - -- Install lazy.nvim package manager 2 - local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" 3 - if not vim.loop.fs_stat(lazypath) then 4 - vim.fn.system({ 5 - "git", 6 - "clone", 7 - "--filter=blob:none", 8 - "https://github.com/folke/lazy.nvim.git", 9 - "--branch=stable", -- latest stable release 10 - lazypath, 11 - }) 12 - end 13 - vim.opt.rtp:prepend(lazypath) 14 - 15 - -- Load plugins 16 - require("lazy").setup("plugins") 17 - vim.keymap.set("n", "<leader>l", ":Lazy<cr>", {})
-14
homes/_shared/cosmeak/neovim/config/lua/config/options.lua
··· 1 - -- use number of space to a <Tab> 2 - vim.opt.expandtab = true 3 - 4 - -- width of a <Tab> 5 - vim.opt.shiftwidth = 2 6 - vim.opt.tabstop = 2 7 - vim.opt.softtabstop = 2 8 - 9 - -- enable line number and relative line number 10 - vim.opt.number = true 11 - -- vim.opt.relativenumber = true 12 - 13 - -- enable auto indentation 14 - vim.opt.autoindent = true
-1
homes/_shared/cosmeak/neovim/config/lua/plugins.lua
··· 1 - return {}
-5
homes/_shared/cosmeak/neovim/config/lua/plugins/autopairs.lua
··· 1 - return { 2 - 'windwp/nvim-autopairs', 3 - event = "InsertEnter", 4 - opts = {} -- this is equalent to setup({}) function 5 - }
-7
homes/_shared/cosmeak/neovim/config/lua/plugins/discord-presence.lua
··· 1 - return { 2 - "andweeb/presence.nvim", 3 - version = "*", 4 - opts = { 5 - main_image = "file" 6 - } 7 - }
-10
homes/_shared/cosmeak/neovim/config/lua/plugins/everforest.lua
··· 1 - return { 2 - "neanias/everforest-nvim", 3 - version = false, 4 - lazy = false, 5 - priority = 1000, -- make sure to load this before all the other start plugins 6 - -- Optional; default configuration will be used if setup isn't called. 7 - config = function() 8 - vim.cmd.colorscheme "everforest" 9 - end, 10 - }
-8
homes/_shared/cosmeak/neovim/config/lua/plugins/gitsigns.lua
··· 1 - return { 2 - "lewis6991/gitsigns.nvim", 3 - cmd = "Gitsigns", 4 - lazy = true, 5 - config = function () 6 - require("gitsigns").setup() 7 - end 8 - }
-26
homes/_shared/cosmeak/neovim/config/lua/plugins/indent-blankline.lua
··· 1 - return { 2 - "lukas-reineke/indent-blankline.nvim", 3 - opts = { 4 - indent = { 5 - char = "│", 6 - tab_char = "│", 7 - }, 8 - scope = { enabled = false }, 9 - exclude = { 10 - filetypes = { 11 - "help", 12 - "alpha", 13 - "dashboard", 14 - "neo-tree", 15 - "Trouble", 16 - "trouble", 17 - "lazy", 18 - "mason", 19 - "notify", 20 - "toggleterm", 21 - "lazyterm", 22 - }, 23 - }, 24 - }, 25 - main = "ibl", 26 - }
-11
homes/_shared/cosmeak/neovim/config/lua/plugins/lazygit.lua
··· 1 - return { 2 - "kdheepak/lazygit.nvim", 3 - -- optional for floating window border decoration 4 - keys = { 5 - {"<leader>gg", "<cmd>:LazyGit<CR>", desc = "Open LazyGit panel"} 6 - }, 7 - dependencies = { 8 - -- Already installed with telescope 9 - -- "nvim-lua/plenary.nvim", 10 - }, 11 - }
-50
homes/_shared/cosmeak/neovim/config/lua/plugins/lsp.lua
··· 1 - return { 2 - { 3 - "williamboman/mason.nvim", 4 - config = function () 5 - require("mason").setup() 6 - end 7 - }, 8 - { 9 - "williamboman/mason-lspconfig.nvim", 10 - config = function () 11 - require("mason-lspconfig").setup({ 12 - ensure_installed = { 13 - -- web basics 14 - "html", "cssls", "intelephense", "tailwindcss", 15 - -- javascript ecosystem 16 - "tsserver", "svelte", "vuels", "astro", 17 - -- others 18 - "lua_ls", "pyright", "zls", 19 - } 20 - }) 21 - end 22 - }, 23 - { 24 - "neovim/nvim-lspconfig", 25 - config = function () 26 - local lspconfig = require("lspconfig") 27 - 28 - -- Setup LSP 29 - -- -- Web basics 30 - lspconfig.html.setup({}) 31 - lspconfig.cssls.setup({}) 32 - lspconfig.intelephense.setup({}) 33 - lspconfig.tailwindcss.setup({}) 34 - -- -- Javascript ecosystem 35 - lspconfig.tsserver.setup({}) 36 - lspconfig.svelte.setup({}) 37 - lspconfig.vuels.setup({}) 38 - lspconfig.astro.setup({}) 39 - -- -- Others 40 - lspconfig.lua_ls.setup({}) 41 - lspconfig.pyright.setup({}) 42 - lspconfig.zls.setup({}) 43 - 44 - -- Key bindings 45 - vim.keymap.set("n", "K", vim.lsp.buf.hover, {}) 46 - vim.keymap.set('n', 'gd', vim.lsp.buf.definition, opts) 47 - vim.keymap.set({ 'n', 'v' }, '<leader>ca', vim.lsp.buf.code_action, opts) 48 - end 49 - } 50 - }
-7
homes/_shared/cosmeak/neovim/config/lua/plugins/lualine.lua
··· 1 - return { 2 - 'nvim-lualine/lualine.nvim', 3 - dependencies = { 'nvim-tree/nvim-web-devicons' }, 4 - opts = { 5 - theme = "auto" 6 - } 7 - }
-29
homes/_shared/cosmeak/neovim/config/lua/plugins/neotree.lua
··· 1 - return { 2 - "nvim-neo-tree/neo-tree.nvim", 3 - branch = "v3.x", 4 - dependencies = { 5 - "nvim-lua/plenary.nvim", 6 - "nvim-tree/nvim-web-devicons", 7 - "MunifTanjim/nui.nvim", 8 - }, 9 - opts = { 10 - filesystem = { 11 - filtered_items = { 12 - visible = true, 13 - hide_dotfiles = false, 14 - hide_gitignored = false, 15 - never_show = { -- remains hidden even if visible is toggled to true, this overrides always_show 16 - ".DS_Store", 17 - "thumbs.db", 18 - ".git", 19 - } 20 - } 21 - } 22 - }, 23 - keys = { 24 - { "<leader>n", "<cmd>Neotree toggle left<cr>", desc = "Toogle Neotree on the left side<D-s>" } 25 - }, 26 - config = function(_, opts) 27 - require("neo-tree").setup(opts) 28 - end 29 - }
-15
homes/_shared/cosmeak/neovim/config/lua/plugins/none-ls.lua
··· 1 - return { 2 - "nvimtools/none-ls.nvim", 3 - config = function() 4 - local null_ls = require("null-ls") 5 - null_ls.setup({ 6 - sources = { 7 - null_ls.builtins.formatting.stylua, 8 - null_ls.builtins.formatting.prettier, 9 - null_ls.builtins.diagnostics.eslint, 10 - }, 11 - }) 12 - 13 - vim.keymap.set("n", "<leader>gf", vim.lsp.buf.format, {}) 14 - end, 15 - }
-51
homes/_shared/cosmeak/neovim/config/lua/plugins/telescope.lua
··· 1 - return { 2 - { 3 - 'nvim-telescope/telescope.nvim', tag = '0.1.5', 4 - dependencies = { 'nvim-lua/plenary.nvim' }, 5 - keys = { 6 - { "<leader>bf", "<cmd>Telescope buffers<cr>", desc = "Buffers" }, 7 - -- Remap find file to macos cmd + p 8 - { "<D-p>", "<cmd>Telescope find_files<cr>", desc = "Find Files" }, 9 - }, 10 - config = { 11 - defaults = { 12 - file_ignore_patterns = { 13 - "node_modules", 14 - "vendor", 15 - } 16 - } 17 - } 18 - }, 19 - { 20 - "nvim-telescope/telescope-ui-select.nvim", 21 - config = function () 22 - -- This is your opts table 23 - require("telescope").setup { 24 - extensions = { 25 - ["ui-select"] = { 26 - require("telescope.themes").get_dropdown { 27 - -- even more opts 28 - } 29 - 30 - -- pseudo code / specification for writing custom displays, like the one 31 - -- for "codeactions" 32 - -- specific_opts = { 33 - -- [kind] = { 34 - -- make_indexed = function(items) -> indexed_items, width, 35 - -- make_displayer = function(widths) -> displayer 36 - -- make_display = function(displayer) -> function(e) 37 - -- make_ordinal = function(e) -> string 38 - -- }, 39 - -- -- for example to disable the custom builtin "codeactions" display 40 - -- do the following 41 - -- codeactions = false, 42 - -- } 43 - } 44 - } 45 - } 46 - -- To get ui-select loaded and working with telescope, you need to call 47 - -- load_extension, somewhere after setup function: 48 - require("telescope").load_extension("ui-select") 49 - end 50 - } 51 - }
-30
homes/_shared/cosmeak/neovim/config/lua/plugins/treesitter.lua
··· 1 - return { 2 - { 3 - "nvim-treesitter/nvim-treesitter", 4 - build = ":TSUpdate", 5 - config = function() 6 - local config = require("nvim-treesitter.configs") 7 - config.setup({ 8 - auto_installed = true, 9 - ensure_installed = { 10 - -- web basics 11 - "html", 12 - "css", 13 - "scss", 14 - "php", 15 - -- Javascript ecosystem 16 - "javascript", 17 - "vue", 18 - "svelte", 19 - -- others 20 - "lua", 21 - "zig", 22 - "python", 23 - "rust", 24 - }, 25 - highlight = { enable = true }, 26 - indent = { enable = true }, 27 - }) 28 - end, 29 - }, 30 - }
-9
homes/_shared/cosmeak/neovim/default.nix
··· 1 - { inputs, pkgs, ...}: 2 - { 3 - programs.neovim.enable = true; 4 - 5 - home.file.".config/nvim" = { 6 - source = ./config; 7 - recursive = true; 8 - }; 9 - }
-85
homes/aarch64-darwin/njord/cosmeak/aerospace/i3-like.toml
··· 1 - # Reference: https://github.com/i3/i3/blob/next/etc/config 2 - 3 - # i3 doesn't have "normalizations" feature that why we disable them here. 4 - # But the feature is very helpful. 5 - # Normalizations eliminate all sorts of weird tree configurations that don't make sense. 6 - # Give normalizations a chance and enable them back. 7 - enable-normalization-flatten-containers = false 8 - enable-normalization-opposite-orientation-for-nested-containers = false 9 - 10 - # Mouse follows focus when focused monitor changes 11 - on-focused-monitor-changed = ['move-mouse monitor-lazy-center'] 12 - 13 - [mode.main.binding] 14 - # See: https://nikitabobko.github.io/AeroSpace/goodness#open-a-new-window-with-applescript 15 - alt-enter = '''exec-and-forget osascript -e ' 16 - tell application "Terminal" 17 - do script 18 - activate 19 - end tell' 20 - ''' 21 - 22 - # i3 wraps focus by default 23 - alt-j = 'focus --boundaries-action wrap-around-the-workspace left' 24 - alt-k = 'focus --boundaries-action wrap-around-the-workspace down' 25 - alt-l = 'focus --boundaries-action wrap-around-the-workspace up' 26 - alt-semicolon = 'focus --boundaries-action wrap-around-the-workspace right' 27 - 28 - alt-shift-j = 'move left' 29 - alt-shift-k = 'move down' 30 - alt-shift-l = 'move up' 31 - alt-shift-semicolon = 'move right' 32 - 33 - # Consider using 'join-with' command as a 'split' replacement if you want to enable normalizations 34 - alt-h = 'split horizontal' 35 - alt-v = 'split vertical' 36 - 37 - alt-f = 'fullscreen' 38 - 39 - alt-s = 'layout v_accordion' # 'layout stacking' in i3 40 - alt-w = 'layout h_accordion' # 'layout tabbed' in i3 41 - alt-e = 'layout tiles horizontal vertical' # 'layout toggle split' in i3 42 - 43 - alt-shift-space = 'layout floating tiling' # 'floating toggle' in i3 44 - 45 - # Not supported, because this command is redundant in AeroSpace mental model. 46 - # See: https://nikitabobko.github.io/AeroSpace/guide#floating-windows 47 - #alt-space = 'focus toggle_tiling_floating' 48 - 49 - # `focus parent`/`focus child` are not yet supported, and it's not clear whether they 50 - # should be supported at all https://github.com/nikitabobko/AeroSpace/issues/5 51 - # alt-a = 'focus parent' 52 - 53 - alt-1 = 'workspace 1' 54 - alt-2 = 'workspace 2' 55 - alt-3 = 'workspace 3' 56 - alt-4 = 'workspace 4' 57 - alt-5 = 'workspace 5' 58 - alt-6 = 'workspace 6' 59 - alt-7 = 'workspace 7' 60 - alt-8 = 'workspace 8' 61 - alt-9 = 'workspace 9' 62 - alt-0 = 'workspace 10' 63 - 64 - alt-shift-1 = 'move-node-to-workspace 1' 65 - alt-shift-2 = 'move-node-to-workspace 2' 66 - alt-shift-3 = 'move-node-to-workspace 3' 67 - alt-shift-4 = 'move-node-to-workspace 4' 68 - alt-shift-5 = 'move-node-to-workspace 5' 69 - alt-shift-6 = 'move-node-to-workspace 6' 70 - alt-shift-7 = 'move-node-to-workspace 7' 71 - alt-shift-8 = 'move-node-to-workspace 8' 72 - alt-shift-9 = 'move-node-to-workspace 9' 73 - alt-shift-0 = 'move-node-to-workspace 10' 74 - 75 - alt-shift-c = 'reload-config' 76 - 77 - alt-r = 'mode resize' 78 - 79 - [mode.resize.binding] 80 - h = 'resize width -50' 81 - j = 'resize height +50' 82 - k = 'resize height -50' 83 - l = 'resize width +50' 84 - enter = 'mode main' 85 - esc = 'mode main'
-66
homes/aarch64-darwin/njord/cosmeak/default.nix
··· 1 - { inputs, pkgs, ... }: 2 - { 3 - imports = [ 4 - ./../../../_shared/cosmeak 5 - ]; 6 - 7 - home.username = "cosmeak"; 8 - home.homeDirectory = "/Users/cosmeak"; 9 - programs.home-manager.enable = true; 10 - 11 - home.packages = with pkgs; [ 12 - # most used Dev environment 13 - php83 14 - php83Packages.composer 15 - nodejs_20 16 - python310 17 - 18 - # CLI 19 - tree 20 - btop 21 - lazygit 22 - ngrok 23 - fastfetch 24 - 25 - # Utilities 26 - alt-tab-macos 27 - raycast 28 - 29 - # Window Manager 30 - # Actually disabled because issue with french keyboard bindings 31 - # aerospace 32 - ]; 33 - 34 - programs.kitty = { 35 - enable = true; 36 - shellIntegration.enableZshIntegration = true; 37 - themeFile = "Monokai_Pro"; 38 - }; 39 - 40 - programs.zsh = { 41 - enable = true; 42 - enableCompletion = true; 43 - syntaxHighlighting.enable = true; 44 - initExtra = '' 45 - eval "$(zoxide init zsh)" 46 - eval "$(/opt/homebrew/bin/brew shellenv)" 47 - alias rebuild="darwin-rebuild switch --flake ~/.dotfiles" 48 - ''; 49 - }; 50 - 51 - programs.starship = { 52 - enable = true; 53 - enableZshIntegration = true; 54 - }; 55 - 56 - programs.zoxide = { 57 - enable = true; 58 - enableZshIntegration = true; 59 - }; 60 - 61 - # home.file.".config/aerospace/aerospace.toml".source = ./aerospace/i3-like.toml; 62 - 63 - # You do not need to change this if you're reading this in the future. 64 - # Don't ever change this after the first build. Don't ask questions. 65 - home.stateVersion = "24.05"; 66 - }
+4
homes/cosmeak/common/default.nix
··· 1 + { inputs, pkgs, ...}: 2 + { 3 + 4 + }
+4
homes/cosmeak/hydrogen/default.nix
··· 1 + { inputs, pkgs, ...}: 2 + { 3 + imports = [ ../common ]; 4 + }
-28
homes/x86_64-linux/loki/cosmeak/default.nix
··· 1 - { inputs, pkgs, ... }: 2 - { 3 - imports = [ ./../../../_shared/cosmeak ./river ./waybar ]; 4 - 5 - programs.home-manager.enable = true; 6 - 7 - home.packages = with pkgs; [ 8 - btop 9 - discord 10 - just 11 - lazygit 12 - lutris 13 - obs-studio 14 - obsidian 15 - prismlauncher 16 - spotify 17 - thunderbird 18 - vscodium 19 - bottles 20 - _1password-gui 21 - zed-editor 22 - insomnia 23 - ]; 24 - 25 - # You do not need to change this if you're reading this in the future. 26 - # Don't ever change this after the first build. Don't ask questions. 27 - home.stateVersion = "24.11"; 28 - }
-163
homes/x86_64-linux/loki/cosmeak/river/default.nix
··· 1 - _: 2 - { 3 - wayland.windowManager.river.enable = true; 4 - wayland.windowManager.river.xwayland.enable = true; 5 - wayland.windowManager.river.systemd.enable = true; 6 - wayland.windowManager.river.extraConfig = '' 7 - #!/bin/sh 8 - # See the river(1), riverctl(1), and rivertile(1) man pages for complete 9 - # documentation. 10 - 11 - # Note: the "Super" modifier is also known as Logo, GUI, Windows, Mod4, etc. 12 - 13 - # Setup wallpaper with swaybg 14 - riverctl spawn "swaybg -m fill -i ${builtins.toString ./../../../../..}/wallpapers/Witcher_3_Skellige_Mountain-Ansel_paint_filter.png" 15 - 16 - # Spawn waybar 17 - riverctl spawn waybar 18 - 19 - # Spawn discord at login 20 - riverctl spawn discord 21 - 22 - # Super+Shift+Return to start an instance of foot (https://codeberg.org/dnkl/foot) 23 - riverctl map normal Super+Shift Return spawn foot 24 - 25 - # Super+P to open application launcher 26 - riverctl map normal Super P spawn fuzzel 27 - 28 - # Super+Q to close the focused view 29 - riverctl map normal Super Q close 30 - 31 - # Super+Shift+E to exit river 32 - riverctl map normal Super+Shift E exit 33 - 34 - # Super+J and Super+K to focus the next/previous view in the layout stack 35 - riverctl map normal Super J focus-view next 36 - riverctl map normal Super K focus-view previous 37 - 38 - # Super+Shift+J and Super+Shift+K to swap the focused view with the next/previous 39 - # view in the layout stack 40 - riverctl map normal Super+Shift J swap next 41 - riverctl map normal Super+Shift K swap previousriv 42 - 43 - # Super+Period and Super+Comma to focus the next/previous output 44 - riverctl map normal Super Period focus-output next 45 - riverctl map normal Super Comma focus-output previous 46 - 47 - # Super+Shift+{Period,Comma} to send the focused view to the next/previous output 48 - riverctl map normal Super+Shift Period send-to-output next 49 - riverctl map normal Super+Shift Comma send-to-output previous 50 - 51 - # Super+Return to bump the focused view to the top of the layout stack 52 - riverctl map normal Super Return zoom 53 - 54 - # Super+H and Super+L to decrease/increase the main ratio of rivertile(1) 55 - riverctl map normal Super H send-layout-cmd rivertile "main-ratio -0.05" 56 - riverctl map normal Super L send-layout-cmd rivertile "main-ratio +0.05" 57 - 58 - # Super+Shift+H and Super+Shift+L to increment/decrement the main count of rivertile(1) 59 - riverctl map normal Super+Shift H send-layout-cmd rivertile "main-count +1" 60 - riverctl map normal Super+Shift L send-layout-cmd rivertile "main-count -1" 61 - 62 - # Super+Alt+{H,J,K,L} to move views 63 - riverctl map normal Super+Alt H move left 100 64 - riverctl map normal Super+Alt J move down 100 65 - riverctl map normal Super+Alt K move up 100 66 - riverctl map normal Super+Alt L move right 100 67 - 68 - # Super+Alt+Control+{H,J,K,L} to snap views to screen edges 69 - riverctl map normal Super+Alt+Control H snap left 70 - riverctl map normal Super+Alt+Control J snap down 71 - riverctl map normal Super+Alt+Control K snap up 72 - riverctl map normal Super+Alt+Control L snap right 73 - 74 - # Super+Alt+Shift+{H,J,K,L} to resize views 75 - riverctl map normal Super+Alt+Shift H resize horizontal -100 76 - riverctl map normal Super+Alt+Shift J resize vertical 100 77 - riverctl map normal Super+Alt+Shift K resize vertical -100 78 - riverctl map normal Super+Alt+Shift L resize horizontal 100 79 - 80 - # Super + Left Mouse Button to move views 81 - riverctl map-pointer normal Super BTN_LEFT move-view 82 - 83 - # Super + Right Mouse Button to resize views 84 - riverctl map-pointer normal Super BTN_RIGHT resize-view 85 - 86 - # Super + Middle Mouse Button to toggle float 87 - riverctl map-pointer normal Super BTN_MIDDLE toggle-float 88 - 89 - for i in $(seq 1 9) 90 - do 91 - tags=$((1 << ($i - 1))) 92 - 93 - # Super+[1-9] to focus tag [0-8] 94 - riverctl map normal Super $i set-focused-tags $tags 95 - 96 - # Super+Shift+[1-9] to tag focused view with tag [0-8] 97 - riverctl map normal Super+Shift $i set-view-tags $tags 98 - 99 - # Super+Control+[1-9] to toggle focus of tag [0-8] 100 - riverctl map normal Super+Control $i toggle-focused-tags $tags 101 - 102 - # Super+Shift+Control+[1-9] to toggle tag [0-8] of focused view 103 - riverctl map normal Super+Shift+Control $i toggle-view-tags $tags 104 - done 105 - 106 - # Super+0 to focus all tags 107 - # Super+Shift+0 to tag focused view with all tags 108 - all_tags=$(((1 << 32) - 1)) 109 - riverctl map normal Super 0 set-focused-tags $all_tags 110 - riverctl map normal Super+Shift 0 set-view-tags $all_tags 111 - 112 - # Super+Space to toggle float 113 - riverctl map normal Super Space toggle-float 114 - 115 - # Super+F to toggle fullscreen 116 - riverctl map normal Super F toggle-fullscreen 117 - 118 - # Super+{Up,Right,Down,Left} to change layout orientation 119 - riverctl map normal Super Up send-layout-cmd rivertile "main-location top" 120 - riverctl map normal Super Right send-layout-cmd rivertile "main-location right" 121 - riverctl map normal Super Down send-layout-cmd rivertile "main-location bottom" 122 - riverctl map normal Super Left send-layout-cmd rivertile "main-location left" 123 - 124 - # Various media key mapping examples for both normal and locked mode which do 125 - # not have a modifier 126 - for mode in normal locked 127 - do 128 - # Control pulse audio volume with pamixer (https://github.com/cdemoulins/pamixer) 129 - riverctl map $mode None XF86AudioRaiseVolume spawn 'pamixer -i 5' 130 - riverctl map $mode None XF86AudioLowerVolume spawn 'pamixer -d 5' 131 - riverctl map $mode None XF86AudioMute spawn 'pamixer --toggle-mute' 132 - 133 - # Control MPRIS aware media players with playerctl (https://github.com/altdesktop/playerctl) 134 - riverctl map $mode None XF86AudioMedia spawn 'playerctl play-pause' 135 - riverctl map $mode None XF86AudioPlay spawn 'playerctl play-pause' 136 - riverctl map $mode None XF86AudioPrev spawn 'playerctl previous' 137 - riverctl map $mode None XF86AudioNext spawn 'playerctl next' 138 - 139 - # Control screen backlight brightness with brightnessctl (https://github.com/Hummer12007/brightnessctl) 140 - riverctl map $mode None XF86MonBrightnessUp spawn 'brightnessctl set +5%' 141 - riverctl map $mode None XF86MonBrightnessDown spawn 'brightnessctl set 5%-' 142 - done 143 - 144 - # Set background and border color 145 - riverctl background-color 0x002b36 146 - riverctl border-color-focused 0x93a1a1 147 - riverctl border-color-unfocused 0x586e75 148 - 149 - # Set keyboard repeat rate 150 - riverctl set-repeat 50 300 151 - 152 - # Make all views with an app-id that starts with "float" and title "foo" start floating. 153 - riverctl rule-add -app-id 'float*' -title 'foo' float 154 - 155 - # Make all views with app-id "bar" and any title use client-side decorations 156 - riverctl rule-add -app-id "bar" csd 157 - 158 - # Set the default layout generator to be rivertile and start it. 159 - # River will send the process group of the init executable SIGTERM on exit. 160 - riverctl default-layout rivertile 161 - rivertile -view-padding 6 -outer-padding 6 & 162 - ''; 163 - }
-4
homes/x86_64-linux/loki/cosmeak/waybar/default.nix
··· 1 - _: 2 - { 3 - programs.waybar.enable = true; 4 - }
homes/x86_64-linux/nyx/benjamin/default.nix overlays/.gitkeep
-56
hosts/aarch64-darwin/njord/default.nix
··· 1 - { self, inputs, pkgs, ... }: 2 - { 3 - imports = [ 4 - ./homebrew 5 - ./system 6 - inputs.home-manager.darwinModules.home-manager 7 - ]; 8 - 9 - # Home Manager 10 - home-manager.useGlobalPkgs = true; 11 - home-manager.useUserPackages = true; 12 - home-manager.users.cosmeak = import ./../../../homes/aarch64-darwin/njord/cosmeak; 13 - users.users.cosmeak.home = "/Users/cosmeak"; 14 - 15 - # Enable sudo via TouchID 16 - security.pam.enableSudoTouchIdAuth = true; 17 - 18 - # Use jankyboarders to see which window is in focus 19 - services.jankyborders = { 20 - enable = true; 21 - }; 22 - 23 - # Use sketcybar to replace default macos bar and have something customizable 24 - services.sketchybar = { 25 - enable = true; 26 - }; 27 - 28 - # System wide packages 29 - environment.systemPackages = with pkgs; [ 30 - just 31 - ]; 32 - 33 - # Garbage collector 34 - nix.gc = { 35 - automatic = true; 36 - interval = [{ Weekday = 7; }]; 37 - options = "--delete-older-than 7d"; 38 - }; 39 - nix.optimise.automatic = true; 40 - 41 - # The platform the configuration will be used on. 42 - nixpkgs.hostPlatform = "aarch64-darwin"; 43 - 44 - # Allow unfree packages 45 - nixpkgs.config.allowUnfree = true; 46 - 47 - # Enable flakes 48 - nix.settings.experimental-features = [ "nix-command" "flakes" "pipe-operators" ]; 49 - 50 - # Use nix as a daemon 51 - services.nix-daemon.enable = true; 52 - 53 - # Used for backwards compatibility, please read the changelog before changing. 54 - # $ darwin-rebuild changelog 55 - system.stateVersion = 5; 56 - }
+1
hosts/aarch64-darwin/njord/homebrew/brews.nix hosts/darwin/helium/homebrew/brews.nix
··· 2 2 homebrew.brews = [ 3 3 "cocoapods" 4 4 "aws-amplify" 5 + "wallpapper" 5 6 ]; 6 7 }
-30
hosts/aarch64-darwin/njord/homebrew/casks.nix
··· 1 - { 2 - homebrew.casks = [ 3 - # Dev 4 - "zed" 5 - "vscodium" # used for jupyter notebook because not available in zed at this time 6 - "beekeeper-studio" # find a better alternative 7 - "insomnia" 8 - "orbstack" # replace with simple docker desktop 9 - "figma" 10 - "dbngin" # will be removed when all my project will used flakes and docker for databases 11 - "arduino-ide" 12 - 13 - # Apps 14 - "spotify" 15 - "discord" 16 - "thunderbird" # install via nix if possiblex 17 - "obsidian" 18 - "brave-browser" 19 - "zen-browser" 20 - "1password" 21 - 22 - # Mics 23 - "amethyst" # Window manager 24 - "stats" # System monitoring displayed in macos top bar - will be replaced by custom script with sketchybar 25 - 26 - # Fonts 27 - "sf-symbols" 28 - "font-hack-nerd-font" # move this to nix installation 29 - ]; 30 - }
+9 -3
hosts/aarch64-darwin/njord/homebrew/default.nix hosts/darwin/helium/homebrew/default.nix
··· 1 1 { 2 2 # Homebrew - Using for gui app because majority macos apps does not exists in nixpkgs repository 3 - 4 3 imports = [ 5 4 ./brews.nix 6 5 ./casks.nix 7 6 ./masapps.nix 8 - ./taps.nix 9 7 ]; 10 8 11 9 homebrew.enable = true; ··· 13 11 autoUpdate = true; 14 12 cleanup = "zap"; # uninstall all elements not listed 15 13 }; 16 - } 14 + 15 + # Repository authorized for homebrew 16 + homebrew.taps = [ 17 + "homebrew/cask-versions" 18 + "homebrew/cask-fonts" 19 + "FelixKratz/formulae" 20 + "mczachurski/wallpapper" 21 + ]; 22 + }
+2 -2
hosts/aarch64-darwin/njord/homebrew/masapps.nix hosts/darwin/helium/homebrew/masapps.nix
··· 1 1 { 2 2 # Apps from App Store 3 3 homebrew.masApps = { 4 - # Xcode = 497799835; 4 + Xcode = 497799835; 5 5 }; 6 - } 6 + }
-7
hosts/aarch64-darwin/njord/homebrew/taps.nix
··· 1 - { 2 - homebrew.taps = [ 3 - "homebrew/cask-versions" 4 - "homebrew/cask-fonts" 5 - "FelixKratz/formulae" 6 - ]; 7 - }
+1 -1
hosts/aarch64-darwin/njord/system/default.nix hosts/darwin/helium/system/default.nix
··· 16 16 # Text show in the login window 17 17 loginwindow.LoginwindowText = "Maybe you cannot touch me"; 18 18 }; 19 - } 19 + }
+5 -12
hosts/aarch64-darwin/njord/system/dock.nix hosts/darwin/helium/system/dock.nix
··· 9 9 minimize-to-application = true; # Minimize app in app icon 10 10 show-recents = false; # Don't show recent open apps 11 11 tilesize = 32; # Set dock size 12 - # Set dock apps 13 - persistent-apps = [ 14 - "/Applications/Thunderbird.app" 15 - "/Applications/Brave Browser.app" 16 - "/Applications/Discord.app" 17 - "/Applications/Spotify.app" 18 - "/Applications/Obsidian.app" 19 - "/Applications/Nix Apps/kitty.app" 20 - "/Applications/Zed.app" 21 - "/Applications/Beekeeper Studio.app" 22 - ]; 12 + 13 + # Set dock apps (remove all apps from dock) 14 + persistent-apps = []; 15 + 23 16 # Disable hot corners 24 17 wvous-bl-corner = 1; 25 18 wvous-br-corner = 1; 26 19 wvous-tl-corner = 1; 27 20 wvous-tr-corner = 1; 28 21 }; 29 - } 22 + }
+1 -1
hosts/aarch64-darwin/njord/system/finder.nix hosts/darwin/helium/system/finder.nix
··· 7 7 CreateDesktop = false; # Disable show icon on desktop 8 8 FXDefaultSearchScope = "SCcf"; # Set default search scope to current folder 9 9 }; 10 - } 10 + }
hosts/aarch64-darwin/njord/system/nsglobaldomain.nix hosts/darwin/helium/system/nsglobaldomain.nix
-4
hosts/aarch64-linux/narfi/default.nix
··· 1 - { self, inputs, pkgs, ... }: 2 - { 3 - # 4 - }
+53
hosts/darwin/helium/default.nix
··· 1 + { self, inputs, pkgs, hostname, ... }: 2 + { 3 + imports = [ 4 + ./homebrew 5 + ./system 6 + ]; 7 + 8 + # pin nix group to already existant id 9 + ids.gids.nixbld = 30000; 10 + 11 + # Enable sudo via TouchID 12 + security.pam.services.sudo_local.touchIdAuth = true; 13 + 14 + # Networking 15 + networking.computerName = hostname; 16 + networking.hostName = hostname; 17 + 18 + # Timezone 19 + time.timeZone = "Europe/Paris"; 20 + 21 + # System wide packages 22 + environment.systemPackages = with pkgs; [ 23 + lazygit 24 + kitty 25 + just 26 + firefox 27 + spotify 28 + discord 29 + # _1password-gui 30 + zed-editor 31 + vscodium # used for jupyter notebook because not available in zed at this time 32 + stats # System monitoring displayed in macos top bar - will be replaced by custom script with sketchybar 33 + ]; 34 + 35 + # Common system configurations 36 + gems.system.garbageCollector.enable = true; 37 + 38 + # The platform the configuration will be used on. 39 + nixpkgs.hostPlatform = "aarch64-darwin"; 40 + 41 + # Allow packages 42 + nixpkgs.config.allowUnfree = true; 43 + 44 + # Use nix as a daemon 45 + nix.enable = true; 46 + 47 + # Enable flakes and other experimental features 48 + nix.settings.experimental-features = [ "nix-command" "flakes" "pipe-operators" ]; 49 + 50 + # Used for backwards compatibility, please read the changelog before changing. 51 + # $ darwin-rebuild changelog 52 + system.stateVersion = 5; 53 + }
+14
hosts/darwin/helium/homebrew/casks.nix
··· 1 + { 2 + homebrew.casks = [ 3 + "beekeeper-studio" # find a better alternative 4 + "insomnia" 5 + "orbstack" # replace with simple docker desktop 6 + "figma" 7 + "obsidian" 8 + "zen-browser" 9 + "amethyst" # Window manager 10 + "sf-symbols" 11 + "font-hack-nerd-font" # move this to nix installation 12 + "1password" 13 + ]; 14 + }
+48
hosts/nixos/beryllium/default.nix
··· 1 + { self, inputs, pkgs, hostname, ... }: 2 + { 3 + # imports = [ ./hardware.nix ]; 4 + 5 + # EFI Bootloader 6 + boot.loader.systemd-boot.enable = true; 7 + boot.loader.efi.canTouchEfiVariables = true; 8 + boot.loader.systemd-boot.configurationLimit = 10; 9 + 10 + # Locales 11 + i18n.defaultLocale = "en_US.UTF-8"; 12 + i18n.extraLocaleSettings = { 13 + LC_ADDRESS = "fr_FR.UTF-8"; 14 + LC_IDENTIFICATION = "fr_FR.UTF-8"; 15 + LC_MEASUREMENT = "fr_FR.UTF-8"; 16 + LC_MONETARY = "fr_FR.UTF-8"; 17 + LC_NAME = "fr_FR.UTF-8"; 18 + LC_NUMERIC = "fr_FR.UTF-8"; 19 + LC_PAPER = "fr_FR.UTF-8"; 20 + LC_TELEPHONE = "fr_FR.UTF-8"; 21 + LC_TIME = "fr_FR.UTF-8"; 22 + }; 23 + 24 + # Timezone 25 + time.timeZone = "Europe/Paris"; 26 + 27 + # Keyboard 28 + services.xserver.xkb.layout = "us"; 29 + 30 + # Networking 31 + networking.networkmanager.enable = true; 32 + networking.hostName = hostname; 33 + 34 + # Disable CUPS since this desktop will not print something. 35 + services.printing.enable = false; 36 + 37 + # Common system configurations 38 + gems.system.garbageCollector.enable= true; 39 + gems.system.autoUpdate.enable = false; 40 + 41 + # This value determines the NixOS release from which the default 42 + # settings for stateful data, like file locations and database versions 43 + # on your system were taken. It‘s perfectly fine and recommended to leave 44 + # this value at the release version of the first install of this system. 45 + # Before changing this value read the documentation for this option 46 + # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html). 47 + system.stateVersion = "24.11"; # Did you read the comment? 48 + }
+48
hosts/nixos/boron/default.nix
··· 1 + { self, inputs, pkgs, hostname, ... }: 2 + { 3 + # imports = [ ./hardware.nix ]; 4 + 5 + # EFI Bootloader 6 + boot.loader.systemd-boot.enable = true; 7 + boot.loader.efi.canTouchEfiVariables = true; 8 + boot.loader.systemd-boot.configurationLimit = 10; 9 + 10 + # Locales 11 + i18n.defaultLocale = "en_US.UTF-8"; 12 + i18n.extraLocaleSettings = { 13 + LC_ADDRESS = "fr_FR.UTF-8"; 14 + LC_IDENTIFICATION = "fr_FR.UTF-8"; 15 + LC_MEASUREMENT = "fr_FR.UTF-8"; 16 + LC_MONETARY = "fr_FR.UTF-8"; 17 + LC_NAME = "fr_FR.UTF-8"; 18 + LC_NUMERIC = "fr_FR.UTF-8"; 19 + LC_PAPER = "fr_FR.UTF-8"; 20 + LC_TELEPHONE = "fr_FR.UTF-8"; 21 + LC_TIME = "fr_FR.UTF-8"; 22 + }; 23 + 24 + # Timezone 25 + time.timeZone = "Europe/Paris"; 26 + 27 + # Keyboard 28 + services.xserver.xkb.layout = "us"; 29 + 30 + # Networking 31 + networking.networkmanager.enable = true; 32 + networking.hostName = hostname; 33 + 34 + # Disable CUPS since this desktop will not print something. 35 + services.printing.enable = false; 36 + 37 + # Common system configurations 38 + gems.system.garbageCollector.enable= true; 39 + gems.system.autoUpdate.enable = false; 40 + 41 + # This value determines the NixOS release from which the default 42 + # settings for stateful data, like file locations and database versions 43 + # on your system were taken. It‘s perfectly fine and recommended to leave 44 + # this value at the release version of the first install of this system. 45 + # Before changing this value read the documentation for this option 46 + # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html). 47 + system.stateVersion = "24.11"; # Did you read the comment? 48 + }
+48
hosts/nixos/carbon/default.nix
··· 1 + { self, inputs, pkgs, hostname, ... }: 2 + { 3 + # imports = [ ./hardware.nix ]; 4 + 5 + # EFI Bootloader 6 + boot.loader.systemd-boot.enable = true; 7 + boot.loader.efi.canTouchEfiVariables = true; 8 + boot.loader.systemd-boot.configurationLimit = 10; 9 + 10 + # Locales 11 + i18n.defaultLocale = "en_US.UTF-8"; 12 + i18n.extraLocaleSettings = { 13 + LC_ADDRESS = "fr_FR.UTF-8"; 14 + LC_IDENTIFICATION = "fr_FR.UTF-8"; 15 + LC_MEASUREMENT = "fr_FR.UTF-8"; 16 + LC_MONETARY = "fr_FR.UTF-8"; 17 + LC_NAME = "fr_FR.UTF-8"; 18 + LC_NUMERIC = "fr_FR.UTF-8"; 19 + LC_PAPER = "fr_FR.UTF-8"; 20 + LC_TELEPHONE = "fr_FR.UTF-8"; 21 + LC_TIME = "fr_FR.UTF-8"; 22 + }; 23 + 24 + # Timezone 25 + time.timeZone = "Europe/Paris"; 26 + 27 + # Keyboard 28 + services.xserver.xkb.layout = "us"; 29 + 30 + # Networking 31 + networking.networkmanager.enable = true; 32 + networking.hostName = hostname; 33 + 34 + # Disable CUPS since this desktop will not print something. 35 + services.printing.enable = false; 36 + 37 + # Common system configurations 38 + gems.system.garbageCollector.enable= true; 39 + gems.system.autoUpdate.enable = false; 40 + 41 + # This value determines the NixOS release from which the default 42 + # settings for stateful data, like file locations and database versions 43 + # on your system were taken. It‘s perfectly fine and recommended to leave 44 + # this value at the release version of the first install of this system. 45 + # Before changing this value read the documentation for this option 46 + # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html). 47 + system.stateVersion = "24.11"; # Did you read the comment? 48 + }
+83
hosts/nixos/hydrogen/default.nix
··· 1 + { self, inputs, hostname, ... }: 2 + { 3 + imports = [ 4 + ./hardware.nix 5 + 6 + # Import users 7 + ../../../homes/cosmeak/hydrogen 8 + ]; 9 + 10 + # EFI Bootloader 11 + boot.loader.systemd-boot.enable = true; 12 + boot.loader.efi.canTouchEfiVariables = true; 13 + boot.loader.systemd-boot.configurationLimit = 10; 14 + 15 + # Locales 16 + i18n.defaultLocale = "en_US.UTF-8"; 17 + i18n.extraLocaleSettings = { 18 + LC_ADDRESS = "fr_FR.UTF-8"; 19 + LC_IDENTIFICATION = "fr_FR.UTF-8"; 20 + LC_MEASUREMENT = "fr_FR.UTF-8"; 21 + LC_MONETARY = "fr_FR.UTF-8"; 22 + LC_NAME = "fr_FR.UTF-8"; 23 + LC_NUMERIC = "fr_FR.UTF-8"; 24 + LC_PAPER = "fr_FR.UTF-8"; 25 + LC_TELEPHONE = "fr_FR.UTF-8"; 26 + LC_TIME = "fr_FR.UTF-8"; 27 + }; 28 + 29 + # Timezone 30 + time.timeZone = "Europe/Paris"; 31 + 32 + # Keyboard 33 + services.xserver.xkb.layout = "us"; 34 + 35 + # Audio 36 + gems.hardware.audio.enable = true; 37 + 38 + # Nvidia GPU and OpenGL 39 + gems.hardware.nvidia.enable = true; 40 + 41 + # Networking 42 + networking.networkmanager.enable = true; 43 + networking.hostName = hostname; 44 + 45 + # Desktop Environment 46 + services.xserver.enable = true; 47 + services.xserver.desktopManager.budgie.enable = true; 48 + services.xserver.displayManager.lightdm.enable = true; 49 + services.displayManager.defaultSession = "budgie-desktop"; 50 + environment.budgie.excludePackages = with pkgs; [ 51 + mate.mate-terminal # don't need since we have kitty installed 52 + ]; 53 + 54 + # Global packages 55 + environment.systemPackages = with pkgs; [ 56 + firefox 57 + kitty 58 + ]; 59 + 60 + # Steam 61 + gems.programs.steam.enable = true; 62 + 63 + # Disable CUPS since this desktop will not print something. 64 + services.printing.enable = false; 65 + 66 + # Common system configurations 67 + gems.system.garbageCollector.enable = true; 68 + gems.system.autoUpdate.enable = false; 69 + 70 + # Enable unfree packages 71 + nixpkgs.config.allowUnfree = true; 72 + 73 + # Enable flakes and other experimental features 74 + nix.settings.experimental-features = [ "nix-command" "flakes" "pipe-operators" ]; 75 + 76 + # This value determines the NixOS release from which the default 77 + # settings for stateful data, like file locations and database versions 78 + # on your system were taken. It‘s perfectly fine and recommended to leave 79 + # this value at the release version of the first install of this system. 80 + # Before changing this value read the documentation for this option 81 + # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html). 82 + system.stateVersion = "24.11"; # Did you read the comment? 83 + }
+68
hosts/nixos/lithium/default.nix
··· 1 + { self, inputs, pkgs, hostname, ... }: 2 + { 3 + # Force update to the last linux kernel avalaible 4 + boot.kernelPackages = pkgs.linuxPackages_latest; 5 + 6 + # Special hardware config for raspberry 7 + hardware = { 8 + raspberry-pi."4".apply-overlays-dtmerge.enable = true; 9 + raspberry-pi."4".fkms-3d.enable = true; # Enable hardware acceleration 10 + deviceTree = { 11 + enable = true; 12 + filter = "*rpi-4-*.dtb"; 13 + }; 14 + }; 15 + 16 + # Networking configuration 17 + # networking.networkmanager.enable = true; 18 + networking.hostName = hostname; 19 + networking.interfaces."wlan0".useDHCP = true; 20 + networking.wireless = { 21 + enable = true; 22 + interfaces = [ "wlan0" ]; 23 + }; 24 + 25 + users.users."rpi" = { 26 + isNormalUser = true; 27 + extraGroups = [ "wheel" ]; 28 + hashedPassword = "$y$j9T$rg0syrPPtjaLILPTTplI3/$5uykqP9tXjAsvOocbfosUeN6j6dMrHRUtwudKd4QaA5"; # password generated with `mkpasswd` command 29 + 30 + # User wide packages 31 + packages = []; 32 + }; 33 + 34 + # System wide packages 35 + environment.systemPackages = with pkgs; [ 36 + libraspberrypi 37 + raspberrypi-eeprom 38 + ]; 39 + 40 + # Garbage collector 41 + nix.gc = { 42 + automatic = true; 43 + dates = "weekly"; 44 + options = "--delete-older-than 7d"; 45 + }; 46 + 47 + nix.settings = { 48 + auto-optimise-store = true; # Related to garbage collector 49 + experimental-features = "nix-command flakes"; # Enable flakes 50 + }; 51 + 52 + # "${nixpkgs}/nixos/modules/installer/sd-card/sd-image-aarch64.nix" creates a 53 + # disk with this label on first boot. Therefore, we need to keep it. It is the 54 + # only information from the installer image that we need to keep persistent 55 + fileSystems."/" = { 56 + device = "/dev/disk/by-label/NIXOS_SD"; 57 + fsType = "ext4"; 58 + }; 59 + 60 + # This value determines the NixOS release from which the default 61 + # settings for stateful data, like file locations and database versions 62 + # on your system were taken. It‘s perfectly fine and recommended to leave 63 + # this value at the release version of the first install of this system. 64 + # Before changing this value read the documentation for this option 65 + # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html). 66 + # https://nixos.wiki/wiki/FAQ/When_do_I_update_stateVersion 67 + system.stateVersion = "24.11"; # Did you read the comment? 68 + }
-4
hosts/x86_64-linux/beowulf/default.nix
··· 1 - { self, inputs, outputs, pkgs, ... }: 2 - { 3 - # 4 - }
-164
hosts/x86_64-linux/loki/default.nix
··· 1 - { self, inputs, pkgs, config, ... }: 2 - { 3 - imports = [ 4 - ./hardware.nix 5 - inputs.home-manager.nixosModules.home-manager 6 - ]; 7 - 8 - # Window manager 9 - asgard.programs.windowManager.river.enable = true; 10 - 11 - # Home Manager 12 - home-manager.useGlobalPkgs = true; 13 - home-manager.useUserPackages = true; 14 - home-manager.users.cosmeak = import ./../../../homes/x86_64-linux/loki/cosmeak { inherit inputs pkgs; }; 15 - users.users.cosmeak.home = "/home/cosmeak"; 16 - home-manager.backupFileExtension = "bak"; 17 - 18 - # EFI Bootloader 19 - boot.loader.systemd-boot.enable = true; 20 - boot.loader.efi.canTouchEfiVariables = true; 21 - boot.loader.systemd-boot.configurationLimit = 10; 22 - 23 - # https://github.com/NixOS/nixpkgs/blob/c32c39d6f3b1fe6514598fa40ad2cf9ce22c3fb7/nixos/modules/system/boot/loader/systemd-boot/systemd-boot.nix#L66 24 - boot.loader.systemd-boot.editor = false; 25 - 26 - # Fonts 27 - fonts.packages = with pkgs; [ 28 - (nerdfonts.override { fonts = [ "Hack" ]; }) 29 - ]; 30 - environment.variables = { 31 - # Enable icons in tooling since we have nerdfonts. 32 - LOG_ICONS = "true"; 33 - }; 34 - 35 - # Locales 36 - i18n.defaultLocale = "en_US.UTF-8"; 37 - 38 - i18n.extraLocaleSettings = { 39 - LC_ADDRESS = "fr_FR.UTF-8"; 40 - LC_IDENTIFICATION = "fr_FR.UTF-8"; 41 - LC_MEASUREMENT = "fr_FR.UTF-8"; 42 - LC_MONETARY = "fr_FR.UTF-8"; 43 - LC_NAME = "fr_FR.UTF-8"; 44 - LC_NUMERIC = "fr_FR.UTF-8"; 45 - LC_PAPER = "fr_FR.UTF-8"; 46 - LC_TELEPHONE = "fr_FR.UTF-8"; 47 - LC_TIME = "fr_FR.UTF-8"; 48 - }; 49 - 50 - # Timezone 51 - time.timeZone = "Europe/Paris"; 52 - 53 - # Keyboard 54 - services.xserver.xkb.layout = "us"; 55 - 56 - # Audio 57 - hardware.pulseaudio.enable = false; 58 - security.rtkit.enable = true; 59 - services.pipewire = { 60 - enable = true; 61 - alsa.enable = true; 62 - alsa.support32Bit = true; 63 - pulse.enable = true; 64 - jack.enable = true; 65 - }; 66 - 67 - # Nvidia GPU 68 - # Open GL 69 - hardware.graphics = { 70 - enable = true; 71 - enable32Bit = true; 72 - }; 73 - services.xserver.videoDrivers = [ "nvidia" ]; 74 - hardware.nvidia = { 75 - # package = config.boot.kernelPackages.nvidiaPackages.beta; 76 - modesetting.enable = true; 77 - powerManagement.enable = false; 78 - powerManagement.finegrained = false; 79 - open = false; 80 - nvidiaSettings = true; 81 - }; 82 - 83 - # Networking 84 - networking.networkmanager.enable = true; 85 - networking.hostName = "loki"; 86 - 87 - # Steam 88 - programs.steam = { 89 - enable = true; 90 - gamescopeSession.enable = true; 91 - }; 92 - environment.sessionVariables = { 93 - STEAM_EXTRA_COMPAT_TOOS_PATHS = "/home/cosmeak/.steam/root/compatibilitytools.d"; 94 - }; 95 - 96 - # Shell 97 - users.defaultUserShell = pkgs.zsh; 98 - users.users.root.shell = pkgs.bashInteractive; 99 - programs.zsh.enable = true; 100 - 101 - # Enable automatic login for the user. 102 - services.displayManager.autoLogin.enable = true; 103 - services.displayManager.autoLogin.user = "cosmeak"; 104 - 105 - # Install packages 106 - environment.systemPackages = with pkgs; [ 107 - git 108 - mangohud 109 - protonup 110 - vlc 111 - pavucontrol 112 - 113 - inputs.zen-browser.packages."${system}".default 114 - 115 - # For gaming purposes 116 - ananicy-cpp 117 - ananicy-rules-cachyos 118 - ]; 119 - 120 - # Unlock 1password browser extension for zen 121 - environment.etc."1password/custom_allowed_browsers" = { 122 - text = ".zen-wrapped"; 123 - mode = "0755"; 124 - }; 125 - 126 - # Add extra groups to users 127 - users.users.cosmeak = { 128 - isNormalUser = true; 129 - description = "cosmeak"; 130 - extraGroups = [ "networkmanager" "wheel" ]; 131 - }; 132 - 133 - # Enable or not CUPS to print documents. 134 - services.printing.enable = false; 135 - 136 - # Enable unfree packages 137 - nixpkgs.config.allowUnfree = true; 138 - # nixpkgs.overlays = [ self.outputs.overlays.unstable-packages self.outputs.overlays.dwl ]; 139 - 140 - # Perform garbage collection weekly to maintain low disk usage 141 - nix.gc = { 142 - automatic = true; 143 - dates = "weekly"; 144 - options = "--delete-older-than 1w"; 145 - }; 146 - 147 - # Optimize storage 148 - # You can also manually optimize the store via: 149 - # nix-store --optimise 150 - # Refer to the following link for more details: 151 - # https://nixos.org/manual/nix/stable/command-ref/conf-file.html#conf-auto-optimise-store 152 - nix.settings.auto-optimise-store = true; 153 - 154 - # Enable flakes 155 - nix.settings.experimental-features = [ "nix-command" "flakes" "pipe-operators" ]; 156 - 157 - # This value determines the NixOS release from which the default 158 - # settings for stateful data, like file locations and database versions 159 - # on your system were taken. It‘s perfectly fine and recommended to leave 160 - # this value at the release version of the first install of this system. 161 - # Before changing this value read the documentation for this option 162 - # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html). 163 - system.stateVersion = "24.11"; # Did you read the comment? 164 - }
-1
hosts/x86_64-linux/loki/hardware.nix hosts/nixos/hydrogen/hardware.nix
··· 2 2 # and may be overwritten by future invocations. Please make changes 3 3 # to /etc/nixos/configuration.nix instead. 4 4 { config, lib, pkgs, modulesPath, ... }: 5 - 6 5 { 7 6 imports = 8 7 [ (modulesPath + "/installer/scan/not-detected.nix")
-135
hosts/x86_64-linux/nyx/default.nix
··· 1 - { self, inputs, pkgs, config, ... }: 2 - with lib; 3 - with lib.${namespace}; 4 - { 5 - imports = [ ./hardware.nix ]; 6 - 7 - # asgard = { 8 - # system = { 9 - # bootloader.enable = true; 10 - # }; 11 - 12 - # hardware = { 13 - # gpu.nvidia.enable = true; 14 - # audio.enable = true; 15 - # }; 16 - 17 - # desktop.budgie.enable = true; 18 - 19 - # apps = { 20 - # steam.enable = true; 21 - # }; 22 - # }; 23 - 24 - networking.hostName = "nyx"; # Define your hostname. 25 - # networking.wireless.enable = true; # Enables wireless support via wpa_supplicant. 26 - 27 - # Configure network proxy if necessary 28 - # networking.proxy.default = "http://user:password@proxy:port/"; 29 - # networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain"; 30 - 31 - # Enable networking 32 - networking.networkmanager.enable = true; 33 - 34 - # Set your time zone. 35 - time.timeZone = "Europe/Paris"; 36 - 37 - # Select internationalisation properties. 38 - i18n.defaultLocale = "en_US.UTF-8"; 39 - 40 - i18n.extraLocaleSettings = { 41 - LC_ADDRESS = "fr_FR.UTF-8"; 42 - LC_IDENTIFICATION = "fr_FR.UTF-8"; 43 - LC_MEASUREMENT = "fr_FR.UTF-8"; 44 - LC_MONETARY = "fr_FR.UTF-8"; 45 - LC_NAME = "fr_FR.UTF-8"; 46 - LC_NUMERIC = "fr_FR.UTF-8"; 47 - LC_PAPER = "fr_FR.UTF-8"; 48 - LC_TELEPHONE = "fr_FR.UTF-8"; 49 - LC_TIME = "fr_FR.UTF-8"; 50 - }; 51 - 52 - # Configure keymap in X11 53 - services.xserver.xkb = { 54 - layout = "fr"; 55 - variant = ""; 56 - }; 57 - 58 - # Configure console keymap 59 - console.keyMap = "fr"; 60 - 61 - # Enable CUPS to print documents. 62 - services.printing.enable = true; 63 - 64 - # Enable touchpad support (enabled default in most desktopManager). 65 - # services.xserver.libinput.enable = true; 66 - 67 - # Define a user account. Don't forget to set a password with ‘passwd’. 68 - users.users.benjamin = { 69 - isNormalUser = true; 70 - description = "benjamin"; 71 - extraGroups = [ "networkmanager" "wheel" ]; 72 - packages = with pkgs; [ 73 - vscode 74 - discord 75 - thunderbird 76 - spotify 77 - brave 78 - lutris 79 - btop 80 - heroic 81 - vesktop 82 - unzip 83 - zip 84 - lazygit 85 - # unstable.unityhub 86 - blender 87 - ]; 88 - }; 89 - 90 - # Enable automatic login for the user. 91 - services.displayManager.autoLogin.enable = true; 92 - services.displayManager.autoLogin.user = "benjamin"; 93 - 94 - # Install firefox. 95 - programs.firefox.enable = false; 96 - 97 - # List packages installed in system profile. To search, run: 98 - # $ nix search wget 99 - environment.systemPackages = with pkgs; [ 100 - git 101 - mangohud 102 - protonup 103 - wine 104 - ]; 105 - 106 - # Some programs need SUID wrappers, can be configured further or are 107 - # started in user sessions. 108 - # programs.mtr.enable = true; 109 - # programs.gnupg.agent = { 110 - # enable = true; 111 - # enableSSHSupport = true; 112 - # }; 113 - 114 - # List services that you want to enable: 115 - 116 - # Enable the OpenSSH daemon. 117 - # services.openssh.enable = true; 118 - 119 - # Open ports in the firewall. 120 - # networking.firewall.allowedTCPPorts = [ ... ]; 121 - # networking.firewall.allowedUDPPorts = [ ... ]; 122 - # Or disable the firewall altogether. 123 - # networking.firewall.enable = false; 124 - 125 - nix.settings.experimental-features = [ "nix-command" "flakes" ]; 126 - 127 - # This value determines the NixOS release from which the default 128 - # settings for stateful data, like file locations and database versions 129 - # on your system were taken. It‘s perfectly fine and recommended to leave 130 - # this value at the release version of the first install of this system. 131 - # Before changing this value read the documentation for this option 132 - # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html). 133 - system.stateVersion = "24.05"; # Did you read the comment? 134 - 135 - }
-40
hosts/x86_64-linux/nyx/hardware.nix
··· 1 - # Do not modify this file! It was generated by ‘nixos-generate-config’ 2 - # and may be overwritten by future invocations. Please make changes 3 - # to /etc/nixos/configuration.nix instead. 4 - { config, lib, pkgs, modulesPath, ... }: 5 - 6 - { 7 - imports = 8 - [ (modulesPath + "/installer/scan/not-detected.nix") 9 - ]; 10 - 11 - boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "ahci" "usb_storage" "usbhid" "sd_mod" ]; 12 - boot.initrd.kernelModules = [ ]; 13 - boot.kernelModules = [ "kvm-amd" ]; 14 - boot.extraModulePackages = [ ]; 15 - 16 - fileSystems."/" = 17 - { device = "/dev/disk/by-uuid/fd217360-823a-44b2-a85c-9eb968aa8a51"; 18 - fsType = "ext4"; 19 - }; 20 - 21 - fileSystems."/boot" = 22 - { device = "/dev/disk/by-uuid/20F1-277B"; 23 - fsType = "vfat"; 24 - options = [ "fmask=0077" "dmask=0077" ]; 25 - }; 26 - 27 - swapDevices = 28 - [ { device = "/dev/disk/by-uuid/601b70b8-49df-47fa-ace0-0a452ef9d4f6"; } 29 - ]; 30 - 31 - # Enables DHCP on each ethernet and wireless interface. In case of scripted networking 32 - # (the default) this is the recommended approach. When using systemd-networkd it's 33 - # still possible to use this option, but it's recommended to use it in conjunction 34 - # with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`. 35 - networking.useDHCP = lib.mkDefault true; 36 - # networking.interfaces.eno1.useDHCP = lib.mkDefault true; 37 - 38 - nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; 39 - hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; 40 - }
-28
hosts/x86_64-linux/vali/default.nix
··· 1 - # NixOS-WSL specific options are documented on the NixOS-WSL repository: 2 - # https://github.com/nix-community/NixOS-WSL 3 - { config, lib, pkgs, ... }: 4 - { 5 - imports = [ 6 - inputs.wsl.nixosModules.wsl 7 - ]; 8 - 9 - wsl.enable = true; 10 - wsl.defaultUser = "vali"; 11 - 12 - environment.systemPackages = with pkgs; [ 13 - wget 14 - git 15 - lazygit 16 - php83 17 - php83Packages.composer 18 - nodejs_20 19 - ]; 20 - 21 - # This value determines the NixOS release from which the default 22 - # settings for stateful data, like file locations and database versions 23 - # on your system were taken. It's perfectly fine and recommended to leave 24 - # this value at the release version of the first install of this system. 25 - # Before changing this value read the documentation for this option 26 - # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html). 27 - system.stateVersion = "24.05"; # Did you read the comment? 28 - }
+10 -6
justfile
··· 1 + hostname := "$HOSTNAME" 2 + 1 3 default: 2 4 @just --list 3 5 4 - nixos-switch: 5 - sudo nixos-rebuild switch --flake . 6 - 7 - darwin-switch: 8 - sudo darwin-rebuild switch --flake . 6 + rebuild hostname=hostname: 7 + #!/usr/bin/env sh 8 + if [[ "$OSTYPE" == "darwin"* ]]; then \ 9 + darwin-rebuild switch --flake .#{{ hostname }}; \ 10 + else \ 11 + sudo nixos-rebuild switch --flake .#{{ hostname }}; \ 12 + fi; 9 13 10 14 clean: 11 15 nix-store --optimize ··· 13 17 sudo nix-collect-garbage -d 14 18 15 19 nix-size: 16 - du -sh /nix/store 20 + du -sh /nix/store
lib/.gitkeep

This is a binary file and will not be displayed.

-196
lib/default.nix
··· 1 - { self, inputs, ... }: 2 - let inherit (inputs.nixpkgs) lib; in 3 - rec { 4 - ## FileSystem 5 - ## Help manage file and access to it 6 - fs = rec { 7 - ## Match if type is a directory 8 - #@ String -> Boolean 9 - isDirectory = type: type == "directory"; 10 - 11 - ## Match if type is a file 12 - #@ String -> Boolean 13 - isFile = type: type == "regular"; 14 - 15 - ## Get directories at a given path 16 - #@ Path -> []Path 17 - getDirectories = path: 18 - builtins.readDir path 19 - |> lib.filterAttrs (_: type: type |> isDirectory) 20 - |> lib.mapAttrsToList(name: _: "${path}/${name}"); 21 - 22 - ## Get files at a given path 23 - #@ Path -> []Path 24 - getFiles = path: 25 - builtins.readDir path 26 - |> lib.filterAttrs (_: type: type |> isFile) 27 - |> lib.mapAttrsToList(name: _: "${path}/${name}"); 28 - 29 - ## Get files in all folders at a giver path 30 - #@ Path -> []Path 31 - getFilesRecursively = path: let 32 - entries = builtins.readDir path |> lib.filterAttrs (name: type: (type |> isDirectory) || (type |> isFile)); 33 - mapFile = name: type: let 34 - path' = "${path}/${name}"; 35 - in 36 - if type |> isDirectory 37 - then getFilesRecursively path' 38 - else path'; 39 - files = lib.flatten (lib.mapAttrsToList mapFile entries); 40 - in files; 41 - 42 - ## Get the default file in the directory if exists 43 - #@ Path -> Path|null 44 - getDefaultFile = path: let path = "${path}/default.nix"; in if builtins.pathExists path then path else null; 45 - 46 - ## Get all default files from a folder recursively 47 - #@ Path -> []Path 48 - getDefaultFiles = path: getFilesRecursively path |> builtins.filter (name: builtins.baseNameOf name == "default.nix"); 49 - }; 50 - 51 - module = rec { 52 - getCommonModules = fs.getDefaultFiles ./../modules/common; 53 - getNixosModules = fs.getDefaultFiles ./../modules/nixos ++ getCommonModules; 54 - getDarwinModules = fs.getDefaultFiles ./../modules/darwin ++ getCommonModules; 55 - getHomeManagerModules = fs.getDefaultFiles ./../modules/home-manager; 56 - }; 57 - 58 - overlay = rec { 59 - getOverlays = []; 60 - }; 61 - 62 - ## Hosts 63 - ## Help manage hosts builds 64 - host = rec { 65 - ## Check if a system is Linux 66 - #@ String -> Bool 67 - isLinux = lib.hasInfix "linux"; 68 - 69 - ## Check if a system is MacOS 70 - #@ String -> Bool 71 - isDarwin = lib.hasInfix "darwin"; 72 - 73 - ## Get structured data about all hosts for a system 74 - #@ String -> [Attrs] 75 - getSystemHostsInformations = systemPath: let 76 - hosts = fs.getDirectories systemPath; 77 - mkHostInformations = path: { 78 - system = builtins.baseNameOf systemPath; 79 - hostname = builtins.baseNameOf path; 80 - path = fs.getDefaultFile path; 81 - }; 82 - hostsInformations = builtins.map mkHostInformations hosts; 83 - in hostsInformations; 84 - 85 - ## Get the name of the system output 86 - #@ String -> String 87 - getOutput = system: if system |> isDarwin then "darwinConfigurations" else "nixosConfigurations"; 88 - 89 - ## Get the system host builder 90 - #@ String -> Functions 91 - getBuilder = system: let 92 - linuxBuilder = args: lib.nixosSystem (args // { 93 - modules = args.modules ++ module.getNixosModules; 94 - }); 95 - darwinBuilder = args: inputs.darwin.lib.darwinSystem (args // { 96 - modules = args.modules ++ module.getDarwinModules; 97 - }); 98 - in 99 - if system |> isDarwin 100 - then darwinBuilder 101 - else linuxBuilder; 102 - 103 - ## Create output for a host 104 - #@ Attrs -> Attrs 105 - mkHost = { 106 - system, 107 - hostname, 108 - path, 109 - builder ? getBuilder system, 110 - output ? getOutput system 111 - }: { 112 - ${output}.${hostname} = builder { 113 - system = system; 114 - specialArgs = { inherit inputs self; }; 115 - modules = [ path ]; 116 - }; 117 - }; 118 - 119 - ## Create all available hosts 120 - #@ Attrs -> Attrs 121 - mkHosts = let 122 - architecturesPath = ./../hosts; 123 - # Get the architecture directories 124 - architectures = fs.getDirectories architecturesPath; 125 - 126 - # Collect all hosts by iterating over architectures 127 - allHosts = lib.map (architecture: let 128 - # Get host directories for this architecture 129 - hostDirectories = fs.getDirectories "${architecturesPath}/${architecture}"; 130 - 131 - # Generate the host information for each directory 132 - hostInfos = lib.map (hostDir: getSystemHostsInformations hostDir) hostDirectories; 133 - 134 - # Create a host configuration for each host information 135 - hostConfigs = lib.map (hostInfo: mkHost { 136 - system = hostInfo.system; # The system (architecture) for the host 137 - hostname = hostInfo.hostname; 138 - path = hostInfo.path; 139 - }) hostInfos; 140 - in hostConfigs) architectures; 141 - in lib.foldl' (attrs: newAttrs: attrs // newAttrs) {} allHosts; 142 - }; 143 - 144 - ## Home 145 - ## Help me manage creation of all users home by host 146 - home = rec { 147 - ## Create home modules for a user 148 - #@ Attrs -> []Module 149 - mkHome = { 150 - system, 151 - hostname, 152 - username, 153 - stateVersion ? "24.11" 154 - }: 155 - [ 156 - (if system |> host.isDarwin then inputs.home-manager.darwinModules.home-manager else inputs.home-manager.nixosModules.home-manager) 157 - { 158 - inputs.home-manager.useGlobalPkgs = true; 159 - inputs.home-manager.useUserPackages = true; 160 - inputs.home-manager.extraSpecialArgs = { inherit system hostname username; }; 161 - inputs.home-manager.${username} = { 162 - imports = [ ./homes/${system}/${hostname}/${username}/default.nix ] ++ module.getHomeManagerModules; 163 - programs.home-manager.enable = true; # Let home manager manage itself 164 - home.username = username; 165 - home.homeDirectory = if system |> host.isDarwin then "/Users/${username}" else "/home/${username}"; 166 - home.stateVersion = stateVersion; 167 - }; 168 - } 169 - # (if system |> host.isLinux then { 170 - # # Define a user account. Don't forget to set a password with ‘passwd’. 171 - # users.users.${username} = { 172 - # isNormalUser = true; 173 - # description = username; 174 - # extraGroups = [ ]; 175 - # }; 176 - # } else {}) 177 - ]; 178 - 179 - ## Create all user home from a host 180 - #@ Attrs -> []Modules 181 - mkHomes = { 182 - system, 183 - host 184 - }: { 185 - 186 - }; 187 - }; 188 - 189 - ## Flake output 190 - ## Help manage flake output creation with making available the lib, 191 - ## modules, overlays and configurations. 192 - flake = rec { 193 - ## Build flake output 194 - mkFlake = {}; 195 - }; 196 - }
modules/common/.gitkeep templates/.gitkeep
-13
modules/darwin/programs/window-managers/amethyst/default.nix
··· 1 - { lib, pkgs, config, ... }: 2 - let 3 - cfg = config.asgard.programs.windowManager.amethyst; 4 - in 5 - { 6 - options.asgard.programs.windowManager.amethyst = { 7 - enable = lib.mkEnableOption "Amethyst - Aqua (MacOS) Window Manager"; 8 - }; 9 - 10 - config = lib.mkIf cfg.enable ({ 11 - homebrew.casks = [ "amethyst" ]; 12 - }); 13 - }
+19
modules/darwin/system/garbage-collector/default.nix
··· 1 + { config, pkgs, lib, ... }: 2 + let 3 + cfg = config.gems.system.garbageCollector; 4 + in 5 + { 6 + options.gems.system.garbageCollector = { 7 + enable = lib.mkEnableOption "Enable garbage collection."; 8 + }; 9 + 10 + config = lib.mkIf cfg.enable ({ 11 + # Perform garbage collection weekly to maintain low disk usage 12 + nix.gc = { 13 + automatic = true; 14 + interval = [{ Weekday = 7; }]; 15 + options = "--delete-older-than 7d"; 16 + }; 17 + nix.optimise.automatic = true; 18 + }); 19 + }
-45
modules/home-manager/programs/window-managers/amethyst/default.nix
··· 1 - { lib, pkgs, config, ... }: 2 - let 3 - cfg = config.asgard.programs.windowManager.amethyst; 4 - yamlFormat = pkgs.formats.yaml { }; 5 - in 6 - { 7 - options.asgard.programs.windowManager.amethyst = { 8 - settings = lib.mkOption { 9 - type = yamlFormat.type; 10 - default = { 11 - layouts = [ 12 - "tall" 13 - "wide" 14 - "column" 15 - ]; 16 - 17 - window-margins = true; 18 - window-margin-size = 16; 19 - window-max-count = 3; 20 - 21 - hide-menu-bar-icon = true; 22 - 23 - mod1 = [ 24 - "command" 25 - "shift" 26 - ]; 27 - 28 - mod2 = [ 29 - "command" 30 - "shift" 31 - "option" 32 - ]; 33 - }; 34 - description = '' 35 - Configuration written to {file}`$XDG_CONFIG_HOME/amethyst/amethyst.yml`. 36 - '' 37 - }; 38 - }; 39 - 40 - config = lib.mkIf (cfg.settings != {}) ({ 41 - home.file."amethyst/amethyst.yml" = { 42 - source = yamlFormat.generate "amethyst.yml" cfg.settings; 43 - }; 44 - }); 45 - }
+21
modules/nixos/hardware/audio/default.nix
··· 1 + { config, pkgs, lib, ... }: 2 + let 3 + cfg = config.gems.hardware.audio; 4 + in 5 + { 6 + options.gems.hardware.audio = { 7 + enable = lib.mkEnableOption "Enable opinated audio configuration."; 8 + }; 9 + 10 + config = lib.mkIf cfg.enable ({ 11 + services.pulseaudio.enable = false; 12 + security.rtkit.enable = true; 13 + services.pipewire = { 14 + enable = true; 15 + alsa.enable = true; 16 + alsa.support32Bit = true; 17 + pulse.enable = true; 18 + jack.enable = true; 19 + }; 20 + }); 21 + }
+35
modules/nixos/hardware/nvidia/default.nix
··· 1 + { config, pkgs, lib, ... }: 2 + let 3 + cfg = config.gems.hardware.nvidia; 4 + in 5 + { 6 + options.gems.hardware.nvidia = { 7 + enable = lib.mkEnableOption "Enable an opiniated configuration for NVIDIA gpus."; 8 + withOpenGL = lib.mkOption { 9 + type = lib.types.bool; 10 + default = true; 11 + description = "Choose to disable Open GL."; 12 + }; 13 + # package = lib.mkOption { 14 + # type = with lib.types.package; 15 + # default = config.boot.kernelPackages.nvidiaPackages.latest; 16 + # description = "Choose a different version of NVIDIA drivers."; 17 + # }; 18 + }; 19 + 20 + config = lib.mkIf cfg.enable ({ 21 + hardware.graphics = { 22 + enable = cfg.withOpenGL; 23 + enable32Bit = cfg.withOpenGL; 24 + }; 25 + services.xserver.videoDrivers = [ "nvidia" ]; 26 + hardware.nvidia = { 27 + package = config.boot.kernelPackages.nvidiaPackages.latest; 28 + modesetting.enable = true; 29 + powerManagement.enable = false; 30 + powerManagement.finegrained = false; 31 + open = false; 32 + nvidiaSettings = true; 33 + }; 34 + }); 35 + }
+22
modules/nixos/programs/steam/default.nix
··· 1 + { config, pkgs, lib, ... }: 2 + let 3 + cfg = config.gems.programs.steam; 4 + in 5 + { 6 + options.gems.programs.steam = { 7 + enable = lib.mkEnableOption '' 8 + Enable an opiniated configuration for Steam. 9 + This is a basic steam configuration at the moment, this will be change in the future for optimization and console like experience. 10 + ''; 11 + }; 12 + 13 + config = lib.mkIf cfg.enable ({ 14 + programs.steam = { 15 + enable = true; 16 + gamescopeSession.enable = true; 17 + }; 18 + environment.sessionVariables = { 19 + STEAM_EXTRA_COMPAT_TOOS_PATHS = "/home/cosmeak/.steam/root/compatibilitytools.d"; 20 + }; 21 + }); 22 + }
-30
modules/nixos/programs/window-managers/dwl/default.nix
··· 1 - { config, lib, pkgs, ... }: 2 - let cfg = config.asgard.programs.windowManager.dwl; in 3 - { 4 - options.asgard.programs.windowManager.dwl = { 5 - enable = lib.mkEnableOption "DWL Window Manager"; 6 - 7 - xwayland.enable = lib.mkEnableOption "XWayland" // { 8 - default = true; 9 - }; 10 - 11 - # Move dwl overlay here to give access to override patches 12 - # packages = lib.mkPackageOption pkgs "dwl" { 13 - 14 - # }; 15 - 16 - extraPackages = lib.mkOptions { 17 - type = with lib.types; listOf package; 18 - default = with pkgs; [ wmenu foot ]; 19 - }; 20 - }; 21 - 22 - config = lib.mkIf cfg.enable ({ 23 - environment.systemPackages = [ pkgs.dwm ] ++ cfg.extraPackages; 24 - security.polkit.enable = true; 25 - programs.xwayland.enable = cfg.xwayland.enable; 26 - 27 - # TODO: import and merge wayland-session.nix from nixpkgs nixos modules 28 - # https://github.com/NixOS/nixpkgs/blob/master/nixos/modules/programs/wayland/wayland-session.nix 29 - }); 30 - }
-37
modules/nixos/programs/window-managers/river/default.nix
··· 1 - { config, lib, pkgs, ... }: 2 - let cfg = config.asgard.programs.windowManager.river; in 3 - { 4 - options.asgard.programs.windowManager.river = { 5 - enable = lib.mkEnableOption "River - A Wayland Window Manager"; 6 - extraPackages = lib.mkOption { 7 - type = with lib.types; listOf package; 8 - default = with pkgs; [ swaylock swaybg swayidle dmenu fuzzel waybar foot yazi ]; 9 - }; 10 - }; 11 - 12 - config = lib.mkIf cfg.enable ({ 13 - programs.river = { 14 - enable = true; 15 - xwayland.enable = true; 16 - extraPackages = cfg.extraPackages; 17 - }; 18 - 19 - services.greetd = { 20 - enable = true; 21 - settings = { 22 - default_session = { 23 - command = ''${pkgs.greetd.tuigreet}/bin/tuigreet \ 24 - --remember \ 25 - --remember-session \ 26 - --asterisks \ 27 - --time ''; 28 - user = "greeter"; 29 - }; 30 - }; 31 - }; 32 - 33 - environment.etc."greetd/environments".text = '' 34 - river 35 - ''; 36 - }); 37 - }
+24
modules/nixos/system/auto-update/default.nix
··· 1 + { config, pkgs, lib, ... }: 2 + let 3 + cfg = config.gems.system.autoUpdate; 4 + in 5 + { 6 + options.gems.system.autoUpdate = { 7 + enable = lib.mkEnableOption "Enable system auto update."; 8 + }; 9 + 10 + config = lib.mkIf cfg.enable ({ 11 + system.autoUpgrade = { 12 + enable = true; 13 + flake = "/etc/nixos\\?submodules=1"; 14 + flags = [ 15 + "--update-input" 16 + "nixpkgs" 17 + "-L" 18 + ]; 19 + dates = "Sat *-*-* 06:00:00"; 20 + randomizedDelaySec = "45min"; 21 + allowReboot = true; 22 + }; 23 + }); 24 + }
+25
modules/nixos/system/garbage-collector/default.nix
··· 1 + { config, pkgs, lib, ... }: 2 + let 3 + cfg = config.gems.system.garbageCollector; 4 + in 5 + { 6 + options.gems.system.garbageCollector = { 7 + enable = lib.mkEnableOption "garbage collection."; 8 + }; 9 + 10 + config = lib.mkIf cfg.enable ({ 11 + # Perform garbage collection weekly to maintain low disk usage 12 + nix.gc = { 13 + automatic = true; 14 + dates = "weekly"; 15 + options = "--delete-older-than 1w"; 16 + }; 17 + 18 + # Optimize storage 19 + # You can also manually optimize the store via: 20 + # nix-store --optimise 21 + # Refer to the following link for more details: 22 + # https://nixos.org/manual/nix/stable/command-ref/conf-file.html#conf-auto-optimise-store 23 + nix.settings.auto-optimise-store = true; 24 + }); 25 + }
-5
overlays/default.nix
··· 1 - { inputs, outputs, ... }: 2 - { 3 - unstable-packages = import ./unstable { inherit inputs outputs; }; 4 - dwl = import ./dwl { inherit inputs outputs; }; 5 - }
-24
overlays/dwl/default.nix
··· 1 - { inputs, outputs, ... }: 2 - final: prev: { 3 - dwl = prev.dwl.overrideAttrs (finalAttrs: previousAttrs: { 4 - patches = [ 5 - # Add custom patches here and fetch them from https://www.codeberg.org/dwl/dwl-patches 6 - (inputs.nixpkgs.legacyPackages.x86_64-linux.fetchpatch { 7 - url = "https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/ipc/ipc.patch"; 8 - hash = "sha256-JOncRH9DxJtN5ZzMUexB2PpGaJUxwdHbDtZUYxYQh5A="; 9 - }) 10 - (inputs.nixpkgs.legacyPackages.x86_64-linux.fetchpatch { 11 - url = "https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/alwayscenter/alwayscenter.patch"; 12 - hash = "sha256-JaM/YAXioRi16TRKLvDvHAsn4HQ9jpaBAhvHyp/r/+I="; 13 - }) 14 - (inputs.nixpkgs.legacyPackages.x86_64-linux.fetchpatch { 15 - url = "https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/gaps/gaps.patch"; 16 - hash = "sha256-6knXrYblzaqjy5ZG8YG2VKwHeaHB+rij+8ZxXe5LqTE="; 17 - }) 18 - (inputs.nixpkgs.legacyPackages.x86_64-linux.fetchpatch { 19 - url = "https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/xwayland-handle-minimize/xwayland-handle-minimize.patch"; 20 - hash = "sha256-u///eiy98ov90BOowSHnX0lE8YCh2kS8kCDVs+uo1gI="; 21 - }) 22 - ]; 23 - }); 24 - }
-9
overlays/unstable/default.nix
··· 1 - { inputs, outputs, ... }: 2 - # The unstable nixpkgs set (declared in the flake inputs) will 3 - # be accessible through `pkgs.unstable` 4 - final: prev: { 5 - unstable = import inputs.unstable { 6 - inherit (final) system; 7 - config.allowUnfree = true; 8 - }; 9 - }
wallpapers/Witcher_3_Skellige_Mountain-Ansel_paint_filter.png

This is a binary file and will not be displayed.