diff --git a/environments/wsl/default.nix b/environments/wsl/default.nix index a18bb24..509ddad 100644 --- a/environments/wsl/default.nix +++ b/environments/wsl/default.nix @@ -12,9 +12,6 @@ environment.systemPackages = with pkgs; [ wslu wsl-open - - # jetbrains.rider Waiting for https://github.com/NixOS/nixpkgs/pull/284857 - # jetbrains.jdk ]; services.flatpak.enable = true; diff --git a/flake.nix b/flake.nix index 32af5de..0bb658a 100644 --- a/flake.nix +++ b/flake.nix @@ -42,119 +42,56 @@ url = "github:LnL7/nix-darwin"; inputs.nixpkgs.follows = "nixpkgs"; }; - zen.url = "github:matthewpi/nixpkgs/zen-browser"; + zen.url = "github:matthewpi/nixpkgs/zen-browser"; }; outputs = { - self, - home-manager, - neovim-nightly, nixpkgs, - ghostty, - flood, - river-src, - impermanence, + neovim-nightly, nixos-hardware, - nix-index-database, - nix-darwin, - zen, ... } @ inputs: let - user = "zoriya"; + overlays = { + nixpkgs.overlays = [ + (import ./overlays inputs) + neovim-nightly.overlays.default + ]; + }; - mkSystem = hostname: de: custom: - nixpkgs.lib.nixosSystem { - specialArgs = {inherit inputs;}; - modules = - [ - impermanence.nixosModules.impermanence - ./modules/cli - (./environments + "/${de}") - { - nixpkgs.overlays = [ - (import ./overlays {inherit flood river-src;}) - neovim-nightly.overlays.default - ]; - } - - ({pkgs, ...}: { - networking.hostName = hostname; - users.users.root.hashedPassword = builtins.readFile ./password/root; - users.users.${user} = { - hashedPassword = builtins.readFile ./password/${user}; - isNormalUser = true; - extraGroups = ["wheel" "input" "docker" "audio" "mlocate" "libvirtd"]; - shell = pkgs.zsh; - - openssh.authorizedKeys.keys = [ - "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDGcLP/ZEjnSgkzQMBeLLOWn5uejSr9Gg1h9PJZECVTLm+VDQ7KyI3ORZt+qbfEnsnGL73iwcAqB5Upy9Cdj0182mnrTk2ZViNMeFT7kLBF0yXpiajQTtMjENYj0nbNWpQ5+sJrtJKKYK/tBghW8PyTrJPpVQcrLcf4D66U5DkkJNRDeu4v9SjHKaASUeyia4gRSVV59Ugtrl0lz8sl4yBSL4957zwzdkNR0pVmftaKmUP4KfBvpNcFOOpHcdvzDtEPQs8j0g2l65YOQNNFSMsYQfxt1X4zmEi4unRIlECglaPz12CyoTiM2xmCWa/mS5nm0dR1VbEHFMRtGbbgm9MwedXoxYAfycbu08fqi1AAvg7MQxDNLfWWBIHe7+imGLKrVkqk8B89I409iI4YiOytnUkxKZkxynqVYtEE0bx5J15mniq2vJTw9JD89qSVkvGjZNGuJgh4leIlxPGj4iP8KY3N3Ifaf72PsmmwW4rB5JPDW93RL1DZV8lk3NgyF8M= zoriya@fuhen" # laptop - "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCpQ8Td98YIS0EtVQ7xabYVe9A9/+ZECrHBpKi01NKQ0Mleg9Z4fnTsdGFX1uhbG6Pu7niBVzYReVTC1CbyVWKmm/4DbbRpaqY94eOzQEe0p4wMSURQ9weuB5737k+5MuLDLUbhc1ytDa84Ubj/A/rQUueKdq2K1o+YSN7b7HKe7kXoXACEpbrSCC43mteBgCtvgsLY0New9xXnvGFJPSe7PcjYkOhSJB1xA0Gu4DoDdOyErvV62QQH4sSQMu5cFICJGfdXQzBdshA8MgWKXFv3Hq7K5/GGDNyCsMxeoPQET3vbmgUsE+KGtcdqizdFM3bAfCBGXOBx6h7BoNuQzkp8hgmrq62CmMwF0krX05Sb3qR/wVjRKDo9pYuSk6/awnnBp5kY6sNgEruI93ZXNQWMkxXQNbmpCi+uEvzMveP16O/uP3NxklD4wtmfpSZsxBi+jRGFqcjdy3Qlc13Tiz98EBaXkir9YwUAh8SNs3gRaJGI0Fn2HzUCPH0zNh42EY8= zoriya@kadan" # server - "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCnPn6ga4tsJfdyGyft9RnJJmSvlGLn/rJuLsWwFHtxHwdcOolZEAn2zrLqOo1Fty44lrWJ62KLOJ+eZVt4rfREBWd+esttTY2BbhrjvRThKsst1RJdWjFXI3xny7v48mMG8PKjTCkXom2Y/wfLKRpeaNJyCgauUNdDFXuiwiMmIEGXN/WE6LfWBg2XbPWilMLEVm6pwXf3lGtaS0QxhIQ/OIdx5XfUKS6lUfRq9Ki6FbsSQ60ejRtKmjbqY93KNQPUBAJnJHgDDX2+pkrSKiNHBjFH5/HZJTSRdpumaqO0E+HZRSEbR/aKRvshUN0SO/59pvrqb1ARF6CG2X0k0A+jTag0N7SyLwHEJ8J/bl43zm0JWenfAPMuhzQqAv3Vw4i13u8mgHf+ng7ClDo1ms5K7e/XXZV7Asb6orkuslZCO2QR3WgfmbUU03r89aG7Eg58ZeGMP57CoEcMAVah20to4iPm5HPy/Ej0JznFXXjRW4z+/DZDvWhFtsjIkalqQCU= u0_a369@localhost" # android - "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDJ/c2rQ9xUI6XpDR/+dmCK5IcxkOIezvNtbC2EVTrfh73H5juotME6JrQSxgQjtgsaUAzZzrac9kI/7Do8/lisbofdKRcneXi2UEeERKrKEwC/EGcQgqnoPLL1+mnqwvQ923d3105DV4hFksoDbblCinFuUr5s55EMm991IL/T70cy820AOgAf+hgleM1Its47EBkZBzpa4KwxYepJG0+kBa7K1Loi9QgBvTGpxs7rWMDxllfL6ivrWJxAKRZdWlJ/MKBVQIYhv0W+vaQ7OZA1qUY4bq/9wY/i88nixbVSPJmikj0+QNeLksU78bOIxLpTTeLdH4HQ6+qKOBT3JhEpBtUHdBxOT5tYJTr4qwjevlFqceLw3x1V9URxPS2XBDjlxnzYzdnD40LK5BehXdmElGio9dy98/qJINbDW/7AH+BpP1GWNKVhiYXPj7A/2fkFD2K7DgIgGlsrZthS+LxDTEcQ8Yx0iD/+nI8LcnvU42S0muSvmP7LE4xBl8AoaI0= zoriya@nixos" # lucca windows - ]; - }; - }) - ./hosts/${hostname}/hardware-configuration.nix - - home-manager.nixosModules.home-manager - { - home-manager = { - useGlobalPkgs = true; - useUserPackages = true; - extraSpecialArgs = {inherit inputs;}; - users.${user} = { - imports = [ - ./modules/cli/home.nix - (./environments + "/${de}/home.nix") - nix-index-database.hmModules.nix-index - ]; - }; - }; - } - ] - ++ custom; - }; + mkSystem = import ./lib/mksystem.nix (inputs // {inherit overlays inputs;}); in { - nixosConfigurations = { - fuhen = mkSystem "fuhen" "river" [ + nixosConfigurations.fuhen = mkSystem "fuhen" { + env = "river"; + custom = [ nixos-hardware.nixosModules.tuxedo-infinitybook-pro14-gen7 ]; + }; - saikai = mkSystem "saikai" "server" []; + nixosConfigurations.saikai = mkSystem "saikai" { + env = "server"; + }; - kadan = mkSystem "kadan" "server" [ + nixosConfigurations.kadan = mkSystem "kadan" { + env = "server"; + custom = [ ({pkgs, ...}: { environment.systemPackages = with pkgs; [python3Packages.guessit mediainfo yt-dlp]; }) ]; - - lucca = mkSystem "lucca" "wsl" []; }; - darwinConfigurations."zroux-mac" = nix-darwin.lib.darwinSystem { - specialArgs = {inherit inputs;}; - modules = [ - ./modules/cli/darwin.nix - home-manager.darwinModules.home-manager - { - nixpkgs.hostPlatform = "aarch64-darwin"; - system.stateVersion = 5; - } - { - users.users.zroux.home = "/Users/zroux"; - home-manager = { - useGlobalPkgs = true; - useUserPackages = true; - extraSpecialArgs = {inherit inputs;}; - users.zroux = { - imports = [ - ./modules/cli/home.nix - ./modules/gui/ghostty.nix - nix-index-database.hmModules.nix-index - ]; - }; - }; - } + nixosConfigurations.lucca = mkSystem "lucca" { + env = "wsl"; + wsl = true; + }; + + darwinConfigurations."zroux-mac" = mkSystem "zroux-mac" { + env = "none"; + user = "zroux"; + system = "aarch64-darwin"; + darwin = true; + customHome = [ + ./modules/gui/ghostty.nix ]; }; }; diff --git a/hosts/fuhen/hardware-configuration.nix b/hosts/fuhen/hardware-configuration.nix index 3423b26..9a42e47 100644 --- a/hosts/fuhen/hardware-configuration.nix +++ b/hosts/fuhen/hardware-configuration.nix @@ -17,13 +17,13 @@ fileSystems."/" = { device = "none"; fsType = "tmpfs"; - options = [ "size=8G" "mode=755" ]; + options = ["size=8G" "mode=755"]; }; fileSystems."/tmp" = { device = "none"; fsType = "tmpfs"; - options = [ "size=32G" "mode=755" ]; + options = ["size=32G" "mode=755"]; }; fileSystems."/nix" = { @@ -36,10 +36,12 @@ fsType = "vfat"; }; - swapDevices = [{ - device = "/nix/persist/var/cache/swapfile"; - size = 64*1024; - }]; + swapDevices = [ + { + device = "/nix/persist/var/cache/swapfile"; + size = 64 * 1024; + } + ]; # 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 diff --git a/hosts/lucca/hardware-configuration.nix b/hosts/lucca/hardware-configuration.nix index 13c4b33..b98b913 100644 --- a/hosts/lucca/hardware-configuration.nix +++ b/hosts/lucca/hardware-configuration.nix @@ -1,68 +1,63 @@ -# 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. -{ lib, ... }: +{lib, ...}: { + imports = []; -{ - imports = [ ]; - - boot.initrd.availableKernelModules = [ "virtio_pci" ]; - boot.initrd.kernelModules = [ ]; - boot.kernelModules = [ ]; - boot.extraModulePackages = [ ]; + boot.initrd.availableKernelModules = ["virtio_pci"]; + boot.initrd.kernelModules = []; + boot.kernelModules = []; + boot.extraModulePackages = []; boot.loader.systemd-boot.enable = lib.mkForce false; - fileSystems."/mnt/wsl" = - { device = "none"; - fsType = "tmpfs"; - }; + fileSystems."/mnt/wsl" = { + device = "none"; + fsType = "tmpfs"; + }; - fileSystems."/usr/lib/wsl/drivers" = - { device = "none"; - fsType = "9p"; - }; + fileSystems."/usr/lib/wsl/drivers" = { + device = "none"; + fsType = "9p"; + }; - fileSystems."/" = - { device = "/dev/disk/by-uuid/3d4637c7-738d-4b8b-874d-1bac3a208ad5"; - fsType = "ext4"; - }; + fileSystems."/" = { + device = "/dev/disk/by-uuid/3d4637c7-738d-4b8b-874d-1bac3a208ad5"; + fsType = "ext4"; + }; - fileSystems."/mnt/wslg" = - { device = "none"; - fsType = "tmpfs"; - }; + fileSystems."/mnt/wslg" = { + device = "none"; + fsType = "tmpfs"; + }; - fileSystems."/mnt/wslg/distro" = - { device = "none"; - fsType = "none"; - options = [ "bind" ]; - }; + fileSystems."/mnt/wslg/distro" = { + device = "none"; + fsType = "none"; + options = ["bind"]; + }; - fileSystems."/usr/lib/wsl/lib" = - { device = "none"; - fsType = "overlay"; - }; + fileSystems."/usr/lib/wsl/lib" = { + device = "none"; + fsType = "overlay"; + }; - fileSystems."/mnt/wslg/doc" = - { device = "none"; - fsType = "overlay"; - }; + fileSystems."/mnt/wslg/doc" = { + device = "none"; + fsType = "overlay"; + }; - fileSystems."/mnt/wslg/.X11-unix" = - { device = "/mnt/wslg/.X11-unix"; - fsType = "none"; - options = [ "bind" ]; - }; + fileSystems."/mnt/wslg/.X11-unix" = { + device = "/mnt/wslg/.X11-unix"; + fsType = "none"; + options = ["bind"]; + }; - fileSystems."/mnt/c" = - { device = "drvfs"; - fsType = "9p"; - }; + fileSystems."/mnt/c" = { + device = "drvfs"; + fsType = "9p"; + }; - swapDevices = - [ { device = "/dev/disk/by-uuid/a892733e-b1ef-4bf6-be4c-270ce67c4c5b"; } - ]; + swapDevices = [ + {device = "/dev/disk/by-uuid/a892733e-b1ef-4bf6-be4c-270ce67c4c5b";} + ]; # 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 diff --git a/hosts/zroux/default.nix b/hosts/zroux/default.nix new file mode 100644 index 0000000..40e30cf --- /dev/null +++ b/hosts/zroux/default.nix @@ -0,0 +1,3 @@ +{ + system.stateVersion = 5; +} diff --git a/lib/mksystem.nix b/lib/mksystem.nix new file mode 100644 index 0000000..ae79ba5 --- /dev/null +++ b/lib/mksystem.nix @@ -0,0 +1,78 @@ +{ + nixpkgs, + overlays, + ... +} @ inputs: hostname: { + env, + user ? "zoriya", + system ? "x86_64-linux", + wsl ? false, + darwin ? false, + custom ? [], +}: let + systemFunc = + if darwin + then inputs.darwin.lib.darwinSystem + else nixpkgs.lib.nixosSystem; + home-manager = + if darwin + then inputs.home-manager.darwinModules + else inputs.home-manager.nixosModules; + + cli = + if darwin + then ../modules/cli/darwin.nix + else ../modules/cli; +in + systemFunc { + inherit system; + specialArgs = inputs; + modules = + [ + overlays + inputs.impermanence.nixosModules.impermanence + cli + (../environments + "/${env}") + + ({pkgs, ...}: { + networking.hostName = hostname; + users.users.root.hashedPassword = builtins.readFile ../password/root; + + users.users.${user} = { + home = + if darwin + then "/Users/${user}" + else "/home/${user}"; + hashedPassword = builtins.readFile ../password/${user}; + isNormalUser = true; + extraGroups = ["wheel" "input" "docker" "audio" "mlocate" "libvirtd"]; + shell = pkgs.zsh; + + openssh.authorizedKeys.keys = [ + "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDGcLP/ZEjnSgkzQMBeLLOWn5uejSr9Gg1h9PJZECVTLm+VDQ7KyI3ORZt+qbfEnsnGL73iwcAqB5Upy9Cdj0182mnrTk2ZViNMeFT7kLBF0yXpiajQTtMjENYj0nbNWpQ5+sJrtJKKYK/tBghW8PyTrJPpVQcrLcf4D66U5DkkJNRDeu4v9SjHKaASUeyia4gRSVV59Ugtrl0lz8sl4yBSL4957zwzdkNR0pVmftaKmUP4KfBvpNcFOOpHcdvzDtEPQs8j0g2l65YOQNNFSMsYQfxt1X4zmEi4unRIlECglaPz12CyoTiM2xmCWa/mS5nm0dR1VbEHFMRtGbbgm9MwedXoxYAfycbu08fqi1AAvg7MQxDNLfWWBIHe7+imGLKrVkqk8B89I409iI4YiOytnUkxKZkxynqVYtEE0bx5J15mniq2vJTw9JD89qSVkvGjZNGuJgh4leIlxPGj4iP8KY3N3Ifaf72PsmmwW4rB5JPDW93RL1DZV8lk3NgyF8M= zoriya@fuhen" # laptop + "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCpQ8Td98YIS0EtVQ7xabYVe9A9/+ZECrHBpKi01NKQ0Mleg9Z4fnTsdGFX1uhbG6Pu7niBVzYReVTC1CbyVWKmm/4DbbRpaqY94eOzQEe0p4wMSURQ9weuB5737k+5MuLDLUbhc1ytDa84Ubj/A/rQUueKdq2K1o+YSN7b7HKe7kXoXACEpbrSCC43mteBgCtvgsLY0New9xXnvGFJPSe7PcjYkOhSJB1xA0Gu4DoDdOyErvV62QQH4sSQMu5cFICJGfdXQzBdshA8MgWKXFv3Hq7K5/GGDNyCsMxeoPQET3vbmgUsE+KGtcdqizdFM3bAfCBGXOBx6h7BoNuQzkp8hgmrq62CmMwF0krX05Sb3qR/wVjRKDo9pYuSk6/awnnBp5kY6sNgEruI93ZXNQWMkxXQNbmpCi+uEvzMveP16O/uP3NxklD4wtmfpSZsxBi+jRGFqcjdy3Qlc13Tiz98EBaXkir9YwUAh8SNs3gRaJGI0Fn2HzUCPH0zNh42EY8= zoriya@kadan" # server + "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCnPn6ga4tsJfdyGyft9RnJJmSvlGLn/rJuLsWwFHtxHwdcOolZEAn2zrLqOo1Fty44lrWJ62KLOJ+eZVt4rfREBWd+esttTY2BbhrjvRThKsst1RJdWjFXI3xny7v48mMG8PKjTCkXom2Y/wfLKRpeaNJyCgauUNdDFXuiwiMmIEGXN/WE6LfWBg2XbPWilMLEVm6pwXf3lGtaS0QxhIQ/OIdx5XfUKS6lUfRq9Ki6FbsSQ60ejRtKmjbqY93KNQPUBAJnJHgDDX2+pkrSKiNHBjFH5/HZJTSRdpumaqO0E+HZRSEbR/aKRvshUN0SO/59pvrqb1ARF6CG2X0k0A+jTag0N7SyLwHEJ8J/bl43zm0JWenfAPMuhzQqAv3Vw4i13u8mgHf+ng7ClDo1ms5K7e/XXZV7Asb6orkuslZCO2QR3WgfmbUU03r89aG7Eg58ZeGMP57CoEcMAVah20to4iPm5HPy/Ej0JznFXXjRW4z+/DZDvWhFtsjIkalqQCU= u0_a369@localhost" # android + "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDJ/c2rQ9xUI6XpDR/+dmCK5IcxkOIezvNtbC2EVTrfh73H5juotME6JrQSxgQjtgsaUAzZzrac9kI/7Do8/lisbofdKRcneXi2UEeERKrKEwC/EGcQgqnoPLL1+mnqwvQ923d3105DV4hFksoDbblCinFuUr5s55EMm991IL/T70cy820AOgAf+hgleM1Its47EBkZBzpa4KwxYepJG0+kBa7K1Loi9QgBvTGpxs7rWMDxllfL6ivrWJxAKRZdWlJ/MKBVQIYhv0W+vaQ7OZA1qUY4bq/9wY/i88nixbVSPJmikj0+QNeLksU78bOIxLpTTeLdH4HQ6+qKOBT3JhEpBtUHdBxOT5tYJTr4qwjevlFqceLw3x1V9URxPS2XBDjlxnzYzdnD40LK5BehXdmElGio9dy98/qJINbDW/7AH+BpP1GWNKVhiYXPj7A/2fkFD2K7DgIgGlsrZthS+LxDTEcQ8Yx0iD/+nI8LcnvU42S0muSvmP7LE4xBl8AoaI0= zoriya@nixos" # lucca windows + ]; + }; + }) + ../hosts/${hostname}/hardware-configuration.nix + + home-manager.home-manager + { + home-manager = { + useGlobalPkgs = true; + useUserPackages = true; + extraSpecialArgs = inputs; + users.${user} = { + imports = [ + ../modules/cli/home.nix + (../environments + "/${env}/home.nix") + inputs.nix-index-database.hmModules.nix-index + ]; + }; + }; + } + ] + ++ custom; + } diff --git a/modules/cli/default.nix b/modules/cli/default.nix index af41a29..017a28c 100644 --- a/modules/cli/default.nix +++ b/modules/cli/default.nix @@ -69,8 +69,4 @@ info.enable = true; nixos.enable = true; }; - - # boot.kernelPackages = pkgs.linuxPackages_latest; - # This was needed on older versions of the kernel. - #boot.kernelParams = ["i915.force_probe=46a6" "i915.enable_psr=0"]; } diff --git a/modules/cli/nvim/default.nix b/modules/cli/nvim/default.nix index df2c15f..4e09927 100644 --- a/modules/cli/nvim/default.nix +++ b/modules/cli/nvim/default.nix @@ -1,13 +1,13 @@ { pkgs, config, - inputs, + neovim-nightly, ... }: { programs.neovim = { enable = true; withNodeJs = true; - package = inputs.neovim-nightly.packages.${pkgs.system}.default; + package = neovim-nightly.packages.${pkgs.system}.default; extraPackages = with pkgs; [ gcc tree-sitter diff --git a/modules/gui/default.nix b/modules/gui/default.nix index 9781641..b6caba2 100644 --- a/modules/gui/default.nix +++ b/modules/gui/default.nix @@ -1,7 +1,7 @@ { config, pkgs, - inputs, + zen, ... }: let # When editing this, don't forget to edit home.sessionVariables. @@ -19,7 +19,7 @@ in { home.packages = with pkgs; [ google-chrome firefox - (import inputs.zen { system = "x86_64-linux"; }).zen-browser + (import zen {system = "x86_64-linux";}).zen-browser vesktop mpv xdg-utils diff --git a/modules/gui/ghostty.nix b/modules/gui/ghostty.nix index 1eb8719..0ca45ea 100644 --- a/modules/gui/ghostty.nix +++ b/modules/gui/ghostty.nix @@ -1,5 +1,5 @@ -{inputs, ...}: let - pkg = inputs.ghostty.packages.x86_64-linux.default; +{ghostty, ...}: let + pkg = ghostty.packages.x86_64-linux.default; in { xdg.configFile."ghostty/config".source = ./ghostty.config; diff --git a/modules/wm/ags/default.nix b/modules/wm/ags/default.nix index 52cf871..d4f60e5 100644 --- a/modules/wm/ags/default.nix +++ b/modules/wm/ags/default.nix @@ -1,6 +1,6 @@ { pkgs, - inputs, + astal, ... }: let covercolors = pkgs.stdenv.mkDerivation { @@ -21,7 +21,7 @@ prev.buildInputs ++ [ pkgs.libdbusmenu-gtk3 - inputs.astal.packages.x86_64-linux.river + astal.packages.x86_64-linux.river ]; }); in { diff --git a/overlays/default.nix b/overlays/default.nix index f7eaf55..6f675d3 100644 --- a/overlays/default.nix +++ b/overlays/default.nix @@ -1,6 +1,7 @@ { flood, river-src, +... }: self: super: let wrapProgram = drv: bins: wrapProgramFlags: super.symlinkJoin {