diff --git a/README.md b/README.md index b40f706..0fe8518 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,9 @@ -# nixconfig +# 0x29a nixos config -personal nixos configuration files \ No newline at end of file +personal nixos configuration files + +## how to deploy + +```bash +$ sudo nixos-rebuild switch --flake path:/home/aaron/git/nixconfig#default +``` diff --git a/flake.lock b/flake.lock index a2fbf7e..cbea640 100644 --- a/flake.lock +++ b/flake.lock @@ -7,32 +7,31 @@ ] }, "locked": { - "lastModified": 1758463745, - "narHash": "sha256-uhzsV0Q0I9j2y/rfweWeGif5AWe0MGrgZ/3TjpDYdGA=", + "lastModified": 1763389499, + "narHash": "sha256-GuG3PW8U41f8XqROreZQaUvrcjQt+Gh92g16X7zBUck=", "owner": "nix-community", "repo": "home-manager", - "rev": "3b955f5f0a942f9f60cdc9cacb7844335d0f21c3", + "rev": "7538d965352d3bfd4c380f5b3aa618bc839a84b4", "type": "github" }, "original": { "owner": "nix-community", - "ref": "release-25.05", "repo": "home-manager", "type": "github" } }, "nixpkgs": { "locked": { - "lastModified": 1763049705, - "narHash": "sha256-A5LS0AJZ1yDPTa2fHxufZN++n8MCmtgrJDtxFxrH4S8=", + "lastModified": 1763283776, + "narHash": "sha256-Y7TDFPK4GlqrKrivOcsHG8xSGqQx3A6c+i7novT85Uk=", "owner": "nixos", "repo": "nixpkgs", - "rev": "3acb677ea67d4c6218f33de0db0955f116b7588c", + "rev": "50a96edd8d0db6cc8db57dab6bb6d6ee1f3dc49a", "type": "github" }, "original": { "owner": "nixos", - "ref": "nixos-25.05", + "ref": "nixos-unstable", "repo": "nixpkgs", "type": "github" } diff --git a/flake.nix b/flake.nix index 5929bea..2268677 100644 --- a/flake.nix +++ b/flake.nix @@ -1,31 +1,26 @@ { - description = "0x29a NixOS flake"; + description = "0x29a NixOS flake config"; inputs = { nixpkgs = { - url = "github:nixos/nixpkgs/nixos-25.05"; + url = "github:nixos/nixpkgs/nixos-unstable"; }; home-manager = { - url = "github:nix-community/home-manager/release-25.05"; + url = "github:nix-community/home-manager"; inputs.nixpkgs.follows = "nixpkgs"; }; }; - outputs = inputs@{ nixpkgs, home-manager, ... }: { - nixosConfigurations = { - nixos = nixpkgs.lib.nixosSystem { - modules = [ - ./configuration.nix - - # make home-manager a module of nixos - home-manager.nixosModules.home-manager - { - home-manager.useGlobalPkgs = true; - home-manager.useUserPackages = true; - home-manager.users.aaron = import ./home.nix; - } - ]; - }; + outputs = { self, nixpkgs, home-manager, ... }@inputs: { + nixosConfigurations.default = nixpkgs.lib.nixosSystem { + system = "x86_64-linux"; + specialArgs = {inherit inputs;}; + modules = [ + ./hosts/default/configuration.nix + ./hosts/default/hardware-configuration.nix + { home-manager.users.aaron = import ./hosts/default/home.nix; } + home-manager.nixosModules.default + ]; }; }; } diff --git a/home.nix b/home.nix deleted file mode 100644 index 534d4d6..0000000 --- a/home.nix +++ /dev/null @@ -1,50 +0,0 @@ -{ config, pkgs, ... }: - -{ - # user config - home.username = "aaron"; - home.homeDirectory = "/home/aaron"; - - # Packages that should be installed to the user profile - home.packages = with pkgs; [ - fastfetch - zip - xz - unzip - p7zip - jq - mtr - iperf3 - dnsutils - ldns - socat - nmap - cowsay - file - which - tree - zstd - gnupg - btop - iotop - iftop - strace - ltrace - lsof - sysstat - lm_sensors - ethtool - pciutils - usbutils - ]; - - # configure git - programs.git = { - enable = true; - userName = "aaron"; - userEmail = "aaron@0x29a.ch"; - }; - - # starting version - home.stateVersion = "25.05"; -} diff --git a/hosts/default/.home.nix.swp b/hosts/default/.home.nix.swp new file mode 100644 index 0000000..1987599 Binary files /dev/null and b/hosts/default/.home.nix.swp differ diff --git a/configuration.nix b/hosts/default/configuration.nix similarity index 83% rename from configuration.nix rename to hosts/default/configuration.nix index 77e421b..f0ffe50 100644 --- a/configuration.nix +++ b/hosts/default/configuration.nix @@ -1,34 +1,33 @@ # 0x29a nixos conifg -{ config, lib, pkgs, ... }: +{ pkgs, lib, inputs, ... }: { imports = [ ./hardware-configuration.nix + inputs.home-manager.nixosModules.default ]; # use flakes nix.settings.experimental-features = [ "nix-command" "flakes" ]; - # Use the systemd-boot EFI boot loader. + + # configure bootloader boot.loader.systemd-boot.enable = false; boot.loader.grub = { enable = true; device = "nodev"; efiSupport = true; }; - boot.loader.efi.canTouchEfiVariables = true; boot.kernelParams = [ "quiet" "console.ttyS0,115200n8" # allow terminals on serial console ]; - - # boot eye candy + # plymouth boot eye candy boot.initrd.systemd.enable = true; boot.plymouth.enable = true; boot.plymouth.theme = "spinner"; - # use latest kernel boot.kernelPackages = pkgs.linuxPackages_latest; @@ -41,15 +40,24 @@ # time zone. time.timeZone = "Europe/Amsterdam"; - - # Select internationalisation properties. + # select internationalisation properties i18n.defaultLocale = "en_US.UTF-8"; + i18n.extraLocaleSettings = { + LC_ADDRESS = "en_US.UTF-8"; + LC_IDENTIFICATION = "en_US.UTF-8"; + LC_MEASUREMENT = "en_US.UTF-8"; + LC_MONETARY = "en_US.UTF-8"; + LC_NAME = "en_US.UTF-8"; + LC_NUMERIC = "en_US.UTF-8"; + LC_PAPER = "en_US.UTF-8"; + LC_TELEPHONE = "en_US.UTF-8"; + LC_TIME = "en_US.UTF-8"; + }; console = { font = "Lat2-Terminus16"; keyMap = "de_CH-latin1"; }; - # xserver config services.xserver = { enable = true; diff --git a/hardware-configuration.nix b/hosts/default/hardware-configuration.nix similarity index 100% rename from hardware-configuration.nix rename to hosts/default/hardware-configuration.nix diff --git a/hosts/default/home.nix b/hosts/default/home.nix new file mode 100644 index 0000000..892a309 --- /dev/null +++ b/hosts/default/home.nix @@ -0,0 +1,112 @@ +{ config, pkgs, ... }: + +{ + # Home Manager needs a bit of information about you and the paths it should + # manage. + home.username = "aaron"; + home.homeDirectory = "/home/aaron"; + + # This value determines the Home Manager release that your configuration is + # compatible with. This helps avoid breakage when a new Home Manager release + # introduces backwards incompatible changes. + # + # You should not change this value, even if you update Home Manager. If you do + # want to update the value, then make sure to first check the Home Manager + # release notes. + home.stateVersion = "25.05"; # Please read the comment before changing. + + # The home.packages option allows you to install Nix packages into your + # environment. + home.packages = with pkgs; [ + # # Adds the 'hello' command to your environment. It prints a friendly + # # "Hello, world!" when run. + # pkgs.hello + + # # It is sometimes useful to fine-tune packages, for example, by applying + # # overrides. You can do that directly here, just don't forget the + # # parentheses. Maybe you want to install Nerd Fonts with a limited number of + # # fonts? + # (pkgs.nerdfonts.override { fonts = [ "FantasqueSansMono" ]; }) + + # # You can also create simple shell scripts directly inside your + # # configuration. For example, this adds a command 'my-hello' to your + # # environment: + # (pkgs.writeShellScriptBin "my-hello" '' + # echo "Hello, ${config.home.username}!" + # '') + fastfetch + zip + xz + unzip + p7zip + jq + mtr + iperf3 + dnsutils + ldns + socat + nmap + cowsay + file + which + tree + zstd + gnupg + btop + iotop + iftop + strace + ltrace + lsof + sysstat + lm_sensors + ethtool + pciutils + usbutils + ]; + + # configure git + programs.git.settings = { + enable = true; + userName = "aaron"; + userEmail = "aaron@0x29a.ch"; + }; + + # Home Manager is pretty good at managing dotfiles. The primary way to manage + # plain files is through 'home.file'. + home.file = { + # # Building this configuration will create a copy of 'dotfiles/screenrc' in + # # the Nix store. Activating the configuration will then make '~/.screenrc' a + # # symlink to the Nix store copy. + # ".screenrc".source = dotfiles/screenrc; + + # # You can also set the file content immediately. + # ".gradle/gradle.properties".text = '' + # org.gradle.console=verbose + # org.gradle.daemon.idletimeout=3600000 + # ''; + }; + + # Home Manager can also manage your environment variables through + # 'home.sessionVariables'. These will be explicitly sourced when using a + # shell provided by Home Manager. If you don't want to manage your shell + # through Home Manager then you have to manually source 'hm-session-vars.sh' + # located at either + # + # ~/.nix-profile/etc/profile.d/hm-session-vars.sh + # + # or + # + # ~/.local/state/nix/profiles/profile/etc/profile.d/hm-session-vars.sh + # + # or + # + # /etc/profiles/per-user/aaron/etc/profile.d/hm-session-vars.sh + # + home.sessionVariables = { + # EDITOR = "emacs"; + }; + + # Let Home Manager install and manage itself. + programs.home-manager.enable = true; +}