From d8164571b3b5c19753122b182b16da0167e29aa7 Mon Sep 17 00:00:00 2001 From: Daniel Patterson Date: Fri, 5 Nov 2021 21:41:35 +0000 Subject: [PATCH] Messy --- flake.lock | 36 +++++++++- flake.nix | 27 +++++--- hosts/common/default.nix | 114 +++++++++++++++++++++++++++++++ hosts/dingbox/configuration.nix | 111 +----------------------------- hosts/miniding/configuration.nix | 55 +++++++-------- user/dingbox/home.nix | 6 +- 6 files changed, 196 insertions(+), 153 deletions(-) create mode 100644 hosts/common/default.nix diff --git a/flake.lock b/flake.lock index 43304b9..23dd826 100644 --- a/flake.lock +++ b/flake.lock @@ -21,7 +21,40 @@ "type": "github" } }, + "i3utils": { + "inputs": { + "nixpkgs": "nixpkgs" + }, + "locked": { + "lastModified": 1635994901, + "narHash": "sha256-Ghok2ROCcBOvMA1TVO6LLfvzLqP6wXgVuIGK9OTDx7A=", + "ref": "flaketest", + "rev": "a0fae18689d3f1f0ec8741ab03cc07bd3a769b9a", + "revCount": 9, + "type": "git", + "url": "file:///home/daniel/go/src/i3utils" + }, + "original": { + "type": "git", + "url": "file:///home/daniel/go/src/i3utils" + } + }, "nixpkgs": { + "locked": { + "lastModified": 1635992396, + "narHash": "sha256-U3EKRCbgPgiNlqxG0wdw3XX5M3dF1nWqK6PPRazLe7s=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "16697754ebd07ed180fed5cd59dbc6e7b62776b8", + "type": "github" + }, + "original": { + "owner": "nixos", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_2": { "locked": { "lastModified": 1635844945, "narHash": "sha256-tZcL307dj28jgEU1Wdn+zwG9neyW0H2+ZjdVhvJxh9g=", @@ -39,7 +72,8 @@ "root": { "inputs": { "home-manager": "home-manager", - "nixpkgs": "nixpkgs" + "i3utils": "i3utils", + "nixpkgs": "nixpkgs_2" } } }, diff --git a/flake.nix b/flake.nix index 983e15a..9c436d1 100644 --- a/flake.nix +++ b/flake.nix @@ -4,11 +4,13 @@ inputs = { nixpkgs.url = "nixpkgs/nixos-unstable"; + i3utils.url = "git+file:///home/daniel/go/src/i3utils"; + home-manager.url = "github:nix-community/home-manager/master"; home-manager.inputs.nixpkgs.follows = "nixpkgs"; }; - outputs = { nixpkgs, home-manager, ... }: + outputs = { nixpkgs, home-manager, i3utils, ... }: let system = "x86_64-linux"; @@ -22,6 +24,17 @@ lib = nixpkgs.lib; + hostSystem = { hostname }: lib.nixosSystem { + inherit system; + + modules = [ + ./hosts/${hostname}/configuration.nix + ({ pkgs, ... }: { + nixpkgs.overlays = [ i3utils.overlay ]; + }) + ]; + }; + in { homeConfigurations = { daniel = home-manager.lib.homeManagerConfiguration { @@ -32,6 +45,9 @@ configuration = { imports = [ ./user/dingbox/home.nix + ({ pkgs, ... }: { + nixpkgs.overlays = [ i3utils.overlay ]; + }) ]; }; stateVersion = "21.05"; @@ -39,13 +55,8 @@ }; nixosConfigurations = { - dingbox = lib.nixosSystem { - inherit system; - - modules = [ - ./hosts/dingbox/configuration.nix - ]; - }; + dingbox = hostSystem { hostname = "dingbox"; }; + miniding = hostSystem { hostname = "miniding"; }; }; }; } diff --git a/hosts/common/default.nix b/hosts/common/default.nix new file mode 100644 index 0000000..11a9be3 --- /dev/null +++ b/hosts/common/default.nix @@ -0,0 +1,114 @@ +{ config, pkgs, ...}: + +{ + # Use the systemd-boot EFI boot loader. + boot.kernelPackages = pkgs.linuxKernel.packages.linux_5_14; + boot.loader.systemd-boot.enable = true; + boot.loader.efi.canTouchEfiVariables = true; + + nixpkgs.config.allowUnfree = true; + + # nix flakes compatibility + nix = { + package = pkgs.nix_2_4; + extraOptions = '' + experimental-features = nix-command flakes + ''; + }; + + networking.networkmanager.enable = true; + programs.nm-applet.enable = true; + + # Set time zone. + time.timeZone = "Europe/London"; + + # The global useDHCP flag is deprecated, therefore explicitly set to false here. + # Per-interface useDHCP will be mandatory in the future, so this generated config + # replicates the default behaviour. + networking.useDHCP = false; + + console = { + useXkbConfig = true; + }; + + # Enable the X11 windowing system. + services.xserver = { + enable = true; + layout = "gb"; + + dpi = 144; + videoDrivers = [ "nvidia" ]; + screenSection = '' + Option "metamodes" "nvidia-auto-select +0+0 {ForceCompositionPipeline=On}" + Option "AllowIndirectGLXProtocol" "off" + Option "TripleBuffer" "on" + ''; + + libinput = { + enable = true; + mouse = { + accelProfile = "flat"; + accelSpeed = "1"; + }; + }; + + displayManager = { + gdm.enable = true; + }; + + windowManager.i3.enable = true; + + }; + + + # Enable sound. + sound.enable = true; + hardware.pulseaudio.enable = true; + + hardware.opengl.driSupport32Bit = true; + + # Define a user account. Don't forget to set a password with ‘passwd’. + users.users.daniel = { + isNormalUser = true; + home = "/home/daniel"; + initialPassword = "password"; + extraGroups = [ "wheel" "networkmanager" ]; # Enable ‘sudo’ for the user. + shell = pkgs.zsh; + }; + + # List packages installed in system profile. To search, run: + # $ nix search wget + environment.systemPackages = with pkgs; [ + curl + fd + firefox + git + i3 + ripgrep + wget + zsh + ]; + + environment.homeBinInPath = true; + + programs.zsh = { + enable = true; + ohMyZsh = { + enable = true; + plugins = [ "git" "fzf" ]; + theme = "agnoster"; + }; + }; + + # Enable the OpenSSH daemon. + services.openssh.enable = true; + + # This value determines the NixOS release from which the default + # settings for stateful data, like file locations and database versions + # on your system were taken. It‘s perfectly fine and recommended to leave + # this value at the release version of the first install of this system. + # Before changing this value read the documentation for this option + # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html). + system.stateVersion = "21.05"; # Did you read the comment? + +} diff --git a/hosts/dingbox/configuration.nix b/hosts/dingbox/configuration.nix index d8d4280..c2c696d 100644 --- a/hosts/dingbox/configuration.nix +++ b/hosts/dingbox/configuration.nix @@ -8,120 +8,11 @@ imports = [ # Include the results of the hardware scan. ./hardware-configuration.nix + ../common ]; - # Use the systemd-boot EFI boot loader. - boot.kernelPackages = pkgs.linuxKernel.packages.linux_5_14; - boot.loader.systemd-boot.enable = true; - boot.loader.efi.canTouchEfiVariables = true; - - nixpkgs.config.allowUnfree = true; - - # nix flakes compatibility - nix = { - package = pkgs.nix_2_4; - extraOptions = '' - experimental-features = nix-command flakes - ''; - }; - networking.hostName = "dingbox"; # Define your hostname. - networking.networkmanager.enable = true; - programs.nm-applet.enable = true; - - # Set time zone. - time.timeZone = "Europe/London"; - - # The global useDHCP flag is deprecated, therefore explicitly set to false here. - # Per-interface useDHCP will be mandatory in the future, so this generated config - # replicates the default behaviour. - networking.useDHCP = false; networking.interfaces.enp5s0.useDHCP = true; networking.interfaces.wlp6s0.useDHCP = true; - - console = { - useXkbConfig = true; - }; - - # Enable the X11 windowing system. - services.xserver = { - enable = true; - layout = "gb"; - - dpi = 144; - videoDrivers = [ "nvidia" ]; - screenSection = '' - Option "metamodes" "nvidia-auto-select +0+0 {ForceCompositionPipeline=On}" - Option "AllowIndirectGLXProtocol" "off" - Option "TripleBuffer" "on" - ''; - - libinput = { - enable = true; - mouse = { - accelProfile = "flat"; - accelSpeed = "1"; - }; - }; - - displayManager = { - gdm.enable = true; - }; - - windowManager.i3.enable = true; - - }; - - - # Enable sound. - sound.enable = true; - hardware.pulseaudio.enable = true; - - hardware.opengl.driSupport32Bit = true; - - # Define a user account. Don't forget to set a password with ‘passwd’. - users.users.daniel = { - isNormalUser = true; - home = "/home/daniel"; - initialPassword = "password"; - extraGroups = [ "wheel" "networkmanager" ]; # Enable ‘sudo’ for the user. - shell = pkgs.zsh; - }; - - # List packages installed in system profile. To search, run: - # $ nix search wget - environment.systemPackages = with pkgs; [ - curl - fd - firefox - git - i3 - ripgrep - wget - zsh - ]; - - environment.homeBinInPath = true; - - programs.zsh = { - enable = true; - ohMyZsh = { - enable = true; - plugins = [ "git" "fzf" ]; - theme = "agnoster"; - }; - }; - - # Enable the OpenSSH daemon. - services.openssh.enable = true; - - # This value determines the NixOS release from which the default - # settings for stateful data, like file locations and database versions - # on your system were taken. It‘s perfectly fine and recommended to leave - # this value at the release version of the first install of this system. - # Before changing this value read the documentation for this option - # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html). - system.stateVersion = "21.05"; # Did you read the comment? - } diff --git a/hosts/miniding/configuration.nix b/hosts/miniding/configuration.nix index 957f350..f12a6d8 100644 --- a/hosts/miniding/configuration.nix +++ b/hosts/miniding/configuration.nix @@ -11,17 +11,25 @@ ]; # Use the systemd-boot EFI boot loader. + boot.kernelPackages = pkgs.linuxKernel.packages.linux_5_14; boot.loader.systemd-boot.enable = true; boot.loader.efi.canTouchEfiVariables = true; nixpkgs.config.allowUnfree = true; + # nix flakes compatibility + nix = { + package = pkgs.nix_2_4; + extraOptions = '' + experimental-features = nix-command flakes + ''; + }; + networking.hostName = "miniding"; # Define your hostname. networking.networkmanager.enable = true; programs.nm-applet.enable = true; - # networking.wireless.enable = true; # Enables wireless support via wpa_supplicant. - # Set your time zone. + # Set time zone. time.timeZone = "Europe/London"; # The global useDHCP flag is deprecated, therefore explicitly set to false here. @@ -30,38 +38,34 @@ networking.useDHCP = false; networking.interfaces.wlp2s0.useDHCP = true; - # Configure network proxy if necessary - # networking.proxy.default = "http://user:password@proxy:port/"; - # networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain"; + console = { + useXkbConfig = true; + }; # Enable the X11 windowing system. services.xserver = { enable = true; + layout = "gb"; libinput = { enable = true; }; + displayManager = { + gdm.enable = true; + }; + windowManager.i3.enable = true; }; - # Configure keymap in X11 - # services.xserver.xkbOptions = "eurosign:e"; - - # Enable CUPS to print documents. - # services.printing.enable = true; - # Enable sound. sound.enable = true; hardware.pulseaudio.enable = true; hardware.opengl.driSupport32Bit = true; - # Enable touchpad support (enabled default in most desktopManager). - # services.xserver.libinput.enable = true; - # Define a user account. Don't forget to set a password with ‘passwd’. users.users.daniel = { isNormalUser = true; @@ -85,26 +89,19 @@ ]; environment.homeBinInPath = true; - - # Some programs need SUID wrappers, can be configured further or are - # started in user sessions. - # programs.mtr.enable = true; - # programs.gnupg.agent = { - # enable = true; - # enableSSHSupport = true; - # }; - # List services that you want to enable: + programs.zsh = { + enable = true; + ohMyZsh = { + enable = true; + plugins = [ "git" "fzf" ]; + theme = "agnoster"; + }; + }; # Enable the OpenSSH daemon. services.openssh.enable = true; - # Open ports in the firewall. - # networking.firewall.allowedTCPPorts = [ ... ]; - # networking.firewall.allowedUDPPorts = [ ... ]; - # Or disable the firewall altogether. - # networking.firewall.enable = false; - # This value determines the NixOS release from which the default # settings for stateful data, like file locations and database versions # on your system were taken. It‘s perfectly fine and recommended to leave diff --git a/user/dingbox/home.nix b/user/dingbox/home.nix index 4b1d772..a70e945 100644 --- a/user/dingbox/home.nix +++ b/user/dingbox/home.nix @@ -19,11 +19,7 @@ xsession.enable = true; services.dunst.enable = true; - home.packages =let - i3utils = pkgs.lib.callPackageWith (pkgs) ../i3utils {}; - in - with pkgs; - [ + home.packages = with pkgs; [ cargo chezmoi discord