···11<div align="center">
22- <h1> Asgard </h1>
22+ <h1> dotfiles </h1>
33</div>
4455This 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.
6677-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.
77+This repository follow the KISS principle and the suckless idea at this moment, but feel free to propose improvement.
8899> [!IMPORTANT]
1010-> This configuration is make for our purpose, you can take inspiration and some configuration but do not expect it to work on your side.🙂
1010+> 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.
1111>
1212-> Any damage caused by this configuration is not our responsibility. Use it at your own risks.
1212+> Any damage caused by this configuration is not my responsibility, so use it at your own risks.
13131414## ✨️ - Features
1515···1919- [x] Nix Darwin
2020- [ ] Nix BSD
2121- [ ] WSL
2222-- [ ] Homelab with MicroVM
2323-- [ ] Secrets management with Agenix
2424-- [ ] Secure Boot with lanzaboot
2525-- [ ] Persistant storage with impermanence
2626-- [ ] Disk configuration with disko
2222+- [ ] MicroWM for servers
2323+- [ ] Secrets management
2424+- [ ] Secure Boot
2525+- [ ] Persistant storage
2626+- [ ] Disk configuration
2727- [ ] Encrypted disks
2828-- [x] Default on stable channel and have unstable as an overlay (take from [here](https://github.com/AlexNabokikh/nix-config))
2929-- [x] Home Manager for dotfiles management
2828+- [ ] Home management
3029- [ ] Custom live ISO
3130- [ ] Auto-updating flakes
32313332## 💻 - Hosts
34333535-| Hostname | Motherboard | CPU | GPU | RAM | OS | Usage | Status |
3636-| :--------: | :-------------------------------: | :------------------: | :---------------: | :--: | :-: | :-------: | :----: |
3737-| `njord` | - | Apple M2 Pro Chip | Apple M2 Pro Chip | 32Go | 🍎️ | ⌨ | 🟢️ |
3838-| `loki` | ASUS ROG STRIX B760-I GAMING WIFI | Intel i5 13600kf | Nvidia 4070ti | 32Go | ❄️ | 🎮️ / 🎭️ | 🟢️ |
3939-| `nyx` | Aorus B450 Elite | AMD Ryzen 3 3300X | Nvidia 1060 | 16GO | ❄️ | 🎮️ / ⌨️ | 🟢️ |
4040-| `beowulf` | HP ProDesk 400 G1 DM | Intel Pentium G3250T | - | 8Go | ❄️ | 💾️ | 🟠 |
4141-| `vali` | WSL | Intel i5-1135G7 | - | 16Go | ❄️ | ⌨️ | 🟠 |
3434+| Hostname | Motherboard | CPU | GPU | RAM | OS | Usage | Status |
3535+| :----------- | :-------------------------------- | :------------------- | :---------------- | :--: | :-: | :------: | :----: |
3636+| `hydrogen` | ASUS ROG STRIX B760-I GAMING WIFI | Intel i5 13600kf | Nvidia 4070ti | 32Go | ❄️ | 🎮️ | 🟢️ |
3737+| `helium` | - | Apple M2 Pro | Apple M2 Pro | 32Go | 🍎️ | ⌨️ | 🟢️ |
3838+| `lithium` | Raspberry Pi4 b+ | - | - | 1Go | ❄️ | 🧨️ | 🟠 |
3939+| `beryllium` | WSL | Intel i5-1135G7 | - | 8Go | ❄️ | ⌨️ | 🔴 |
4040+| `boron` | Aorus B450 Elite | AMD Ryzen 3 3300X | Nvidia 1060 | 16Go | ❄️ | 🎮️ / ⌨️ | 🔴 |
4141+| `carbon` | HP ProDesk 400 G1 DM | Intel Pentium G3250T | - | 8Go | ❄️ | 💾️ | 🔴 |
4242+| `nitrogen` | MSI B450-A Pro Max | AMD Ryzen 5 3600x | Nvidia 1660ti | 16Go | ❄️ | 🎮️ | 🔴 |
42434344<details>
4445 <summary>Legend</summary>
···5556- 👹️ : FreeBSD with [NixBSD](https://github.com/nixos-bsd/nixbsd)
5657</details>
57585858-## 📦 - Structure
5959+## 📦 - Folder structure
59606061```
6162.
6262-├── homes # User home configuration
6363-│ ├── _shared # Shared dotfiles between user configuration
6464-│ │ └── <username>
6565-│ └── <system>
6363+├── homes # User home configuration
6464+│ ├── <username>
6565+│ │ ├── commons
6666│ │ └── <hostname>
6767-│ │ │ └── <username> # User host specific dotfiles
6868-├── hosts # Host-specific configuration
6969-│ └── <system>
6767+├── hosts # Host-specific configuration
6868+│ └── <os> # Darwin or NixOS
7069│ │ └── <hostname>
7171-├── lib # Custom functions needed to help configure
7272-├── modules # macOS and nix-darwin, NixOS, and shared configuration
7373-│ ├── shared # Shared modules across all platforms
7474-│ ├── nixos # Nixos modules
7575-│ ├── darwin # MacOS modules
7676-│ └── bsd # FreeBSD modules
7777-└── overlays # Helping overlays for building wanted packages
7070+├── lib # Custom functions needed to help configure
7171+├── modules # macOS and nix-darwin, NixOS, and shared configuration
7272+│ ├── commons
7373+│ ├── nixos
7474+│ ├── darwin
7575+│ └── bsd
7676+├── overlays
7777+└── templates
7878```
79798080-## 💡 - Acknowledgments
8080+### 📚️ - Acknowledgments
81818282These are the things that help me the most to understand Nix ecosystem and help me build my configuration from scratch.
83838484-### 📚️ - Learning
8484+You can retrieve dotfiles that inspired me inside my [`dotfiles` star list](https://github.com/stars/Cosmeak/lists/useful-dotfiles).
85858686- [Flakes book](https://nixos-and-flakes.thiscute.world/)
8787- [Nix Language](https://nix.dev/)
8888- [Nix Tour](https://nixcloud.io/tour/?id=introduction/nix)
8989-- [Simple Home Manager Explanation](https://github.com/Evertras/simple-homemanager)
90899191-### ✨️ - Dotfiles
9090+## 🐛 - Troubleshooting
92919393-You can retrieve more useful dotfiles inside my [dotfile star list](https://github.com/stars/Cosmeak/lists/useful-dotfiles).
9494-9595-The dotfiles listed below, are the one that really help me to build this are those from wich I took some code.
9696-9797-- [elythh](https://github.com/elythh/flake)
9898-- [chenglab](https://github.com/eh8/chenglab)
9999-- [AlexNabokikh](https://github.com/AlexNabokikh/nix-config)
100100-101101-## Troubleshooting
102102-103103-- If the rebuild command failed because an experimental feature is disabled use this command
9292+- If the rebuild command failed because an experimental feature is disabled use this command:
10493```sh
10594sudo -E NIX_CONFIG="experimental-features = nix-command flakes pipe-operators" nixos-rebuild switch --flake .
106106-```
9595+```
···11--- use number of space to a <Tab>
22-vim.opt.expandtab = true
33-44--- width of a <Tab>
55-vim.opt.shiftwidth = 2
66-vim.opt.tabstop = 2
77-vim.opt.softtabstop = 2
88-99--- enable line number and relative line number
1010-vim.opt.number = true
1111--- vim.opt.relativenumber = true
1212-1313--- enable auto indentation
1414-vim.opt.autoindent = true
···11-return {
22- "neanias/everforest-nvim",
33- version = false,
44- lazy = false,
55- priority = 1000, -- make sure to load this before all the other start plugins
66- -- Optional; default configuration will be used if setup isn't called.
77- config = function()
88- vim.cmd.colorscheme "everforest"
99- end,
1010-}
···11-{ inputs, pkgs, ... }:
22-{
33- imports = [ ./../../../_shared/cosmeak ./river ./waybar ];
44-55- programs.home-manager.enable = true;
66-77- home.packages = with pkgs; [
88- btop
99- discord
1010- just
1111- lazygit
1212- lutris
1313- obs-studio
1414- obsidian
1515- prismlauncher
1616- spotify
1717- thunderbird
1818- vscodium
1919- bottles
2020- _1password-gui
2121- zed-editor
2222- insomnia
2323- ];
2424-2525- # You do not need to change this if you're reading this in the future.
2626- # Don't ever change this after the first build. Don't ask questions.
2727- home.stateVersion = "24.11";
2828-}
-163
homes/x86_64-linux/loki/cosmeak/river/default.nix
···11-_:
22-{
33- wayland.windowManager.river.enable = true;
44- wayland.windowManager.river.xwayland.enable = true;
55- wayland.windowManager.river.systemd.enable = true;
66- wayland.windowManager.river.extraConfig = ''
77- #!/bin/sh
88- # See the river(1), riverctl(1), and rivertile(1) man pages for complete
99- # documentation.
1010-1111- # Note: the "Super" modifier is also known as Logo, GUI, Windows, Mod4, etc.
1212-1313- # Setup wallpaper with swaybg
1414- riverctl spawn "swaybg -m fill -i ${builtins.toString ./../../../../..}/wallpapers/Witcher_3_Skellige_Mountain-Ansel_paint_filter.png"
1515-1616- # Spawn waybar
1717- riverctl spawn waybar
1818-1919- # Spawn discord at login
2020- riverctl spawn discord
2121-2222- # Super+Shift+Return to start an instance of foot (https://codeberg.org/dnkl/foot)
2323- riverctl map normal Super+Shift Return spawn foot
2424-2525- # Super+P to open application launcher
2626- riverctl map normal Super P spawn fuzzel
2727-2828- # Super+Q to close the focused view
2929- riverctl map normal Super Q close
3030-3131- # Super+Shift+E to exit river
3232- riverctl map normal Super+Shift E exit
3333-3434- # Super+J and Super+K to focus the next/previous view in the layout stack
3535- riverctl map normal Super J focus-view next
3636- riverctl map normal Super K focus-view previous
3737-3838- # Super+Shift+J and Super+Shift+K to swap the focused view with the next/previous
3939- # view in the layout stack
4040- riverctl map normal Super+Shift J swap next
4141- riverctl map normal Super+Shift K swap previousriv
4242-4343- # Super+Period and Super+Comma to focus the next/previous output
4444- riverctl map normal Super Period focus-output next
4545- riverctl map normal Super Comma focus-output previous
4646-4747- # Super+Shift+{Period,Comma} to send the focused view to the next/previous output
4848- riverctl map normal Super+Shift Period send-to-output next
4949- riverctl map normal Super+Shift Comma send-to-output previous
5050-5151- # Super+Return to bump the focused view to the top of the layout stack
5252- riverctl map normal Super Return zoom
5353-5454- # Super+H and Super+L to decrease/increase the main ratio of rivertile(1)
5555- riverctl map normal Super H send-layout-cmd rivertile "main-ratio -0.05"
5656- riverctl map normal Super L send-layout-cmd rivertile "main-ratio +0.05"
5757-5858- # Super+Shift+H and Super+Shift+L to increment/decrement the main count of rivertile(1)
5959- riverctl map normal Super+Shift H send-layout-cmd rivertile "main-count +1"
6060- riverctl map normal Super+Shift L send-layout-cmd rivertile "main-count -1"
6161-6262- # Super+Alt+{H,J,K,L} to move views
6363- riverctl map normal Super+Alt H move left 100
6464- riverctl map normal Super+Alt J move down 100
6565- riverctl map normal Super+Alt K move up 100
6666- riverctl map normal Super+Alt L move right 100
6767-6868- # Super+Alt+Control+{H,J,K,L} to snap views to screen edges
6969- riverctl map normal Super+Alt+Control H snap left
7070- riverctl map normal Super+Alt+Control J snap down
7171- riverctl map normal Super+Alt+Control K snap up
7272- riverctl map normal Super+Alt+Control L snap right
7373-7474- # Super+Alt+Shift+{H,J,K,L} to resize views
7575- riverctl map normal Super+Alt+Shift H resize horizontal -100
7676- riverctl map normal Super+Alt+Shift J resize vertical 100
7777- riverctl map normal Super+Alt+Shift K resize vertical -100
7878- riverctl map normal Super+Alt+Shift L resize horizontal 100
7979-8080- # Super + Left Mouse Button to move views
8181- riverctl map-pointer normal Super BTN_LEFT move-view
8282-8383- # Super + Right Mouse Button to resize views
8484- riverctl map-pointer normal Super BTN_RIGHT resize-view
8585-8686- # Super + Middle Mouse Button to toggle float
8787- riverctl map-pointer normal Super BTN_MIDDLE toggle-float
8888-8989- for i in $(seq 1 9)
9090- do
9191- tags=$((1 << ($i - 1)))
9292-9393- # Super+[1-9] to focus tag [0-8]
9494- riverctl map normal Super $i set-focused-tags $tags
9595-9696- # Super+Shift+[1-9] to tag focused view with tag [0-8]
9797- riverctl map normal Super+Shift $i set-view-tags $tags
9898-9999- # Super+Control+[1-9] to toggle focus of tag [0-8]
100100- riverctl map normal Super+Control $i toggle-focused-tags $tags
101101-102102- # Super+Shift+Control+[1-9] to toggle tag [0-8] of focused view
103103- riverctl map normal Super+Shift+Control $i toggle-view-tags $tags
104104- done
105105-106106- # Super+0 to focus all tags
107107- # Super+Shift+0 to tag focused view with all tags
108108- all_tags=$(((1 << 32) - 1))
109109- riverctl map normal Super 0 set-focused-tags $all_tags
110110- riverctl map normal Super+Shift 0 set-view-tags $all_tags
111111-112112- # Super+Space to toggle float
113113- riverctl map normal Super Space toggle-float
114114-115115- # Super+F to toggle fullscreen
116116- riverctl map normal Super F toggle-fullscreen
117117-118118- # Super+{Up,Right,Down,Left} to change layout orientation
119119- riverctl map normal Super Up send-layout-cmd rivertile "main-location top"
120120- riverctl map normal Super Right send-layout-cmd rivertile "main-location right"
121121- riverctl map normal Super Down send-layout-cmd rivertile "main-location bottom"
122122- riverctl map normal Super Left send-layout-cmd rivertile "main-location left"
123123-124124- # Various media key mapping examples for both normal and locked mode which do
125125- # not have a modifier
126126- for mode in normal locked
127127- do
128128- # Control pulse audio volume with pamixer (https://github.com/cdemoulins/pamixer)
129129- riverctl map $mode None XF86AudioRaiseVolume spawn 'pamixer -i 5'
130130- riverctl map $mode None XF86AudioLowerVolume spawn 'pamixer -d 5'
131131- riverctl map $mode None XF86AudioMute spawn 'pamixer --toggle-mute'
132132-133133- # Control MPRIS aware media players with playerctl (https://github.com/altdesktop/playerctl)
134134- riverctl map $mode None XF86AudioMedia spawn 'playerctl play-pause'
135135- riverctl map $mode None XF86AudioPlay spawn 'playerctl play-pause'
136136- riverctl map $mode None XF86AudioPrev spawn 'playerctl previous'
137137- riverctl map $mode None XF86AudioNext spawn 'playerctl next'
138138-139139- # Control screen backlight brightness with brightnessctl (https://github.com/Hummer12007/brightnessctl)
140140- riverctl map $mode None XF86MonBrightnessUp spawn 'brightnessctl set +5%'
141141- riverctl map $mode None XF86MonBrightnessDown spawn 'brightnessctl set 5%-'
142142- done
143143-144144- # Set background and border color
145145- riverctl background-color 0x002b36
146146- riverctl border-color-focused 0x93a1a1
147147- riverctl border-color-unfocused 0x586e75
148148-149149- # Set keyboard repeat rate
150150- riverctl set-repeat 50 300
151151-152152- # Make all views with an app-id that starts with "float" and title "foo" start floating.
153153- riverctl rule-add -app-id 'float*' -title 'foo' float
154154-155155- # Make all views with app-id "bar" and any title use client-side decorations
156156- riverctl rule-add -app-id "bar" csd
157157-158158- # Set the default layout generator to be rivertile and start it.
159159- # River will send the process group of the init executable SIGTERM on exit.
160160- riverctl default-layout rivertile
161161- rivertile -view-padding 6 -outer-padding 6 &
162162- '';
163163-}
···11-{
22- homebrew.casks = [
33- # Dev
44- "zed"
55- "vscodium" # used for jupyter notebook because not available in zed at this time
66- "beekeeper-studio" # find a better alternative
77- "insomnia"
88- "orbstack" # replace with simple docker desktop
99- "figma"
1010- "dbngin" # will be removed when all my project will used flakes and docker for databases
1111- "arduino-ide"
1212-1313- # Apps
1414- "spotify"
1515- "discord"
1616- "thunderbird" # install via nix if possiblex
1717- "obsidian"
1818- "brave-browser"
1919- "zen-browser"
2020- "1password"
2121-2222- # Mics
2323- "amethyst" # Window manager
2424- "stats" # System monitoring displayed in macos top bar - will be replaced by custom script with sketchybar
2525-2626- # Fonts
2727- "sf-symbols"
2828- "font-hack-nerd-font" # move this to nix installation
2929- ];
3030-}
···77 CreateDesktop = false; # Disable show icon on desktop
88 FXDefaultSearchScope = "SCcf"; # Set default search scope to current folder
99 };
1010-}1010+}
···11+{ self, inputs, pkgs, hostname, ... }:
22+{
33+ imports = [
44+ ./homebrew
55+ ./system
66+ ];
77+88+ # pin nix group to already existant id
99+ ids.gids.nixbld = 30000;
1010+1111+ # Enable sudo via TouchID
1212+ security.pam.services.sudo_local.touchIdAuth = true;
1313+1414+ # Networking
1515+ networking.computerName = hostname;
1616+ networking.hostName = hostname;
1717+1818+ # Timezone
1919+ time.timeZone = "Europe/Paris";
2020+2121+ # System wide packages
2222+ environment.systemPackages = with pkgs; [
2323+ lazygit
2424+ kitty
2525+ just
2626+ firefox
2727+ spotify
2828+ discord
2929+ # _1password-gui
3030+ zed-editor
3131+ vscodium # used for jupyter notebook because not available in zed at this time
3232+ stats # System monitoring displayed in macos top bar - will be replaced by custom script with sketchybar
3333+ ];
3434+3535+ # Common system configurations
3636+ gems.system.garbageCollector.enable = true;
3737+3838+ # The platform the configuration will be used on.
3939+ nixpkgs.hostPlatform = "aarch64-darwin";
4040+4141+ # Allow packages
4242+ nixpkgs.config.allowUnfree = true;
4343+4444+ # Use nix as a daemon
4545+ nix.enable = true;
4646+4747+ # Enable flakes and other experimental features
4848+ nix.settings.experimental-features = [ "nix-command" "flakes" "pipe-operators" ];
4949+5050+ # Used for backwards compatibility, please read the changelog before changing.
5151+ # $ darwin-rebuild changelog
5252+ system.stateVersion = 5;
5353+}
+14
hosts/darwin/helium/homebrew/casks.nix
···11+{
22+ homebrew.casks = [
33+ "beekeeper-studio" # find a better alternative
44+ "insomnia"
55+ "orbstack" # replace with simple docker desktop
66+ "figma"
77+ "obsidian"
88+ "zen-browser"
99+ "amethyst" # Window manager
1010+ "sf-symbols"
1111+ "font-hack-nerd-font" # move this to nix installation
1212+ "1password"
1313+ ];
1414+}
+48
hosts/nixos/beryllium/default.nix
···11+{ self, inputs, pkgs, hostname, ... }:
22+{
33+ # imports = [ ./hardware.nix ];
44+55+ # EFI Bootloader
66+ boot.loader.systemd-boot.enable = true;
77+ boot.loader.efi.canTouchEfiVariables = true;
88+ boot.loader.systemd-boot.configurationLimit = 10;
99+1010+ # Locales
1111+ i18n.defaultLocale = "en_US.UTF-8";
1212+ i18n.extraLocaleSettings = {
1313+ LC_ADDRESS = "fr_FR.UTF-8";
1414+ LC_IDENTIFICATION = "fr_FR.UTF-8";
1515+ LC_MEASUREMENT = "fr_FR.UTF-8";
1616+ LC_MONETARY = "fr_FR.UTF-8";
1717+ LC_NAME = "fr_FR.UTF-8";
1818+ LC_NUMERIC = "fr_FR.UTF-8";
1919+ LC_PAPER = "fr_FR.UTF-8";
2020+ LC_TELEPHONE = "fr_FR.UTF-8";
2121+ LC_TIME = "fr_FR.UTF-8";
2222+ };
2323+2424+ # Timezone
2525+ time.timeZone = "Europe/Paris";
2626+2727+ # Keyboard
2828+ services.xserver.xkb.layout = "us";
2929+3030+ # Networking
3131+ networking.networkmanager.enable = true;
3232+ networking.hostName = hostname;
3333+3434+ # Disable CUPS since this desktop will not print something.
3535+ services.printing.enable = false;
3636+3737+ # Common system configurations
3838+ gems.system.garbageCollector.enable= true;
3939+ gems.system.autoUpdate.enable = false;
4040+4141+ # This value determines the NixOS release from which the default
4242+ # settings for stateful data, like file locations and database versions
4343+ # on your system were taken. It‘s perfectly fine and recommended to leave
4444+ # this value at the release version of the first install of this system.
4545+ # Before changing this value read the documentation for this option
4646+ # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
4747+ system.stateVersion = "24.11"; # Did you read the comment?
4848+}
+48
hosts/nixos/boron/default.nix
···11+{ self, inputs, pkgs, hostname, ... }:
22+{
33+ # imports = [ ./hardware.nix ];
44+55+ # EFI Bootloader
66+ boot.loader.systemd-boot.enable = true;
77+ boot.loader.efi.canTouchEfiVariables = true;
88+ boot.loader.systemd-boot.configurationLimit = 10;
99+1010+ # Locales
1111+ i18n.defaultLocale = "en_US.UTF-8";
1212+ i18n.extraLocaleSettings = {
1313+ LC_ADDRESS = "fr_FR.UTF-8";
1414+ LC_IDENTIFICATION = "fr_FR.UTF-8";
1515+ LC_MEASUREMENT = "fr_FR.UTF-8";
1616+ LC_MONETARY = "fr_FR.UTF-8";
1717+ LC_NAME = "fr_FR.UTF-8";
1818+ LC_NUMERIC = "fr_FR.UTF-8";
1919+ LC_PAPER = "fr_FR.UTF-8";
2020+ LC_TELEPHONE = "fr_FR.UTF-8";
2121+ LC_TIME = "fr_FR.UTF-8";
2222+ };
2323+2424+ # Timezone
2525+ time.timeZone = "Europe/Paris";
2626+2727+ # Keyboard
2828+ services.xserver.xkb.layout = "us";
2929+3030+ # Networking
3131+ networking.networkmanager.enable = true;
3232+ networking.hostName = hostname;
3333+3434+ # Disable CUPS since this desktop will not print something.
3535+ services.printing.enable = false;
3636+3737+ # Common system configurations
3838+ gems.system.garbageCollector.enable= true;
3939+ gems.system.autoUpdate.enable = false;
4040+4141+ # This value determines the NixOS release from which the default
4242+ # settings for stateful data, like file locations and database versions
4343+ # on your system were taken. It‘s perfectly fine and recommended to leave
4444+ # this value at the release version of the first install of this system.
4545+ # Before changing this value read the documentation for this option
4646+ # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
4747+ system.stateVersion = "24.11"; # Did you read the comment?
4848+}
+48
hosts/nixos/carbon/default.nix
···11+{ self, inputs, pkgs, hostname, ... }:
22+{
33+ # imports = [ ./hardware.nix ];
44+55+ # EFI Bootloader
66+ boot.loader.systemd-boot.enable = true;
77+ boot.loader.efi.canTouchEfiVariables = true;
88+ boot.loader.systemd-boot.configurationLimit = 10;
99+1010+ # Locales
1111+ i18n.defaultLocale = "en_US.UTF-8";
1212+ i18n.extraLocaleSettings = {
1313+ LC_ADDRESS = "fr_FR.UTF-8";
1414+ LC_IDENTIFICATION = "fr_FR.UTF-8";
1515+ LC_MEASUREMENT = "fr_FR.UTF-8";
1616+ LC_MONETARY = "fr_FR.UTF-8";
1717+ LC_NAME = "fr_FR.UTF-8";
1818+ LC_NUMERIC = "fr_FR.UTF-8";
1919+ LC_PAPER = "fr_FR.UTF-8";
2020+ LC_TELEPHONE = "fr_FR.UTF-8";
2121+ LC_TIME = "fr_FR.UTF-8";
2222+ };
2323+2424+ # Timezone
2525+ time.timeZone = "Europe/Paris";
2626+2727+ # Keyboard
2828+ services.xserver.xkb.layout = "us";
2929+3030+ # Networking
3131+ networking.networkmanager.enable = true;
3232+ networking.hostName = hostname;
3333+3434+ # Disable CUPS since this desktop will not print something.
3535+ services.printing.enable = false;
3636+3737+ # Common system configurations
3838+ gems.system.garbageCollector.enable= true;
3939+ gems.system.autoUpdate.enable = false;
4040+4141+ # This value determines the NixOS release from which the default
4242+ # settings for stateful data, like file locations and database versions
4343+ # on your system were taken. It‘s perfectly fine and recommended to leave
4444+ # this value at the release version of the first install of this system.
4545+ # Before changing this value read the documentation for this option
4646+ # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
4747+ system.stateVersion = "24.11"; # Did you read the comment?
4848+}
+83
hosts/nixos/hydrogen/default.nix
···11+{ self, inputs, hostname, ... }:
22+{
33+ imports = [
44+ ./hardware.nix
55+66+ # Import users
77+ ../../../homes/cosmeak/hydrogen
88+ ];
99+1010+ # EFI Bootloader
1111+ boot.loader.systemd-boot.enable = true;
1212+ boot.loader.efi.canTouchEfiVariables = true;
1313+ boot.loader.systemd-boot.configurationLimit = 10;
1414+1515+ # Locales
1616+ i18n.defaultLocale = "en_US.UTF-8";
1717+ i18n.extraLocaleSettings = {
1818+ LC_ADDRESS = "fr_FR.UTF-8";
1919+ LC_IDENTIFICATION = "fr_FR.UTF-8";
2020+ LC_MEASUREMENT = "fr_FR.UTF-8";
2121+ LC_MONETARY = "fr_FR.UTF-8";
2222+ LC_NAME = "fr_FR.UTF-8";
2323+ LC_NUMERIC = "fr_FR.UTF-8";
2424+ LC_PAPER = "fr_FR.UTF-8";
2525+ LC_TELEPHONE = "fr_FR.UTF-8";
2626+ LC_TIME = "fr_FR.UTF-8";
2727+ };
2828+2929+ # Timezone
3030+ time.timeZone = "Europe/Paris";
3131+3232+ # Keyboard
3333+ services.xserver.xkb.layout = "us";
3434+3535+ # Audio
3636+ gems.hardware.audio.enable = true;
3737+3838+ # Nvidia GPU and OpenGL
3939+ gems.hardware.nvidia.enable = true;
4040+4141+ # Networking
4242+ networking.networkmanager.enable = true;
4343+ networking.hostName = hostname;
4444+4545+ # Desktop Environment
4646+ services.xserver.enable = true;
4747+ services.xserver.desktopManager.budgie.enable = true;
4848+ services.xserver.displayManager.lightdm.enable = true;
4949+ services.displayManager.defaultSession = "budgie-desktop";
5050+ environment.budgie.excludePackages = with pkgs; [
5151+ mate.mate-terminal # don't need since we have kitty installed
5252+ ];
5353+5454+ # Global packages
5555+ environment.systemPackages = with pkgs; [
5656+ firefox
5757+ kitty
5858+ ];
5959+6060+ # Steam
6161+ gems.programs.steam.enable = true;
6262+6363+ # Disable CUPS since this desktop will not print something.
6464+ services.printing.enable = false;
6565+6666+ # Common system configurations
6767+ gems.system.garbageCollector.enable = true;
6868+ gems.system.autoUpdate.enable = false;
6969+7070+ # Enable unfree packages
7171+ nixpkgs.config.allowUnfree = true;
7272+7373+ # Enable flakes and other experimental features
7474+ nix.settings.experimental-features = [ "nix-command" "flakes" "pipe-operators" ];
7575+7676+ # This value determines the NixOS release from which the default
7777+ # settings for stateful data, like file locations and database versions
7878+ # on your system were taken. It‘s perfectly fine and recommended to leave
7979+ # this value at the release version of the first install of this system.
8080+ # Before changing this value read the documentation for this option
8181+ # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
8282+ system.stateVersion = "24.11"; # Did you read the comment?
8383+}
+68
hosts/nixos/lithium/default.nix
···11+{ self, inputs, pkgs, hostname, ... }:
22+{
33+ # Force update to the last linux kernel avalaible
44+ boot.kernelPackages = pkgs.linuxPackages_latest;
55+66+ # Special hardware config for raspberry
77+ hardware = {
88+ raspberry-pi."4".apply-overlays-dtmerge.enable = true;
99+ raspberry-pi."4".fkms-3d.enable = true; # Enable hardware acceleration
1010+ deviceTree = {
1111+ enable = true;
1212+ filter = "*rpi-4-*.dtb";
1313+ };
1414+ };
1515+1616+ # Networking configuration
1717+ # networking.networkmanager.enable = true;
1818+ networking.hostName = hostname;
1919+ networking.interfaces."wlan0".useDHCP = true;
2020+ networking.wireless = {
2121+ enable = true;
2222+ interfaces = [ "wlan0" ];
2323+ };
2424+2525+ users.users."rpi" = {
2626+ isNormalUser = true;
2727+ extraGroups = [ "wheel" ];
2828+ hashedPassword = "$y$j9T$rg0syrPPtjaLILPTTplI3/$5uykqP9tXjAsvOocbfosUeN6j6dMrHRUtwudKd4QaA5"; # password generated with `mkpasswd` command
2929+3030+ # User wide packages
3131+ packages = [];
3232+ };
3333+3434+ # System wide packages
3535+ environment.systemPackages = with pkgs; [
3636+ libraspberrypi
3737+ raspberrypi-eeprom
3838+ ];
3939+4040+ # Garbage collector
4141+ nix.gc = {
4242+ automatic = true;
4343+ dates = "weekly";
4444+ options = "--delete-older-than 7d";
4545+ };
4646+4747+ nix.settings = {
4848+ auto-optimise-store = true; # Related to garbage collector
4949+ experimental-features = "nix-command flakes"; # Enable flakes
5050+ };
5151+5252+ # "${nixpkgs}/nixos/modules/installer/sd-card/sd-image-aarch64.nix" creates a
5353+ # disk with this label on first boot. Therefore, we need to keep it. It is the
5454+ # only information from the installer image that we need to keep persistent
5555+ fileSystems."/" = {
5656+ device = "/dev/disk/by-label/NIXOS_SD";
5757+ fsType = "ext4";
5858+ };
5959+6060+ # This value determines the NixOS release from which the default
6161+ # settings for stateful data, like file locations and database versions
6262+ # on your system were taken. It‘s perfectly fine and recommended to leave
6363+ # this value at the release version of the first install of this system.
6464+ # Before changing this value read the documentation for this option
6565+ # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
6666+ # https://nixos.wiki/wiki/FAQ/When_do_I_update_stateVersion
6767+ system.stateVersion = "24.11"; # Did you read the comment?
6868+}
···22# and may be overwritten by future invocations. Please make changes
33# to /etc/nixos/configuration.nix instead.
44{ config, lib, pkgs, modulesPath, ... }:
55-65{
76 imports =
87 [ (modulesPath + "/installer/scan/not-detected.nix")
-135
hosts/x86_64-linux/nyx/default.nix
···11-{ self, inputs, pkgs, config, ... }:
22-with lib;
33-with lib.${namespace};
44-{
55- imports = [ ./hardware.nix ];
66-77- # asgard = {
88- # system = {
99- # bootloader.enable = true;
1010- # };
1111-1212- # hardware = {
1313- # gpu.nvidia.enable = true;
1414- # audio.enable = true;
1515- # };
1616-1717- # desktop.budgie.enable = true;
1818-1919- # apps = {
2020- # steam.enable = true;
2121- # };
2222- # };
2323-2424- networking.hostName = "nyx"; # Define your hostname.
2525- # networking.wireless.enable = true; # Enables wireless support via wpa_supplicant.
2626-2727- # Configure network proxy if necessary
2828- # networking.proxy.default = "http://user:password@proxy:port/";
2929- # networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
3030-3131- # Enable networking
3232- networking.networkmanager.enable = true;
3333-3434- # Set your time zone.
3535- time.timeZone = "Europe/Paris";
3636-3737- # Select internationalisation properties.
3838- i18n.defaultLocale = "en_US.UTF-8";
3939-4040- i18n.extraLocaleSettings = {
4141- LC_ADDRESS = "fr_FR.UTF-8";
4242- LC_IDENTIFICATION = "fr_FR.UTF-8";
4343- LC_MEASUREMENT = "fr_FR.UTF-8";
4444- LC_MONETARY = "fr_FR.UTF-8";
4545- LC_NAME = "fr_FR.UTF-8";
4646- LC_NUMERIC = "fr_FR.UTF-8";
4747- LC_PAPER = "fr_FR.UTF-8";
4848- LC_TELEPHONE = "fr_FR.UTF-8";
4949- LC_TIME = "fr_FR.UTF-8";
5050- };
5151-5252- # Configure keymap in X11
5353- services.xserver.xkb = {
5454- layout = "fr";
5555- variant = "";
5656- };
5757-5858- # Configure console keymap
5959- console.keyMap = "fr";
6060-6161- # Enable CUPS to print documents.
6262- services.printing.enable = true;
6363-6464- # Enable touchpad support (enabled default in most desktopManager).
6565- # services.xserver.libinput.enable = true;
6666-6767- # Define a user account. Don't forget to set a password with ‘passwd’.
6868- users.users.benjamin = {
6969- isNormalUser = true;
7070- description = "benjamin";
7171- extraGroups = [ "networkmanager" "wheel" ];
7272- packages = with pkgs; [
7373- vscode
7474- discord
7575- thunderbird
7676- spotify
7777- brave
7878- lutris
7979- btop
8080- heroic
8181- vesktop
8282- unzip
8383- zip
8484- lazygit
8585- # unstable.unityhub
8686- blender
8787- ];
8888- };
8989-9090- # Enable automatic login for the user.
9191- services.displayManager.autoLogin.enable = true;
9292- services.displayManager.autoLogin.user = "benjamin";
9393-9494- # Install firefox.
9595- programs.firefox.enable = false;
9696-9797- # List packages installed in system profile. To search, run:
9898- # $ nix search wget
9999- environment.systemPackages = with pkgs; [
100100- git
101101- mangohud
102102- protonup
103103- wine
104104- ];
105105-106106- # Some programs need SUID wrappers, can be configured further or are
107107- # started in user sessions.
108108- # programs.mtr.enable = true;
109109- # programs.gnupg.agent = {
110110- # enable = true;
111111- # enableSSHSupport = true;
112112- # };
113113-114114- # List services that you want to enable:
115115-116116- # Enable the OpenSSH daemon.
117117- # services.openssh.enable = true;
118118-119119- # Open ports in the firewall.
120120- # networking.firewall.allowedTCPPorts = [ ... ];
121121- # networking.firewall.allowedUDPPorts = [ ... ];
122122- # Or disable the firewall altogether.
123123- # networking.firewall.enable = false;
124124-125125- nix.settings.experimental-features = [ "nix-command" "flakes" ];
126126-127127- # This value determines the NixOS release from which the default
128128- # settings for stateful data, like file locations and database versions
129129- # on your system were taken. It‘s perfectly fine and recommended to leave
130130- # this value at the release version of the first install of this system.
131131- # Before changing this value read the documentation for this option
132132- # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
133133- system.stateVersion = "24.05"; # Did you read the comment?
134134-135135-}
-40
hosts/x86_64-linux/nyx/hardware.nix
···11-# Do not modify this file! It was generated by ‘nixos-generate-config’
22-# and may be overwritten by future invocations. Please make changes
33-# to /etc/nixos/configuration.nix instead.
44-{ config, lib, pkgs, modulesPath, ... }:
55-66-{
77- imports =
88- [ (modulesPath + "/installer/scan/not-detected.nix")
99- ];
1010-1111- boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "ahci" "usb_storage" "usbhid" "sd_mod" ];
1212- boot.initrd.kernelModules = [ ];
1313- boot.kernelModules = [ "kvm-amd" ];
1414- boot.extraModulePackages = [ ];
1515-1616- fileSystems."/" =
1717- { device = "/dev/disk/by-uuid/fd217360-823a-44b2-a85c-9eb968aa8a51";
1818- fsType = "ext4";
1919- };
2020-2121- fileSystems."/boot" =
2222- { device = "/dev/disk/by-uuid/20F1-277B";
2323- fsType = "vfat";
2424- options = [ "fmask=0077" "dmask=0077" ];
2525- };
2626-2727- swapDevices =
2828- [ { device = "/dev/disk/by-uuid/601b70b8-49df-47fa-ace0-0a452ef9d4f6"; }
2929- ];
3030-3131- # Enables DHCP on each ethernet and wireless interface. In case of scripted networking
3232- # (the default) this is the recommended approach. When using systemd-networkd it's
3333- # still possible to use this option, but it's recommended to use it in conjunction
3434- # with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
3535- networking.useDHCP = lib.mkDefault true;
3636- # networking.interfaces.eno1.useDHCP = lib.mkDefault true;
3737-3838- nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
3939- hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
4040-}
-28
hosts/x86_64-linux/vali/default.nix
···11-# NixOS-WSL specific options are documented on the NixOS-WSL repository:
22-# https://github.com/nix-community/NixOS-WSL
33-{ config, lib, pkgs, ... }:
44-{
55- imports = [
66- inputs.wsl.nixosModules.wsl
77- ];
88-99- wsl.enable = true;
1010- wsl.defaultUser = "vali";
1111-1212- environment.systemPackages = with pkgs; [
1313- wget
1414- git
1515- lazygit
1616- php83
1717- php83Packages.composer
1818- nodejs_20
1919- ];
2020-2121- # This value determines the NixOS release from which the default
2222- # settings for stateful data, like file locations and database versions
2323- # on your system were taken. It's perfectly fine and recommended to leave
2424- # this value at the release version of the first install of this system.
2525- # Before changing this value read the documentation for this option
2626- # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
2727- system.stateVersion = "24.05"; # Did you read the comment?
2828-}