diff --git a/.envrc b/.envrc new file mode 100644 index 0000000..44610e5 --- /dev/null +++ b/.envrc @@ -0,0 +1 @@ +use flake; diff --git a/.gitignore b/.gitignore index b2be92b..d53e06f 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ +.direnv/ result diff --git a/flake.nix b/flake.nix index c639268..48af71c 100644 --- a/flake.nix +++ b/flake.nix @@ -30,7 +30,10 @@ in { nixosConfigurations = { - #smolboi.modules = [ ./systems/smolboi/configuration.nix ]; + smolboi = nixpkgs.lib.nixosSystem { + system = "x86_64-linux"; + modules = [ ./systems/smolboi/configuration.nix ]; + }; orangepihole = nixpkgs.lib.nixosSystem { system = "aarch64-linux"; modules = [ ./systems/orangepihole/configuration.nix ]; @@ -40,9 +43,12 @@ sshUser = "root"; fastConnection = true; nodes = { + smolboi = { + hostname = "smolboi"; + profiles.system.path = deployPkgs.deploy-rs.lib.activate.nixos self.nixosConfigurations.smolboi; + }; orangepihole = { hostname = "orangepihole"; - profiles.system.user = "root"; profiles.system.path = deployAarch64Pkgs.deploy-rs.lib.activate.nixos self.nixosConfigurations.orangepihole; }; }; diff --git a/systems/orangepihole/configuration.nix b/systems/orangepihole/configuration.nix index 7423537..824aa56 100644 --- a/systems/orangepihole/configuration.nix +++ b/systems/orangepihole/configuration.nix @@ -82,7 +82,6 @@ networking.firewall.enable = false; system.stateVersion = "23.11"; # Did you read the comment? - system.autoUpgrade.enable = true; system.autoUpgrade.allowReboot = false; nix.settings.experimental-features = [ "nix-command" "flakes" ]; diff --git a/systems/smolboi/default.nix b/systems/smolboi/configuration.nix similarity index 90% rename from systems/smolboi/default.nix rename to systems/smolboi/configuration.nix index e4d807f..94208a2 100644 --- a/systems/smolboi/default.nix +++ b/systems/smolboi/configuration.nix @@ -49,6 +49,7 @@ gc = { automatic = true; options = "--delete-older-than 30d"; + dates = "weekly"; }; optimise.automatic = true; }; @@ -127,6 +128,7 @@ hardware.openrgb.enable = true; resolved.enable = true; btrfs.autoScrub.enable = true; + openssh.enable = true; }; hardware = { sane = { @@ -160,6 +162,9 @@ # tree # ]; # }; + users.users.root.openssh.authorizedKeys.keys = [ + "ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAgEApZvmNao6HvjOI3NQ96+Hu+N4MTw20KSvrx7ml8/PD4zb5GXo2sXRROHy0VclIXBEPKPKq93QGCMhfCR0jvr2tSib5CwrCMDnjjRxGJV36jhCE1mOV6TKis1MDdigg/7NSVf+eszUW4ed6CSDNFu3ooVZSwdf4Tja2672ROk1W59rDbfgs0Et7pRNnmWM1q+sTbD0eRbY9+0DXBhx5u4OVjp6eNNmO59WGErVvAAjOnZR3rw2LSX7MDrtzeCe1sdR/28WGPIIUVL8eCorlhzPB6PfrTL1Y/fbWAOGdvs6h+wTPX3ivTlrs8J5AXERCymp/CXIA1mwVjnM9zOklFhun+VvCNNJsZPSM62jrHfD4bP11y1kSt87TORGW517nWdS80oUY6MwxRcN2salwWzZA0sVjIHmvc4FkAuPHhdlMQpkym9fpFfR9taWlxU2NMP/+Quj3NaAPKksPvUGwos8lP8Z+QF5ljedNZFsC5/S0u6Fqoa26zRTnVki4KhfGPyKHXIUp9kNV7PRz4oRizHibUfp05xVMACtVIn+pQU7CaQEJCdYfLpo9gMDZ+6ZanmQX0vCUEyiaimrF/eSCkzjBtqSKMRHLd6ADEFEDxSr5nfaqgkddQVkQiBvngCnKwYcKfINA5mYIIFJZyLxpki03SHT6qGT541iHT3OX9F4MBc=" + ]; users.users.cdombroski = { isNormalUser = true; extraGroups = [ "wheel" ]; @@ -260,14 +265,5 @@ # # For more information, see `man configuration.nix` or https://nixos.org/manual/nixos/stable/options#opt-system.stateVersion . system.stateVersion = "23.11"; # Did you read the comment? - system.autoUpgrade = { - enable = true; - flake = "/home/cdombroski/.dotfiles"; - flags = [ - "--update-input" - "nixpkgs" - ]; - }; - } diff --git a/systems/smolboi/hardware-configuration.nix b/systems/smolboi/hardware-configuration.nix new file mode 100644 index 0000000..8fc8aa3 --- /dev/null +++ b/systems/smolboi/hardware-configuration.nix @@ -0,0 +1,57 @@ +# Do not modify this file! It was generated by ‘nixos-generate-config’ +# and may be overwritten by future invocations. Please make changes +# to /etc/nixos/configuration.nix instead. +{ config, lib, pkgs, modulesPath, ... }: + +{ + imports = + [ (modulesPath + "/installer/scan/not-detected.nix") + ]; + + boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "ahci" "usb_storage" "usbhid" "sd_mod" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-amd" ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = + { device = "/dev/disk/by-uuid/d0eb1b09-7fba-49e3-b802-d6fdd9073516"; + fsType = "btrfs"; + options = [ "subvol=@nixos/root" ]; + }; + + fileSystems."/steam-library" = + { device = "/dev/disk/by-uuid/d0eb1b09-7fba-49e3-b802-d6fdd9073516"; + fsType = "btrfs"; + options = [ "subvol=@steam-library" ]; + }; + + fileSystems."/boot" = + { device = "/dev/disk/by-uuid/1ADE-808D"; + fsType = "vfat"; + }; + + fileSystems."/home" = + { device = "/dev/disk/by-uuid/8597952f-be42-4361-9be1-2c4af6ede9b8"; + fsType = "btrfs"; + options = [ "subvol=@home" ]; + }; + + fileSystems."/nix" = + { device = "/dev/disk/by-uuid/d0eb1b09-7fba-49e3-b802-d6fdd9073516"; + fsType = "btrfs"; + options = [ "subvol=@nixos/nix" ]; + }; + + swapDevices = [ ]; + + # Enables DHCP on each ethernet and wireless interface. In case of scripted networking + # (the default) this is the recommended approach. When using systemd-networkd it's + # still possible to use this option, but it's recommended to use it in conjunction + # with explicit per-interface declarations with `networking.interfaces..useDHCP`. + networking.useDHCP = lib.mkDefault true; + # networking.interfaces.eno1.useDHCP = lib.mkDefault true; + # networking.interfaces.wlp5s0.useDHCP = lib.mkDefault true; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; +} diff --git a/systems/smolboi/home.nix b/systems/smolboi/home.nix new file mode 100644 index 0000000..a48e9de --- /dev/null +++ b/systems/smolboi/home.nix @@ -0,0 +1,143 @@ +{ config, pkgs, lib, ... }: + +{ + # Home Manager needs a bit of information about you and the paths it should + # manage. + home.username = "cdombroski"; + home.homeDirectory = "/home/cdombroski"; + + # 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 = "23.11"; # Please read the comment before changing. + + # The home.packages option allows you to install Nix packages into your + # environment. + home.packages = with pkgs; [ + element-desktop + discord + openrgb-with-all-plugins + keepassxc + heroic + yuzu-mainline + r2modman + mangohud + hack-font + htop + jellyfin-media-player + nodejs + konversation + nixd + yakuake + mgba + vlc + jetbrains.idea-community + dolphin-emu-primehack + steamtinkerlaunch + (retroarch.override { + cores = with libretro; [ + beetle-psx-hw + pcsx2 + mesen + bsnes + parallel-n64 + dolphin + sameboy + citra + gpsp + desmume + fbneo + nxengine + mgba + ]; + }) + + # # 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}!" + # '') + ]; + + nixpkgs.config = { + allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [ + "discord" + ]; + permittedInsecurePackages = [ + "electron-25.9.0" + ]; + }; + xdg.configFile."autostart/yakuake.desktop".source = "${pkgs.yakuake.outPath}/share/applications/org.kde.yakuake.desktop"; + + # 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'. 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/cdombroski/etc/profile.d/hm-session-vars.sh + # + home.sessionVariables = { + # EDITOR = "emacs"; + }; + home.sessionPath = [ "$HOME/.local/bin" ]; + + # Let Home Manager install and manage itself. + programs = { + home-manager.enable = true; + bash = { + enable = true; + enableCompletion = true; + }; + direnv = { + enable = true; + nix-direnv.enable = true; + }; + vim = { + enable = true; + defaultEditor = true; + plugins = with pkgs.vimPlugins; [ vim-sensible vim-fugitive vim-eunuch vim-endwise vim-lsp vim-lsp-settings nerdtree nerdtree-git-plugin vim-devicons editorconfig-vim ]; + }; + vscode = { + enable = true; + package = pkgs.vscodium-fhs; + }; + }; +}