migrate my nixos laptop to this flake
This commit is contained in:
parent
e0f710b8a3
commit
0457ae40fe
26
flake.lock
26
flake.lock
|
@ -1,5 +1,26 @@
|
||||||
{
|
{
|
||||||
"nodes": {
|
"nodes": {
|
||||||
|
"home-manager": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1651519540,
|
||||||
|
"narHash": "sha256-3k6p8VsTwwRPQjE8rrMh+o2AZACZn/eeYJ7ivdQ/Iro=",
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "home-manager",
|
||||||
|
"rev": "d93d56ab8c1c6aa575854a79b9d2f69d491db7d0",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-community",
|
||||||
|
"ref": "release-21.11",
|
||||||
|
"repo": "home-manager",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1652975354,
|
"lastModified": 1652975354,
|
||||||
|
@ -15,7 +36,7 @@
|
||||||
"type": "indirect"
|
"type": "indirect"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"pkgsUnstable": {
|
"pkgs-gitea": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1651726670,
|
"lastModified": 1651726670,
|
||||||
"narHash": "sha256-dSGdzB49SEvdOJvrQWfQYkAefewXraHIV08Vz6iDXWQ=",
|
"narHash": "sha256-dSGdzB49SEvdOJvrQWfQYkAefewXraHIV08Vz6iDXWQ=",
|
||||||
|
@ -32,8 +53,9 @@
|
||||||
},
|
},
|
||||||
"root": {
|
"root": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
|
"home-manager": "home-manager",
|
||||||
"nixpkgs": "nixpkgs",
|
"nixpkgs": "nixpkgs",
|
||||||
"pkgsUnstable": "pkgsUnstable"
|
"pkgs-gitea": "pkgs-gitea"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
33
flake.nix
33
flake.nix
|
@ -5,17 +5,19 @@
|
||||||
{
|
{
|
||||||
inputs = {
|
inputs = {
|
||||||
nixpkgs.url = "nixpkgs/nixos-21.11";
|
nixpkgs.url = "nixpkgs/nixos-21.11";
|
||||||
pkgsUnstable.url = "nixpkgs/c777cdf5c564015d5f63b09cc93bef4178b19b01";
|
pkgs-gitea.url = "nixpkgs/c777cdf5c564015d5f63b09cc93bef4178b19b01";
|
||||||
|
home-manager.url = "github:nix-community/home-manager/release-21.11";
|
||||||
|
# XXX colin: is this right?
|
||||||
|
home-manager.inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
outputs = { self, pkgsUnstable, nixpkgs }: {
|
outputs = { self, nixpkgs, pkgs-gitea, home-manager }: {
|
||||||
nixosConfigurations.uninsane = nixpkgs.lib.nixosSystem {
|
nixosConfigurations.uninsane = nixpkgs.lib.nixosSystem {
|
||||||
# inherit (self.packages.aarch64-linux) pkgs;
|
|
||||||
pkgs = import nixpkgs {
|
pkgs = import nixpkgs {
|
||||||
system = "aarch64-linux";
|
system = "aarch64-linux";
|
||||||
config.allowUnfree = true;
|
config.allowUnfree = true;
|
||||||
overlays = [
|
overlays = [
|
||||||
(self: super: {
|
(self: super: {
|
||||||
pkgsUnstable.system = "aarch64-linux"; # extraneous?
|
pkgs-gitea.system = "aarch64-linux"; # extraneous?
|
||||||
#### customized packages
|
#### customized packages
|
||||||
# nixos-unstable pleroma is too far out-of-date for our db
|
# nixos-unstable pleroma is too far out-of-date for our db
|
||||||
pleroma = super.callPackage ./pkgs/pleroma { };
|
pleroma = super.callPackage ./pkgs/pleroma { };
|
||||||
|
@ -28,7 +30,7 @@
|
||||||
# gitea: 1.16.5 contains a fix which makes manual user approval *actually* work.
|
# gitea: 1.16.5 contains a fix which makes manual user approval *actually* work.
|
||||||
# https://github.com/go-gitea/gitea/pull/19119
|
# https://github.com/go-gitea/gitea/pull/19119
|
||||||
# safe to remove after 1.16.5 (or 1.16.7 if we need db compat?)
|
# safe to remove after 1.16.5 (or 1.16.7 if we need db compat?)
|
||||||
gitea = pkgsUnstable.legacyPackages.aarch64-linux.gitea;
|
gitea = pkgs-gitea.legacyPackages.aarch64-linux.gitea;
|
||||||
|
|
||||||
# try a newer rpi4 u-boot
|
# try a newer rpi4 u-boot
|
||||||
# ubootRaspberryPi4_64bit = pkgs.unstable.ubootRaspberryPi4_64bit;
|
# ubootRaspberryPi4_64bit = pkgs.unstable.ubootRaspberryPi4_64bit;
|
||||||
|
@ -52,6 +54,27 @@
|
||||||
})
|
})
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
nixosConfigurations.lappy = nixpkgs.lib.nixosSystem {
|
||||||
|
pkgs = import nixpkgs {
|
||||||
|
system = "x86_64-linux";
|
||||||
|
config.allowUnfree = true;
|
||||||
|
};
|
||||||
|
system = "x86_64-linux";
|
||||||
|
modules = [
|
||||||
|
({ pkgs, ... }: {
|
||||||
|
nixpkgs.config.allowUnfree = true;
|
||||||
|
})
|
||||||
|
home-manager.nixosModules.home-manager {
|
||||||
|
home-manager.useGlobalPkgs = true;
|
||||||
|
home-manager.useUserPackages = true;
|
||||||
|
home-manager.users.colin.imports = [ ./lappy/colin.nix ];
|
||||||
|
}
|
||||||
|
./configuration.nix
|
||||||
|
./lappy/users.nix
|
||||||
|
./lappy/hardware.nix
|
||||||
|
];
|
||||||
|
};
|
||||||
# packages = nixpkgs.lib.genAttrs nixpkgs.lib.platforms.all (system:
|
# packages = nixpkgs.lib.genAttrs nixpkgs.lib.platforms.all (system:
|
||||||
# {
|
# {
|
||||||
# pkgs = import nixpkgs { inherit system; config.allowUnfree = true; };
|
# pkgs = import nixpkgs { inherit system; config.allowUnfree = true; };
|
||||||
|
|
116
lappy/colin.nix
Normal file
116
lappy/colin.nix
Normal file
|
@ -0,0 +1,116 @@
|
||||||
|
# docs:
|
||||||
|
# https://rycee.gitlab.io/home-manager/
|
||||||
|
# man home-configuration.nix
|
||||||
|
|
||||||
|
{ config, pkgs, ... }:
|
||||||
|
{
|
||||||
|
|
||||||
|
home.stateVersion = "21.11";
|
||||||
|
home.username = "colin";
|
||||||
|
home.homeDirectory = "/home/colin";
|
||||||
|
programs.home-manager.enable = true;
|
||||||
|
programs.zsh.enable = true;
|
||||||
|
programs.git = {
|
||||||
|
enable = true;
|
||||||
|
userName = "colin";
|
||||||
|
userEmail = "colin@uninsane.org";
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.firefox = {
|
||||||
|
enable = true;
|
||||||
|
# profiles.default = {
|
||||||
|
# settings = {
|
||||||
|
# "browser.urlbar.placeholderName" = "DuckDuckGo";
|
||||||
|
# };
|
||||||
|
# };
|
||||||
|
# extensions = [
|
||||||
|
# ];
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.vim = {
|
||||||
|
enable = true;
|
||||||
|
extraConfig = ''
|
||||||
|
" wtf vim project: NOBODY LIKES MOUSE FOR VISUAL MODE
|
||||||
|
set mouse-=a
|
||||||
|
" copy/paste to system clipboard
|
||||||
|
set clipboard=unnamedplus
|
||||||
|
" <tab> completion menu settings
|
||||||
|
set wildmenu
|
||||||
|
set wildmode=longest,list,full
|
||||||
|
" highlight all matching searches (using / and ?)
|
||||||
|
set hlsearch
|
||||||
|
" allow backspace to delete empty lines in insert mode
|
||||||
|
set backspace=indent,eol,start
|
||||||
|
" built-in syntax highlighting
|
||||||
|
syntax enable
|
||||||
|
" show line/col number in bottom right
|
||||||
|
set ruler
|
||||||
|
" highlight trailing space & related syntax errors (does this work?)
|
||||||
|
let c_space_errors=1
|
||||||
|
let python_space_errors=1
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
dconf.settings = {
|
||||||
|
# control alt-tab behavior
|
||||||
|
"org/gnome/desktop/wm/keybindings" = {
|
||||||
|
switch-applications = [ "<Super>Tab" ];
|
||||||
|
switch-applications-backward=[];
|
||||||
|
switch-windows=["<Alt>Tab"];
|
||||||
|
switch-windows-backward=["<Super><Alt>Tab"];
|
||||||
|
};
|
||||||
|
# idle power savings
|
||||||
|
"org/gnome/settings-deamon/plugins/power" = {
|
||||||
|
idle-brigthness = 50;
|
||||||
|
sleep-inactive-ac-type = "nothing";
|
||||||
|
sleep-inactive-battery-timeout = 5400; # seconds
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# xsession.enable = true;
|
||||||
|
# xsession.windowManager.command = "…";
|
||||||
|
|
||||||
|
|
||||||
|
home.packages = [
|
||||||
|
pkgs.gnumake
|
||||||
|
pkgs.dig
|
||||||
|
pkgs.duplicity
|
||||||
|
pkgs.fatresize
|
||||||
|
pkgs.fd
|
||||||
|
pkgs.file
|
||||||
|
pkgs.gptfdisk
|
||||||
|
pkgs.hdparm
|
||||||
|
pkgs.htop
|
||||||
|
pkgs.iftop
|
||||||
|
pkgs.iotop
|
||||||
|
pkgs.iptables
|
||||||
|
pkgs.jq
|
||||||
|
pkgs.killall
|
||||||
|
pkgs.lm_sensors # for sensors-detect
|
||||||
|
pkgs.lsof
|
||||||
|
pkgs.pciutils
|
||||||
|
pkgs.matrix-synapse
|
||||||
|
pkgs.mix2nix
|
||||||
|
pkgs.netcat
|
||||||
|
# pkgs.nettools
|
||||||
|
pkgs.nmap
|
||||||
|
pkgs.parted
|
||||||
|
pkgs.powertop
|
||||||
|
pkgs.python3
|
||||||
|
pkgs.ripgrep
|
||||||
|
pkgs.smartmontools
|
||||||
|
pkgs.socat
|
||||||
|
pkgs.sudo
|
||||||
|
pkgs.telnet
|
||||||
|
pkgs.usbutils
|
||||||
|
pkgs.wireguard
|
||||||
|
pkgs.zola
|
||||||
|
|
||||||
|
pkgs.clinfo
|
||||||
|
pkgs.discord
|
||||||
|
pkgs.element-desktop
|
||||||
|
pkgs.gnome.dconf-editor
|
||||||
|
pkgs.mesa-demos
|
||||||
|
pkgs.tdesktop
|
||||||
|
];
|
||||||
|
}
|
52
lappy/hardware.nix
Normal file
52
lappy/hardware.nix
Normal file
|
@ -0,0 +1,52 @@
|
||||||
|
{ config, pkgs, lib, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "usb_storage" "sd_mod" "sdhci_pci" ];
|
||||||
|
boot.initrd.kernelModules = [ ];
|
||||||
|
# find more of these with sensors-detect
|
||||||
|
boot.kernelModules = [ "coretemp" "kvm-intel" ];
|
||||||
|
boot.extraModulePackages = [ ];
|
||||||
|
|
||||||
|
# Use the systemd-boot EFI boot loader.
|
||||||
|
boot.loader.systemd-boot.enable = true;
|
||||||
|
boot.loader.efi.canTouchEfiVariables = true;
|
||||||
|
|
||||||
|
# enable cross compilation
|
||||||
|
boot.binfmt.emulatedSystems = [ "aarch64-linux" ];
|
||||||
|
|
||||||
|
powerManagement.cpuFreqGovernor = "powersave";
|
||||||
|
hardware.enableRedistributableFirmware = true;
|
||||||
|
hardware.cpu.intel.updateMicrocode = true;
|
||||||
|
powerManagement.powertop.enable = true;
|
||||||
|
services.fwupd.enable = true;
|
||||||
|
|
||||||
|
hardware.opengl.extraPackages = [
|
||||||
|
pkgs.intel-compute-runtime
|
||||||
|
pkgs.intel-media-driver # new
|
||||||
|
pkgs.libvdpau-va-gl # new
|
||||||
|
pkgs.vaapiIntel
|
||||||
|
];
|
||||||
|
|
||||||
|
fileSystems."/" =
|
||||||
|
{ device = "/dev/disk/by-uuid/75230e56-2c69-4e41-b03e-68475f119980";
|
||||||
|
fsType = "btrfs";
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/boot" =
|
||||||
|
{ device = "/dev/disk/by-uuid/BD79-D6BB";
|
||||||
|
fsType = "vfat";
|
||||||
|
};
|
||||||
|
|
||||||
|
swapDevices = [ ];
|
||||||
|
|
||||||
|
time.timeZone = "America/Los_Angeles";
|
||||||
|
|
||||||
|
# start gnome/gdm on boot
|
||||||
|
services.xserver.enable = true;
|
||||||
|
services.xserver.desktopManager.gnome.enable = true;
|
||||||
|
services.xserver.displayManager.gdm.enable = true;
|
||||||
|
|
||||||
|
networking.useDHCP = false;
|
||||||
|
networking.networkmanager.enable = true;
|
||||||
|
|
||||||
|
}
|
60
lappy/users.nix
Normal file
60
lappy/users.nix
Normal file
|
@ -0,0 +1,60 @@
|
||||||
|
{ config, pkgs, lib, ... }:
|
||||||
|
|
||||||
|
# installer docs: https://github.com/NixOS/nixpkgs/blob/master/nixos/modules/profiles/installation-device.nix
|
||||||
|
{
|
||||||
|
# Users are exactly these specified here;
|
||||||
|
# old ones will be deleted (from /etc/passwd, etc) upon upgrade.
|
||||||
|
users.mutableUsers = false;
|
||||||
|
|
||||||
|
# docs: https://nixpkgs-manual-sphinx-markedown-example.netlify.app/generated/options-db.xml.html#users-users
|
||||||
|
users.users.colin = {
|
||||||
|
# sets group to "users" (?)
|
||||||
|
isNormalUser = true;
|
||||||
|
home = "/home/colin";
|
||||||
|
uid = 1000;
|
||||||
|
# XXX colin: this is what the installer has, but is it necessary?
|
||||||
|
# group = "users";
|
||||||
|
extraGroups = [ "wheel" "networkmanager" ];
|
||||||
|
initialHashedPassword = "";
|
||||||
|
# shell = pkgs.bashInteractive;
|
||||||
|
# XXX colin: create ssh key for THIS user by logging in and running:
|
||||||
|
# ssh-keygen -t ed25519
|
||||||
|
openssh.authorizedKeys.keys = [
|
||||||
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGSDe/y0e9PSeUwYlMPjzhW0UhNsGAGsW3lCG3apxrD5 colin@colin.desktop"
|
||||||
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIG+MZ/l5d8g5hbxMB9ed1uyvhV85jwNrSVNVxb5ujQjw colin@colin.laptop"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
# automatically log in at the virtual consoles.
|
||||||
|
# using root here makes sure we always have an escape hatch
|
||||||
|
# services.getty.autologinUser = "root";
|
||||||
|
|
||||||
|
security.sudo = {
|
||||||
|
enable = true;
|
||||||
|
wheelNeedsPassword = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
services.openssh = {
|
||||||
|
enable = true;
|
||||||
|
permitRootLogin = "no";
|
||||||
|
passwordAuthentication = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.vim.defaultEditor = true;
|
||||||
|
|
||||||
|
# gitea doesn't create the git user
|
||||||
|
# users.users.git = {
|
||||||
|
# description = "Gitea Service";
|
||||||
|
# home = "/var/lib/gitea";
|
||||||
|
# useDefaultShell = true;
|
||||||
|
# group = "gitea";
|
||||||
|
# isSystemUser = true;
|
||||||
|
# # sendmail access (not 100% sure if this is necessary)
|
||||||
|
# extraGroups = [ "postdrop" ];
|
||||||
|
# };
|
||||||
|
|
||||||
|
# # this is required to allow pleroma to send email.
|
||||||
|
# # raw `sendmail` works, but i think pleroma's passing it some funny flags or something, idk.
|
||||||
|
# # hack to fix that.
|
||||||
|
# users.users.pleroma.extraGroups = [ "postdrop" ];
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user